OASIS eXtensible Access Control Markup Language (XACML) TC

 View Only

[xacml] XML Access Control Policy Example

  • 1.  [xacml] XML Access Control Policy Example

    Posted 06-03-2002 06:56
     MHonArc v2.5.2 -->
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    xacml message

    [Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


    Subject: [xacml] XML Access Control Policy Example


    This is the XML Access Control Policy Example based on the XACML
    RequestContext proposal. I follow the style that Anne used:
    
    - Access request description in English
    - XACML Context specification of the above
    - Sample J2SE policy in English
    - XACML policy specification of the above
                 (not exact one, simplified description is enough)
    - How XACML policy specification refers to each attribute in XACML Context
    - Desirable final decision
    - ...
    
    
    EXAMPLE ACCESS REQUEST DESCRIPTION IN ENGLISH
    
    Read access has been requested for the element of
        "record/patient/patientDoB"
    of the XML instance
        "//medico.com/med.xml"
    which schema is defined as
        "medico.com/records.xsd"
    
    The user executing the thread from which the access request was
    generated was authenticated as
      o  NameIdentifier is "Julius Hibbert", NameQualifier is "//medico.com"
      o  Role is "Physician", AttributeQualifier is "//medico.com"
    
    
    PROPOSED XACML CONTEXT SPECIFICATION OF THE ABOVE
    
    - Unabbreviated Syntax (target XML is referred by "ResourceURI")
    
    <xacml:RequestContext>
      <xacml:ContextPrincipals>
        <xacml:Principal PrincipalType="RequestingUser">
          <xacml:Attribute AttributeName="NameIdentifier"
                           AttributeNamespace="//medico.com">
            Julius Hibbert
          </xacml:Attribute>
          <xacml:Attribute AttributeName="Role" AttributeNamespace
    ="//medico.com">
            Physician
          </xacml:Attribute>
        </xacml:Principal>
      </xacml:ContextPrincipals>
    
      <xacml:ContextResource>
        <xacml:Resource ResourceType="XML">
          <xacml:Attribute AttributeName="ResourceURI">
            //medico.com/med.xml
          </xacml:Attribute>
          <xacml:Attribute AttributeName="XPath">
            record/patient/patientDoB
          </xacml:Attribute>
          <xacml:Attribute AttributeName="XMLSchema">
            medico.com/records.xsd
          </xacml:Attribute>
        </xacml:Resource>
      </xacml:ContextResource>
    
      <xacml:ContextAction>
        <xacml:Action ActionType="XMLAction">
          <xacml:Attribute AttributeName="read"/>
        </xacml:Action>
      </xacml:ContextAction>
    </xacml:RequestContext>
    
    
    - Abbreviated Syntax (target XML is referred by "ResourceURI")
    
    <xacml:RequestContext>
      <xacml:ContextPrincipals>
        <x:RequestingUser>
          <x:NameIdentifier AttributeNamespace="//medico.com">
                                     Julius Hibbert</x:NameIdentifier>
          <x:Role AttributeNamespace="//medico.com">Physician</x:Role>
        </x:RequestingUser>
      </xacml:ContextPrincipals>
    
      <xacml:ContextResource>
        <x:XML>
          <x:ResourceURI>//medico.com/med.xml</x:ResourceURI>
          <x:XPath>record/patient/patientDoB</x:XPath>
          <x:XMLSchema>medico.com/records.xsd</x:XMLSchema>
        </x:XML>
      </xacml:ContextResource>
    
      <xacml:ContextAction>
        <x:XMLAction>
          <x:read/>
        </x:XMLAction>
      </xacml:ContextAction>
    </xacml:RequestContext>
    
    
    SAMPLE POLICY IN ENGLISH
    
    Grant read access to resource "//medico.com/med.xml"
    "record/patient/patienDoB" "medico.com/records.xsd" if the requesting
    user's role is a Physician.
    
    
    XACML POLICY SPECIFICATION OF THE ABOVE
    
    The following rule is included in an xacml:policyStatement where the
    ruleCombiningAlgId allows access if any rule allows
    access.
    
    - Unabbreviated Syntax
    
    <xacml:rule ruleId="rule1" effect="Permit">
      <xacml:target>
        <xacml:subjects>
          <xacml:subjectEq AttributeSelector="Principal[@PrincipalType
    ='RequestingUser']/Attribute[@AttributeName = 'Role']">
            Physician
          </xacml:subject>
        </xacml:subjects>
    
        <xacml:resources>
          <xacml:resourceEq AttributeSelector="Resource[@ResourceType
    ='XML']/Attribute[@AttributeName = 'ResourceURI']">
            //medico.com/med.xml
          </xacml:resourceEq>
          <xacml:resourceEq AttributeSelector="Resource[@ResourceType
    ='XML']/Attribute[@AttributeName = 'XPath']">
            /record/patient/patientDoB
          </xacml:resourceEq>
          <xacml:resourceEq AttributeSelector="Resource[@ResourceType
    ='XML']/Attribute[@AttributeName = 'XMLSchema']">
            medico.com/records.xsd
          </xacml:resourceEq>
        </xacml:resources>
    
        <xacml:actions>
          <xacml:actionEq AttributeSelector="Action[@ActionType
    ='XMLAction']/Attribute/@AttributeName">
            read
          <xacml:actionEq>
        </xacml:actions>
      </xacml:target>
    </xacml:rule>
    
    
    - Abbreviated Syntax
    
    <xacml:rule ruleId="rule1" effect="Permit">
      <xacml:target>
        <xacml:subjects>
          <xacml:subjectEq AttributeSelector
    ="/x:RequestingUser/x:Role">Physician</xacml:subjectEq>
        </xacml:subjects>
        <xacml:resources>
          <xacml:resourceEq AttributeSelector
    ="/x:XML/x:ResourceURI">//medico.com/med.xml</xacml:resourceEq>
          <xacml:resourceEq AttributeSelector
    ="/x:XML/x:XPath">/record/patient/patientDoB</xacml:resourceEq>
          <xacml:resourceEq AttributeSelector
    ="/x:XML/x:XMLSchema">medico.com/records.xsd</xacml:resourceEq>
        </xacml:resources>
        <xacml:actions>
          <xacml:actionEq AttributeSelector="/x:XMLAction/local-name
    ()">read<xacml:actionEq>
        </xacml:actions>
      </xacml:target>
    </xacml:rule>
    
    
    
    HOW XACML POLICY SPECIFICATION REFERS TO EACH ATTRIBUTE IN XACML CONTEXT
    
    - The unabbreviated policy refers to the unabbreviated XACML Context. The
    abbreviated policy refers to the abbreviated XACML Context.
    
    - In the example above, I have used full XPATH expressions starting from
    RequestContext to refer to attributes in the request context. Under the
    rule/target/subjects section of a rule, I assumed that the root is
    RequestContext/ContextPrincipals. I assumed similarly for the resource and
    the action section of a rule.
    
    - A set of entries in the subject and the resource element is connected by
    AND. For example, the target resource should be that the resource URI is
    "//medico.com/med.xml", the XPath matches "/record/patient/patientDoB", and
    the XML Schema is "medico.com/records.xsd".
    
    - The target resource is referred in two ways: a detached resource and an
    embedded resource. For the former, the target XML instance is referred
    using URI. In the latter, the target XML body is embedded in XACML Context.
    System deals with the target XML instance as if it starts just from the
    child element of the resource element with resourceBody attribute.
    
    Unabbreviated Syntax (target XML is embedded in "ResourceBody")
    
      <xacml:ContextResource>
        <xacml:Resource ResourceType="XML">
          <xacml:Attribute AttributeName="ResourceBody">
            <y:record xmlns="medico.com/records.xsd" ...>
              <y:patient>
                <y:patientName>
                <y:patientDoB>
                ...
            </y:record>
          </xacml:Attribute>
        </xacml:Resource>
      </xacml:ContextResource>
    
    When the target XML instance is referred from the policy, the root element
    of the target XML should be located just below the <Attribute> element.
    
    
    DESIRABLE FINAL DECISION
    
    Since this example is based on the proposal "XACML Context proposal based
    on more flatten structure", the flatten XACML Context structure is
    desirable final decision.
    
    Michiharu Kudo
    
    IBM Tokyo Research Laboratory, Internet Technology
    Tel. +81 (46) 215-4642   Fax +81 (46) 273-7428
    
    
    
    


    [Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


    Powered by eList eXpress LLC