XACML

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 9. december 2014; checks kræver 10 redigeringer .

XACML ( eXtensible  Access Control Markup Language  - extensible access control markup language ) er en standard udviklet af OASIS , der definerer en model og et sprog til beskrivelse af adgangskontrolpolitikker baseret på XML , og hvordan de behandles.

Et af målene med XACML er at fremme fælles terminologi og interoperabilitet mellem adgangskontrolimplementeringer af flere udviklere. XACML er en attributbaseret adgangskontrol (ABAC) standard, hvor attributter knyttet til en bruger, handling eller ressource er input til at beslutte, om en given bruger kan få adgang til en given ressource på en bestemt måde. Rollebaseret adgangskontrol (RBAC) kan også implementeres i XACML som en specialisering af ABAC.

Historie

Version 1.0 blev godkendt af standardiseringsorganisationen OASIS i 2003.

Version 2.0 blev godkendt af standardorganisationen OASIS den 1. februar 2005.

Den første XACML 3.0-specifikation blev frigivet den 10. august 2010 [1] . Den seneste version, XACML 3.0, blev standardiseret i januar 2013 [2] .

Sprogmodel

Hovedkomponenterne i en sprogmodel er en regel, en politik og et sæt politikker.

Regel

En regel er den enkleste enhed i en model. Reglen skal indgå i policen, det er ikke en selvstændig enhed.

Hovedkomponenter i reglen:

Mål

Målet definerer de forespørgsler, som reglen gælder for, i form af booleske udtryk på forespørgselsattributterne. Anmodningen indeholder attributter for det emne, der anmoder om adgang, attributter for den ressource, som der anmodes om adgang til, og attributter for den handling, som brugeren ønsker at udføre. Anmodningen kan også indeholde andre attributter, såsom miljøattributter. Hvis der ikke er noget mål i reglen, nedarves det fra det overordnede element (politikken).

Tilstand

Betingelser er en udvidet form for mål, der kan bruge en bredere vifte af funktioner og, endnu vigtigere, kan bruges til at sammenligne to eller flere attributter sammen, såsom emne-id == læge-id (objekt-id er lig med læge-id).

Effekt

Effekten kan have to værdier: "aktiver" eller "forbud". Effekten af ​​reglen udløses, hvis reglen evalueres positivt (hvis både målet og betingelsen evalueres til sand).

Forpligtelse

Et tilsagn beskriver, hvad der skal gøres før eller efter, at adgangen er bekræftet. Hvis de beskrevne handlinger ikke kan udføres, kan og bør den godkendte adgang ikke implementeres.

Eksempel:

Tillad adgang til ressource MedicalJournal med attributten patientID=x hvis Emne matcher DesignatedDoctorOfPatient og handling læses med forpligtelse på tilladelse: doLog_Inform(patient-ID, emne, tid) ved afvisning: doLog_UnauthorizedLogin(patient-ID, emne, tid)

Henstilling

Udfører de samme funktioner som forpligtelsen, men kan i modsætning til den ignoreres.

Politik

Bruges til at kombinere regler.

Hovedkomponenterne i politikken:

  • Mål
  • Regelkombinationsalgoritme
  • Regelsæt
  • Forpligtelse
  • Henstilling

Regelkombinationsalgoritme

Bruges til at løse konflikter. For eksempel, hvis en af ​​reglerne evalueres til "sand" og den anden "falsk", bestemmer reglerne, der kombinerer algoritmen, hvilken værdi selve politikken vil tage.

Politiksæt

Et politiksæt er nødvendigt for at kombinere en gruppe af politikker for at filtrere dem hurtigere baseret på det generelle formål, der er angivet i målet for politikgruppen.

Hovedkomponenter:

  • Mål
  • Politikfletningsalgoritme
  • Politiksæt
  • Forpligtelse
  • Henstilling

Autorisationsmodel

Hovedkomponenter i modellen

