JavaBlog.fr / Java.lu API DCTM,DEVELOPMENT,DFC DCTM,Documentum,DQL DCTM Documentum : ACL, Permit Type, Trusted Content Services, TCS, Access Restriction, Required Group Set

Documentum : ACL, Permit Type, Trusted Content Services, TCS, Access Restriction, Required Group Set

Hello,

The Trusted Content Services is a product of EMC which adds some security options on the Content Server. I had only the opportunity to use the feature concerning the additional types of entries in an ACL, so, I explain this feature in this post. Unfortunately, the others security features like Encrypted file store storage areas, Digital Shredding and Electronic signatures are still unknown for me.

Below, a simple example of API script for public ACL creation:

01######## Creation of an ACL via API
02begintran,c
03create,c,dm_acl
04set,c,l,object_name
05TEST_ACL_HUO_1
06set,c,l,description
07ACL TEST HUO
08set,c,l,owner_name
09dm_dbo
10set,c,l,r_is_internal
11FALSE
12set,c,l,globally_managed
13FALSE
14set,c,l,acl_class
153
16 
17### ACCESSOR 1
18append,c,l,r_accessor_name                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
19docu
20append,c,l,r_is_group
21TRUE
22append,c,l,r_accessor_permit
237
24append,c,l,r_permit_type
250
26 
27### ACCESSOR 2
28append,c,l,r_accessor_name
29gedadm
30append,c,l,r_is_group
31FALSE
32append,c,l,r_accessor_permit
336
34append,c,l,r_permit_type
350
36 
37save,c,l
38commit,c

…. so, the result is an ACL with an important information r_permit_type:

01USER ATTRIBUTES
02  object_name                : TEST_ACL_HUO_1
03  description                : ACL TEST HUO
04  owner_name                 : MYDOCBASE
05  globally_managed           : F
06  acl_class                  : 3
07 
08SYSTEM ATTRIBUTES
09  r_object_id                : 45xxxxxxxxx2
10  r_is_internal              : F
11  r_accessor_name         [0]: dm_world
12                          [1]: dm_owner
13                          [2]: docu
14                          [3]: gedadm
15  r_accessor_permit       [0]: 1
16                          [1]: 1
17                          [2]: 7
18                          [3]: 6
19  r_accessor_xpermit      [0]: 0
20                          [1]: 0
21  r_is_group              [0]: F
22                          [1]: F
23                          [2]: T
24                          [3]: F
25  r_has_events               : F
26  r_permit_type           [0]: 0
27                          [1]: 0
28                          [2]: 0
29                          [3]: 0
30  r_application_permit    [0]:
31                          [1]:
32                          [2]:
33                          [3]:
34  r_template_id              : 0000000000000000
35  r_alias_set_id             : 0000000000000000</sql>

 
 
Documentum (Via the product “Trusted Content Services”) provides an ability to restrict the basic permissions and extended permissions via the Permit types : AccessRestriction and ExtendedRestriction. The permit_type argument identifies which type of entry is added. In the below example, the permit type used r_permit_type=0 is the basic/standard permit type AccessPermit.
 
There possible types of entries are:

  • AccessPermit (0): An AccessPermit entry grants the base permissions. Creating, modifying, or deleting AccessPermit entries is supported by all Content Servers.
  • ExtendedPermit (1): An ExtendedPermit entry grants the extended permissions. Creating, modifying, or deleting ExtendedPermit entries is supported by all Content Servers.
  • AccessRestriction (3): An AccessRestriction entry identifies a user or group and restricts the user or group’s access to the level specified in the entry even though that user or group may be granted a higher access level by another entry. An access restriction entry denies a user the right to the base object-level permission level specified in the entry.
    This restriction is EXCLUSIVE/EXCLUDING : a AccessRestriction entry with the VERSION (5) permission will allow a maximum permission RELATE (4).
  • ExtendedRestriction (4): An extended restriction entry denies a user or the members of a specified group the specified extended object-level permission.
    For example, if a user would otherwise have Change Permission rights as a member of a particular group, an extended restriction would remove that right.
  • RequiredGroup (6): A RequiredGroup entry requires a user requesting access to an object governed by the permission set to be a member of the group identified in the entry. If there are entries for multiple groups, the user must be a member of all the groups before Content Server allows access to the object.
  • RequiredGroupSet (7): A RequiredGroupSet entry requires a user requesting access to an object governed by the permission set to be a member of atleast one group in the set of groups.
  • ApplicationPermit (2): An ApplicationPermit entry identifies a user or group and a user-defined permission level granted to that user or group. Application permits are interpreted only by user applications. Content Server does not enforce application permits.
  • ApplicationRestriction (5): An ApplicationRestriction entry identifies a user or group and restricts that user or group from exercising the specified application permit. Application restrictions are interpreted only by user applications. Content Server does not enforce application restrictions.

