AWS Fundamentals Logo
AWS Fundamentals
AWS::KMS::Key

KMS Key

The AWS::KMS::Key resource specifies an [KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) in KMSlong. You can use this resource to create symmetric encryption KMS keys, asymmetric KMS keys for encryption or signing, and symmetric HMAC KMS keys. You can use AWS::KMS::Key to create [multi-Region primary keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html#mrk-primary-key) of all supported types. To replicate a multi-Region key, use the AWS::KMS::ReplicaKey resource. If you change the value of the KeySpec, KeyUsage, Origin, or MultiRegion properties of an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing any of its immutable property values. KMS replaced the term *customer master key (CMK)* with ** and *KMS key*. The concept has not changed. To prevent breaking changes, KMS is keeping some variations of this term. You can use symmetric encryption KMS keys to encrypt and decrypt small amounts of data, but they are more commonly used to generate data keys and data key pairs. You can also use a symmetric encryption KMS key to encrypt data stored in AWS services that are [integrated with](https://docs.aws.amazon.com//kms/features/#AWS_Service_Integration). For more information, see [Symmetric encryption KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks) in the *Developer Guide*. You can use asymmetric KMS keys to encrypt and decrypt data or sign messages and verify signatures. To create an asymmetric key, you must specify an asymmetric KeySpec value and a KeyUsage value. For details, see [Asymmetric keys in](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html) in the *Developer Guide*. You can use HMAC KMS keys (which are also symmetric keys) to generate and verify hash-based message authentication codes. To create an HMAC key, you must specify an HMAC KeySpec value and a KeyUsage value of GENERATE_VERIFY_MAC. For details, see [HMAC keys in](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html) in the *Developer Guide*. You can also create symmetric encryption, asymmetric, and HMAC multi-Region primary keys. To create a multi-Region primary key, set the MultiRegion property to true. For information about multi-Region keys, see [Multi-Region keys in](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the *Developer Guide*. You cannot use the AWS::KMS::Key resource to specify a KMS key with [imported key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) or a KMS key in a [custom key store](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html). *Regions* KMS CloudFormation resources are available in all Regions in which KMS and CFN are supported. You can use the AWS::KMS::Key resource to create and manage all KMS key types that are supported in a Region.

Properties

12 configurable properties. Click a row to see details.

Filter:
PropertyTypeFlags
BypassPolicyLockoutSafetyCheck
boolean
Write-only
Description
string
Enabled
boolean
EnableKeyRotation
boolean
KeyPolicy
objectstring
KeySpec
string
KeyUsage
string
MultiRegion
boolean
Origin
string
PendingWindowInDays
integer
Write-only
RotationPeriodInDays
integer
Write-only
Tags
Array<Tag>

Return Values

Values returned after the resource is created. Access these with Fn::GetAtt.

AttributeTypeDescription
Arnstring-
KeyIdstring-

Sample CloudFormation Template

A minimal template with required properties and common optional ones.

template.yaml
AWSTemplateFormatVersion: "2010-09-09"
Description: Sample template for AWS::KMS::Key

Resources:
  MyResource:
    Type: AWS::KMS::Key
    Properties:
      Tags:
        - Key: Environment
          Value: Production
      Description: !Ref "AWS::StackName"

Required IAM Permissions

Permissions CloudFormation needs in your IAM role to manage this resource.

create

kms:CreateKeykms:EnableKeyRotationkms:DisableKeykms:TagResourcekms:PutKeyPolicy

read

kms:DescribeKeykms:GetKeyPolicykms:GetKeyRotationStatuskms:ListResourceTags

update

kms:DescribeKeykms:DisableKeykms:DisableKeyRotationkms:EnableKeykms:EnableKeyRotationkms:PutKeyPolicykms:TagResourcekms:UntagResourcekms:UpdateKeyDescriptionkms:ListResourceTags

delete

kms:DescribeKeykms:ScheduleKeyDeletion

list

kms:ListKeyskms:DescribeKey

Learn AWS the Practical Way

Our bi-weekly newsletter teaches hands-on AWS fundamentals. No certification fluff - just practical knowledge.

Subscribe to Newsletter

Quick Facts

ServiceKMS
Properties14
Required0
TaggingSupported
Primary IDKeyId

Supported Operations

CreateReadUpdateDeleteList

Related Resources

External Links