Navn Oversættelse Beskrivelse
PAP (Policy Administration Point) Policy Management Point Systemobjekt, der administrerer autorisationspolitikker
PDP (Policy Decision Point) Anmodningsbeslutningspunkt Et systemobjekt, der sammenligner adgangsanmodninger med autorisationspolitikker, før der træffes en adgangsbeslutning
PEP (Policy Enforcement Point) Politikhåndhævelsespunkt Et systemobjekt, der opsnapper en brugers anmodning om adgang til en ressource, fremsætter en beslutningsanmodning til PDP'en for at opnå en adgangsbeslutning (dvs. ressourceadgang godkendes eller nægtes) og handler på beslutningen.
PIP (Policy Information Point) Politikinformationspunkt Et systemobjekt, der fungerer som kilden til attributværdier
PRP (Policy Retrieval Point) Politik opbevaringspunkt Et systemobjekt, der gemmer XACML-adgangsgodkendelsespolitikker. Dette er normalt en database eller et filsystem
kontekstbehandler Context Handler Et systemobjekt, der oversætter godkendelsesanmodninger til XACML-format, koordinerer med PIP for at tilføje attributværdier til anmodningen og oversætter XACML-autorisationsbeslutningen til sit eget svarformat

Modelkomponenter interagerer med hinanden gennem anmodninger og svar i XACML-format. Anmodningen indeholder attributter. Svaret indeholder resultatet af politikberegningen (det har 4 værdier: "tillad", "afvis", "ikke relevant", "ikke defineret"). Derudover kan svaret indeholde forpligtelser, der skal opfyldes, hvis adgang tillades eller nægtes.

Godkendelsesproces [3]

  1. PAP videresender politikker og politiksæt til PDP .
  2. Brugeren sender en godkendelsesanmodning til PEP'en .
  3. PEP'en sender anmodningen til kontekstbehandleren.
  4. Konteksthandleren opretter en anmodning i XACML-format.
  5. PDP'en anmoder om yderligere attributter fra kontekstbehandleren .
  6. Konteksthandleren anmoder om attributter fra PIP'en .
  7. PIP får de nødvendige attributter.
  8. PIP returnerer de anmodede attributter til kontekstbehandleren .
  9. Konteksthandleren sender de anmodede PDP- attributter . PDP'en beregner politikker.
  10. PDP'en returnerer svaret til kontekstbehandleren .
  11. Konteksthandleren oversætter svaret fra XACML-format til det oprindelige PEP -svarformat .
  12. (Ikke vist) Baseret på resultatet af den politiske evaluering modtaget fra svaret, træffer PEP en adgangsbeslutning og opfylder sine forpligtelser. Hvis adgang er tilladt, giver PEP'en adgang til ressourcen, ellers nægter den den.

Politikeksempler

XACML datetime autorisation

Denne regel nægter adgang til brugere, der ikke har logget på i 30 dage.

I pseudokode: Afvis hvis time_now > last_access_time + 30 dage.

<xacml3:Rule RuleId= "f6637b3f-3690-4cce-989c-2ce9c053d6fa" Effect= "Nægt" > <xacml3:Description> Brug det eller tab det: denne politik nægter adgang, hvis lastLogin er mere end 30 dage væk fra dagens dato < /xacml3:Description> <xacml3:Target/> <xacml3:Condition > <xacml3:Apply FunctionId= "urn:oasis:names:tc:xacml:1.0:function:any-of" > <xacml3:Function FunctionId= "urn :oasis:names:tc:xacml:1.0:function:dateTime-greater-than" /> <xacml3:Apply FunctionId= "urn:oasis:names:tc:xacml:3.0:function:dateTime-add-dayTimeDuration" > < xacml3:Apply FunctionId= "urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only" > <xacml3:AttributeDesignator Category= "urn:oasis:names:tc:xacml:1.0:subject- category:access-subject" AttributeId= "com.acme.user.lastLogin" DataType= "http://www.w3.org/2001/XMLSchema#dateTime" MustBePresent= "false" /> </xacml3:Apply> < xacml3:AttributeValue DataType= "http://www.w3.org/2001/XMLSchema#dayTimeDuration" > P30D </xacml3:AttributeValue> </xacml3:Apply> <xacml3:Attribute Designator Category= "urn:oasis:names:tc:xacml:3.0:attribute-category:environment" AttributeId= "urn:oasis:names:tc:xacml:1.0:environment:current-dateTime" DataType= "http:// www.w3.org/2001/XMLSchema#dateTime" MustBePresent= "false" /> </xacml3:Apply> </xacml3:Condition> </xacml3:Rule>

