This section provides a detailed description of the OpenSplice access control policy configuration.
Each configuration parameter will be explained by means of an extensive description together with the tabular summary that contains the following information:
If the configuration parameter is an XML attribute, the table also contains the following information:
If the configuration parameter is an XML element, the table also contains the following information:
When access control is enabled a file containing the access control policy configuration is referenced in the secure networking configuration.
The access control policy configuration expects a root element named accessControlPolicy. Elements defined in an access control policy are listed and explained in the following sections.
The access control policy contains a hierarchical list of secrecy levels which are grouped under the secrecyLevels element. Typical secrecy levels would be: UNCLASSIFIED, RESTRICTED, CONFIDENTIAL, SECRET, and TOP_SECRET.
Note that the order of defined secrecy levels is important:
secrecy levels are listed from weakest to strongest.
Full Path | accessControlPolicy/secrecyLevels/secrecyLevel |
Format | string |
Dimension | none |
Default Value | none |
Valid Values | any |
Occurrences (min-max) | 0 - * |
Remarks | Listed from the weakest to the strongest level. |
The access control policy contains a list of integrity levels which are grouped under the integrityLevels element.
The order of defined integrity levels is important. Integrity
levels are listed from the weakest to the strongest.
Full Path | accessControlPolicy/integrityLevels/integrityLevel |
Format | string |
Dimension | none |
Default Value | none |
Valid Values | any |
Occurrences (min-max) | 0 - * |
Remarks | Listed from the weakest to the strongest level. |
The users section contains a set of users. A user has an id, a clearance, and a list of authentication mechanisms.
Full Path | accessControlPolicy/users/user/id |
Format | string |
Dimension | none |
Default Value | none |
Valid Values | any |
Occurrences (min-max) | 0 - 1 |
Remarks | none |
A clearance consists of this user’s secrecy level, integrity level, and a set of compartments.
Defines this user’s secrecy level.
Full Path | accessControlPolicy/users/user/clearance/secrecyLevel |
Format | string |
Dimension | none |
Default Value | none |
Valid Values | any, defined in accessControlPolicy/secrecyLevels |
Occurrences (min-max) | 0 - 1 |
Remarks | none |
Defines this user’s integrity level.
Full Path | accessControlPolicy/users/user/clearance/integrityLevel |
Format | string |
Dimension | none |
Default Value | none |
Valid Values | any, defined in accessControlPolicy/integrityLevels |
Occurrences (min-max) | 0 - 1 |
Remarks | none |
The compartments section contains a set of compartments this user is entitled to access.
Full Path | accessControlPolicy/users/user/clearance/compartments/compartment |
Format | string |
Dimension | none |
Default Value | none |
Valid Values | any |
Occurrences (min-max) | 0 - * |
Remarks | none |
This element contains a list of authentication mechanisms for this user.
Currently, OpenSplice supports SSL X.509 Certificate
Authentication. Other authentication mechanisms (such as user
ID/password authentication) may be available in a future release.
Defines properties of x509 (SSL certificate) authentication.
Element subject
Full Path | accessControlPolicy/users/user/authentication/x509Authentication/subject |
Format | string |
Dimension | none |
Default Value | none |
Valid Values | any |
Occurrences (min-max) | 0 - 1 |
Remarks | The distinguished name (DN) of the certificate the user transmits to authenticate to the system (single elements of the distinguished name have to be separated by a comma). |
Note that the user’s certificate DN must be unique: ensure that
multiple users do not share the same client certificate DN.
The resources section contains a set of resources, in other words, the objects to be protected.
A resource has a resource identification (made up of the resource’s type, id, and topic or partitions, respectively) and a classification (containing the resource’s secrecy and integrity level and a list of compartments). The classification is used for mandatory access control.
Defines the type of this resource. A resource can have the type PARTITION or TOPIC.
Full Path | accessControlPolicy/resources/resource/type |
Format | string |
Dimension | none |
Default Value | none |
Valid Values | “PARTITION” or “TOPIC” |
Occurrences (min-max) | 0 - 1 |
Remarks | none |
Defines this resource’s id.
Full Path | accessControlPolicy/resources/resource/id |
Format | string |
Dimension | none |
Default Value | none |
Valid Values | any valid topic or partition name of a DDS domain |
Occurrences (min-max) | 0 - 1 |
Remarks | This is related to the type element value. |
The topics section contains a set of topics. This element is only valid if the type of the resource is TOPIC. It lists all valid topics that may be part of this partition.
Full Path | accessControlPolicy/resources/resource/topics/topic |
Format | string |
Dimension | none |
Default Value | none |
Valid Values | any valid topic of a DDS domain |
Occurrences (min-max) | 0 - 1 |
Remarks | Exists only if element type = PARTITION |
The partitions section contains a set of partitions. This element is only valid if the type of the resource is PARTITION. It lists all valid partitions that may be part of this partition.
Full Path | accessControlPolicy/resources/resource/partitions/partition |
Format | string |
Dimension | none |
Default Value | none |
Valid Values | any valid partition of a DDS domain |
Occurrences (min-max) | 0 - * |
Remarks | Exists only if element type = TOPIC |
A classification consists of this resource’s secrecy level, integrity level, and a set of compartments.
Defines this resource’s secrecy level.
Full Path | accessControlPolicy/resources/resource/classification/secrecyLevel |
Format | string |
Dimension | none |
Default Value | none |
Valid Values | any, defined in accessControlPolicy/secrecyLevels |
Occurrences (min-max) | 0 - 1 |
Remarks | none |
Defines this resource’ integrity level.
Full Path | accessControlPolicy/resources/resource/classification/integrityLevel |
Format | string |
Dimension | none |
Default Value | none |
Valid Values | any, defined in accessControlPolicy/integrityLevels |
Occurrences (min-max) | 0 - 1 |
Remarks | none |
The compartments section contains a set of compartments this resource is intended for.
Full Path | accessControlPolicy/resources/resource/classification/compartments/compartment |
Format | string |
Dimension | none |
Default Value | none |
Valid Values | any |
Occurrences (min-max) | 0 - * |
Remarks | none |
The following XML shows an example access control policy.
<accessControlPolicy>
<secrecyLevels> <!-- for MAC -->
<secrecyLevel>UNCLASSIFIED</secrecyLevel>
<secrecyLevel>CONFIDENTIAL</secrecyLevel>
<secrecyLevel>SECRET</secrecyLevel>
<secrecyLevel>TOP_SECRET</secrecyLevel>
</secrecyLevels>
<integrityLevels> <!-- for MAC -->
<integrityLevel>LEVEL_0</integrityLevel>
<integrityLevel>LEVEL_1</integrityLevel>
<integrityLevel>LEVEL_2</integrityLevel>
</integrityLevels>
<users>
<user>
<id>user1</id>
<clearance> <!-- for MAC -->
<secrecyLevel>CONFIDENTIAL</secrecyLevel>
<integrityLevel>LEVEL_2</integrityLevel>
<compartments>
<compartment>US Only</compartment>
<compartment>Air Force</compartment>
<compartment>Radar</compartment>
</compartments>
</clearance>
<authentication>
<x509Authentication>
<subject>DN</subject>
</x509Authentication>
</authentication>
</user>
<user>
<id>user2</id>
<authentication>
<x509Authentication>
<subject>DN2</subject>
</x509Authentication>
</authentication>
</user>
</users>
<resources>
<resource>
<type>PARTITION</type>
<id>chat</id>
<topics>
<topic>ChatMessage</topic>
<topic>NamedMessage</topic>
</topics>
<classification> <!-- for MAC -->
<secrecyLevel>CONFIDENTIAL</secrecyLevel>
<integrityLevel>LEVEL_1</integrityLevel>
<compartments>
<compartment>US Only</compartment>
<compartment>Air Force</compartment>
</compartments>
</classification>
</resource>
<resource>
<type>TOPIC</type>
<id>pingpong</id>
<partitions>
<partition>PING</partition>
<partition>PONG</partition>
</partitions>
</resource>
<resource>
<type>TOPIC</type>
<id>topic1</id>
<partitions>
</partitions>
</resource>
</resources>
</accessControlPolicy>