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

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
Revision 7822, 11.1 KB checked in by pjkersha, 9 years ago (diff)

Incomplete - task 16: NDG Security 2.x.x - incl. updated Paster templates

  • fix for Yadis template substitutions
  • updated svn:keywords: Id property
  • Property svn:keywords set to Id
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    xmlns:esg="http://www.earthsystemgrid.org/"
6    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"
7    RuleCombiningAlgId="urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:permit-overrides">
8    <Description>
9        Example for NDG Security unit tests: allow access for resource URIs
10        defined in the rules.  All other URIs are blocked from access
11       
12        See ndg.security.test.unit.wsgi.authz.test_authz to see the various
13        rules tested out
14    </Description>
15   
16    <!--
17        The Policy target(s) define which requests apply to the whole policy
18    -->
19    <Target>
20        <Resources>
21            <Resource>
22                <!-- Pattern match all request URIs beginning with / -->
23                <ResourceMatch MatchId="urn:oasis:names:tc:xacml:2.0:function:anyURI-regexp-match">
24                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">^http://localhost/.*$</AttributeValue>
25                    <ResourceAttributeDesignator
26                        AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
27                        DataType="http://www.w3.org/2001/XMLSchema#anyURI"/>
28                </ResourceMatch>
29            </Resource>
30        </Resources>
31    </Target>   
32   
33    <!-- Deny everything by default -->
34    <Rule RuleId="urn:ndg:security1.0:authz:test:DenyAllRule" Effect="Deny"/>
35    <!--
36        Following rules punch holes through the deny everything rule above
37        because the rule combining algorithm is set to permit overrides - see
38        Policy element above
39    -->
40    <Rule RuleId="urn:ndg:security:public-uri" Effect="Permit">
41        <!--
42            Define a URI with public access
43           
44            Rule target(s) define which requests apply to the particular rule
45        -->
46        <Target>
47            <Resources>
48                <Resource>
49                    <!-- Match the request URI -->
50                    <ResourceMatch MatchId="urn:oasis:names:tc:xacml:1.0:function:anyURI-equal">
51                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">http://localhost/test_200</AttributeValue>
52                        <ResourceAttributeDesignator
53                            AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
54                            DataType="http://www.w3.org/2001/XMLSchema#anyURI"/>
55                    </ResourceMatch>
56                </Resource>
57            </Resources>
58        </Target>
59    </Rule>
60
61    <Rule RuleId="urn:ndg:security:underlying-app-denies-access-uri" Effect="Permit">
62        <!--
63            Define URIs which this policy permits but for which the underlying
64            app returns 40x HTTP response
65        -->
66        <Target>
67            <Resources>
68                <Resource>
69                    <!-- Match the request URI -->
70                    <ResourceMatch MatchId="urn:oasis:names:tc:xacml:2.0:function:anyURI-regexp-match">
71                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">http://localhost/test_40[13]</AttributeValue>
72                        <ResourceAttributeDesignator
73                            AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
74                            DataType="http://www.w3.org/2001/XMLSchema#anyURI"/>
75                    </ResourceMatch>
76                </Resource>
77            </Resources>
78        </Target>
79    </Rule>
80   
81    <Rule RuleId="urn:ndg:security:secured-uri-rule" Effect="Permit">
82        <!--
83            Secure a URI path and all sub-paths using a regular expression to
84            define a URI pattern
85        -->
86        <Target>
87            <Resources>
88                <Resource>
89                    <!-- Pattern match the request URI -->
90                    <ResourceMatch MatchId="urn:oasis:names:tc:xacml:2.0:function:anyURI-regexp-match">
91                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">^http://localhost/test_securedURI.*$</AttributeValue>
92                        <ResourceAttributeDesignator
93                            AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
94                            DataType="http://www.w3.org/2001/XMLSchema#anyURI"/>
95                    </ResourceMatch>
96                </Resource>
97            </Resources>
98            <Actions>
99                <Action>
100                    <ActionMatch MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
101                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">read</AttributeValue>
102                        <ActionAttributeDesignator
103                            AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"
104                            DataType="http://www.w3.org/2001/XMLSchema#string"/>
105                    </ActionMatch>
106                </Action>
107            </Actions>
108        </Target>
109       
110        <!--
111            The condition narrows down the constraints layed down in the target to
112            something more specific
113           
114            The user must have at least one of the roles set - in this
115            case 'staff'
116        -->
117        <Condition>
118            <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of">
119                <SubjectAttributeDesignator 
120                    AttributeId="urn:siteA:security:authz:1.0:attr" 
121                    DataType="http://www.w3.org/2001/XMLSchema#string"/>
122                <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-bag">
123                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">staff</AttributeValue>
124                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">admin</AttributeValue>
125                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">postdoc</AttributeValue>
126                </Apply>
127            </Apply>
128        </Condition>
129    </Rule>
130    <Rule RuleId="Test Access Granted to secured URI Rule" Effect="Permit">
131        <Target>
132            <Resources>
133                <Resource>
134                    <ResourceMatch MatchId="urn:oasis:names:tc:xacml:1.0:function:anyURI-equal">
135                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">http://localhost/test_accessGrantedToSecuredURI</AttributeValue>
136                        <ResourceAttributeDesignator
137                            AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
138                            DataType="http://www.w3.org/2001/XMLSchema#anyURI"/>
139                    </ResourceMatch>
140                </Resource>
141            </Resources>
142        </Target>
143        <Condition>
144            <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of">
145                <SubjectAttributeDesignator 
146                    AttributeId="urn:siteA:security:authz:1.0:attr" 
147                    DataType="http://www.w3.org/2001/XMLSchema#string"/>
148                <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-bag">
149                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">staff</AttributeValue>
150                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">postdoc</AttributeValue>
151                </Apply>
152            </Apply>
153        </Condition>
154    </Rule>
155    <Rule RuleId="Access Granted to secured URI Rule modified for special admin query argument" Effect="Permit">
156        <!--
157            This rule is a modified version of the above to allow for a real use
158            case where adding a special query argument grants extra privileges
159            associated with an administrator
160        -->
161        <Target>
162            <Subjects>
163                <Subject>
164                    <SubjectMatch MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
165                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">admin</AttributeValue>
166                        <SubjectAttributeDesignator 
167                            AttributeId="urn:siteA:security:authz:1.0:attr" 
168                            DataType="http://www.w3.org/2001/XMLSchema#string"/>
169                    </SubjectMatch>
170                </Subject>
171            </Subjects>
172            <Resources>
173                <Resource>
174                    <ResourceMatch MatchId="urn:oasis:names:tc:xacml:1.0:function:anyURI-equal">
175                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">http://localhost/test_accessGrantedToSecuredURI?admin=1</AttributeValue>
176                        <ResourceAttributeDesignator
177                            AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
178                            DataType="http://www.w3.org/2001/XMLSchema#anyURI"/>
179                    </ResourceMatch>
180                </Resource>
181            </Resources>
182        </Target>
183    </Rule>
184    <Rule RuleId="Rule using ESGF Group/Role Attribute Values" Effect="Permit">
185        <!--
186            Subject must have at least one of a group of ESGF group/role
187            attribute values
188           
189            Resource id is a regular expression
190        -->
191        <Target>
192            <Resources>
193                <Resource>
194                    <!-- Pattern match the request URI -->
195                    <ResourceMatch MatchId="urn:oasis:names:tc:xacml:2.0:function:anyURI-regexp-match">
196                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">^http://localhost/esgf-attribute-value-restricted.*$</AttributeValue>
197                        <ResourceAttributeDesignator
198                            AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
199                            DataType="http://www.w3.org/2001/XMLSchema#anyURI"/>
200                    </ResourceMatch>
201                </Resource>
202            </Resources>
203        </Target>
204       
205        <!--
206            The condition narrows down the constraints layed down in the target to
207            something more specific
208           
209            The user must have at least one of the roles set - in this
210            case 'staff'
211        -->
212        <Condition>
213            <Apply FunctionId="urn:esg:security:xacml:2.0:function:grouprole-at-least-one-member-of">
214                <SubjectAttributeDesignator 
215                    AttributeId="urn:esg:sitea:grouprole"
216                    DataType="groupRole"/>
217                <Apply FunctionId="urn:esg:security:xacml:2.0:function:grouprole-bag">
218                    <AttributeValue DataType="groupRole">
219                        <esg:groupRole group="siteagroup" role="default"/>
220                    </AttributeValue>
221                    <AttributeValue DataType="groupRole">
222                        <esg:groupRole group="Staff" role="Administrator"/>
223                    </AttributeValue>
224                </Apply>
225            </Apply>
226        </Condition>
227    </Rule>
228</Policy>
Note: See TracBrowser for help on using the repository browser.