The Content Server with a Trusted Content Services license is necessary to grant the permit types AccessRestriction, ExtendedRestriction, RequiredGroup, RequiredGroupSet, ApplicationPermit, and ApplicationRestriction. The below attributes of ACL (PST and instances of PST) are set if these permit types are used:

1i_has_required_groups      : T
2i_has_required_group_set   : T
3i_has_access_restrictions  : T

 
 
In order to illustrate the utility of these restriction feature, here are some examples:

Example 1: Restriction access to sub group
The following example of an ACL on a document belonging to the HR department in an organization :
HR_ACL:
+ Groupe Name = HR_Department ; Permit Type = AccessPermit ; Permission Level = Delete
+ Groupe Name = HR_Department_subgroup ; Permit Type = AccessRestriction ; Permission Level = Write

This HR_ACL generically provides “Delete” access to the HR department group, but does not allow a particular subgroup within this HR department to update or delete the document.
By using AccessRestriction permit type with basic permission WRITE, the system allows this subgroup to only BROWSE, READ, RELATE and VERSION the document (not “WRITE”!!!!).

 
 
Example 2: Archiving document
An other typic concret application of this restriction access is the archiving of documents. So, we could create 2 ACLs : HR_ACL and HR_ACL_ARCHIVED using the following 2 groups:
+ huo_grp_no_body is a group containing no user.
+ huo_grp_all_users is a group containing all users.
HR_ACL:

1retrieve,c,dm_acl where object_name='HR_ACL'
2grant,c,l,huo_grp_no_body,AccessRestriction,,5
3save,c,l

HR_ACL_ARCHIVED:

1retrieve,c,dm_acl where object_name='HR_ACL_ARCHIVED'
2grant,c,l,huo_grp_all_users,AccessRestriction,,5
3save,c,l

By using AccessRestriction permit type with basic permission VERSION (5):

  • with the HR_ACL, the system dosen’t restrict explicitly users to access and modify the document,
  • with the HR_ACL_ARCHIVED, the system restricts all users to only BROWSE, READ, and RELATE the document (not “VERSION ”!!!!)

 
 
Example 3: Best Practice ACL / Group
A best practice for ACL is to create several groups for the main accesses : DELETE, WRITE, RELATE and BROWSE. Theses groups must be granted with AccessPermit and RequiredGroupSet permit types.

01retrieve,c,dm_acl where object_name like 'MY_HUO_ACL'
02#
03grant,c,l,dm_world,1,
04grant,c,l,dm_owner,7,CHANGE_LOCATION,CHANGE_PERMIT
05#
06# BROWSE - AccessPermit
07grant,c,l,access-browse-my-huo-acl,AccessPermit,,2
08revoke,c,l,access-browse-my-huo-acl,ExtendedPermit,,EXECUTE_PROC
09revoke,c,l,access-browse-my-huo-acl,ExtendedPermit,,CHANGE_LOCATION
10#
11# RELATE - AccessPermit
12grant,c,l,access-relate-my-huo-acl,AccessPermit,,4
13revoke,c,l,access-relate-my-huo-acl,ExtendedPermit,,EXECUTE_PROC
14revoke,c,l,access-relate-my-huo-acl,ExtendedPermit,,CHANGE_LOCATION
15#
16# WRITE - AccessPermit
17grant,c,l,access-write-my-huo-acl,AccessPermit,,6
18revoke,c,l,access-write-my-huo-acl,ExtendedPermit,,EXECUTE_PROC
19grant,c,l,access-write-my-huo-acl,ExtendedPermit,,CHANGE_LOCATION
20grant,c,l,access-write-my-huo-acl,ExtendedPermit,,CHANGE_PERMIT
21#
22# DELETE - AccessPermit
23grant,c,l,access-delete-my-huo-acl,AccessPermit,,7
24revoke,c,l,access-delete-my-huo-acl,ExtendedPermit,,EXECUTE_PROC
25grant,c,l,access-delete-my-huo-acl,ExtendedPermit,,CHANGE_LOCATION
26grant,c,l,access-delete-my-huo-acl,ExtendedPermit,,CHANGE_PERMIT
27#
28# RequiredGroupSet
29grant,c,l,access-browse-my-huo-acl,RequiredGroupSet
30grant,c,l,access-relate-my-huo-acl,RequiredGroupSet
31grant,c,l,access-write-my-huo-acl,RequiredGroupSet
32grant,c,l,access-delete-my-huo-acl,RequiredGroupSet
33save,c,l

