AWS Key Management Service - Navigating GDPR Compliance on AWS

This whitepaper is for historical reference only. Some content might be outdated and some links might not be available.

AWS Key Management Service

AWS Key Management Service is a managed service that makes it easy for you to create and control the encryption keys used to encrypt your data, and uses Hardware Security Modules (HSMs) to protect the security of your keys. AWS KMS is integrated with several other AWS services to help you protect the data you store with these services. AWS KMS is also integrated with AWS CloudTrail to provide you with logs of all your key usage for your regulatory and compliance needs.

AWS KMS supports several different types of keys for different uses and the several special-purpose KMS key types including key with imported key material (BYOK) and key in a custom key store, that is backed by a AWS CloudHSM cluster or an external key manager outside of AWS.

You can easily create, import, and rotate keys, as well as define usage policies and audit usage from the AWS Management Console or by using the AWS SDK or AWS CLI.

The AWS KMS Keys in AWS KMS, whether imported by you or created on your behalf by KMS, are stored in highly durable storage in an encrypted format to help ensure that they can be used when needed. You can choose to have KMS automatically rotate AWS KMS Keys created in KMS once per year without having to re-encrypt data that has already been encrypted with your KMS key. You don’t need to keep track of older versions of your AWS KMS Keys because KMS keeps them available to automatically decrypt previously encrypted data.

For any AWS KMS Key in AWS KMS, you can control who has access to those keys and which services they can be used with through a number of access controls, including grants, and key policy conditions within key policies or IAM policies. You can also import keys from your own key management infrastructure and use them in KMS.

For example, the following policy uses the kms:ViaService condition to allow a customer managed AWS KMS Key to be used for the specified actions only when the request comes from Amazon EC2 or Amazon RDS in a specific Region (us-west-2) on behalf of a specific user (ExampleUser).

{ “Version”: “2012-10-17”, “Statement”: [ { “Effect”: “Allow”, “Principal”: { “AWS”: “arn:aws:iam::111122223333:user/ExampleUser” } “Action”: [ “kms:Encrypt*”, “kms:Decrypt”, ”kms:ReEncrypt*”, “kms:GenerateDataKey*”, “kms:CreateGrant”, “kms:ListGrants”, “kms:DescribeKey” ], “Resource”: “*”, “Condition”: { “ForAnyValue:StringEquals”: { “kms:ViaService”: [ “ec2.us-west-2.amazonaws.com”, “rds.us-west-2.amazonaws.com” ] } } }