| < Day Day Up > |
eXtensible Access Control Markup Language (XACML) Specification
eXtensible Access Control Markup Language is an XML Schema for representing authorization and entitlement policies. The XACML 1.0 specification was ratified as an OASIS
XACML represents the rules that specify the who, what, when, and how of information access. Access control, which is often called rights management , determines who can look at something, what they can do with it, the type of device they can look at it on, and so on. A set of access control issues has created the need for XACML. First, computing systems are extremely general. Computing platforms have been made as broad and general as possible for the widest possible set of applications that can be run on those platforms. These computing systems also have the broadest possible set of privileges for accessing data and applications, so they can be used in the widest possible set of applications, including those with very permissive (that is, no) security policies. Second, access control policy enforcement is handled at many different points. In cases of reasonably strict security policy, systems are access controlled at the point of deployment. Enterprise security policy has many elements and points of enforcement, including HR, Finance, Legal, and others.
The third condition that sets up the need for XACML is the
On top of these three conditions come the machine-to-machine interactions of Web services, which dramatically exacerbate these issues. Combined, these conditions create the need for a common language for
The target of an XACML specification can be any object that is referenced using XML; this gives XACML very fine-grained control. XACML has three top-level policy elements: Policy, PolicySet, and Rule. The XACML Data Model
At the root of XACML is a concern with access policies ”what XACML refers to as a Policy or a PolicySet. When XACML refers to "policy," it
A few more critical terms used in XACML need to be
Figure 9.9 shows these XACML concepts. Figure 9.9. Core XACML constructs and their interrelationships.
XACML Operation
XACML defines a very granular set of "
This much granularity enables interoperability for a wide variety of access control approaches. It is an architecture that maximizes flexibility.
Because a generic Policy or PolicySet may contain multiple policies or Rules, each of which may evaluate to different access control decisions, XACML needs some way of
XACML Policy Example
Following in Listing 9.11 is a simple example to
Listing 9.11. XACML for SamplePolicy on SampleServer for Login Only Between 9 and 5
<Policy PolicyId="SamplePolicy"
RuleCombiningAlgId="urn:oasis:names:tc:xacml:1.0:
rule-combining-algorithm:first-applicable">
<!-- This Policy only applies to requests on the SampleServer -->
<Target>
<Subjects>
<AnySubject/>
</Subjects>
<Resources>
<ResourceMatch MatchId="urn:oasis:names:tc:xacml:1.0:
function:string-equal">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">
SampleServer</AttributeValue>
<ResourceAttributeDesignator DataType="http://www.w3.org/2001/
XMLSchema#string"
AttributeId="urn:oasis:names:tc:xacml:
1.0:resource:resource-id"/>
</ResourceMatch>
</Resources>
<Actions>
<AnyAction/>
</Actions>
</Target>
<!-- Rule to see if we should allow the Subject to login -->
<Rule RuleId="LoginRule" Effect="Permit">
<!-- Only use this Rule if the action is login -->
<Target>
<Subjects>
<AnySubject/>
</Subjects>
<Resources>
<AnyResource/>
</Resources>
<Actions>
<ActionMatch MatchId="urn:oasis:names:tc:xacml:1.0:
function:string-equal">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">
login</AttributeValue>
<ActionAttributeDesignator DataType="http://www.w3.org/2001/
XMLSchema#string"
AttributeId="ServerAction"/>
</ActionMatch>
</Actions>
</Target>
<!-- Only allow logins from 9am to 5pm -->
<Condition FunctionId="urn:oasis:names:tc:xacml:1.0:function:and">
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:
function:time-greater-than-or-equal"
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:
time-one-and-only">
<EnvironmentAttributeSelector DataType="http://www.w3.org/2001/
XMLSchema#time"
AttributeId="urn:oasis:names:tc:
xacml:1.0:environment:current-time"/>
</Apply>
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#time">
09:00:00</AttributeValue>
</Apply>
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:
function:time-less-than-or-equal"
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:
function:time-one-and-only">
<EnvironmentAttributeSelector DataType="http://www.w3.org/2001/
XMLSchema#time"
AttributeId="urn:oasis:names:tc:
xacml:1.0:environment:current-time"/>
</Apply>
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#time">
17:00:00</AttributeValue>
</Apply>
</Condition>
</Rule>
<!-- We could include other Rules for different actions here -->
<!-- A final, "fall-through" Rule that always Denies -->
<Rule RuleId="FinalRule" Effect="Deny"/>
</Policy>
XACML will probably affect the way security policy is built into applications, making less work for developers. XACML would do that by taking implicit policy that today is often spread across multiple applications in the form of executable code and bringing it to a central point of administration where it can be more easily created, modified, made consistent, and
The following are some XACML resources:
http://www.oasis-open.org/
http://sunxacml.
http://www.idevnews.com/TipsTricks.asp?ID=57
http://www.
|
| < Day Day Up > |