User authorization
ADM has an internal Policy Decision Point (PDP) that is used for the authorization decisions for all the API calls to ADM. The internal PDP is configured with the authorization domain referred to by the "system" name, which is automatically created when the database is initialized. The "system" domain is under the namespace "system".
If the authorization domain referred to by the "system" name is missing or invalid, ADM will not start.
The "system" authorization domain
The "system" authorization domain can be retrieved and stored in the same manner as any other stored domain, and it can be updated.
If the authorization domain referred to by the "system" name is updated during runtime, the internal PDP is not reconfigured dynamically. A restart of ADM is required for the updated authorization domain configuration to be applied.
At restart, the updated domain is subject to the regular validations, and ADM will fail to start if the domain has become invalid.
Structure of the "system" authorization domain
The "system" domain should follow a simple, basic structure.
identity: 28bd13d6-9fd6-480e-9881-811ffea146e3
policy:
mainPolicyId: permit_all
xacmlSpecifications:
- |
<xacml3:Policy PolicyId="permit_all" Version="1.0" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:deny-overrides" xmlns:xacml3="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17">
<xacml3:Description>Permit all</xacml3:Description>
<xacml3:PolicyDefaults><xacml3:XPathVersion>http://www.w3.org/TR/1999/REC-xpath-19991116</xacml3:XPathVersion></xacml3:PolicyDefaults>
<xacml3:Target/>
<xacml3:Rule RuleId="permit" Effect="Permit">
<xacml3:Description>Permit</xacml3:Description>
<xacml3:Target/>
</xacml3:Rule>
</xacml3:Policy>
Default "system" authorization domain
Restrictions regarding the "system" authorization domain
Certain restrictions apply to the "system" authorization domain compared to other domains:
- attribute connectors are not supported
Initializing the "system" authorization domain
If you want to update the "system" authorization domain, you use the initialize command to execute the update. This command can also be used to get back to a working state if the "system" authorization domain for some reason is missing or has become invalid, either via a default simple "permit-all" policy or a previous version you know is valid.
The command initialize
requires that either the --file
or the --permit-all
option is provided at runtime; both cannot be used at the same time.
--file <path/to/>domain.yaml
will initialize the "system" authorization domain with the provided domain file, and in doing so replace any existing "system" domain--permit-all
will store a permit-all "system" domain, and in doing so replace any existing "system" domain
The initialize
command starts ADM, updates the policy according to the option(s) set and then exits.
permit-all
java -cp authorization-domain-manager-<version>.jar;JDBC.jar com.axiomatics.domainmanager.App initialize --permit-all <path/to/>deployment.yaml
file
java -cp authorization-domain-manager-<version>.jar;JDBC.jar com.axiomatics.domainmanager.App initialize --file <path/to/>domain.yaml <path/to/>deployment.yaml
See the appendix Initialization for an example of a permit_all.yaml
policy file.