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.
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] .
Hovedkomponenterne i en sprogmodel er en regel, en politik og et sæt politikker.
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.
Bruges til at kombinere regler.
Hovedkomponenterne i politikken:
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.
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:
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.
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>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>
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) .
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 forpligtelseSvar: 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).
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 |
World Wide Web Consortium (W3C) | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Produkter og standarder |
| ||||||||||||||
Organisationer |
| ||||||||||||||
PÅ |
| ||||||||||||||
Konferencer |
|
OASIS standarder | |
---|---|