Skip to main content
IAM Policy Map

AWSKeyManagementServicePowerUser

OperatorAWS managedActiveReviewedShow on mapCompare

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.

Control-plane actions by service
ServiceGrantedAccess levels and limitsGranted by
IAM3 of 1903 List; 0 restricted, 0 conditionaliam:ListGroups, iam:ListRoles, iam:ListUsers
KMS20 of 587 List, 7 Read, 2 Tagging, 4 Write; 0 restricted, 0 conditionalkms: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.

Same service

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

Download 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/AWSKeyManagementServicePowerUser

CloudFormation

Resources:
  ExampleRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument: {}  # replace with your trust policy
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AWSKeyManagementServicePowerUser

Terraform

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