modules/buckets_for_accelerator/kms.tf (61 lines of code) (raw):
# KMS Key for to encrypt buckets
# Encryption key for build artifacts
resource "aws_kms_key" "artifact_encryption_key" {
description = "Artifact-encryption-key"
deletion_window_in_days = 7
}
resource "aws_kms_key_policy" "artifact" {
key_id = aws_kms_key.artifact_encryption_key.key_id
policy = <<POLICY
{
"Version": "2012-10-17",
"Id": "Key-for-${var.repo_name}",
"Statement": [
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::${var.aws_account_id}:root"
},
"Action": "kms:*",
"Resource": "${aws_kms_key.artifact_encryption_key.arn}"
},
{
"Effect": "Allow",
"Principal": {
"Service": "logs.${var.region}.amazonaws.com"
},
"Action": [
"kms:Encrypt*",
"kms:Decrypt*",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:Describe*"
],
"Resource": "${aws_kms_key.artifact_encryption_key.arn}",
"Condition": {
"ArnLike": {
"kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:${var.region}:${var.aws_account_id}:*"
}
}
},
{
"Effect": "Allow",
"Principal": {
"Service": "codedeploy.${var.region}.amazonaws.com"
},
"Action": [
"kms:Encrypt*",
"kms:Decrypt*",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:Describe*"
],
"Resource": "${aws_kms_key.artifact_encryption_key.arn}"
}
]
}
POLICY
# enable_key_rotation = var.key_rotation
}
resource "aws_kms_alias" "a" {
name = "alias/${var.repo_name}-${var.region_name}-key"
target_key_id = aws_kms_key.artifact_encryption_key.key_id
}