knife-acl 0.0.12 → 1.0.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d94170663f35d268be7edd8344efc0b1f52bd5f2
4
+ data.tar.gz: ad46530c182bb39277b79c18c1365cb2a2b89e3d
5
+ SHA512:
6
+ metadata.gz: e78525e9f800876951c11b1aaf1bd1a4cab4ddbe144a96330cb7bdcd900be6b86beb2eef872d1f7f994e8c24193768582cf3e35fa175f4723204d5c04c9c01ce
7
+ data.tar.gz: 422f96f8129d6adc045226f3ed25f1157c3f946867f1b41ab687857c04f641b79642625afcd3262c7432c698fd171cfc77abe554f3940efc125960904d340225
data/README.md CHANGED
@@ -1,163 +1,258 @@
1
- # knife ACL
1
+ # knife-acl
2
2
 
3
- # Description
3
+ ## Description
4
4
 
5
- This is an Opscode supported knife plugin which provides some user/group
6
- ACL operations for Enterprise Chef. All commands assume a working
7
- knife configuration for an organization on Enterprise Chef.
5
+ This is a Chef Software, Inc.-supported knife plugin which provides some user/group
6
+ ACL operations for Chef server.
8
7
 
9
- # User Specific Association Group
8
+ All commands assume a working knife configuration for an admin user of a Chef organization.
10
9
 
11
- User Specific Association Groups (USAGs) are a mechanism to grant access to
12
- organization objects to users such that it is possible to quickly revoke the
13
- access without touching all objects in the organization.
10
+ Reference:
14
11
 
