source: TI12-security/trunk/NDGSecurity/python/ndg_security_test/ndg/security/test/config/authorisationservice/policy.xml @ 7444

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI12-security/trunk/NDGSecurity/python/ndg_security_test/ndg/security/test/config/authorisationservice/policy.xml@7444
Revision 7444, 9.1 KB checked in by pjkersha, 10 years ago (diff)

Incomplete - task 2: XACML-Security Integration

  • fixed ordering of attribute designator and attribute value elements in example policy files for correct schema validation.
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<Policy PolicyId="urn:ndg:security:1.0:authz:test:policy"
3    xmlns="urn:oasis:names:tc:xacml:2.0:policy:schema:cd:04"
4    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5    xsi:schemaLocation="urn:oasis:names:tc:xacml:2.0:policy:schema:cd:04 http://docs.oasis-open.org/xacml/access_control-xacml-2.0-policy-schema-cd-04.xsd"
6    RuleCombiningAlgId="urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:permit-overrides">
7    <Description>
8        Example for NDG Security unit tests: allow access for resource URIs
9        defined in the rules.  All other URIs are blocked from access
10       
11        See ndg.security.test.unit.wsgi.authz.test_authz to see the various
12        rules tested out
13    </Description>
14   
15    <!--
16        The Policy target(s) define which requests apply to the whole policy
17    -->
18    <Target>
19        <Resources>
20            <Resource>
21                <!-- Pattern match all request URIs beginning with / -->
22                <ResourceMatch MatchId="urn:oasis:names:tc:xacml:2.0:function:anyURI-regexp-match">
23                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">^http://localhost/.*$</AttributeValue>
24                    <ResourceAttributeDesignator
25                        AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
26                        DataType="http://www.w3.org/2001/XMLSchema#anyURI"/>
27                </ResourceMatch>
28            </Resource>
29        </Resources>
30    </Target>   
31   
32    <!-- Deny everything by default -->
33    <Rule RuleId="urn:ndg:security1.0:authz:test:DenyAllRule" Effect="Deny"/>
34    <!--
35        Following rules punch holes through the deny everything rule above
36        because the rule combining algorithm is set to permit overrides - see
37        Policy element above
38    -->
39    <Rule RuleId="urn:ndg:security:public-uri" Effect="Permit">
40        <!--
41            Define a URI with public access
42           
43            Rule target(s) define which requests apply to the particular rule
44        -->
45        <Target>
46            <Resources>
47                <Resource>
48                    <!-- Match the request URI -->
49                    <ResourceMatch MatchId="urn:oasis:names:tc:xacml:1.0:function:anyURI-equal">
50                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">http://localhost/test_200</AttributeValue>
51                        <ResourceAttributeDesignator
52                            AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
53                            DataType="http://www.w3.org/2001/XMLSchema#anyURI"/>
54                    </ResourceMatch>
55                </Resource>
56            </Resources>
57        </Target>
58    </Rule>
59
60    <Rule RuleId="urn:ndg:security:underlying-app-denies-access-uri" Effect="Permit">
61        <!--
62            Define URIs which this policy permits but for which the underlying
63            app returns 40x HTTP response
64        -->
65        <Target>
66            <Resources>
67                <Resource>
68                    <!-- Match the request URI -->
69                    <ResourceMatch MatchId="urn:oasis:names:tc:xacml:2.0:function:anyURI-regexp-match">
70                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">http://localhost/test_40[13]</AttributeValue>
71                        <ResourceAttributeDesignator
72                            AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
73                            DataType="http://www.w3.org/2001/XMLSchema#anyURI"/>
74                    </ResourceMatch>
75                </Resource>
76            </Resources>
77        </Target>
78    </Rule>
79   
80    <Rule RuleId="urn:ndg:security:secured-uri-rule" Effect="Permit">
81        <!--
82            Secure a URI path and all sub-paths using a regular expression to
83            define a URI pattern
84        -->
85        <Target>
86            <Resources>
87                <Resource>
88                    <!-- Pattern match the request URI -->
89                    <ResourceMatch MatchId="urn:oasis:names:tc:xacml:2.0:function:anyURI-regexp-match">
90                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">^http://localhost/test_securedURI.*$</AttributeValue>
91                        <ResourceAttributeDesignator
92                            AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
93                            DataType="http://www.w3.org/2001/XMLSchema#anyURI"/>
94                    </ResourceMatch>
95                </Resource>
96            </Resources>
97            <Actions>
98                <Action>
99                    <ActionMatch MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
100                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">read</AttributeValue>
101                        <ActionAttributeDesignator
102                            AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"
103                            DataType="http://www.w3.org/2001/XMLSchema#string"/>
104                    </ActionMatch>
105                </Action>
106            </Actions>
107        </Target>
108       
109        <!--
110            The condition narrows down the constraints layed down in the target to
111            something more specific
112           
113            The user must have at least one of the roles set - in this
114            case 'staff'
115        -->
116        <Condition>
117            <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of">
118                <SubjectAttributeDesignator 
119                    AttributeId="urn:ndg:security:authz:1.0:attr" 
120                    DataType="http://www.w3.org/2001/XMLSchema#string"/>
121                <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-bag">
122                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">staff</AttributeValue>
123                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">admin</AttributeValue>
124                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">postdoc</AttributeValue>
125                </Apply>
126            </Apply>
127        </Condition>
128    </Rule>
129    <Rule RuleId="Test Access Granted to secured URI Rule" Effect="Permit">
130        <Target>
131            <Resources>
132                <Resource>
133                    <ResourceMatch MatchId="urn:oasis:names:tc:xacml:1.0:function:anyURI-equal">
134                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">http://localhost/test_accessGrantedToSecuredURI</AttributeValue>
135                        <ResourceAttributeDesignator
136                            AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
137                            DataType="http://www.w3.org/2001/XMLSchema#anyURI"/>
138                    </ResourceMatch>
139                </Resource>
140            </Resources>
141        </Target>
142        <Condition>
143            <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of">
144                <SubjectAttributeDesignator 
145                    AttributeId="urn:ndg:security:authz:1.0:attr" 
146                    DataType="http://www.w3.org/2001/XMLSchema#string"/>
147                <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-bag">
148                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">staff</AttributeValue>
149                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">postdoc</AttributeValue>
150                </Apply>
151            </Apply>
152        </Condition>
153    </Rule>
154    <Rule RuleId="Access Granted to secured URI Rule modified for special admin query argument" Effect="Permit">
155        <!--
156            This rule is a modified version of the above to allow for a real use
157            case where adding a special query argument grants extra privileges
158            associated with an administrator
159        -->
160        <Target>
161            <Subjects>
162                <Subject>
163                    <SubjectMatch MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
164                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">admin</AttributeValue>
165                        <SubjectAttributeDesignator 
166                            AttributeId="urn:ndg:security:authz:1.0:attr" 
167                            DataType="http://www.w3.org/2001/XMLSchema#string"/>
168                    </SubjectMatch>
169                </Subject>
170            </Subjects>
171            <Resources>
172                <Resource>
173                    <ResourceMatch MatchId="urn:oasis:names:tc:xacml:1.0:function:anyURI-equal">
174                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">http://localhost/test_accessGrantedToSecuredURI?admin=1</AttributeValue>
175                        <ResourceAttributeDesignator
176                            AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
177                            DataType="http://www.w3.org/2001/XMLSchema#anyURI"/>
178                    </ResourceMatch>
179                </Resource>
180            </Resources>
181        </Target>
182    </Rule>
183</Policy>
Note: See TracBrowser for help on using the repository browser.