Skip to content

Commit 227648d

Browse files
committed
allow account reset codebuild access to custom nuke config bucketgit
1 parent c455880 commit 227648d

File tree

1 file changed

+50
-41
lines changed

1 file changed

+50
-41
lines changed

modules/reset_codebuild.tf

Lines changed: 50 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -151,51 +151,60 @@ EOF
151151
tags = var.global_tags
152152
}
153153

154-
# Configure IAM Policy for CodeBuild
154+
# Configure IAM Role for CodeBuild
155155
resource "aws_iam_role_policy" "codebuild_reset" {
156-
role = aws_iam_role.codebuild_reset.name
157-
name = "account-reset-codebuild-${var.namespace}"
156+
role = aws_iam_role.codebuild_reset.name
157+
name = "account-reset-codebuild-${var.namespace}"
158+
policy = data.aws_iam_policy_document.codebuild_reset_policy_document.json
159+
}
158160

159-
policy = <<POLICY
160-
{
161-
"Version": "2012-10-17",
162-
"Statement": [
163-
{
164-
"Effect": "Allow",
165-
"Resource": [
166-
"*"
167-
],
168-
"Action": [
169-
"logs:CreateLogGroup",
170-
"logs:CreateLogStream",
171-
"logs:PutLogEvents",
172-
"sts:AssumeRole",
173-
"ssm:GetParameter",
174-
"dynamodb:GetItem",
175-
"dynamodb:Scan",
176-
"dynamodb:Query",
177-
"dynamodb:UpdateItem",
178-
"sns:Publish"
179-
]
180-
},
181-
{
182-
"Effect": "Allow",
183-
"Action": [
184-
"s3:PutObject",
185-
"s3:GetObject",
186-
"s3:GetObjectVersion",
187-
"s3:GetBucketAcl",
188-
"s3:GetBucketLocation"
189-
],
190-
"Resource": [
191-
"${aws_s3_bucket.artifacts.arn}",
192-
"${aws_s3_bucket.artifacts.arn}/*"
193-
]
194-
}
195-
]
161+
# Configure IAM Policy for CodeBuild
162+
data "aws_iam_policy_document" "codebuild_reset_policy_document" {
163+
override_json = var.reset_nuke_template_bucket == "STUB" ? null : data.aws_iam_policy_document.custom_nuke_config[0].json
164+
statement {
165+
actions = [
166+
"logs:CreateLogGroup",
167+
"logs:CreateLogStream",
168+
"logs:PutLogEvents",
169+
"sts:AssumeRole",
170+
"ssm:GetParameter",
171+
"dynamodb:GetItem",
172+
"dynamodb:Scan",
173+
"dynamodb:Query",
174+
"dynamodb:UpdateItem",
175+
"sns:Publish"
176+
]
177+
resources = ["*"]
178+
}
179+
statement {
180+
actions = [
181+
"s3:PutObject",
182+
"s3:GetObject",
183+
"s3:GetObjectVersion",
184+
"s3:GetBucketAcl",
185+
"s3:GetBucketLocation"
186+
]
187+
resources = [
188+
"${aws_s3_bucket.artifacts.arn}",
189+
"${aws_s3_bucket.artifacts.arn}/*"
190+
]
191+
}
196192
}
197-
POLICY
198193

194+
data "aws_iam_policy_document" "custom_nuke_config" {
195+
count = var.reset_nuke_template_bucket == "STUB" ? 0 : 1
196+
statement {
197+
sid = "allowCustomNukeConfig"
198+
# only put this statement if reset_nuke_template_bucket has been set by the user
199+
actions = [
200+
"s3:ListBucket",
201+
"s3:GetObject"
202+
]
203+
resources = [
204+
"arn:aws:s3:::${var.reset_nuke_template_bucket}",
205+
"arn:aws:s3:::${var.reset_nuke_template_bucket}/${var.reset_nuke_template_key}",
206+
]
207+
}
199208
}
200209

201210
# Cloudwatch alarm, for Reset CodeBuild failure

0 commit comments

Comments
 (0)