15
- Each USAG contains a single user. The USAG is then added to other groups or
16
- directly to the ACLs of an object as needed.
12
+ 1. [Chef Server Permissions](http://docs.chef.io/server/server_orgs.html#permissions)
13
+ 2. [Chef Server Groups](http://docs.chef.io/server/server_orgs.html#groups)
17
14
 
18
- When the user is dissociated from an organization only the user's USAG needs to
19
- be deleted thereby quickly revoking access to all objects in the organization.
15
+ ## Installation
20
16
 
21
- USAGs and their membership within other normal groups are not visible in the
22
- current [management console's web interface](https://manage.opscode.com).
17
+ This knife plugin is packaged as a gem. To install it, enter the
18
+ following:
23
19
 
24
- ### STOP managing group membership with the web interface
20
+ The 1.0.0.beta version of knife-acl is currently recommended so be sure
21
+ to tell the gem command to install the prerelease.
25
22
 
26
- USAGs are currently the correct way to add/remove users to/from groups in an
27
- organization.
23
+ #### ChefDK installed on a workstation
24
+ chef gem install knife-acl --pre
28
25
 
29
- **Be warned**, once you start managing a group's membership using `knife-acl`
30
- you should **avoid managing that group's membership using the [management
31
- console's web interface](https://manage.opscode.com)**.
26
+ #### Omnibus installed chef on a workstation
27
+ /opt/chef/embedded/bin/gem install knife-acl --pre
32
28
 
33
- You can add USAGs to a group using `knife-acl` but if you click "Save Group" in
34
- the web interface then all USAGs will be removed from the group erasing any
35
- `knife-acl` work that was done on the group. This will happen even if no
36
- changes were made to the group's members in the web interface.
29
+ #### Gem installed chef on a workstation
30
+ gem install knife-acl --pre
31
+
32
+ #### Opscode Enterprise Chef (OPC) Directly on the active backend
33
+ as root:
37
34
 
38
- The "Users" group is a special group. When a user is associated with an
39
- organization the user's USAG is automatically made a member of the
40
- "Users" group. You can remove USAGs from the "Users" group using `knife-acl`
41
- but if you click "Save Group" in the web interface then all USAGs in the
42
- organization will be added back to the "Users" group erasing any `knife-acl`
43
- work that was done on the "Users" group. This will happen even if no changes
44
- were made to the group's members in the web interface.
35
+ /opt/opscode/embedded/bin/gem install knife-acl --pre
45
36
 
46
- # Example: Manage a read-only Group
37
+ ### _Warning about Users group_
47
38
 
48
- You can use these commands to manage a read-only group. To do so:
39
+ The "Users" group is a special group and should not be managed with knife-acl.
40
+ As such, knife-acl will give an error if either `knife acl group add user users USER`
41
+ or `knife acl group remove user users USER` are run.
49
42
 
50
- 1. Run `knife actor map` to create/update a local actor map file
51
- `actor-map.yaml`:
43
+ ### Chef Server Roles Based Access Control (RBAC) Summary
52
44
 
53
- knife actor map
45
+ In the context of the Chef Server's API a container is just the API endpoint used
46
+ when creating a new object of a particular object type.
54
47
 
55
- 2. Create a group that will hold read-only users:
48
+ For example, the container for creating client objects is called `clients` and
49
+ the container for creating node objects is called `nodes`.
56
50
 
57
- knife group create read-only
51
+ Two containers are used when creating (uploading) cookbooks.
52
+ The `cookbooks` and `sandboxes` containers.
58
53
 
59
- 3. For each user you wish to have read only access as defined by
60
- permissions given to the "read-only" group do the following:
54
+ Here is a full list of the containers in a Chef Server.
61
55
 
62
- knife group add actor read-only USER
63
- knife group remove actor users USER
56
+ - clients
57
+ - cookbooks
58
+ - data
59
+ - environments
60
+ - groups
61
+ - nodes
62
+ - roles
63
+ - sandboxes
64
64
 
65
- This adds the user to the 'read-only' group and removes them from the
66
- 'users' group which has more permissions by default (users are
67
- added to 'users' when added to an org).
65
+ The permissions assigned to a container are inherited by the objects
66
+ that the container creates. When a permission is changed on a container
67
+ that change will only affect new objects. The change does not propagate to
68
+ existing objects.
68
69
 
69
- # Installation
70
+ For reference and restoral purposes the
71
+ [Default Permissions for Containers](#default-permissions-for-containers) section
72
+ of this document contains `knife-acl` commands that will set the default
73
+ permissions for the admins, clients and users groups on all containers.
74
+ These can be helpful if you need to restore container permissions back to their
75
+ default values.
70
76
 
71
- This knife plugin is packaged as a gem. To install it, enter the
72
- following:
77
+ #### Permissions Management Best Practice
73
78
 
74
- #### Gem installed chef-client on a workstation
75
- gem install knife-acl
79
+ The best practice for managing permissions is to only add a group to an objects' permissions.
80
+ Then you can simply add (or remove) users or clients to the group to give the user or client
81
+ a particular set of permissions. This is much easier to maintain when compared to adding
82
+ individual users or clients to each objects' permissions.
76
83
 
77
- #### Opscode hosted Enterprise Chef (OHC) with an Omnibus-installed chef-client on a workstation
78
- /opt/chef/embedded/bin/gem install knife-acl
84
+ To enforce this the `knife acl add` and `knife acl bulk add` commands can only add a group
85
+ to an objects' permissions.
86
+
87
+ If a group ever needs to be removed from the permissions of all objects the group can simply
88
+ be deleted.
89
+
90
+ #### Setup Default Read-Only Access for Non-admin Users
91
+
92
+ The "Users" group by default provides regular (non-admin) users a lot of access to modify objects in
93
+ the Chef Server.
94
+
95
+ Removing the "Users" group from the "create", "update", "delete" and "grant" Access Control Entries (ACEs)
96
+ of all objects and containers will create a default read-only access for non-admin users.
97
+
98
+ To completely prevent non-admin users from accessing all objects and containers then also remove the
99
+ "Users" group from the "read" ACE.
100
+
101
+ Admin users will still have default admin access to all objects and containers.
102
+
103
+ **NOTE:** Please note that currently the Chef Manage web UI will appear to allow read-only users to edit
104
+ some objects. However, the changes are not actually saved and they disappear when the read-only
105
+ user refreshes the page.
106
+
107
+ ```
108
+ knife acl remove group users containers clients create,update,delete,grant
109
+ knife acl bulk remove group users clients '.*' create,update,delete,grant
110
+
111
+
112
+ knife acl remove group users containers sandboxes create,update,delete,grant
113
+ knife acl remove group users containers cookbooks create,update,delete,grant
114
+ knife acl bulk remove group users cookbooks '.*' create,update,delete,grant
115
+
116
+
117
+ knife acl remove group users containers data create,update,delete,grant
118
+ knife acl bulk remove group users data '.*' create,update,delete,grant
119
+
120
+
121
+ knife acl remove group users containers environments create,update,delete,grant
122
+ knife acl bulk remove group users environments '.*' create,update,delete,grant
79
123
 
80
- #### Opscode Enterprise Chef (OPC) Directly on the active backend
81
- as root: /opt/opscode/embedded/bin/gem install knife-acl
124
+
125
+ knife acl remove group users containers nodes create,update,delete,grant
126
+ knife acl bulk remove group users nodes '.*' create,update,delete,grant
127
+
128
+
129
+ knife acl remove group users containers roles create,update,delete,grant
130
+ knife acl bulk remove group users roles '.*' create,update,delete,grant
131
+ ```
132
+
133
+ #### Selectively Allow Access
134
+
135
+ You can also create a new group and manage its members with knife-acl or the Manage web interface.
136
+
137
+ Then add this group to the ACEs of all appropriate containers and/or objects according to your requirements.
138
+
139
+ #### Create read-only group with read only access
140
+
141
+ The following set of commands creates a group named `read-only` and
142
+ gives it `read` access on all objects.
143
+
144
+ ```
145
+ knife group create read-only
146
+
147
+
148
+ knife acl add group read-only containers clients read
149
+ knife acl bulk add group read-only clients '.*' read
150
+
151
+
152
+ knife acl add group read-only containers sandboxes read
153
+ knife acl add group read-only containers cookbooks read
154
+ knife acl bulk add group read-only cookbooks '.*' read
155
+
156
+
157
+ knife acl add group read-only containers data read
158
+ knife acl bulk add group read-only data '.*' read
159
+
160
+
161
+ knife acl add group read-only containers environments read
162
+ knife acl bulk add group read-only environments '.*' read
163
+
164
+
165
+ knife acl add group read-only containers nodes read
166
+ knife acl bulk add group read-only nodes '.*' read
167
+
168
+
169
+ knife acl add group read-only containers roles read
170
+ knife acl bulk add group read-only roles '.*' read
171
+ ```
82
172
 
83
173
  # Subcommands
84
174
 
85
175
  ## knife user list
86
176
 
87
- Show a list of users associated with your org
177
+ Show a list of users associated with your organization
88
178
 
89
- ## knife actor map
179
+ ## knife group list
90
180
 
91
- Create a local map file actor-map.yaml" that maps users to their USAG
92
- and stores a list of clients.
181
+ List groups in the organization.
93
182
 
94
- This command creates a local cache of the user to USAG mapping as well
95
- as a local cache of clients and is used by the following commands:
96
- - `knife group show`,
97
- - `knife group add actor`, and
98
- - `knife group remove actor`.
183
+ ## knife group create GROUP_NAME
99
184
 
100
- ## knife group create
185
+ Create a new group `GROUP_NAME` to the organization.
101
186
 
102
- Create a new group.
187
+ ## knife group show GROUP_NAME
103
188
 
104
- ## knife group list
189
+ Show the membership details for `GROUP_NAME`.
105
190
 
106
- List groups in the org.
191
+ ## knife group add MEMBER_TYPE MEMBER_NAME GROUP_NAME
107
192
 
108
- ## knife group show GROUP
193
+ Add MEMBER_NAME to `GROUP_NAME`.
109
194
 
110
- Show the details membership details for `GROUP`. If you have run
111
- `knife actor map`, the user map file will be used to annotate USAGs so
112
- you can see what user they represent.
195
+ Valid `MEMBER_TYPE` values are
113
196
 
114
- ## knife group add actor GROUP ACTOR
197
+ - client
198
+ - group
199
+ - user
115
200
 
116
- Add ACTOR to GROUP. ACTOR can be a user name or a client
117
- name. Requires an up-to-date actor map as created by `knife actor
118
- map`. The user's USAG will be added as a subgroup of GROUP if ACTOR
119
- is a user.
201
+ ## knife group remove MEMBER_TYPE MEMBER_NAME GROUP_NAME
120
202
 
121
- ## knife group remove actor GROUP ACTOR
203
+ Remove `MEMBER_NAME` from `GROUP_NAME`.
122
204
 
123
- Remove ACTOR from GROUP. Requires an up-to-date actor map as created by
124
- `knife actor map`. The user's USAG will be removed from the subgroups
125
- of GROUP if ACTOR is a user.
205
+ See the `knife group add` documentation above for valid `MEMBER_TYPE` values.
126
206
 
127
- ## knife group destroy GROUP
207
+ ## knife group destroy GROUP_NAME
128
208
 
129
- Removes `GROUP` from the organization. All members of the group (both
130
- actors and groups) remain in the system, only `GROUP` is removed.
209
+ Removes group `GROUP_NAME` from the organization. All members of the group
210
+ (clients, groups and users) remain in the system, only `GROUP_NAME` is removed.
211
+
212
+ The `admins`, `billing-admins`, `clients` and `users` groups are special groups
213
+ so knife-acl will not allow them to be destroyed.
131
214
 
132
215
  ## knife acl show OBJECT_TYPE OBJECT_NAME
133
216
 
134
217
  Shows the ACL for the specified object. Objects are identified by the
135
218
  combination of their type and name.
136
219
 
137
- Valid `OBJECT_TYPE`'s are
220
+ Valid `OBJECT_TYPE` values are
138
221
 
139
222
  - clients
140
- - groups
141
223
  - containers
224
+ - cookbooks
142
225
  - data
226
+ - environments
227
+ - groups
143
228
  - nodes
144
229
  - roles
145
- - cookbooks
146
- - environments
147
230
 
148
231
  For example, use the following command to obtain the ACL for a node
149
232
  named "web.example.com":
150
233
 
151
234
  knife acl show nodes web.example.com
152
235
 
153
- ## knife acl add OBJECT_TYPE OBJECT_NAME PERM [group|client] NAME
236
+ ## knife acl add group GROUP_NAME OBJECT_TYPE OBJECT_NAME PERMS
237
+
238
+ The best practice is to only add groups to ACLs. To enforce this best practice
239
+ the `knife acl add` command is only able to add groups to ACLs.
240
+
241
+ Add `GROUP_NAME` to the `PERMS` access control entry of the `OBJECT_NAME`.
242
+ Objects are specified by the combination of their type and name.
154
243
 
155
- Add the group or client with NAME to the PERM access control entry of
156
- the object. Objects are specified by the combination of
157
- their type and name. See the `knife acl show` documentation above for
158
- the permitted types.
244
+ Valid `OBJECT_TYPE` values are
245
+
246
+ - clients
247
+ - containers
248
+ - cookbooks
249
+ - data
250
+ - environments
251
+ - groups
252
+ - nodes
253
+ - roles
159
254
 
160
- Valid `PERM`s are:
255
+ Valid `PERMS` are:
161
256
 
162
257
  - create
163
258
  - read
@@ -165,43 +260,151 @@ Valid `PERM`s are:
165
260
  - delete
166
261
  - grant
167
262
 
168
- For example, use the following command to give the superuser group
169
- the ability to delete the node called "api.example.com":
263
+ Multiple `PERMS` can be given in a single command by separating them
264
+ with a comma with no extra spaces.
265
+
266
+ For example, use the following command to give the superusers group
267
+ the ability to delete and update the node called "web.example.com":
268
+
269
+ knife acl add group superusers nodes web.example.com delete,update
270
+
271
+ ## knife acl bulk add group GROUP_NAME OBJECT_TYPE REGEX PERMS
272
+
273
+ The best practice is to only add groups to ACLs. To enforce this best practice
274
+ the `knife acl bulk add` command is only able to add groups to ACLs.
275
+
276
+ Add `GROUP_NAME` to the `PERMS` access control entry for each object in a
277
+ set of objects of `OBJECT_TYPE`.
278
+
279
+ The set of objects are specified by matching the objects' names with the
280
+ given REGEX regular expression surrounded by quotes.
281
+
282
+ See the `knife acl add` documentation above for valid `OBJECT_TYPE` and `PERMS` values.
283
+
284
+ Appending `-y` or `--yes` to the `knife acl bulk add` command will run the command
285
+ without any prompts for confirmation.
286
+
287
+ For example, use the following command to give the superusers group the ability to
288
+ delete and update all nodes matching the regular expression 'WIN-.*':
289
+
290
+ knife acl bulk add group superusers nodes 'WIN-.*' delete,update --yes
291
+
292
+ ## knife acl remove MEMBER_TYPE MEMBER_NAME OBJECT_TYPE OBJECT_NAME PERMS
293
+
294
+ Remove `MEMBER_NAME` from the `PERMS` access control entry of `OBJECT_NAME`.
295
+ Objects are specified by the combination of their type and name.
296
+
297
+ Valid `MEMBER_TYPE` values are
298
+
299
+ - client
300
+ - group
301
+ - user
302
+
303
+ Valid `OBJECT_TYPE` values are
304
+
305
+ - clients
306
+ - containers
307
+ - cookbooks
308
+ - data
309
+ - environments
310
+ - groups
311
+ - nodes
312
+ - roles
313
+
314
+ Valid `PERMS` are:
315
+
316
+ - create
317
+ - read
318
+ - update
319
+ - delete
320
+ - grant
321
+
322
+ Multiple `PERMS` can be given in a single command by separating them
323
+ with a comma with no extra spaces.
324
+
325
+ For example, use the following command to remove the superusers group from the delete and
326
+ update access control entries for the node called "web.example.com":
327
+
328
+ knife acl remove group superusers nodes web.example.com delete,update
329
+
330
+ ## knife acl bulk remove MEMBER_TYPE MEMBER_NAME OBJECT_TYPE REGEX PERMS
331
+
332
+ Remove `MEMBER_NAME` from the `PERMS` access control entry for each object in a
333
+ set of objects of `OBJECT_TYPE`.
334
+
335
+ The set of objects are specified by matching the objects' names with the
336
+ given REGEX regular expression surrounded by quotes.
337
+
338
+ See the `knife acl remove` documentation above for valid `MEMBER_TYPE`, `OBJECT_TYPE` and `PERMS` values.
339
+
340
+ Appending `-y` or `--yes` to the `knife acl bulk add` command will run the command
341
+ without any prompts for confirmation.
342
+
343
+ For example, use the following command to remove the superusers group from the delete and
344
+ update access control entries for all nodes matching the regular expression 'WIN-.*':
345
+
346
+ knife acl bulk remove group superusers nodes 'WIN-.*' delete,update --yes
347
+
348
+ ## Default Permissions for Containers
170
349
 
171
- knife acl add node api.exmaple.com delete group superusers
350
+ The following commands will set the default permissions for the
351
+ admins, clients and users groups on all containers. These can
352
+ be helpful if you need to restore container permissions back to their
353
+ default values.
172
354
 
173
- ## knife acl remove OBJECT_TYPE OBJECT_NAME PERM [group|client] NAME
355
+ ```
356
+ knife acl add group admins containers clients create,read,update,delete,grant
357
+ knife acl remove group clients containers clients create,read,update,delete,grant
358
+ knife acl add group users containers clients read,delete
359
+ knife acl remove group users containers clients create,update,grant
174
360
 
175
- Remove group or client with NAME from the PERM access control entry of
176
- the specified object. Objects are specified by the combination of
177
- their type and name. See the `knife acl show` documentation above for
178
- the permitted types. See the `knife acl add` documentation abouve for
179
- the permitted `PERMS`s.
361
+ knife acl add group admins containers cookbooks create,read,update,delete,grant
362
+ knife acl add group clients containers cookbooks read
363
+ knife acl remove group clients containers cookbooks create,update,delete,grant
364
+ knife acl add group users containers cookbooks create,read,update,delete
365
+ knife acl remove group users containers cookbooks grant
180
366
 
181
- For example, use the following command to remove the superuser group's
182
- ability to delete the node called "api.example.com":
367
+ knife acl add group admins containers data create,read,update,delete,grant
368
+ knife acl add group clients containers data read
369
+ knife acl remove group clients containers data create,update,delete,grant
370
+ knife acl add group users containers data create,read,update,delete
371
+ knife acl remove group users containers data grant
183
372
 
184
- knife acl remove node api.exmaple.com delete group superusers
373
+ knife acl add group admins containers environments create,read,update,delete,grant
374
+ knife acl add group clients containers environments read
375
+ knife acl remove group clients containers environments create,update,delete,grant
376
+ knife acl add group users containers environments create,read,update,delete
377
+ knife acl remove group users containers environments grant
185
378
 
379
+ knife acl add group admins containers nodes create,read,update,delete,grant
380
+ knife acl add group clients containers nodes create,read
381
+ knife acl remove group clients containers nodes update,delete,grant
382
+ knife acl add group users containers nodes create,read,update,delete
383
+ knife acl remove group users containers nodes grant
186
384
 
187
- ## TODO
385
+ knife acl add group admins containers roles create,read,update,delete,grant
386
+ knife acl add group clients containers roles read
387
+ knife acl remove group clients containers roles create,update,delete,grant
388
+ knife acl add group users containers roles create,read,update,delete
389
+ knife acl remove group users containers roles grant
188
390
 
189
- - Feature: build group membership graph
190
- - Remove duplication in commands
191
- - Staleness detector for actor map
192
- - Improve error messages when actor map is missing
193
- - Don't save group if it will be a no-op
391
+ knife acl add group admins containers sandboxes create,read,update,delete,grant
392
+ knife acl remove group clients containers sandboxes create,read,update,delete,grant
393
+ knife acl add group users containers sandboxes create
394
+ knife acl remove group users containers sandboxes read,update,delete,grant
395
+ ```
194
396
 
195
397
  ## LICENSE
196
398
 
197
399
  Unless otherwise specified all works in this repository are
198
400
 
199
- Copyright 2013--2014 Chef Software, Inc.
401
+ Copyright 2013-2015 Chef Software, Inc.
200
402
 
201
403
  |||
202
404
  | ------------- |-------------:|
203
- | Author |Seth Falcon (seth@opscode.com)|
204
- | Copyright |Copyright (c) 2013--2014 Chef Software, Inc.|
405
+ | Author |Seth Falcon (seth@chef.io)|
406
+ | Author |Jeremiah Snapp (jeremiah@chef.io)|
407
+ | Copyright |Copyright (c) 2013-2015 Chef Software, Inc.|
205
408
  | License |Apache License, Version 2.0|
206
409
 
207
410
  Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,6 +1,7 @@
1
1
  #
2
2
  # Author:: Steven Danna (steve@opscode.com)
3
- # Copyright:: Copyright 2011--2014 Chef Software, Inc.
3
+ # Author:: Jeremiah Snapp (jeremiah@chef.io)
4
+ # Copyright:: Copyright 2011--2015 Chef Software, Inc.
4
5
  # License:: Apache License, Version 2.0
5
6
  #
6
7
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,45 +20,33 @@
19
20
  module OpscodeAcl
20
21
  class AclAdd < Chef::Knife
21
22
  category "OPSCODE HOSTED CHEF ACCESS CONTROL"
22
- banner "knife acl add OBJECT_TYPE OBJECT_NAME PERM [group|client] NAME"
23
-
24
- attr_reader :object_type, :object_name, :perm, :actor_type, :actor_name
23
+ banner "knife acl add MEMBER_TYPE MEMBER_NAME OBJECT_TYPE OBJECT_NAME PERMS"
25
24
 
26
25
  deps do
27
26
  include OpscodeAcl::AclBase
28
27
  end
29
28
 
30
29
  def run
31
- @object_type, @object_name, @perm, @actor_type, @actor_name = name_args
30
+ member_type, member_name, object_type, object_name, perms = name_args
32
31
 
33
- if name_args.length < 5
32
+ if name_args.length != 5
34
33
  show_usage
35
- ui.fatal "You must specify the object type, object name, perm, actor type (client or group), and actor name"
34
+ ui.fatal "You must specify the member type [group], member name, object type, object name and perms"
36
35
  exit 1
37
36
  end
38
37
 
39
- validate_all_params!
40
- ace = get_ace(object_type, object_name, perm)
41
-
42
- case actor_type
43
- when "client"
44
- add_actor_to_ace!(actor_name, ace)
45
- when "group"
46
- add_group_to_ace!(actor_name, ace)
47
- when "users"
48
- # Not Implemented yet, we shouldn't get here.
38
+ unless member_type == 'group'
39
+ ui.fatal "ERROR: To enforce best practice, knife-acl can only add a group to an ACL."
40
+ ui.fatal " See the knife-acl README for more information."
41
+ exit 1
49
42
  end
43
+ validate_perm_type!(perms)
44
+ validate_member_name!(member_name)
45
+ validate_object_name!(object_name)
46
+ validate_object_type!(object_type)
47
+ validate_member_exists!(member_type, member_name)
50
48
 
51
- update_ace!(object_type, object_name, perm, ace)
52
- end
53
-
54
- def add_group_to_ace!(name, ace)
55
- ace['groups'] << name unless ace['groups'].include?(name)
56
- end
57
-
58
- def add_actor_to_ace!(name, ace)
59
- ace['actors'] << name unless ace['actors'].include?(name)
49
+ add_to_acl!(member_type, member_name, object_type, object_name, perms)
60
50
  end
61
-
62
51
  end
63
52
  end