Tidsbaseret autorisation i XACML

Denne regel giver emnet adgang til ressourcen, hvis det aktuelle tidspunkt er mellem 9:00 og 17:00.

<xacml3:Rule RuleId= "c01d7519-be21-4985-88d8-10941f44590a" Effect= "Tillad" > <xacml3:Description> Tillad, hvis tiden er mellem 9 og 5 </xacml3:Description> <xacml3 :Description> <xacml: A <xOf3:Tar > <xacml3:AllOf> <xacml3:Match MatchId= "urn:oasis:names:tc:xacml:1.0:function:time-greater-than" > <xacml3:AttributeValue DataType= "http://www.w3.org /2001/XMLSchema#time" > 09:00:00 </xacml3:AttributeValue> <xacml3:AttributeDesignator Category= "urn:oasis:names:tc:xacml:3.0:attribute-category:environment" AttributeId= "urn:oasis :names:tc:xacml:1.0:environment:current-time" MustBePresent= "false" DataType= "http://www.w3.org/2001/XMLSchema#time" /> </xacml3:Match> </xacml3 :AllOf> </xacml3:AnyOf> <xacml3:AnyOf> <xacml3:AllOf> <xacml3:Match MatchId= "urn:oasis:names:tc:xacml:1.0:function:time-less-than" > <xacml3: AttributeValue DataType= "http://www.w3.org/2001/XMLSchema#time" > 17:00:00 </xacml3:AttributeValue> <xacml3:AttributeDesignator Category= "urn:oasis:names:tc:xacml:3.0 :attribut-kategori:miljø " AttributeId= "urn:oasis:names:tc:xacml:1.0:environment:current-time" MustBePresent= "false" DataType= "http://www.w3.org/2001/XMLSchema#time" /> </ xacml3:Match> </xacml3:AllOf> </xacml3:AnyOf> </xacml3:Target> </xacml3:Rule>


Eksempler på XACML-anmodninger og -svar

XACML-anmodning

Anmodning: Alice ønsker at se dokument #123.

<xacml-ctx:Request ReturnPolicyIdList= "true" CombinedDecision= "false" xmlns:xacml-ctx= "urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" > <xacml-ctx:Attributes Category= "urn:oasis:names:tc:xacml:3.0:attribute-category:action" > <xacml-ctx:Attribute AttributeId= "actionId" IncludeInResult= "true" > <xacml-ctx:AttributeValue DataType= "http: //www.w3.org/2001/XMLSchema#string" > view </xacml-ctx:AttributeValue> </xacml-ctx:Attribute> </xacml-ctx:Attributes> <xacml-ctx:Attributes Category= "urn :oasis:names:tc:xacml:3.0:attribute-category:resource" > <xacml-ctx:Attribute AttributeId= "resource-id" IncludeInResult= "true" > <xacml-ctx:AttributeValue DataType= "http:// www.w3.org/2001/XMLSchema#string" > doc#123 </xacml-ctx:AttributeValue> </xacml-ctx:Attribute> </xacml-ctx:Attributes> <xacml-ctx:Attributes Category= "urn :oasis:names:tc:xacml:1.0:subject-category:access-subject" > <xacml-ctx:Attribute AttributeId= "user.identifier" IncludeInResult= "true" > <xacml-ctx:AttributeValue DataTyp e= "http://www.w3.org/2001/XMLSchema#string" > Alice </xacml-ctx:AttributeValue> </xacml-ctx:Attribute> </xacml-ctx:Attributes> </xacml-ctx :Forespørgsel>

