XACML

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 9 december 2014; kontroller kräver 10 redigeringar .

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.

Historik

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] .

Språkmodell

Huvudkomponenterna i en språkmodell är en regel, en policy och en uppsättning policyer.

Regel

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.

Politik

Används för att kombinera regler.

Huvudkomponenterna i policyn:

  • Mål
  • Regelkombinationsalgoritm
  • Regeluppsättning
  • Engagemang
  • Rekommendation

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.

Policyuppsättning

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:

  • Mål
  • Policy Merge Algoritm
  • Policyuppsättning
  • Engagemang
  • Rekommendation

Auktoriseringsmodell

Huvudkomponenter i modellen

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.

Auktoriseringsprocess [3]

  1. PAP vidarebefordrar policyer och policyuppsättningar till PDP .
  2. Användaren skickar en auktoriseringsbegäran till PEP .
  3. PEP :n skickar begäran till kontexthanteraren.
  4. Kontexthanteraren skapar en begäran i XACML-format.
  5. PDP begär ytterligare attribut från kontexthanteraren .
  6. Kontexthanteraren begär attribut från PIP .
  7. PIP får de nödvändiga attributen.
  8. PIP returnerar de begärda attributen till kontexthanteraren .
  9. Kontexthanteraren skickar de begärda PDP - attributen . PDP beräknar policyer.
  10. PDP :en returnerar svaret till kontexthanteraren .
  11. Kontexthanteraren översätter svaret från XACML-formatet till det ursprungliga PEP -svarsformatet .
  12. (Visas ej) Baserat på resultatet av den policyutvärdering som mottagits från svaret, fattar PEP ett tillträdesbeslut och fullgör sina skyldigheter. Om åtkomst tillåts tillåter PEP åtkomst till resursen, annars nekar den den.

Policyexempel

XACML datum och tid auktorisering

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>

Tidsbaserad auktorisering i XACML

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>


Exempel på XACML-förfrågningar och svar

XACML-förfrågan

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) .

XACML-svar

Exempel på XACML-svar

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 åtagande

Svar: 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).

XACML-implementeringar

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

Litteratur

  • Gertz, M. och Jajodia, S. 4.2 HACML // Handbook of Database Security: Applications and Trends. - Springer, 2007. - 591 sid. — ISBN 9780387485331 .
  • Bertino, E. och Martino, L. och Paci, F. och Squicciarini, A. Säkerhet för webbtjänster och tjänsteorienterade arkitekturer. - Springer, 2009. - S. 67-75, 170. - 230 sid. — ISBN 9783540877424 .


Länkar

  1. OASIS eXtensible Access Control Markup Language (XACML) TC | OAS . www.oasis-open.org. Hämtad 4 december 2019. Arkiverad från originalet 29 december 2019.
  2. eXtensible Access Control Markup Language (XACML) V3.0 godkänd som en OA . lists.oasis-open.org. Datum för åtkomst: 4 december 2019. Arkiverad från originalet 4 december 2019.
  3. eXtensible Access Control Markup Language (XACML) version 3.0 . docs.oasis-open.org. Hämtad 11 december 2019. Arkiverad från originalet 11 september 2019.
  4. OW2 - Main - AuthZForce (Community Edition) . authzforce.ow2.org. Hämtad 14 december 2019. Arkiverad från originalet 12 december 2019.
  5. Bidra till wso2/balana-utvecklingen genom att skapa ett konto på GitHub . — 2019-12-12. Arkiverad från originalet den 8 december 2020.
  6. Philip Kershaw. ndg-xacml: XACML 2.0-implementering för NERC DataGrid .
  7. AT&T-implementering av OASIS XACML 3.0-specifikationen . — 2021-09-04. Arkiverad från originalet den 4 september 2021.
  8. Oracle Entitlements Server . www.oracle.com. Hämtad 14 december 2019. Arkiverad från originalet 12 december 2019.
  9. Säkerhetspolicyverktyg - Ett verktyg för redigering, modellering, testning och verifiering av säkerhetspolicyer för att förhindra läckage av åtkomstkontroll . securitypolicytool.com. Hämtad 14 december 2019. Arkiverad från originalet 12 december 2019.

Externa länkar