Here are the definitions of the commonly used terms when describing the WANdisco Security Agent's ACL mechanism:
The Admin privileges are granted by assigning a user into the special system group Admin. Explicit ACLs need not be set on the Admin group.
The following is the mapping of actual CVS commands to minimum privilege needed to execute them:
CVS Command | Privilege Needed |
---|---|
status | List |
log | List |
ls | List |
list | List |
diff | Read |
checkout | Read |
export | Read |
update | Read |
annotate | Read |
tag | Tag |
remove | Delete |
commit | Write |
import | Write |
add | Write |
admin | Admin |
watch | Admin |
init | Admin |
history | Admin |
release | Admin |
edit | Admin |
rdiff | Admin |
rtag | Admin |
rlog | Admin |
rlist | Admin |
rls | Admin |
rannotate | Admin |
The WANdisco Security Agent ships with no default rules. By default everyone is denied. This is essential for security - it closes the window of vulnerability that would have allowed everyone full access between the time the product is first installed and the admin creates access rules. In order to grant access, the administrator has to explicitly create allow rules.
Using the ACL editor from the web console, the admin can create allow or deny rules.
Perl style regular expressions can be used wherever patterns are allowed. Principal (user/group) or IP patterns for instance - engineering.* (note the dot) or 217.[0-9]+ are all valid patterns. By default the HEAD branch is specified but you can enter a regular expression just as well - release9.0_.* for instance. Note: With the Perl regular expression syntax, if you need to use the '.' (dot) character literally, you need to escape it with a backslash, otherwise '.' (dot) will match any character. To learn more about regular expressions look at a tutorial here.
Multiple rules can be edited atomically using the WANdisco Security Agent. When you submit changes to ACLs, the WANdisco Security Agent guarantees either all the rules are updated or none at all. This ensures consistent rules database across multiple sites, with any pattern of failures.
Rule | Privilege | Group Pattern | IP Pattern | File/Dir Pattern | Branch Pattern |
---|---|---|---|---|---|
Allow | List | engr.* | 192.* | /data/cvsroot/ecommerce.* | HEAD |
The user is allowed to execute the following commands that require only list privilege:
$ echo $CVSROOT :pserver:doe@mypc:/data/cvsroot $ cd /home/ecommerce/ $ cvs status $ cvs ls
The user is denied access when executing the following commands that require read or write privilege:
$ cvs update foo cvs acl: Access Denied: The CVS administrator has not granted cvs acl: you sufficient permissions to execute this command. cvs acl: Please contact your local CVS administrator for help. cvs acl: Aborting the cvs operation. $ cvs commit -m "my changes" cvs acl: Access Denied: The CVS administrator has not granted cvs acl: you sufficient permissions to execute this command. cvs acl: Please contact your local CVS administrator for help. cvs acl: Aborting the cvs operation.
The user is denied access when executing the following list commands from subnet 10.23.1:
$ ifconfig -a eth0 Link encap:Ethernet HWaddr 00:09:5B:19:3E:F8 inet addr:10.23.1.7 Bcast:10.23.1.255 Mask:255.255.255.0 ... $ cvs status cvs acl: Access Denied: The CVS administrator has not granted ...
Rule | Privilege | Group Pattern | IP Pattern | File/Dir Pattern | Branch Pattern |
---|---|---|---|---|---|
Allow | Write | build-engr | 192.* | /data/cvsroot/build.* | rel.* |
Deny | Write | build-engr | 192.* | /data/cvsroot/build/secret.make | rel.* |
The user is allowed to execute the following command:
$ echo $CVSROOT :ext:jane@mypc:/data/cvsroot $ cd /home/build $ ls foo.c bar.v secret.make $ cvs update secret.make $ cvs ci -m "new" foo.c bar.v
The deny rule above doesn't restrict read access to secret.make, only write access is limited.
The user is denied access when executing the following command:
$ cvs ci -m "new changes" secret.make cvs acl: Access Denied: The CVS administrator has not granted ...
In this example, the deny rule is used to restrict access to the file secret.make. Deny rules can be applied to a file or directory pattern as well.
Rule | Privilege | Group Pattern | IP Pattern | File/Dir Pattern | Branch Pattern |
---|---|---|---|---|---|
Allow | Read | qa | 192.* | /data/cvsroot/ecommerce.* | HEAD |
Allow | Read | qa | 192.* | /data/cvsroot/ecommerce.* | rel_1_0 |
The user is allowed to execute the following commands that require only list privilege:
$ echo $CVSROOT :ext:jane@mypc:/data/cvsroot $ cd /home/ecommerce/ $ ls foo.c bar.v $ cvs status foo.c $ cvs ls $ cvs up -r rel_1_0 bar.v $ cvs diff -r rel_1_0 foo.c
The user is denied access when executing the following commands:
$ cvs ci -m "new changes" cvs acl: Access Denied: The CVS administrator has not granted ... $ cvs up -j rel_2_0 cvs acl: Access Denied: The CVS administrator has not granted ... $ cd /home $ cvs co ecommerce cvs acl: Access Denied: The CVS administrator has not granted ...
The last checkout command is denied because to checkout from the CVSROOT requires read privilege not only on the module ecommerce but also the top level cvsroot /data/cvsroot.
To checkout the module the administrator would setup access rules as:
Rule | Privilege | Group Pattern | IP Pattern | File/Dir Pattern | Branch Pattern |
---|---|---|---|---|---|
Allow | Read | qa | 192.* | /data/cvsroot[/] | HEAD |
Allow | Read | qa | 192.* | /data/cvsroot/ecommerce.* | HEAD |
The administrator has setup the following rules:
Rule | Privilege | Group Pattern | IP Pattern | File/Dir Pattern | Branch Pattern |
---|---|---|---|---|---|
Allow | Read | div-engr | .* | /data/cvsroot/dvd/sfo.* | .* |
Allow | Read | nyc-engr | .* | /data/cvsroot/dvd/nyc.* | rel.* |
The user bigoram belongs to both the groups (div-engr, nyc-engr), therefore is allowed to execute the following commands:
$ echo $CVSROOT :pserver:bigoram@mypc:/data/cvsroot $ cd /home/dvd $ cvs update -P -d sfo $ cvs update -P -d nyc
The user smalloram is belongs to only the group (nyc-engr), therefore is allowed to execute the command:
$ echo $CVSROOT :pserver:smalloram@mypc:/data/cvsroot $ cd /home/dvd $ cvs update -P -d nyc
The user smalloram is denied access when executing the following command:
$ cvs -z6 update -P -d sfo cvs acl: Access Denied: The CVS administrator has not granted ...
<Security> <AccessControl> <Enable>true</Enable> </AccessControl> </Security>
By default, the WANdisco Security Agent has access control enabled. To turn it off set /Security/AccessControl/Enable to false.
Copyright © 2005 WANdisco | Sitemap | Privacy Policy | User Agreement | Contact Us |