Directory Service Data condition keys - AWS Directory Service

Directory Service Data condition keys

Use Directory Service Data condition keys to add specific statements to users and group level access. This allows users to decide which principals can perform actions on what resources and under what conditions.

The Condition element, or Condition block, lets you specify conditions where a statement is in effect. The Condition element is optional. You can create conditional expressions that use condition operators, such as equals (=) or less than (<), to match the condition in the policy with values in the request.

If you specify multiple Condition elements in a statement, or multiple keys in a single Condition element, AWS evaluates them by using a logical AND operation. If you specify multiple values for a single condition key, AWS evaluates the condition by using a logical OR operation. All of the conditions must be met before the statement's permissions are granted. You can also use placeholder variables when you specify conditions. For example, you can grant an IAM user permission to access a resource only if it's tagged with their username. For information, see Condition with multiple keys or values in the IAM User Guide.

For a list of which actions support these condition keys, see Actions defined by AWS Directory Service Data in the Service Authorization Reference.

Note

For information about tag-based resource-level permissions, see Using tags with IAM policies.

ds-data:SAMAccountName

Works with String operators.

Use this key to explicitly allow or deny an IAM role from performing actions on specific users and groups.

Important

When using SAMAccountName or MemberName, we recommend specifying ds-data:Identifier as SAMAccountName. This prevents future identifiers that AWS Directory Service Data supports, such as SID, from breaking existing permissions.

The following policy denies the IAM principal from describing the user joe or describing the group joegroup.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyDescribe", "Effect": "Deny", "Action": "ds-data:Describe*", "Resource": "*", "Condition": { "StringEqualsIgnoreCase": { "ds-data:SAMAccountName": [ "joe", "joegroup" ], "ds-data:identifier": [ "SAMAccountName" ] } } } ] }
Note

This condition key case insensitive. You must use StringEqualsIgnoreCase or StringNotEqualsIgnoreCase condition operators to compare string values regardless of letter cases.

ds-data:Identifier

Works with String operators.

Use this key to define which identifier to use in the IAM policy permissions. Currently, only SAMAccountName is supported.

The following policy allows the IAM principal to update the user joe.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "UpdateJoe", "Effect": "Allow", "Action": "ds-data:UpdateUser", "Resource": "arn:aws:ds:us-east-1:111122223333:directory/d-012345678", "Condition": { "StringEqualsIgnoreCase": { "ds-data:SAMAccountName": [ "joe" ], "ds-data:identifier": [ "SAMAccountName" ] } } } ] }

ds-data:MemberName

Works with String operators.

Use this key to define the members that can have operations performed on them.

Important

When using MemberName or SAMAccountName, we recommend specifying ds-data:Identifier as SAMAccountName. This prevents future identifiers that Directory Service Data supports, such as SID, from breaking existing permissions.

The following policy allows the IAM principal to perform AddGroupMember on member joe in any group.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddJoe", "Effect": "Allow", "Action": "ds-data:AddGroupMember", "Resource": "arn:aws:ds:us-east-1:111122223333:directory/d-012345678", "Condition": { "StringEqualsIgnoreCase": { "ds-data:MemberName": "joe" } } } ] }
Note

This condition key is case insensitive. You must use StringEqualsIgnoreCase or StringNotEqualsIgnoreCase condition operators to compare string values, regardless of letter cases.

ds-data:MemberRealm

Works with String operators.

Use this key to check whether the ds-data:MemberRealm value in the policy matches the member realm in the request.

Note

This condition key is case insensitive. You must use StringEqualsIgnoreCase or StringNotEqualsIgnoreCase condition operators to compare string values, regardless of letter cases.

The following policy allows the IAM principal to call AddGroupMember for member bob in realm ONE.TRU1.AMAZON.COM.

Note

The following example uses only the ds-data:MemberName context key.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "addbob", "Effect": "Allow", "Action": "ds-data:AddGroupMember", "Resource": "arn:aws:ds:us-east-1:111122223333:directory/d-012345678", "Condition": { "StringEqualsIgnoreCase": { "ds-data:MemberName": "bob", "ds-data:MemberRealm": "one.tru1.amazon.com" } } } ] }

ds-data:Realm

Works with String operators.

Use this key to check whether the ds-data:Realm value in the policy matches the realm an IAM principal can use to make requests to Directory Service Data APIs.

Note

This condition key is case insensitive. You must use StringEqualsIgnoreCase or StringNotEqualsIgnoreCase condition operators to compare string values regardless of letter cases.

The following policy denies the IAM principal from calling ListUsers on the realm one.tru1.amazon.com.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyTrustedList", "Effect": "Deny", "Action": "ds-data:ListUsers", "Resource": "*", "Condition": { "StringEqualsIgnoreCase": { "ds-data:Realm": [ "one.tru1.amazon.com" ] } } } ] }