| Back | Next | Contents | Cams Administrator's Guide |
A security domain's access control policy declares the resources protected within a security domain and the access control rules that protect them. Specifically, each access control policy contains permission collections and an access control rule library, which are containers for permissions and access control rules. This document contains reference information for each of the tags that can be used within a Cams access-control-policy.xml file. The following table shows the file structure with links to each of the possible elements.
| Tag Name | Instances | Description |
|---|---|---|
|
1
|
declares an access control policy |
|
|
0 ... N
|
a collection of permissions |
|
|
0 ... N
|
a specific permission that associates a set of resources and access control rule or owner |
|
|
1
|
a pattern for matching resources |
|
|
1
|
a reference to an access control rule or a security domain to which access control is delegated |
|
|
1
|
a library of access control rules |
|
|
|
0 ... N
|
a custom type of access control rule registered with the access control rule library |
|
1
|
defines the class responsible for creating, loading, storing, and removing access control rule instances for a given type |
|
|
0 ... 1
|
a list of initialization/configuration parameters |
|
|
0 ... N
|
a generic name/value pair |
|
|
|
0 ... N
|
an access control rule expression |
|
|
0 ... N
|
a Cams instrinsic access control rule that always grants access |
|
|
0 ... N
|
a Cams instrinsic access control rule that always denies access |
|
0 ... N
|
a Cams instrinsic access control rule that requires that a resource be accessed via an encrypted connection (usually means SSL/TLS) |
|
|
0 ... N
|
boolean operators for use between access control rule invocations |
|
|
|
0 ... N
|
a reference to another access control rule to be invoked |
|
|
0 ... N
|
an authentication access control rule embedded in this rule |
|
|
0 ... N
|
a remote host access control rule embedded in this rule |
|
|
0 ... N
|
a custom access control rule of a type declared by acr-type and embedded in this rule |
|
|
0 ... N
|
an authentication access control rule that implements role-based access control |
|
0 ... N
|
grants or denies access based on a role name and optionally a class |
|
|
1
|
a role name |
|
|
0 ... 1
|
a role class |
|
|
|
0 ... N
|
a remote host access control rule |
|
0 ... 1
|
a list of remote hosts to allow access |
|
|
|
0 ... N
|
a remote host name pattern |
|
0 ... 1
|
a list of remote hosts to deny access |
|
|
|
0 ... N
|
a remote host name pattern |
|
0 ... 1
|
a list of remote addresses to allow access |
|
|
|
0 ... N
|
a remote host IP address pattern |
|
0 ... 1
|
a list of remote addresses to deny access |
|
|
|
0 ... N
|
a remote host IP address pattern |
|
|
0 ... N
|
a custom access control rule of a type declared by acr-type (see also acr-persistence-manager). |
The <access-control-policy> element is the top-level element for a security domain's access control policy.
| Item | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Syntax |
<access-control-policy
lastModified="2003110400"
defaulBias="granted | denied"
debug="true|false">
<permission-collection>
...
</permission-collection>
...
<acr-lib>
...
</acr-lib>
</access-control-policy>
|
|||||||||
| Attributes |
|
|||||||||
| Data | None | |||||||||
| Parent Elements |
None |
|||||||||
| Child Elements |
|
|||||||||
| Example |
<access-control-policy lastModified="2003110400">
<!-- HTTP (Web) Resource Permissions -->
<permission-collection type="http" desc="HTTP (Web) Resources">
<permission desc="ACME Local Area Network Resources">
<resource-pattern id="http://www.acme.com/employee*"/>
<acr-ref id="ACME LAN Rule"/>
<!-- Allow http agents to connect -->
<permission-collection type="cams" desc="Agent Permissions">
<permission desc="Cams Agent Connections" actions="ACCESS">
<resource-pattern id="${cams.resource.base.id}/"/>
<acr-ref id="cams agent rule"/>
</permission>
</permission-collection>
<!-- Access Control Rule Library -->
<acr-lib>
|
A security domain's access control policy contains one permission collection for each unique type of permission. For example, all http permissions are stored in a single http-specific permission collection. Permission collections organize Cams access control policies and optimize access control performance.
There can be any number of permission-collections within an access-control-policy, once for each unique type of permission.
| Item | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Syntax |
<permission-collection
type="type code"
desc="text description"
debug="true | false">
<permission ... >
...
</permission>
...
</permission-collection>
|
|||||||||
| Attributes |
|
|||||||||
| Data | None | |||||||||
| Parent Elements | ||||||||||
| Child Elements |
|
|||||||||
| Example |
<permission-collection type="http" desc="HTTP (Web) Resources">
<!-- Declare web pages available to all ACME employees -->
<permission desc="ACME Employee Web Resources">
<resource-pattern id="http://www.acme.com/employee*"/>
<acr-ref id="ACME Employee Rule"/>
|
A permission identifies a set of resources via a resource pattern and either an access control rule to protect those resources or an owner security domain to which access control is to be delegated. The rules for defining resource patterns vary with the type of permission.
Any number of permissions may be added to a permission-collection provided the resource pattern and action(s) are valid for the enclosing permission collection and the permissions don't overlap. Two permissions overlap if their fully-qualified resource patterns are identical and they have at least one action in common. Cams will not allow addition of an overlapping permission and an access control policy referencing an overlapping permission will fail to load.
| Item | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Syntax |
<permission desc="text description" actions"GET,POST,PUT,DELETE,HEAD,OPTIONS,TRACE" debug="true | false"> <resource-pattern ... /> |
|||||||||
| Attributes |
|
|||||||||
| Data | None | |||||||||
| Parent Elements | ||||||||||
| Child Elements |
|
|||||||||
| Example |
<!-- Declare web pages available to the public --> <permission desc="ACME Public Web Resources" actions="GET"> <resource-pattern id="http://www.acme.com/*"/> |
A resource-pattern identifies the resources associated with a permission. When a permission receives an access control request, it will compare the requested resource's identifier and action against it's identifer pattern and actions pattern. If the pattern matches and it is the most specific pattern for the request, then the permission matches and the access control policy will use it to enforce access control.
| Item | Description | |||
|---|---|---|---|---|
| Syntax |
<resource-pattern id="type-specific resource id pattern"/> |
|||
| Attributes |
|
|||
| Data | None | |||
| Parent Elements |
1. <permission> |
|||
| Child Elements | None | |||
| Example |
<!-- Declare the public web pages --> <permission desc="ACME Public Web Resources" actions="GET,POST"> <resource-pattern id="http://www.acme.com/*"/> |
A reference to an existing access control rule within the enclosing security domain's access control rule library. Access control rules can be referenced from:
| Item | Description | |||
|---|---|---|---|---|
| Syntax |
<acr-ref id="identifier of existing access control rule"/> |
|||
| Attributes |
|
|||
| Data | None | |||
| Parent Elements |
1. <permission> |
|||
| Child Elements | None | |||
| Example |
<!-- Declare web pages available to the public --> <permission desc="ACME Public Web Resources" actions="GET"> <resource-pattern id="http://www.acme.com/*"/> |
A reference to an existing security domain to which access control for a permission is delegated.
| Item | Description | |||
|---|---|---|---|---|
| Syntax |
<owner id="security domain identifier"/> |
|||
| Attributes |
|
|||
| Data | None | |||
| Parent Elements |
1. <permission> |
|||
| Child Elements | None | |||
| Example |
<!-- Delegate ACME web server access control to
the ACME security domain -->
<permission desc="ACME Web Server">
<resource-pattern id="http://www.acme.com/*"/>
|
An access control rule library, which can only be referenced once within an access control policy. It serves as a container for all access control rule references and types available within a security domain.
| Item | Description | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Syntax |
<acr-lib debug="true|false"> ... </acr-lib> |
|||||||||||||||
| Attributes |
|
|||||||||||||||
| Data | None | |||||||||||||||
| Parent Elements | ||||||||||||||||
| Child Elements |
|
|||||||||||||||
| Example |
<acr-lib>
<!-- Require an authenticated user to have "employee" role -->
<auth-acr id="ACME Employee Rule">
<role-constraint>
<role-name>employee</role-name>
</role-constraint>
</auth-acr>
<!-- Require hosts to be on the ACME Local Area Network -->
<host-acr id="ACME LAN Rule">
|
An access control rule type declares a custom type of access control rule within an access control rule library. Once defined, access control rules can be used within the access control rule library directly or nested within an access control rule expression.
| Item | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Syntax |
<acr-type> ... </acr-type> |
|||||||||
| Attributes |
|
|||||||||
| Data | None | |||||||||
| Parent Elements |
1. <acr-lib> |
|||||||||
| Child Elements |
|
|||||||||
| Example |
<!-- Declare a custom Access Control Rule type for limiting
<acr-type
name="example:business-hours-acr"
className="examples.acrs.BusinessHoursAcr"
desc="Control access by normal business hours"
>
<acr-persistence-manager className="examples.acrs.XmlBusinessHoursAcrPm">
<param-list>
<param name"clockHours" value="0-23"/>
<param name="useLocalTimeZone" value="true"/>
</param-list>
</acr-persistence-manager>
</acr-type>
<!-- Create an Access Control Rule for limiting access
by company business hours -->
<example:business-hours-acr
xmlns:example="http://cafesoft.com/example-business-hours-acr_1_0.dtd"
id="business hours rule"
desc="Limit access to M-F business hours">
<example:business-hours start-hour="8" end-hour="17"/>
</example:business-hours-acr>
|
An access control rule persistence manager is responsible for persisting (storing), loading, and creating new access control rules.
| Item | Description | |||
|---|---|---|---|---|
| Syntax |
<acr-persistence-manager debug="true|false"> ... </acr-persistence-manager> |
|||
| Attributes |
|
|||
| Data | None | |||
| Parent Elements |
1. <acr-type> |
|||
| Child Elements |
|
|||
| Example |
<!-- Declare a custom Access Control Rule type for limiting
access by company business hours -->
<acr-type
name="example:business-hours-acr"
className="examples.acrs.BusinessHoursAcr"
desc="Control access by normal business hours"
>
<acr-persistence-manager className="examples.acrs.XmlBusinessHoursAcrPm">
<param-list>
<param name"clockHours" value="0-23"/>
<param name="useLocalTimeZone" value="true"/>
</param-list>
</acr-persistence-manager>
</acr-type>
<!-- Create an Access Control Rule for limiting access
by company business hours -->
<example:business-hours-acr
xmlns:example="http://cafesoft.com/example-business-hours-acr_1_0.dtd"
id="business hours rule"
desc="Limit access to M-F business hours">
<example:business-hours start-hour="8" end-hour="17"/>
</example:business-hours-acr>
|
A list of parameters that can be used to set the default configuration.
| Item | Description | |||
|---|---|---|---|---|
| Syntax |
<param-list> <param ... /> ... </param-list> |
|||
| Attributes | None | |||
| Data |
None |
|||
| Parent Elements | ||||
| Child Elements |
|
|||
| Example |
<param-list> <param name"clockHours" value="0-23"/> <param name="useLocalTimeZone" value="true"/> </param-list> |
A parameter used to set the default configuration.
| Item | Description | ||||||
|---|---|---|---|---|---|---|---|
| Syntax |
<param name="textual name" value="value"/> |
||||||
| Attributes |
|
||||||
| Data |
None |
||||||
| Parent Elements |
1. <param-list> |
||||||
| Child Elements | None | ||||||
| Example |
<param-list> <param name"clockHours" value="0-23"/> <param name="useLocalTimeZone" value="true"/> </param-list> |
An authentication access control rule (auth-acr) forces user authentication and controls access by the user's roles. It is composed of one or more role constraints, each of which identifies the name of a role that is assigned at authentication time. Each role constraint may also specify a role-class, which is the Java class implementing the role.
The auth-acr grants access if:
A single auth-acr enables you to grant and deny access to any number of authenticated users by role name and/or role class. When a user is authenticated the Cams authentication configured for the protected resource assigns one or more roles to the user. Let's clarify via the following two scenarios:
Scenario 1: A user authenticates as johndoe
In this scenario, a user logs in with a user name/password. The following identities (roles) are assigned by the Cams authentication system:
Don't let the user designation fool you, johndoe is also a role. He has logged in using his personal identity. Now consider Scenario 2:
Scenario 2: A user authenticates as administrator
In this scenario, a shared user name administrator is used by multiple individuals. After logging in a user has the following identity:
1. user: administrator
The authenticated user has the administrator role, but there's no telling who the real user might be. So, when formulating an auth-acr, a role-name corresponds to either a user or a role. In other words, a user name is also a role name, but a role name is not necessarily a user name.
| Item | Description | ||||||
|---|---|---|---|---|---|---|---|
| Syntax |
<auth-acr
id="authentication rule identifier"
debug="true | false">
<role-constraint>
...
</role-constraint>
|
||||||
| Attributes |
|
||||||
| Data | None | ||||||
| Parent Elements |
1. <acr-lib> |
||||||
| Child Elements |
|
||||||
| Example |
<!-- The following auth-acr is true only if:
1) the user is authenticated
2) and the user has the "administrator" role
3) and the user has the "employee" role
4) and the user does not have the "contractor" role,
implemented by a specific Java class
An auth-acr will evaluate to "true" ONLY if:
1) at least one role-constraint matches
accessGranted="true" and no role-constraints
deny access
2) the auth-acr is completely empty of
role-constraints -->
<auth-acr ID="Employee Role Rule">
<role-constraint>
<role-name>administrator</role-name>
</role-constraint>
<role-constraint>
<role-name>employee</role-name>
</role-constraint>
<role-constraint accessGranted="false">
<role-name>contractor</role-name>
<role-class>
com.cafesoft.security.engine.auth.CSRolePrincipal
</role-class>
</role-constraint>
</auth-acr>
|
A role-constraint grants or denies an authenticated user access by virtue of the identities (roles) associated at login time. A role-constraint applies to an authenticated user if:
A role-constraint grants access if:
If a role-constraint applies to the user and denies access, then the auth-acr as a whole will immediately deny access. To optimize performance, place any role-constraints that deny access at the beginning of the auth-acr.
| Item | Description | ||||||
|---|---|---|---|---|---|---|---|
| Syntax |
<role-constraint accessGranted="true|false"> <role-name> ... </role-name> <role-class> ... </role-class> |
||||||
| Attributes |
|
||||||
| Data | None | ||||||
| Parent Elements |
1. <auth-acr> |
||||||
| Child Elements |
|
||||||
| Example |
<!-- Denies access to CSUserPrincipal "richard" --> <role-constraint accessGranted="false"> <role-name>richard</role-name> <role-class>com.cafesoft.cams.auth.CSUserPrincipal</role-class> </role-constraint> |
An role-name identifies the name of a role possibly assigned to an authenticated user. It is one of two possible criteria (<role-class> is the other) that indicates whether or not a role-constraint applies to the access request.
| Item | Description |
|---|---|
| Syntax |
<role-name>role name</role-name> |
| Attributes | None |
| Data | the name of a role or user name assigned to the user when authenticated. |
| Parent Elements |
1. <role-constraint> |
| Child Elements |
None |
| Example |
<!-- Denies access to "richard" --> <role-constraint accessGranted="false"> <role-name>richard</role-name> </role-constraint> |
An role-class identifies the Java class that implements a role possibly assigned to an authenticated user. It is one of two possible criteria (<role-name> is the other) that indicates whether or not a role-constraint applies to the access request. If specified, it must be used in conjunction with role-name and the role-constraint applies only an authenticated user has the role-name that is implemented by the specified role-class.
To determine the classes assigned to authenticated users, you'll need to know the Login Modules that were used to authenticate the user and the classes they use to add principals (roles). For more information, see the Login Configuration document.
| Item | Description |
|---|---|
| Syntax |
<role-class>fully.qualified.JavaClassName</role-class> |
| Attributes | None |
| Data |
The name of a role class associated with a role-name at login time. For example:
|
| Parent Elements |
1. <role-constraint> |
| Child Elements |
None |
| Example |
<!-- Denies access to CSUserPrincipal "richard" --> <role-constraint accessGranted="false"> <role-name>richard</role-name> <role-class>com.cafesoft.cams.auth.CSUserPrincipal</role-class> </role-constraint> |
The host-acr grants or denies access to a user based on the host name and/or IP address of the computer from which he's attempting to access a protected resource. This rule does not require that the user be authenticated, but does require that the remote host and/or remote address be known.
WARNING: It is not always possible to resolve a remote host's name using the Internet's Domain Name Service (DNS). Even if a host name can be resolved, performance is sometimes poor, which can adversely effect performance. We recommend that you use host name patterns only in a controlled environments (like an intranet), where you're likely to have more control over DNS configuration and performance.
| Item | Description | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Syntax |
<host-acr id="access control rule identifier" debug="true|false"> |
||||||||||||
| Attributes |
|
||||||||||||
| Data | None | ||||||||||||
| Parent Elements | |||||||||||||
| Child Elements |
|
||||||||||||
| Example |
<!-- The following example shows a host-acr which is
true only if:
1) the remote host has a name that ends with
".mycompany.com" or ".partner.com"
2) but the remote host does not include: "badcompany.com"
3) or the remote host has IP address: 208.175.100.5
4) or the remote host has an IP address that matches
pattern: 192.168.0.*
5) but the remote host does not have IP address:
192.168.0.1
-->
<host-acr ID="Extranet Partners Rule">
<allow-host>
<host>*.mycompany.com</host>
<host>*.partner.com</host>
</allow-host>
<deny-host>
<host>*badcompany.com</host>
</deny-host>
<allow-address>
<address>208.175.100.5</address>
<address>192.168.0.*</address>
</allow-address>
<deny-address>
<address>192.168.0.1</address>
</deny-address>
</host-acr>
<!-- A more typical example might grant permission to
remote hosts based on IP address -->
<host-acr ID="Simpler Extranet Partners Rule">
<allow-address>
<address>208.175.100.5</address>
<address>192.168.0.*</address>
</allow-address>
</host-acr>
|
A host-acr will evaluate to true ONLY if:
Defines one or more remote host name patterns. If a remote host attempts to access a resource protected by the security constraint associated with this rule and it's host name matches a pattern within this constraint, then that remote host is eligible to have access granted. Access will be granted by the enclosing rule if the host does not match a deny pattern. If the remote host name is not available, then it cannot match this pattern so this constraint does not apply.
WARNING: It is not always possible to resolve a remote host's name using the Internet's Domain Name Service (DNS). Even if a host name can be resolved, performance is sometimes poor, which can adversely effect performance. We recommend that you use host name patterns only in a controlled environments (like an intranet), where you're likely to have more control over DNS configuration and performance.
| Item | Description | |||
|---|---|---|---|---|
| Syntax |
<allow-host> <host> ... </host> |
|||
| Attributes | None | |||
| Data |
None |
|||
| Parent Elements |
1. <host-acr> |
|||
| Child Elements |
|
|||
| Example |
<!-- Allow connections from know sites --> <allow-host> <host>*.mycompany.com</host> <host>*.partner.com</host> </allow-host> |
Defines one or more remote host name patterns. If a remote host attempts to access a resource protected by the security-constraint associated with this rule and it's host name matches a pattern within this constraint, then that remote host is immediately denied access. If the remote host name is not available, then it cannot match this pattern so this constraint does not apply.
WARNING: It is not always possible to resolve a remote host's name using the Internet's Domain Name Service (DNS). Even if a host name can be resolved, performance is sometimes poor, which can adversely effect performance. We recommend that you use host name patterns only in a controlled environments (like an intranet), where you're likely to have more control over DNS configuration and performance.
| Item | Description | |||
|---|---|---|---|---|
| Syntax |
<deny-host> |
|||
| Attributes | None | |||
| Data |
None |
|||
| Parent Elements |
1. <host-acr> |
|||
| Child Elements |
|
|||
| Example |
<!-- Deny all connections from Bad Company --> <deny-host> <host>*badcompany.com</host> </deny-host> |
The pattern for a remote host name with support for regular expression matching. Zero or more are required. See the Regular Expressions document for more information on pattern matching.
| Item | Description |
|---|---|
| Syntax |
<host>host name or host pattern</host> |
| Attributes | None |
| Data |
host name or host pattern |
| Parent Elements |
1. <allow-host> |
| Child Elements |
None |
| Example |
<!-- Match only a host with DNS name
"www1.mycompany.com" -->
<host>www1.mycompany.com</host>
<!-- Match all hosts with names that end with
"mycompany.com" -->
<host>*mycompany.com</host>
<!-- Match all hosts with names containing
"mycompany" -->
<host>*mycompany*</host>
|
Defines one or more remote host IP address patterns. If a remote host attempts to access a resource protected by the security constraint associated with this rule and it's host IP address matches a pattern within this constraint, then that remote host is eligible to have access granted. Access will be granted by the enclosing rule only if the host does not match a deny pattern. If the remote host IP address is not available, then it cannot match this pattern so this constraint does not apply.
| Item | Description | |||
|---|---|---|---|---|
| Syntax |
<allow-address> <address> ... </address> |
|||
| Attributes | None | |||
| Data |
None |
|||
| Parent Elements |
1. <host-acr> |
|||
| Child Elements |
|
|||
| Example |
<!-- Grant access from specific IP addresses --> <allow-address> <address>208.175.100.5</address> <address>192.168.0.*</address> </allow-address> |
Defines one or more remote host IP address patterns. If a remote host attempts to access a resource protected by the security constraint associated with this rule and it's host IP address matches a pattern within this constraint, then that remote host is immediately denied access. If the remote host name is not available, then it cannot match this pattern so this constraint does not apply.
| Item | Description | |||
|---|---|---|---|---|
| Syntax |
<deny-address> <address> ... </address> |
|||
| Attributes | None | |||
| Data |
None |
|||
| Parent Elements |
1. <host-acr> |
|||
| Child Elements |
|
|||
| Example |
<!-- Deny accesss to specific IP addresses --> <deny-address> <address>192.168.0.1</address> </deny-address> |
The pattern for a remote host IP address with support for regular expression matching. Zero or more are required. See the Regular Expressions document for more information on pattern matching.
| Item | Description |
|---|---|
| Syntax |
<address>host IP address or host IP address pattern</address> |
| Attributes | None |
| Data |
host IP address or host IP address pattern |
| Parent Elements |
1. <allow-address> |
| Child Elements |
None |
| Example |
<!-- Match only a host that has IP address
"192.168.0.1" -->
<address>192.168.0.1</address>
<!-- Match all hosts with IP addresses that start
with "192.168.0." -->
<address>192.168.0.*</address>
|
Creates a custom access control rule by combining other elements attributes. Once defined, access control rule expressions can be referenced directly from permissions or nested within other access control rule expression.
| Item | Description | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Syntax |
<acr id="access control rule identifier" debug="true | false"> ... </acr> |
||||||||||||||||||||||||
| Attributes |
|
||||||||||||||||||||||||
| Data | None | ||||||||||||||||||||||||
| Parent Elements |
1. <acr-lib> |
||||||||||||||||||||||||
| Child Elements |
|
||||||||||||||||||||||||
| Example |
<!--
Require:
1. the host to be on the ACME Local Area Network
2. the user to be authenticated with the "manager" role
3. a confidential (SSL) connection for privacy
-->
<acr id="ACME Manager Resources Rule">
<acr-ref id="ACME LAN Rule"/>
<and/>
<acr-ref id="ACME Management Rule"/>
<and/>
<confidential/>
</acr>
|
Cams instrinsic access control rules that are available to all security domains. These access control rules can be referenced by their identifiers: granted, denied, and confidential. They can also be embedded as XML elements anywhere within an access control rule expression (<acr ...>).
| Item | Description |
|---|---|
| Syntax |
<granted/> |
| Attributes | None |
| Data |
None |
| Parent Elements |
1. <acr> |
| Child Elements |
None |
| Example |
<!-- Grant GET access by all to "public" --> <permission desc="Grant access to public" actions="GET"> |
Boolean operators for use between access control rule invocations and available
to all security domains.
| Item | Description |
|---|---|
| Syntax |
condition <and/> condition |
| Attributes | None |
| Data |
None |
| Parent Elements |
1. <acr> |
| Child Elements |
None |
| Example |
<!--
Match
1. the host to be on the ACME Local Area Network
2. the user to be authenticated with the "manager" role
or "executive" role
3. a confidential (SSL) connection for privacy
-->
<acr id="ACME Manager Resources Rule">
<acr-ref id="ACME LAN Rule"/>
<and/>
<acr-ref id="ACME Management Rule"/>
<or/>
<acr-ref id="ACME Executive Rule"/>
<and/>
<confidential/>
</acr>
|
© Copyright 1996-2004 Cafésoft LLC. All rights reserved.