XACML ( eXtensible Access Control Markup Language - extensible Access Control Markup Language ) är en standard utvecklad av OASIS som definierar en modell och ett språk för att beskriva åtkomstkontrollpolicyer baserade på XML , och hur de behandlas.
Ett av målen med XACML är att främja gemensam terminologi och interoperabilitet mellan åtkomstkontrollimplementeringar av flera utvecklare. XACML är en attributbaserad åtkomstkontroll (ABAC) standard där attribut associerade med en användare, åtgärd eller resurs matas in för att avgöra om en given användare kan komma åt en given resurs på ett visst sätt. Rollbaserad åtkomstkontroll (RBAC) kan också implementeras i XACML som en specialisering av ABAC.
Version 1.0 godkändes av standardiseringsorganisationen OASIS 2003.
Version 2.0 godkändes av standardiseringsorganisationen OASIS den 1 februari 2005.
Den första XACML 3.0-specifikationen släpptes den 10 augusti 2010 [1] . Den senaste versionen, XACML 3.0, standardiserades i januari 2013 [2] .
Huvudkomponenterna i en språkmodell är en regel, en policy och en uppsättning policyer.
En regel är den enklaste enheten i en modell. Regeln ska finnas med i policyn, det är inte en självständig enhet.
Huvudkomponenter i regeln:
Mål
Målet definierar de frågor som regeln gäller, i form av booleska uttryck på frågeattributen. Begäran innehåller attribut för ämnet som begär åtkomst, attribut för resursen som åtkomst begärs till och attribut för åtgärden som användaren vill utföra. Begäran kan även innehålla andra attribut, såsom miljöattribut. Om det inte finns något mål i regeln ärvs det från det överordnade elementet (policy).
Skick
Villkor är en utökad form av mål som kan använda ett bredare utbud av funktioner och, ännu viktigare, kan användas för att jämföra två eller flera attribut tillsammans, till exempel subjekt-id == doktor-id (objekt-id är lika med doktor-id).
Effekt
Effekten kan ha två värden: "aktivera" eller "förbjud". Effekten av regeln utlöses om regeln utvärderas positivt (om både målet och villkoret utvärderas till sant).
Engagemang
Ett åtagande beskriver vad som måste göras innan eller efter att tillträde bekräftas. Om de beskrivna åtgärderna inte kan utföras kan och bör den godkända åtkomsten inte implementeras.
Exempel:
Tillåt åtkomst till resursen MedicalJournal med attributet patientID=x om Ämne matchar DesignatedDoctorOfPatient och handling läses med skyldighet på tillstånd: doLog_Inform(patient-ID, ämne, tid) på Neka : doLog_UnauthorizedLogin(patient-ID, Ämne, tid)Rekommendation
Utför samma funktioner som skyldigheten, men kan till skillnad från den ignoreras.
Används för att kombinera regler.
Huvudkomponenterna i policyn:
Regelkombinationsalgoritm
Används för att lösa konflikter. Till exempel, om en av reglerna utvärderas till "sant" och den andra "falsk", bestämmer reglernas kombinationsalgoritm vilket värde själva policyn kommer att ta.
En policyuppsättning behövs för att kombinera en grupp policyer för att filtrera dem snabbare baserat på det allmänna syftet som anges i policygruppens mål.
Huvudkomponenter:
namn | Översättning | Beskrivning |
---|---|---|
PAP (Policy Administration Point) | Policy Management Point | Systemobjekt som hanterar auktoriseringspolicyer |
PDP (Policy Decision Point) | Begäran beslutspunkt | Ett systemobjekt som jämför åtkomstförfrågningar mot behörighetspolicyer innan ett åtkomstbeslut fattas |
PEP (Policy Enforcement Point) | Policy Enforcement Point | Ett systemobjekt som avlyssnar en användares begäran om åtkomst till en resurs, gör en beslutsbegäran till PDP:n för att erhålla ett åtkomstbeslut (d.v.s. resursåtkomst godkänns eller nekas) och agerar på beslutet. |
PIP (Policy Information Point) | Policyinformationspunkt | Ett systemobjekt som fungerar som källan till attributvärden |
PRP (Policy Retrieval Point) | Policylagringspunkt | Ett systemobjekt som lagrar behörighetspolicyer för XACML-åtkomst. Detta är vanligtvis en databas eller ett filsystem |
kontexthanterare | Kontexthanterare | Ett systemobjekt som översätter auktoriseringsbegäranden till XACML-format, koordinerar med PIP för att lägga till attributvärden till begäran och översätter XACML-auktoriseringsbeslutet till sitt eget svarsformat |
Modellkomponenter interagerar med varandra genom förfrågningar och svar i XACML-format. Begäran innehåller attribut. Svaret innehåller resultatet av policyberäkningen (det har fyra värden: "tillåt", "neka", "ej tillämpligt", "ej definierat"). Dessutom kan svaret innehålla skyldigheter som måste uppfyllas om åtkomst tillåts eller nekas.
Denna regel nekar åtkomst för användare som inte har loggat in på 30 dagar.
I pseudokod: Neka om time_now > last_access_time + 30 dagar.
<xacml3:Rule RuleId= "f6637b3f-3690-4cce-989c-2ce9c053d6fa" Effect= "Neka" > <xacml3:Description> Använd den eller förlora den: denna policy nekar åtkomst om lastLogin är mer än 30 dagar från dagens datum < /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>Denna regel ger ämnet åtkomst till resursen om den aktuella tiden är mellan 9:00 och 17:00.
<xacml3:Rule RuleId= "c01d7519-be21-4985-88d8-10941f44590a" Effect= "Permit" > <xacml3:Description> Tillåt om tid mellan 9 och 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>
Begäran: Alice vill 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" > visa </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 :Request>Det första elementet <Attributes>innehåller attributen för åtgärden (läs), det andra elementet <Attributes>innehåller attributen för den resurs som ämnet vill tillämpa den angivna åtgärden på (dokument #123), det tredje elementet <Attributes>innehåller namnet på ämnet (Alice) .
Svar: Ej tillämpligt
<xacml-ctx:Response xmlns:xacml-ctx= "urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" > <xacml-ctx:Result> <xacml-ctx:Decision> Not Applicable < /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>innehåller resultatet av policyutvärdering (ej tillämpligt).
Ett exempel på XACML-svar med ett åtagandeSvar: Tillåt, commit med index "logAccess" (loggåtkomst)
<xacml-ctx:Response xmlns:xacml-ctx= "urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" > <xacml-ctx:Result> <xacml-ctx:Decision> Permit < /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 </xacmList> Resultat> </xacml-ctx:Response>Elementet <Decision>innehåller resultatet av policyutvärdering (aktivera). Elementet <Obligations>innehåller de skyldigheter som ska tillämpas. I detta fall <Obligations>innehåller den ett element <Obligation>med identifieraren "logAccess" (loggåtkomst).
namn | Version
XACML |
Teknologi | Licens |
---|---|---|---|
AuthzForce (OW2) [4] / ( GitHub ) | XACML 3.0 | Java | GPL |
Balana [5] | XACML 3.0, 2.0, 1.1 och 1.0 | Java | Apache 2.0 |
ndg-xacml [6] | XACML 2.0 | Pytonorm | BSD |
AT&T XACML [7] | XACML 3.0 | Java | MIT |
Oracle Entitlements Server [8] | XACML 3.0 | Java , .NET | Proprietär |
Säkerhetspolicyverktyg [9] | XACML 3.0, 2.0 | Java | Proprietär |
World Wide Web Consortium (W3C) | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Produkter och standarder |
| ||||||||||||||
Organisationer |
| ||||||||||||||
PÅ |
| ||||||||||||||
Konferenser |
|
OASIS standarder | |
---|---|