2 <!-- Wildcard definition area -->
4 <!-- First we define how wildcards has to be interpreted. -->
5 <!-- This is necessary to build a very fast ACL. -->
6 <!-- Internally we extend every wildcard to single entry -->
7 <!-- in the ACL. This allows us to implement the ACL as -->
8 <!-- a very fast three dimensional hash. -->
10 <!-- we map the server_id (dbi) to a human readable value -->
12 <!-- offline system if server 1 really exists -->
17 <!-- FIXME: perhaps we should define roles somewhere else -->
19 <role>RA Operator</role>
20 <role>CA Operator</role>
21 <role>Web Server</role>
26 <!-- This is the real ACL area. Here we define the -->
27 <!-- permissions. A permission consists of four things: -->
30 <!-- 3. affected_role -->
33 <!-- The server is simply the human readable name of a -->
34 <!-- server or the wildcard '*'. The activity is the -->
35 <!-- correct name of the workflow activity. The -->
36 <!-- affected_role is like the name says the affected role. -->
37 <!-- If the CA itself is affected then the value is the -->
38 <!-- empty string. The auth_role is role of the logged in -->
39 <!-- user. This role is determinable from the session. -->
41 <!-- the CA and RA Operator are both allowed everything. There
42 permissions only differ on a workflow level and that the RA
43 Operator approvals are usually only taken in account for certificate
47 <activity>*</activity>
48 <affected_role>*</affected_role>
49 <auth_role>CA Operator</auth_role>
53 <activity>*</activity>
54 <affected_role>*</affected_role>
55 <auth_role>RA Operator</auth_role>
57 <!-- everybody can do all service calls -->
60 <activity>Service::*</activity>
61 <affected_role>*</affected_role>
62 <auth_role>*</auth_role>
64 <!-- same for the API -->
67 <activity>API::*</activity>
68 <affected_role>*</affected_role>
69 <auth_role>*</auth_role>
72 <!-- everybody may store, retrieve and change passwords, the workflow ACL
73 checks that only the owner can get to the workflow (except for
77 <activity>Workflow::store_password</activity>
78 <affected_role>*</affected_role>
79 <auth_role>*</auth_role>
84 <activity>Workflow::retrieve_password</activity>
85 <affected_role>*</affected_role>
86 <auth_role>*</auth_role>
91 <activity>Workflow::change_password</activity>
92 <affected_role>*</affected_role>
93 <auth_role>*</auth_role>
98 <activity>Workflow::persist_csr</activity>
99 <affected_role>*</affected_role>
100 <auth_role>*</auth_role>
102 <!-- Workflow permissions: who can create and read which workflows? -->
103 <workflow_permissions role="Anonymous"> <!-- aka the empty ('') role -->
105 <!-- the anonymous user can create and read CSR and CRR workflows
106 as well as SCEP on all servers -->
108 <type>I18N_OPENXPKI_WF_TYPE_CERTIFICATE_SIGNING_REQUEST</type>
111 <type>I18N_OPENXPKI_WF_TYPE_CERTIFICATE_REVOCATION_REQUEST</type>
114 <type>I18N_OPENXPKI_WF_TYPE_SCEP_REQUEST</type>
116 <read> <!-- read also means list and execute activity (if the ACL condition holds) -->
117 <creator>$self</creator>
118 <type>I18N_OPENXPKI_WF_TYPE_CERTIFICATE_SIGNING_REQUEST</type>
121 <hide>approvals</hide>
125 <creator>$self</creator>
126 <type>I18N_OPENXPKI_WF_TYPE_CERTIFICATE_REVOCATION_REQUEST</type>
129 <creator>$self</creator>
130 <type>I18N_OPENXPKI_WF_TYPE_SCEP_REQUEST</type>
133 <hide>approvals</hide>
136 <!-- needed for SCEP to lookup the profile of an existing
137 certificate which is to be renewed -->
139 <creator>.*</creator>
140 <type>I18N_OPENXPKI_WF_TYPE_CERTIFICATE_ISSUANCE</type>
142 <show>cert_profile</show>
146 </workflow_permissions>
147 <workflow_permissions role="User">
148 <!-- someone with a 'User' role can do everything the anonymous
149 user can + smartcard personalization -->
151 <!-- the anonymous user can create and read CSR and CRR workflows
152 as well as SCEP on all servers -->
154 <type>I18N_OPENXPKI_WF_TYPE_CERTIFICATE_SIGNING_REQUEST</type>
157 <type>I18N_OPENXPKI_WF_TYPE_CERTIFICATE_REVOCATION_REQUEST</type>
160 <type>I18N_OPENXPKI_WF_TYPE_SCEP_REQUEST</type>
163 <type>I18N_OPENXPKI_WF_TYPE_SMARTCARD_PERSONALIZATION</type>
166 <type>I18N_OPENXPKI_WF_TYPE_PASSWORD_SAFE</type>
168 <read> <!-- read also means list and execute activity (if the ACL condition holds) -->
169 <creator>$self</creator>
170 <type>I18N_OPENXPKI_WF_TYPE_CERTIFICATE_SIGNING_REQUEST</type>
173 <hide>approvals</hide>
177 <creator>$self</creator>
178 <type>I18N_OPENXPKI_WF_TYPE_CERTIFICATE_REVOCATION_REQUEST</type>
181 <creator>$self</creator>
182 <type>I18N_OPENXPKI_WF_TYPE_PASSWORD_SAFE</type>
185 <hide>encrypted_.*</hide>
189 <creator>$self</creator>
190 <type>I18N_OPENXPKI_WF_TYPE_SCEP_REQUEST</type>
193 <hide>approvals</hide>
197 <creator>$self</creator>
198 <type>I18N_OPENXPKI_WF_TYPE_SMARTCARD_PERSONALIZATION</type>
201 <hide>approvals</hide>
205 <creator>$self</creator>
206 <type>I18N_OPENXPKI_WF_TYPE_CERTIFICATE_ISSUANCE</type>
209 </workflow_permissions>
210 <workflow_permissions role="RA Operator">
213 <type>I18N_OPENXPKI_WF_TYPE_CERTIFICATE_SIGNING_REQUEST</type>
216 <type>I18N_OPENXPKI_WF_TYPE_CERTIFICATE_REVOCATION_REQUEST</type>
219 <type>I18N_OPENXPKI_WF_TYPE_PASSWORD_SAFE</type>
222 <creator>.*</creator>
223 <type>I18N_OPENXPKI_WF_TYPE_CERTIFICATE_SIGNING_REQUEST</type>
226 <!-- this is a policy decision, you may want to show the
227 reg officers who else has approved - or not, so as to not
228 impair his or her judgement -->
229 <hide>approvals</hide>
233 <creator>.*</creator>
234 <type>I18N_OPENXPKI_WF_TYPE_CERTIFICATE_REVOCATION_REQUEST</type>
237 <creator>.*</creator>
238 <type>I18N_OPENXPKI_WF_TYPE_SCEP_REQUEST</type>
241 <hide>approvals</hide>
245 <creator>.*</creator>
246 <type>I18N_OPENXPKI_WF_TYPE_SMARTCARD_PERSONALIZATION</type>
249 <creator>.*</creator>
250 <type>I18N_OPENXPKI_WF_TYPE_CRL_ISSUANCE</type>
253 <creator>.*</creator>
254 <type>I18N_OPENXPKI_WF_TYPE_CERTIFICATE_ISSUANCE</type>
257 <creator>.*</creator>
258 <type>I18N_OPENXPKI_WF_TYPE_PASSWORD_SAFE</type>
261 <hide>encrypted_.*</hide>
265 </workflow_permissions>
266 <workflow_permissions role="CA Operator">
267 <!-- the CA operator can do everything the RA Operator can, plus
268 creating CRL and certificate issuance workflows -->
271 <type>I18N_OPENXPKI_WF_TYPE_CERTIFICATE_SIGNING_REQUEST</type>
274 <type>I18N_OPENXPKI_WF_TYPE_CERTIFICATE_REVOCATION_REQUEST</type>
277 <type>I18N_OPENXPKI_WF_TYPE_CRL_ISSUANCE</type>
280 <type>I18N_OPENXPKI_WF_TYPE_CERTIFICATE_ISSUANCE</type>
283 <type>I18N_OPENXPKI_WF_TYPE_PASSWORD_SAFE</type>
286 <creator>.*</creator>
287 <type>I18N_OPENXPKI_WF_TYPE_CERTIFICATE_SIGNING_REQUEST</type>
290 <creator>.*</creator>
291 <type>I18N_OPENXPKI_WF_TYPE_CERTIFICATE_REVOCATION_REQUEST</type>
294 <creator>.*</creator>
295 <type>I18N_OPENXPKI_WF_TYPE_SCEP_REQUEST</type>
298 <creator>.*</creator>
299 <type>I18N_OPENXPKI_WF_TYPE_SMARTCARD_PERSONALIZATION</type>
302 <creator>.*</creator>
303 <type>I18N_OPENXPKI_WF_TYPE_CRL_ISSUANCE</type>
306 <creator>.*</creator>
307 <type>I18N_OPENXPKI_WF_TYPE_CERTIFICATE_ISSUANCE</type>
310 <creator>.*</creator>
311 <type>I18N_OPENXPKI_WF_TYPE_PASSWORD_SAFE</type>
314 </workflow_permissions>
315 <!-- TODO - create role that can only create cert issuance workflow and
316 has the necessary ACL rights to do the issuance and escalate to that
317 role in the CSR workflow forking step. Similarly for LDAP publication