Result:

01object_name                : MY_HUO_ACL
02r_accessor_name
03      [0]: dm_world
04  [1]: dm_owner
05  [2]: access-browse-my-huo-acl
06  [3]: access-relate-my-huo-acl
07  [4]: access-write-my-huo-acl
08  [5]: access-delete-my-huo-acl
09  [6]: access-browse-my-huo-acl
10  [7]: access-relate-my-huo-acl
11  [8]: access-write-my-huo-acl
12  [9]: access-delete-my-huo-acl
13 
14r_accessor_permit     
15  [0]: 1                        
16  [1]: 7
17  [2]: 2
18  [3]: 4
19  [4]: 6
20  [5]: 7
21  [6]: 0
22  [7]: 0
23  [8]: 0
24  [9]: 0
25 
26r_accessor_xpermit
27  [0]: 3
28  [1]: 131073
29  [2]: 3
30  [3]: 3
31  [4]: 131073
32  [5]: 131073
33  [6]: 0
34  [7]: 0
35  [8]: 0
36  [9]: 0
37 
38r_is_group
39  [0]: F
40  [1]: F
41  [2]: T
42  [3]: T
43  [4]: T
44  [5]: T
45  [6]: T
46  [7]: T
47  [8]: T
48  [9]: T
49 
50r_permit_type
51  [0]: 0
52  [1]: 0
53  [2]: 0
54  [3]: 0
55  [4]: 0
56  [5]: 0
57  [6]: 7
58  [7]: 7
59  [8]: 7
60  [9]: 7
61 
62r_application_permit  
63  [0]:
64  [1]:
65  [2]:
66  [3]:
67  [4]:
68  [5]:
69  [6]:
70  [7]:
71  [8]:
72  [9]:
73 
74i_has_required_groups      : F
75i_has_required_group_set   : T
76i_has_access_restrictions  : T

 
 
Example 4: Use of RequiredGroup / RequiredGroupSet
To have visibility on the document, the user must belong to the group “my_restricted_required_grp” (via RequiredGroup) and to one of the groups “% RestrictedQuarantineUsersGroup, technical users, users_all” (via RequiredGroupSet). The level of the BROWSE / READ / WRITE / DELETE persmission will be set by the other entries in the ACL.

01r_accessor_name
02...
03[ 7]: %RestrictedQuarantineUsersGroup
04[ 8]: technical users
05[ 9]: users_all
06[10]: my_restricted_required_grp
07 
08r_permit_type
09...
10[ 7]: 7 = RequiredGroupSet
11[ 8]: 7 = RequiredGroupSet
12[ 9]: 7 = RequiredGroupSet
13[10]: 6 = RequiredGroup

To gain visibility into the document, the user will need to belong to one of the other groups “% CompanyUsersGroup, technical users, users_all” (via RequiredGroupSet). The level of the BROWSE / READ / WRITE / DELETE persmission will be set by the other entries in the ACL.

01r_accessor_name       
02...
03[ 7]: %CompanyUsersGroup
04[14]: technical users
05[15]: users_all
06 
07r_permit_type         
08...
09[ 8]: 7 = RequiredGroupSet
10[14]: 7 = RequiredGroupSet
11[15]: 7 = RequiredGroupSet

 
 
That’s all !!!

Huseyin OZVEREN

Leave a Reply

Your email address will not be published.

Time limit is exhausted. Please reload CAPTCHA.

Related Post