Tutorial on XACML Audumbar Access control and privacy
Tutorial on XACML Audumbar
Access control and privacy Who can access what, under what conditions, and for what purpose
XACML - About �The e. Xtensible Access Control Markup Language is an OASIS Standard �The XACML standard provides �Policy Language �Request and Response Language �Standard data-types, functions, combining algorithms �Extensibility �Privacy profile, RBAC profile �An architecture defining the major components in an implementation
General terms �Resource � Data, system component or service �Subject � An actor who makes a request to access certain Resources. �Action � An operation on resource �Environment � The set of attributes that are relevant to an authorization decision and are independent of a particular subject, resource or action �Attributes � Characteristics of a subject, resource, action or environment �Target � Defines conditions that determine whether policy applies to request
Usage Scenario Policy Enforcement Point (PEP) �Entity protecting the resource(e. g. file system) �Performs access control by making decision requests and enforcing authorization decisions. PEP
Usage Scenario Policy Administration Point (PAP) creates security policies and stores these policies in the repository. PAP
Usage Scenario Context Handler � A Context is the canonical representation of a decision request and an authorization decision. � Context Handler can be defined to convert the requests in its native format to the XACML canonical form and to convert the Authorization decisions in the XACML canonical form to the native format. Context Handler
Usage Scenario The Policy Decision Point (PDP) �Receives and examines the request �Retrieves applicable policies �evaluates the applicable policy and �Returns the authorization decision to PEP PDP
Usage Scenario Policy Information Point (PIP) serves as the source of attribute values, or the data required for policy evaluation. PIP
How does it work: Data Flow
XACML Policy Structure
Policy Language model
XACML Policy Example <Policy. Id="Example. Policy" Rule. Combining. Alg. Id="urn: oasis: names: tc: xacml: 1. 0: rule-combining-algorithm: permitoverrides"> <Target> <Subjects> <Any. Subject/></Subjects> <Resources><Resource> <Resource. Match. Id="urn: oasis: names: tc: xacml: 1. 0: function: any. URI-equal"> <Attribute. Value Data. Type="http: //www. w 3. org/2001/XMLSchema#any. URI">http: //server. example. com/cod e /docs/developer-guide. html</Attribute. Value> <Resource. Attribute. Designator Data. Type="http: //www. w 3. org/2001/XMLSchema#any. URI" Attribute. Id="urn: oasis: names: tc: xacml: 1. 0: resource-id"/> </Resource. Match> </Resource></Resources> <Actions><Any. Action/></Actions> </Target> <Rule. Id="Read. Rule" Effect="Permit"> … </Rule> </Policy>
Policy Example contd <Rule. Id="Read. Rule" Effect="Permit"> <Target> <Subjects><Any. Subject/></Subjects> <Resources><Any. Resource/></Resources> <Action> <Action. Match. Id="urn: oasis: names: tc: xacml: 1. 0: function: string-equal"> <Attribute. Value Data. Type="http: //www. w 3. org/2001/XMLSchema#string">read</Attribute. Value> <Action. Attribute. Designator Data. Type="http: //www. w 3. org/2001/XMLSchema#string” Attribute. Id="urn: oasis: names: tc: xacml: 1. 0: action-id"/> </Action. Match> </Actions> </Target> <Condition Function. Id="urn: oasis: names: tc: xacml: 1. 0: function: string-equal"> <Apply Function. Id="urn: oasis: names: tc: xacml: 1. 0: function: string-one-and-only"> <Subject. Attribute. Designator Data. Type="http: //www. w 3. org/2001/XMLSchema#string” Attribute. Id="group"/> </Apply> <Attribute. Value Data. Type="http: //www. w 3. org/2001/XMLSchema#string">developers</Attribute. Value> </Condition> </Rule>
XACML Request Structure Request Subject Resource Action Environment Attributes
Request Example <Request> <Subject> <Attribute. Id="urn: oasis: names: tc: xacml: 1. 0: subject-id" Data. Type="urn: oasis: names: tc: xacml: 1. 0: data-type: rfc 822 Name"> <Attribute. Value>xyz@users. example. com</Attribute. Value> </Attribute> <Attribute. Id="group" Data. Type=“http: //www. w 3. org/2001/XMLSchema#string” Issuer="admin@users. example. com"> <Attribute. Value>developers</Attribute. Value> </Attribute> </Subject> <Resource> <Attribute. Id="urn: oasis: names: tc: xacml: 1. 0: resource-id" Data. Type="http: //www. w 3. org/2001/XMLSchema#any. URI"> <Attribute. Value>http: //server. example. com/code/docs/developer-guide. html </Attribute. Value> </Attribute> </Resource> <Action> <Attribute. Id="urn: oasis: names: tc: xacml: 1. 0: action-id" Data. Type="http: //www. w 3. org/2001/XMLSchema#string"> <Attribute. Value>read</Attribute. Value> </Attribute> </Action> </Request>
XACML Response Structure Response Decision Status Obligations
XACML Response Example <Response> <Result> <Decision>Permit</Decision> <Status. Code Value="urn: oasis: names: tc: xacml: 1. 0: status: ok"/> </Status> </Result> </Response> Effect: Permit/Deny/Not Applicable/Indeterminate
Combining Algorithms �Deny-overrides – �if any evaluation returns Deny, then the result must be Deny. �If all rules evaluate to Permit, then the result is Permit. �Permit-overrides – �if any rule evaluates to Permit, then the result of is Permit. �If any rule evaluates to Deny and all other rules evaluate to Not. Applicable, then the result is Deny. �If all rules are found to be Not. Applicable, then the result is Not. Applicable.
Combining Algorithms �First applicable – rules evaluated in their listing order �For each rule, if the target matches and the condition evaluates to True, then the result of that rule will be the evaluation of the policy (either Permit, Deny, or Indeterminate). �Otherwise, the algorithm goes to the next rule. If no rule applies, then the result is Not. Applicable. �Only-one-applicable – �For all of policies in the policy set, if no policy applies, then the result is Not. Applicable. �If more than one policy applies, then the result is Indeterminate. �If only one policy applies, then the result is the result of evaluating that policy.
Extensibility �Extensible XML attribute types The following XML attributes with values that are URIs, may be extended by the creation of new URIs associated with new semantics for these attributes. � Attribute. Id, Data. Type, Function. Id, Match. Id, Obligation. Id, Policy. Combining. Alg. Id, Rule. Combining. Alg. Id, Status. Code, Subject. Category. �For a given structured data-type, a community of XACML users MAY define new attribute identifiers for each leaf sub-element of the structured data-type that has a type conformant with one of the XACML-defined primitive data-types. �A community of XACML users MAY define a new function that can be used to compare a value of the structured data-type against some other value. This method may only be used by PDPs that support the new function.
Privacy profile �This profile defines two attributes. �“urn: oasis: names: tc: xacml: 2. 0: resource: purpose” the purpose for which the data resource was collected �“urn: oasis: names: tc: xacml: 2. 0: action: purpose” the purpose for which access to the data resource is requested �Matching purpose rule �Deny-Overrides �access SHALL be denied unless the purpose for which access is requested matches, by regular-expression match, the purpose for which the data resource was collected.
RBAC profile �Scope �If a subject has roles R 1 , R 2, . . . Rn enabled, can subject X access a given resource using a given action? �Is subject X allowed to have role Ri enabled? �If a subject has roles R 1 , R 2, . . . Rn enabled, does that mean the subject will have permissions associated with a given role R'? That is, is role R' either equal to or junior to any of roles R 1 , R 2, …Rn?
RBAC Profile Policies �Role <Policy. Set>, Each Role <Policy. Set> references a single corresponding Permission <Policy. Set> �Permission <Policy. Set>, • actual permissions associated with a given role, • references to Permission <Policy. Set>s associated with other roles that are junior to the given role �Role Assignment <Policy> or <Policy. Set> which roles can be enabled or assigned to which subjects �Has. Privileges. Of. Role <Policy> a <Policy> in a Permission <Policy. Set> that supports requests asking whether a subject has the privileges associated with a given role.
XACML implementations �Using SUN XACML implementation �Building a PDP �Building a PEP �Creating and Encoding Policies �Validating policies and requests �Supporting attribute selectors �XACMLight Apache Axis 2 Web Service XACML 2. 0 PDP/PAP Implementation �XACML Policy editors
Limitations �XACML is verbose and complex in some ways. �Interactions involving PAP, PIP, etc. , are not standardized. �Policy administration, policy versioning, etc. , are not standardized.
References �OASIS XACML Technical Committee Home Page http: //www. oasis-open. org/committees/tc_home. php? wg_abbrev=xacml �Sun's XACML Open Source Implementation http: //sunxacml. sourceforge. net/
- Slides: 27