Det første element <Attributes>indeholder attributterne for handlingen (læs), det andet element <Attributes>indeholder attributterne for den ressource, som emnet ønsker at anvende den specificerede handling på (dokument #123), det tredje element <Attributes>indeholder navnet på emnet (Alice) .

XACML-svar

Eksempel på XACML-svar

Svar: Ikke relevant

<xacml-ctx:Response xmlns:xacml-ctx= "urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" > <xacml-ctx:Result> <xacml-ctx:Decision> Ikke relevant < /xacml-ctx:Decision> <xacml-ctx:Status> <xacml-ctx:StatusCode Value= "urn:oasis:names:tc:xacml:1.0:status:ok" /> </xacml-ctx:Status> < /xacml-ctx:Resultat> </xacml-ctx:Response>

Elementet <Decision>indeholder resultatet af politikevaluering (ikke relevant).

Et eksempel på XACML-svar med en forpligtelse

Svar: Tillad, commit med indekset "logAccess" (logadgang)

<xacml-ctx:Response xmlns:xacml-ctx= "urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" > <xacml-ctx:Result> <xacml-ctx:Decision> Tilladelse < /xacml-ctx:Decision> <xacml-ctx:Status> <xacml-ctx:StatusCode Value= "urn:oasis:names:tc:xacml:1.0:status:ok" /> </xacml-ctx:Status> < xacml-ctx:Obligations> <xacml-ctx:Obligation ObligationId= "logAccess" > </xacml-ctx:Obligation> </xacml-ctx:Obligations> <xacml-ctx:PolicyIdentifierList> <xacml-ctx: Obligations : 1.0" > http://www.axiomatics.com/automatic-unique-id/18a9eae9-c92b-4087-b2ac-c5a33d7ff477 </xacml-ctx:PolicyIdReference> </xacml-ctx:PolicyIdentifier : c </xacml-ctx:PolicyIdReference> Resultat> </xacml-ctx:Response>

Elementet <Decision>indeholder resultatet af politikevaluering (aktiver). Elementet <Obligations>indeholder de forpligtelser, der skal anvendes. I dette tilfælde <Obligations>indeholder den et element <Obligation>med identifikationen "logAccess" (logadgang).

XACML implementeringer

Navn Version

XACML

Teknologi Licens
AuthzForce (OW2) [4] / ( GitHub ) XACML 3.0 Java GPL
Balana [5] XACML 3.0, 2.0, 1.1 og 1.0 Java Apache 2.0
ndg-xacml [6] XACML 2.0 Python BSD
AT&T XACML [7] XACML 3.0 Java MIT
Oracle Entitlements Server [8] XACML 3.0 Java , .NET Proprietære
Sikkerhedspolitikværktøj [9] XACML 3.0, 2.0 Java Proprietære

Litteratur

  • Gertz, M. og Jajodia, S. 4.2 HACML // Handbook of Database Security: Applications and Trends. - Springer, 2007. - 591 s. — ISBN 9780387485331 .
  • Bertino, E. og Martino, L. og Paci, F. og Squicciarini, A. Sikkerhed for webtjenester og serviceorienterede arkitekturer. - Springer, 2009. - S. 67-75, 170. - 230 s. — ISBN 9783540877424 .


Links

  1. OASIS eXtensible Access Control Markup Language (XACML) TC | OASIS . www.oasis-open.org. Hentet 4. december 2019. Arkiveret fra originalen 29. december 2019.
  2. eXtensible Access Control Markup Language (XACML) V3.0 godkendt som en OA . lists.oasis-open.org. Dato for adgang: 4. december 2019. Arkiveret fra originalen 4. december 2019.
  3. eXtensible Access Control Markup Language (XACML) version 3.0 . docs.oasis-open.org. Hentet 11. december 2019. Arkiveret fra originalen 11. september 2019.
  4. OW2 - Main - AuthZForce (Community Edition) . authzforce.ow2.org. Hentet 14. december 2019. Arkiveret fra originalen 12. december 2019.
  5. Bidrag til udvikling af wso2/balana ved at oprette en konto på GitHub . — 2019-12-12. Arkiveret fra originalen den 8. december 2020.
  6. Philip Kershaw. ndg-xacml: XACML 2.0-implementering til NERC DataGrid .
  7. AT&T-implementering af OASIS XACML 3.0-specifikation . - 04-09-2021. Arkiveret fra originalen den 4. september 2021.
  8. Oracle Entitlements Server . www.oracle.com. Hentet 14. december 2019. Arkiveret fra originalen 12. december 2019.
  9. Sikkerhedspolitikværktøj - Et værktøj til redigering, modellering, test og verificering af sikkerhedspolitikker for at forhindre adgangskontrollækage . securitypolicytool.com. Hentet 14. december 2019. Arkiveret fra originalen 12. december 2019.

Eksterne links