Repository navigation
Expand file tree
/
Copy pathiam.tf
More file actions
executable file
·92 lines (78 loc) · 2.39 KB
/
Copy pathiam.tf
File metadata and controls
executable file
·92 lines (78 loc) · 2.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
data "aws_iam_policy_document" "assume_role" {
statement {
effect = "Allow"
actions = ["sts:AssumeRole"]
principals {
type = "Service"
identifiers = ["ec2.amazonaws.com"]
}
}
}
# Vault
resource "aws_iam_role" "vault_kms_unseal_role" {
name = "${var.cluster_name}-vault-kms-role"
assume_role_policy = data.aws_iam_policy_document.assume_role.json
}
resource "aws_iam_instance_profile" "vault_profile" {
name = "${var.cluster_name}-vault_profile"
role = aws_iam_role.vault_kms_unseal_role.name
}
# Auto-unseal and Managed Keys
data "aws_iam_policy_document" "vault-kms-unseal" {
statement {
sid = "VaultKMSUnseal"
effect = "Allow"
resources = ["*"]
actions = [
"kms:Encrypt",
"kms:Decrypt",
"kms:DescribeKey",
"kms:TagResource",
"kms:CreateKey",
"kms:CreateAlias",
"kms:Sign",
"kms:Verify",
"kms:GetPublicKey",
"ec2:DescribeInstances",
"iam:GetRole",
]
}
}
resource "aws_iam_policy" "vault-policy-kms-unseal" {
name = "${var.cluster_name}-vault-policy-kms-unseal"
policy = data.aws_iam_policy_document.vault-kms-unseal.json
}
resource "aws_iam_policy_attachment" "vault-attach-kms" {
name = "${var.cluster_name}-vault-attach-kms"
roles = [aws_iam_role.vault_kms_unseal_role.id]
policy_arn = aws_iam_policy.vault-policy-kms-unseal.arn
}
# Secrets Sync
data "aws_iam_policy_document" "vault-secrets-sync" {
statement {
sid = "SecretsManagerAccess"
effect = "Allow"
resources = ["*"]
actions = [
"secretsmanager:DescribeSecret",
"secretsmanager:GetSecretValue",
"secretsmanager:CreateSecret",
"secretsmanager:PutSecretValue",
"secretsmanager:UpdateSecret",
"secretsmanager:UpdateSecretVersionStage",
"secretsmanager:DeleteSecret",
"secretsmanager:RestoreSecret",
"secretsmanager:TagResource",
"secretsmanager:UntagResource"
]
}
}
resource "aws_iam_policy" "vault-policy-secrets-sync" {
name = "${var.cluster_name}-vault-policy-secrets-sync"
policy = data.aws_iam_policy_document.vault-secrets-sync.json
}
resource "aws_iam_policy_attachment" "vault-attach-secrets-sync" {
name = "${var.cluster_name}-vault-attach-secrets-sync"
roles = [aws_iam_role.vault_kms_unseal_role.id]
policy_arn = aws_iam_policy.vault-policy-secrets-sync.arn
}