AWSKeyManagementServicePowerUser
Summary
Provides access to AWS Key Management Service (KMS). The AWS KMS Developer Guide says it gives IAM principals the permissions of a power user: they can create KMS keys, use and manage the KMS keys they create, and view all KMS keys and IAM identities.
Permissions imported from the AWS Managed Policy Reference Guide; other sections reviewed against the listed AWS sources.
Identity
- ARN
arn:aws:iam::aws:policy/AWSKeyManagementServicePowerUser- Default version
- v2
- Created
- Last edited
- Services
- iam, kms
Control-plane actions (23)
By access level: 10 List, 7 Read, 2 Tagging, 4 Write.
| Service | Granted | Access levels and limits | Granted by |
|---|---|---|---|
| IAM | 3 of 190 | 3 List; 0 restricted, 0 conditional | iam:ListGroups, iam:ListRoles, iam:ListUsers |
| KMS | 20 of 58 | 7 List, 7 Read, 2 Tagging, 4 Write; 0 restricted, 0 conditional | kms:CreateAlias, kms:CreateKey, kms:DeleteAlias, kms:Describe*, kms:GenerateRandom, kms:Get*, kms:List*, kms:TagResource, kms:UntagResource |
IAM: 3 actions
- iam:ListGroups (List)
- iam:ListRoles (List)
- iam:ListUsers (List)
KMS: 20 actions
- kms:CreateAlias (Write)
- kms:CreateKey (Write)
- kms:DeleteAlias (Write)
- kms:DescribeCustomKeyStores (Read)
- kms:DescribeKey (Read)
- kms:GenerateRandom (Write)
- kms:GetKeyLastUsage (Read)
- kms:GetKeyPolicy (Read)
- kms:GetKeyRotationStatus (Read)
- kms:GetParametersForImport (Read)
- kms:GetPublicKey (Read)
- kms:ListAliases (List)
- kms:ListGrants (List)
- kms:ListKeyPolicies (List)
- kms:ListKeyRotations (List)
- kms:ListKeys (List)
- kms:ListResourceTags (List)
- kms:ListRetirableGrants (List)
- kms:TagResource (Tagging)
- kms:UntagResource (Tagging)
Data-plane actions (0)
By access level: none.
This policy grants no actions in this plane.
Excluded and conditional actions
No patterns are excluded by NotAction or Deny statements.
Resource scope and attachment
Resource scope across granted actions: all-resources.
Can be attached: Yes, to users, groups and roles.
Why this tier
- Grants 6 write, tagging or permissions-management actions, short of full control of any service.
Guidance
Practical scope
The policy allows kms:CreateAlias, kms:CreateKey, kms:DeleteAlias, kms:Describe*, kms:GenerateRandom, kms:Get*, kms:List*, kms:TagResource and kms:UntagResource, plus iam:ListGroups, iam:ListRoles and iam:ListUsers, on Resource "*". It does not allow principals to use or manage KMS keys that they didn't create. Principals with this policy can also get permissions from other sources, including key policies, other IAM policies and grants.
Use cases
- Give a principal the permissions of a KMS power user: creating KMS keys, managing aliases and tags, and viewing all KMS keys and IAM users, groups and roles.
Prerequisites
- Permissions that are specific to a KMS key, such as kms:TagResource and kms:GetKeyRotationStatus, are effective only when the key policy for that KMS key explicitly allows the AWS account to use IAM policies to control access to the key.
- To view the AWS KMS console without errors, the principal needs tag:GetResources, which is not included in this policy. You can allow it in a separate IAM policy.
Best practices
- AWS managed policies might not grant least-privilege permissions for your use case. AWS recommends reducing permissions further with customer managed policies specific to your use cases.
Security considerations
- Creating a KMS key includes setting the key policy, so power users can give themselves and others permission to use and manage the KMS keys they create.
- The policy allows creating and deleting aliases and tags on all KMS keys. Changing a tag or alias can allow or deny permission to use and manage the KMS key.
- The policy gives a power user permissions on any KMS key with a key policy that permits the operation. For cross-account permissions such as kms:DescribeKey and kms:ListGrants, this might include KMS keys in untrusted AWS accounts.
- You cannot change the permissions in an AWS managed policy. If AWS updates the policy, the update affects every user, group and role it is attached to.
Assignment guidance
You can attach this policy to your IAM identities. The reference page also links to guidance on creating a permission set using AWS managed policies in IAM Identity Center. It is intended to give IAM principals in your account the permissions of a KMS power user. It leaves out tag:GetResources, so add that separately if the principal needs the KMS console.
Related policies
Same service
- AccessAnalyzerServiceRolePolicy
- AccountManagementFromVercel
- AgentRegistryFullAccess
- AmazonAppFlowFullAccess
- AmazonApplicationRecoveryControllerRegionSwitchPlanExecutionPolicy
- AmazonAuroraDSQLConsoleFullAccess
- AmazonAuroraDSQLFullAccess
- AmazonChimeSDKMessagingServiceRolePolicy
Same domain
Frequently asked questions
- When should I attach AWSKeyManagementServicePowerUser?
- Attach it to IAM principals in your account who should have the permissions of a KMS power user: creating KMS keys, using and managing the keys they create, and viewing all KMS keys and IAM identities. Key-specific permissions take effect only when the key policy explicitly allows the account to use IAM policies to control access to the key.
- What does AWSKeyManagementServicePowerUser grant?
- On all resources it allows kms:CreateAlias, kms:CreateKey, kms:DeleteAlias, kms:Describe*, kms:GenerateRandom, kms:Get*, kms:List*, kms:TagResource and kms:UntagResource, plus iam:ListGroups, iam:ListRoles and iam:ListUsers. It does not allow principals to use or manage KMS keys that they didn't create.
- What are the security risks of AWSKeyManagementServicePowerUser?
- Because creating a key includes setting its key policy, power users can give themselves and others permission to use and manage keys they create. They can also change aliases and tags on all KMS keys, which can allow or deny permission to use and manage a key. For cross-account permissions the policy might reach KMS keys in untrusted AWS accounts.
Policy JSON
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:CreateAlias",
"kms:CreateKey",
"kms:DeleteAlias",
"kms:Describe*",
"kms:GenerateRandom",
"kms:Get*",
"kms:List*",
"kms:TagResource",
"kms:UntagResource",
"iam:ListGroups",
"iam:ListRoles",
"iam:ListUsers"
],
"Resource": "*"
}
]
}
Version history
Current version v2, edited by AWS on 2017-03-07. Version history is recorded from 2026-11-11. Earlier versions are in the IAM console under Policy versions.
Attach snippets
AWS CLI
aws iam attach-role-policy --role-name ROLE_NAME --policy-arn arn:aws:iam::aws:policy/AWSKeyManagementServicePowerUser
aws iam attach-user-policy --user-name USER_NAME --policy-arn arn:aws:iam::aws:policy/AWSKeyManagementServicePowerUser
aws iam attach-group-policy --group-name GROUP_NAME --policy-arn arn:aws:iam::aws:policy/AWSKeyManagementServicePowerUserCloudFormation
Resources:
ExampleRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument: {} # replace with your trust policy
ManagedPolicyArns:
- arn:aws:iam::aws:policy/AWSKeyManagementServicePowerUserTerraform
resource "aws_iam_role_policy_attachment" "awskeymanagementservicepoweruser" {
role = aws_iam_role.example.name
policy_arn = "arn:aws:iam::aws:policy/AWSKeyManagementServicePowerUser"
}CDK (TypeScript)
role.addManagedPolicy(
iam.ManagedPolicy.fromAwsManagedPolicyName("AWSKeyManagementServicePowerUser"),
);Sources
- AWSKeyManagementServicePowerUser (AWS Managed Policy Reference Guide) (retrieved ; supports summary, practicalScope, assignmentGuidance, faqs)
- AWS managed policies for AWS Key Management Service (AWS KMS Developer Guide) (retrieved ; supports summary, practicalScope, useCases, prerequisites, bestPractices, securityConsiderations, assignmentGuidance, faqs)