Skip to content

Commit 35127bb

Browse files
committed
tighened up kms key policy
1 parent e52acdd commit 35127bb

File tree

1 file changed

+73
-36
lines changed

1 file changed

+73
-36
lines changed

kms.tf

Lines changed: 73 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,52 @@
1-
1+
#https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/kms_key
22
resource "aws_kms_key" "encryption_secret" {
33
enable_key_rotation = true
44
description = "Key to encrypt secret"
55
deletion_window_in_days = 7
6-
7-
# Attach the KMS key policy
6+
tags = {
7+
Name = "${var.name}-encryption-secret"
8+
}
9+
}
10+
#https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/kms_alias
11+
resource "aws_kms_alias" "encryption_secret" {
12+
name = "alias/${var.name}-elasticache-in-transit"
13+
target_key_id = aws_kms_key.encryption_secret.key_id
14+
}
15+
#https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/kms_key_policy
16+
resource "aws_kms_key_policy" "encryption_secret_policy" {
17+
key_id = aws_kms_key.encryption_secret.id
818
policy = jsonencode({
9-
Version = "2012-10-17"
19+
Id = "${var.name}-encryption-secret"
1020
Statement = [
1121
{
12-
Sid = "AllowSecretsManagerUse"
13-
Effect = "Allow"
1422
Action = [
15-
"kms:Encrypt",
16-
"kms:Decrypt",
17-
"kms:ReEncrypt*",
18-
"kms:GenerateDataKey*"
23+
"kms:Create*",
24+
"kms:Describe*",
25+
"kms:Enable*",
26+
"kms:List*",
27+
"kms:Put*",
28+
"kms:Update*",
29+
"kms:Revoke*",
30+
"kms:Disable*",
31+
"kms:Get*",
32+
"kms:Delete*",
33+
"kms:ScheduleKeyDeletion",
34+
"kms:CancelKeyDeletion"
1935
]
20-
Resource = "*"
36+
Effect = "Allow"
2137
Principal = {
22-
Service = "secretsmanager.amazonaws.com"
38+
AWS = "${local.principal_root_arn}"
2339
}
24-
},
25-
{
26-
Sid = "AllowAdminAccessToKMSKey"
27-
Effect = "Allow"
28-
Action = "kms:*"
2940
Resource = "*"
30-
Principal = {
31-
AWS = "*"
41+
Sid = "Enable IAM User Permissions"
42+
Condition = {
43+
StringEquals = {
44+
"kms:CallerAccount" = "${data.aws_caller_identity.current.account_id}"
45+
}
3246
}
3347
},
3448
{
35-
Sid = "AllowIAMRolesToUseKey"
49+
Sid = "AllowSecretsManagerUse"
3650
Effect = "Allow"
3751
Action = [
3852
"kms:Encrypt",
@@ -42,26 +56,13 @@ resource "aws_kms_key" "encryption_secret" {
4256
]
4357
Resource = "*"
4458
Principal = {
45-
AWS = "*"
46-
}
47-
Condition = {
48-
StringEquals = {
49-
"kms:CallerAccount" = "${data.aws_caller_identity.current.account_id}"
50-
}
59+
Service = "secretsmanager.amazonaws.com"
5160
}
5261
}
5362
]
5463
})
55-
56-
tags = {
57-
Name = "${var.name}-encryption-secret"
58-
}
59-
}
60-
61-
resource "aws_kms_alias" "encryption_secret" {
62-
name = "alias/${var.name}-elasticache-in-transit"
63-
target_key_id = aws_kms_key.encryption_secret.key_id
6464
}
65+
#https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/kms_key
6566
resource "aws_kms_key" "encryption_rest" {
6667
enable_key_rotation = true
6768
description = "Key to encrypt cache at rest."
@@ -71,23 +72,59 @@ resource "aws_kms_key" "encryption_rest" {
7172
Name = "${var.name}-encryption-rest"
7273
}
7374
}
75+
#https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/kms_alias
7476
resource "aws_kms_alias" "encryption_rest" {
7577
name = "alias/${var.name}-elasticache-at-rest"
7678
target_key_id = aws_kms_key.encryption_rest.key_id
7779
}
80+
#https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/kms_key_policy
7881
resource "aws_kms_key_policy" "encryption_rest_policy" {
7982
key_id = aws_kms_key.encryption_rest.id
8083
policy = jsonencode({
8184
Id = "${var.name}-encryption-rest"
8285
Statement = [
8386
{
84-
Action = "kms:*"
87+
Action = [
88+
"kms:Create*",
89+
"kms:Describe*",
90+
"kms:Enable*",
91+
"kms:List*",
92+
"kms:Put*",
93+
"kms:Update*",
94+
"kms:Revoke*",
95+
"kms:Disable*",
96+
"kms:Get*",
97+
"kms:Delete*",
98+
"kms:ScheduleKeyDeletion",
99+
"kms:CancelKeyDeletion"
100+
]
85101
Effect = "Allow"
86102
Principal = {
87103
AWS = "${local.principal_root_arn}"
88104
}
89105
Resource = "*"
90106
Sid = "Enable IAM User Permissions"
107+
Condition = {
108+
StringEquals = {
109+
"kms:CallerAccount" = "${data.aws_caller_identity.current.account_id}"
110+
}
111+
}
112+
},
113+
{
114+
Sid = "Allow ElastiCache to use the key"
115+
Effect = "Allow"
116+
Principal = {
117+
Service = "elasticache.amazonaws.com"
118+
}
119+
Action = [
120+
"kms:Decrypt",
121+
"kms:Encrypt",
122+
"kms:GenerateDataKey",
123+
"kms:ReEncrypt*",
124+
"kms:CreateGrant",
125+
"kms:DescribeKey"
126+
]
127+
Resource = "*"
91128
},
92129
{
93130
Effect : "Allow",

0 commit comments

Comments
 (0)