Control your user access to Dynatrace settings globally or an individual settings schema level.
All examples here are based on the Settings 2.0
service. For a complete list of services supporting policy-based authorization, see IAM policy reference.
For every account, administrators have two built-in policies available for Settings 2.0
services:
Settings Reader
: grants permission to read Dynatrace settingsSettings Writer
: grants permission to write Dynatrace settingsTo verify that you have these policies
Settings Reader
and Settings Writer
in the table.For more information on available built-in policies, see Grant access to Dynatrace through default groups and permissions.
All IAM features can be accessed via REST API. Here we cover the aspects regarding authentication of requests.
Dynatrace Managed deployments use token-based authentication for the PAP REST API.
To generate the token
Authorization
header to your request with the value Api-Token [generated token goes here]
.Suppose you have the following teams in your organization:
The IT team needs read and write access, while the sales team needs only read access.
First, create a group named IT
that has policies Settings Writer
and Settings Reader
.
To create a group
IT
in this example) and Group description, and then select Save.To bind policies to the group
IT
group and select the pencil icon in the Edit column to edit that group.Settings Writer
policySettings Reader
policyNow repeat the above procedure to create a Sales
group with read-only access:
Sales
Settings Reader
policy to it, because the sales team in this example does not need write access to Dynatrace settings.To bind policies to the group
IT
group and select the pencil icon in the Edit column to edit that group.Settings Writer
policySettings Reader
policyOptionally, you can instead use the REST API to bind policies to a group.
To do so, you need the following values:
In our example, suppose we have the following values:
Settings Reader
policy has ID settings_reader_id
Settings writer
policy has ID settings_writer_id
Sales
group ID is sales_group_id
IT
group ID is it_group_id
my_environment_id
Now we need to create a body for the request for binding the policies. You can use either a PUT (for replacing policy bindings) or a POST (for appending policy bindings). Let's assume that we want to append the policies and use a POST.
In this example we use the /repo/{level-type}/{level-id}/bindings/{policy-uuid}
endpoint from the PAP REST API. We need to proceed in two steps:
Settings Reader
policy to both of our groups (IT
and Sales
).Settings Writer
policy only to the IT
group.The first request should then be sent on the /repo/environment/my_environment_id/bindings/settings_reader_id
endpoint with the following body:
{"groups": ["it_group_id","sales_group_id"]}
This grants read permission to both groups.
To add write permission to the IT
group, we need to execute another POST request on the /repo/environment/my_environment_id/bindings/settings_writer_id
endpoint with the following body:
{"groups": ["it_group_id"]}
Congratulations, you've completed the binding of built-in policies via API!
If the built-in policies are not granular enough for your needs, you can manage permissions at the setting level.
Assume that you have a particular Settings 2.0 schema, say settings.apm.my-super-secret-schema
, the only one that you want to keep open for the Sales
and IT
groups.
You want to allow access to the following:
settings.apm.my-super-secret-schema
settings.apm.my-super-secret-schema
As before, we present two ways of obtaining this effect.
This procedure uses the Dynatrace web UI. To use the REST API instead, skip to Create a policy via REST API.
To create a policy
In the Cluster Management Console, go to User authentication > Policy management.
Select Add policy.
Describe the policy:
Policy name
Any useful name.
Policy description
Any useful description.
Policy statements
Copy the following statement to the Policy statements box.
ALLOW settings:schemas:read WHERE settings:schemaId = "builtin:container.monitoring-rule";ALLOW settings:objects:read WHERE settings:schemaId = "builtin:container.monitoring-rule";ALLOW settings:objects:write WHERE settings:schemaId = "builtin:container.monitoring-rule";
Note that since one can use multiple permissions in one statement, it is possible to merge the first two statements from the above into a single one:
ALLOW settings:schemas:read, settings:objects:read WHERE settings:schemaId = "builtin:container.monitoring-rule";ALLOW settings:objects:write WHERE settings:schemaId = "builtin:container.monitoring-rule";
Select Save.
The policy is now added to your table of policies that you can bind to groups.
This procedure uses the REST API to do the same things we did in Create a policy via Dynatrace web UI.
To create a policy using the API, we will use the /repo/{level-type}/{level-id}/policies
endpoint and use a POST method to add a policy.
Assume that the policy name we want to add is my_policy_name
and the description is My policy description
. As before, assume that we want this policy to apply only on the environment level for environment my_tenant_id
.
The request body should be the following:
{"name":"my_policy_name","description":"My policy description","tags":[],"statementQuery": "ALLOW settings:schemas:read WHERE settings:schemaId = \"builtin:container.monitoring-rule\"; ALLOW settings:objects:read WHERE settings:schemaId = \"builtin:container.monitoring-rule\"; ALLOW settings:objects:write WHERE settings:schemaId = \"builtin:container.monitoring-rule\";"}
Equivalently, using multiple permissions in a single statement, the request body should be the following:
{"name":"my_policy_name","description":"My policy description","tags":[],"statementQuery": "ALLOW settings:schemas:read, settings:objects:read WHERE settings:schemaId = \"builtin:container.monitoring-rule\"; ALLOW settings:objects:write WHERE settings:schemaId = \"builtin:container.monitoring-rule\";"}
Important: Remember that a policy does not take effect until you bind it to a group. For this example, you need to bind it to the IT
and Sales
groups. See Bind policies via Dynatrace web UI or Bind policies via REST API for details.