Title: XACML OASIS eXtensible Access Control Markup Language
1XACMLOASIS eXtensible Access Control Markup
Language
- Steve Carmody
- July 10, 2003
2Outline
- What is the Problem.
- The XACML Model
- Some Examples
- Implementation Status
3Authz Landscape
Business Systems (HR, Student. Admissions)
Assigning Roles
Provisioning
Attribute Release
Policy Store
Transport Of Attributes
PEP
PDP
4Requirements
- To provide a method for combining individual
rules and policies into a single policy set that
applies to a particular decision request. - To provide a method for flexible definition of
the procedure by which rules and policies are
combined. - To provide a method for dealing with multiple
subjects acting in different capacities. - To provide a method for basing an authorization
decision on attributes of the subject and
resource. - To provide a method for dealing with multi-valued
attributes. - To provide a method for basing an authorization
decision on the contents of an information
resource. - To provide a set of logical and mathematical
operators on attributes of the subject, resource
and environment.
5Requirements
- To provide a method for handling a distributed
set of policy components, while abstracting the
method for locating, retrieving and
authenticating the policy components. - To provide a method for rapidly identifying the
policy that applies to a given action, based upon
the values of attributes of the subjects,
resource and action. - To provide an abstraction-layer that insulates
the policy-writer from the details of the
application environment. - To provide a method for specifying a set of
actions that must be performed in conjunction
with policy enforcement. - The motivation behind XACML is to express these
well-established ideas in the field of
access-control policy using an extension language
of XML.
6What Kinds of Questions Do We Want to Ask?
- Can this entity perform this action on this
resource? - Can these entities perform this action on this
resource? - ? What are all the (resource, action) pairs this
person is authorized to perform?
7- What is the Problem.
- The XACML Model
- Some Examples
- Implementation Status
8The Theoretical Model
9XACML is an OASIS standard that describes
- A policy language
- used to describe general access control
requirements, and has standard extension points
for defining new functions, data types, combining
logic, etc. - An access control decision request/response
language - lets you form a query to ask whether or not a
given action should be allowed, and interpret the
result. - The response always includes an answer about
whether the request should be allowed using one
of four values - Permit,
- Deny,
- Indeterminate (an error occurred or some required
value was missing, so a decision cannot be made) - Not Applicable (the request can't be answered by
this service).
10An Access Control Request
- Subject
- A set of attributes associated with the entity
making the request - Resource
- The resource to which access is being requested
- Action
- The requested action to be performed on the
resource - Environment
11Top Level Constructs Rule, Policy, and PolicySet
- XACML defines three top-level policy elements
- ltRulegt,
- ltPolicygt
- ltPolicySetgt.
- The ltRulegt element
- contains a boolean expression that can be
evaluated in isolation - is not intended to be accessed in isolation by a
PDP. - It is not intended to form the basis of an
authorization decision by itself. - It may form the basic unit of management, and be
re-used in multiple policies.
12Top Level Constructs Rule, Policy, and PolicySet
- The ltPolicygt element
- contains a set of ltRulegt elements and
- a specified procedure for combining the results
of their evaluation. - It is the basic unit of policy used by the PDP,
and so it is intended to form the basis of an
authorization decision. - The ltPolicySetgt element
- contains a set of ltPolicygt or other ltPolicySetgt
elements and - a specified procedure for combining the results
of their evaluation. - It is the standard means for combining separate
policies into a single combined policy.
13Policies (more)
- The complete policy applicable to a particular
decision request may be composed of a number of
individual rules or policies. - For instance, in a personal privacy application,
- the owner of the personal information may define
certain aspects of disclosure policy, - and the enterprise that is the custodian of the
information may define certain other aspects. - In order to render an authorization decision, it
must be possible to combine the two separate
policies to form the single policy applicable to
the request.
14Attributes
- The currency that XACML deals in is attributes.
- Attributes are named values of known types that
may include an issuer identifier or an issue date
and time. - Specifically, attributes are characteristics of
the Subject, Resource, Action, or Environment in
which the access request is made. - A user's name, their security clearance, the file
they want to access, and the time of day are all
attribute values. - When a request is sent from a PEP to a PDP, that
request is formed almost exclusively of
attributes, and they will be compared to
attribute values in a policy to make the access
decisions.
15Making a Decision
- Find relevant policies and rules
- Evaluate the Rules
- Combine the results
16Targets - Finding a policy that applies to a
given request.
- A Target is associated with a PolicySet, Policy
or Rule - The Subject, Resource and Action in a Request are
matched against Targets, using the Conditions
specified in the Target - A Condition is a set of statements about
Attributes whose truth can be evaluated - If all the conditions of a Target are met, then
its associated PolicySet, Policy, or Rule applies
to the request. - In addition to being a way to check
applicability, Target information also provides a
way to index policies.
17Policies Based on Resource Contents
- Sometimes, an authorization decision is based on
data contained in the information resource to
which access is requested. - a common component of privacy policy is that a
person should be allowed to read records for
which he or she is the subject. - The corresponding policy must contain a reference
to the subject identified in the information
resource itself. - XACML provides facilities for doing this
- when the information resource can be represented
as an XML document. - When the information resource is not an XML
document, specified attributes of the resource
can be referenced
18Evaluating Rules
- Once a Policy has been found and verified to
apply to a request, its Rules are evaluated. - A policy can have any number of Rules which
contain the core logic of an XACML policy. - The heart of most Rules is a Condition, which is
a boolean function. If the Condition evaluates to
true, then the Rule's Effect (a value of Permit
or Deny that is associated with successful
evaluation of the Rule) is returned. - Evaluation of a Condition can also result in an
error (Indeterminate) or discovery that the
Condition doesn't apply to the request
(NotApplicable). - A Condition can be quite complex, built from an
arbitrary nesting of non-boolean functions and
attributes.
19Accumulating a Decision
- A Policy or PolicySet may contain multiple
policies or Rules, - each of which may evaluate to different access
control decisions, - XACML needs some way of reconciling the decisions
each makes. - Rule-Combining and Policy-Combining Algorithms
- Combining Algorithms represent various ways of
combining multiple decisions into a single
decision. - Deny-overrides
- Permit-overrides
- Etc
- Custom Combining algorithms
- Combining Algorithms are used to build up
increasingly complex policies
20To be CoveredSome Other Time.
- AttributeDesignator
- AttributeSelector
- Bags
21A Few More Concepts
22Obligations - Other required actions
- In many applications, policies specify actions
that MUST be performed, either instead of, or in
addition to, actions that MAY be performed. - XACML provides facilities to specify actions that
MUST be performed in conjunction with policy
evaluation in the ltObligationsgt element. - There are no standard definitions for these
actions in version 1.0 of XACML. - Therefore, bilateral agreement between a PAP and
the PEP that will enforce its policies is
required for correct interpretation. - PEPs that conform with v1.0 of XACML are required
to deny access unless they understand all the
ltObligationsgt elements associated with the
applicable policy. - ltObligationsgt elements are returned to the PEP
for enforcement.
23XACML context
- The core language is insulated from the
application environment by the XACML context, in
which the scope of the XACML specification is
indicated by the shaded area. - The XACML context is defined in XML schema,
describing a canonical representation for the
inputs and outputs of the PDP. - Attributes referenced by an instance of XACML
policy may be in the form of XPath expressions on
the context, or attribute designators that
identify the attribute by subject, resource,
action or environment and its identifier. - Implementations must convert between the
attribute representations in the application
environment (e.g., SAML, J2SE, CORBA, and so on)
and the attribute representations in the XACML
context. - How this is achieved is outside the scope of the
XACML specification. In some cases, such as
SAML, this conversion may be accomplished in an
automated way through the use of an XSLT
transformation.
24(No Transcript)
25- What is the Problem.
- The XACML Model
- Some Examples
- Implementation Status
26A Sample Policy
- XACML policy for my Calendar
- A single PolicySet that has several pieces that
can easily be split out - and considered on their own
27The top-level Target says that everything in this
policy applies to my calendar. After that there
are four sub-policies
- .ltPolicySet xmlns"urnoasisnamestcxacml1.0po
licy" xmlnsxsi"http//www.w3.org/2001/XMLSchema-
instance" xsischemaLocation"urnoasisnamestcx
acml1.0policy cs-xacml-schema-policy-01.xsd"
PolicySetId"stcCalenderPolicy"
PolicyCombiningAlgId"urnoasisnamestcxacml1.0
policy-combining-algorithmfirst-applicable"gt - Â ltDescriptiongtThis policy defines all the access
restrictions on Steve's calendar.lt/Descriptiongt - lt!-- This policy applies to all accesses to
Steve's calendar  --gt - - ltTargetgt
- - ltSubjectsgt
- Â ltAnySubject /gt
- Â lt/Subjectsgt
- - ltResourcesgt
- - ltResourcegt
- - ltResourceMatch MatchId"urnoasisnamestcxacm
l1.0functionstring-equal"gt - Â ltAttributeValue DataType"http//www.w3.org/200
1/XMLSchemastring"gtstc_at_cal.brown.edult/AttributeVa
luegt - Â ltResourceAttributeDesignator
DataType"http//www.w3.org/2001/XMLSchemastring"
AttributeId"urnoasisnamestcxacml1.0resourc
eresource-id" /gt - Â lt/ResourceMatchgt
- Â lt/Resourcegt
- Â lt/Resourcesgt
- - ltActionsgt
- Â ltAnyAction /gt
- Â lt/Actionsgt
- Â
28Policy that applies to Steve, the owner, who has
all rights
- - ltPolicy PolicyId"OwnerPolicy"
RuleCombiningAlgId"urnoasisnamestcxacml1.0r
ule-combining-algorithmfirst-applicable"gt - - ltTargetgt
- - ltSubjectsgt
- - ltSubjectgt
- - ltSubjectMatch MatchId"urnoasisnamestcxacml
1.0functionrfc822Name-equal"gt - Â ltAttributeValue DataType"urnoasisnamestcxac
ml1.0data-typerfc822Name"gtstc_at_brown.edult/Attrib
uteValuegt - Â ltSubjectAttributeDesignator DataType"urnoasis
namestcxacml1.0data-typerfc822Name"
AttributeId"principleName" /gt - Â lt/SubjectMatchgt
- Â lt/Subjectgt
- Â lt/Subjectsgt
- - ltResourcesgt
- Â ltAnyResource /gt
- Â lt/Resourcesgt
- - ltActionsgt
- Â ltAnyAction /gt
- Â lt/Actionsgt
- Â lt/Targetgt lt!-- If it's the calendar owner, we
permit anything  --gt -  ltRule RuleId"OwnerRule" Effect"Permit" /gt
29A couple policies that are only allowed if the
action is read
- - ltPolicy PolicyId"ReadAccessPolicy"
RuleCombiningAlgId"urnoasisnamestcxacml1.0r
ule-combining-algorithmpermit-overrides"gt lt!--
only use if they're requesting read access  --gt - - ltTargetgt
- - ltSubjectsgt
- Â ltAnySubject /gt
- Â lt/Subjectsgt
- - ltResourcesgt
- Â ltAnyResource /gt
- Â lt/Resourcesgt
- - ltActionsgt
- - ltActiongt
- - ltActionMatch MatchId"urnoasisnamestcxacml1
.0functionstring-equal"gt - Â ltAttributeValue DataType"http//www.w3.org/2001
/XMLSchemastring"gtreadlt/AttributeValuegt - Â ltActionAttributeDesignator DataType"http//www.
w3.org/2001/XMLSchemastring" AttributeId"urnoas
isnamestcxacml1.0actionaction-id" /gt - Â lt/ActionMatchgt
- Â lt/Actiongt
- Â lt/Actionsgt
- Â lt/Targetgt
30Allow read access to anyone affiliated with Brown
- - ltRule RuleId"affiliationWithBrown"
Effect"Permit"gt - - ltTargetgt
- - ltSubjectsgt
- - ltSubjectgt
- - ltSubjectMatch MatchId"urnoasisnamestcxacml
1.0functionrfc822Name-match"gt - Â ltAttributeValue DataType"http//www.w3.org/2001
/XMLSchemastring"gt.brown.edult/AttributeValuegt - Â ltSubjectAttributeDesignator DataType"urnoasis
namestcxacml1.0data-typerfc822Name"
AttributeId"scopedAffiliation" /gt - Â lt/SubjectMatchgt
- Â lt/Subjectgt
- Â lt/Subjectsgt
- - ltResourcesgt
- Â ltAnyResource /gt
- Â lt/Resourcesgt
- - ltActionsgt
- Â ltAnyAction /gt
- Â lt/Actionsgt
- Â lt/Targetgt
- Â lt/Rulegt
31See if they're in the Brown course cs123 and have
provided an acceptible entitlement
- - ltRule RuleId"acceptibleEntitlements"
Effect"Permit"gt - - ltTargetgt
- - ltSubjectsgt
- - ltSubjectgt
- - ltSubjectMatch MatchId"urnoasisnamestcxacml
1.0functionanyURI-equal"gt - Â ltAttributeValue DataType"http//www.w3.org/2001
/XMLSchemaanyURI"gturnmacebrown.educoursecs123
lt/AttributeValuegt - Â ltSubjectAttributeDesignator DataType"http//www
.w3.org/2001/XMLSchemaanyURI" AttributeId"groupM
embership" /gt - Â lt/SubjectMatchgt
- Â lt/Subjectgt
- Â lt/Subjectsgt
- - ltResourcesgt
- Â ltAnyResource /gt
- Â lt/Resourcesgt
- - ltActionsgt
- Â ltAnyAction /gt
- Â lt/Actionsgt
- Â lt/Targetgt
- - ltCondition FunctionId"urnoasisnamestcxacml
1.0functionanyURI-is-in"gt - - ltApply FunctionId"urnoasisnamestcxacml1.0
functionanyURI-one-and-only"gt
32 Policy that applies to Seth, a friend, who can
schedule events a week or more from now
- - ltPolicy PolicyId"addInOneWeekOrMore"
RuleCombiningAlgId"urnoasisnamestcxacml1.0r
ule-combining-algorithmfirst-applicable"gt - - ltTargetgt
- - ltSubjectsgt
- - ltSubjectgt
- - ltSubjectMatch MatchId"urnoasisnamestcxacml
1.0functionrfc822Name-equal"gt - Â ltAttributeValue DataType"urnoasisnamestcxac
ml1.0data-typerfc822Name"gtstp_at_alumni.brown.edult
/AttributeValuegt - Â ltSubjectAttributeDesignator DataType"urnoasis
namestcxacml1.0data-typerfc822Name"
AttributeId"principleName" /gt - Â lt/SubjectMatchgt
- Â lt/Subjectgt
- Â lt/Subjectsgt
- - ltResourcesgt
- Â ltAnyResource /gt
- Â lt/Resourcesgt
- - ltActionsgt
- - ltActiongt
- - ltActionMatch MatchId"urnoasisnamestcxacml1
.0functionstring-equal"gt - Â ltAttributeValue DataType"http//www.w3.org/2001
/XMLSchemastring"gtaddlt/AttributeValuegt - Â ltActionAttributeDesignator DataType"http//www.
w3.org/2001/XMLSchemastring" AttributeId"urnoas
isnamestcxacml1.0actionaction-id" /gt - Â lt/ActionMatchgt
33- - ltRule RuleId"IsMoreThanOneWeekAhead"
Effect"Permit"gt - - ltCondition FunctionId"urnoasisnamestcxacml
1.0functiondateTime-greater-than"gt - - ltApply FunctionId"urnoasisnamestcxacml1.0
functiondateTime-add-dayTimeDuration"gt - - ltApply FunctionId"urnoasisnamestcxacml1.0
functiondateTime-one-and-only"gt - Â ltResourceAttributeDesignator DataType"http//ww
w.w3.org/2001/XMLSchemadateTime"
AttributeId"calendarEntryDateTime" /gt - Â lt/Applygt
- Â ltAttributeValue DataType"http//www.w3.org/TR/x
query-operatorsdayTimeDuration"gtP7Dlt/AttributeVal
uegt - Â lt/Applygt
- - ltApply FunctionId"urnoasisnamestcxacml1.0
functiondateTime-one-and-only"gt - Â ltEnvironmentAttributeDesignator
DataType"http//www.w3.org/2001/XMLSchemadateTim
e" AttributeId"urnoasisnamestcxacml1.0envir
onmentcurrent-dateTime" /gt - Â lt/Applygt
- Â lt/Conditiongt
- Â lt/Rulegt
34If we didn't fall into the above categories, then
we deny
- - ltPolicy PolicyId"denyAllOthers"
RuleCombiningAlgId"urnoasisnamestcxacml1.0r
ule-combining-algorithmdeny-overrides"gt - - ltTargetgt
- - ltSubjectsgt
- Â ltAnySubject /gt
- Â lt/Subjectsgt
- - ltResourcesgt
- Â ltAnyResource /gt
- Â lt/Resourcesgt
- - ltActionsgt
- Â ltAnyAction /gt
- Â lt/Actionsgt
- Â lt/Targetgt
- Â ltRule RuleId"denyOthers" Effect"Deny" /gt
- Â lt/Policygt
- Â lt/PolicySetgt
35- Â - The first policy checks to see if the subject
is stc_at_brown.edu. If it is, - Â Â then the owner is making a request, and is
therefore allowed to do - Â Â anything. No other checking is done.
- Â - The second policy has a target that checks to
see if the action is "read" - Â Â and if it is then there are a couple of rules.
The first rule says that - Â Â anyone affiliated with Brown is allowed
access. The second rule says - Â Â that anyone in course cs123 who provides an
acceptible entitlement is - Â Â allowed access. I tried to use names based on
our conversation this morning, - Â Â but again feel free to change things around if
you'd like. Note that after - Â Â our talk I decided that the best way to show
dynamic attribute retrieval - Â Â was in a rule, so in the second rule here, the
assumption is that the - Â Â acceptible entitlements come from some
attribute source. - Â - The third policy allows stp_at_alumni.brown.edu
permission to add any event - Â Â to your calendar, so long as the event is at
least one week away. I think - Â Â that's kind of a neat constraint that you
can't do in the real world, and - Â Â I wish I could use it on my calendar at work
(I come in a lot to find that - Â Â I've been scheduled for that day). Note that I
also have read access to - Â Â your calendar since I'm affiliated with Brown,
per the second policy. - Â - The fourth policy is a default, fall-through
policy that says if none of
36- What is the Problem.
- The XACML Model
- Some Examples
- Implementation Status
37Implementation Status
- Sun has a java based implementation
- They have open-sourced it
- http//sunxacml.sourceforge.net/
- Provides complete support for
- all the mandatory features of XACML as well as a
number of optional features. - Specifically, there is full support for
- parsing both policy and request/response
documents, - determining applicability of policies, and
- evaluating requests against policies.
- All of the standard attribute types, functions,
and combining algorithms are supported, and - There are APIs for adding new functionality as
needed. - There are also APIs for writing new retrieval
mechanisms used for finding things like policies
and attributes.
38Using the Sun Implementation
- Sun is funding a summer intern
- She is developing glue between common
environments and the XACML engine - A library to build XACML Requests and parse
Responses - Apache plugin
- Perl Package (wrapper)
- ? Suggestions ?
39Questions?