Skip to content

Commit 80db7a2

Browse files
prod conditions and github roles
1 parent 496a5dd commit 80db7a2

File tree

5 files changed

+58
-43
lines changed

5 files changed

+58
-43
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
data "aws_caller_identity" "current" {}
22

33
data "aws_lambda_function" "existing" {
4-
function_name = aws_lambda_function.eligibility_signposting_lambda.function_name
4+
function_name = var.lambda_func_name
55
}

infrastructure/modules/lambda/lambda.tf

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,11 @@ resource "aws_lambda_function" "eligibility_signposting_lambda" {
4747

4848
# lambda alias required for provisioning concurrency
4949
resource "aws_lambda_alias" "campaign_alias" {
50+
count = var.environment == "prod" ? 1 : 0
5051
name = "live"
5152
function_name = coalesce(
5253
aws_lambda_function.eligibility_signposting_lambda.function_name,
53-
data.aws_lambda_function.existing.version
54+
data.aws_lambda_function.existing.function_name
5455
)
5556
function_version = coalesce(
5657
aws_lambda_function.eligibility_signposting_lambda.version,
@@ -61,7 +62,7 @@ resource "aws_lambda_alias" "campaign_alias" {
6162
# provisioned concurrency - number of pre-warmed lambda containers
6263
resource "aws_lambda_provisioned_concurrency_config" "campaign_pc" {
6364
count = var.environment == "prod" ? 1 : 0
64-
function_name = aws_lambda_function.eligibility_signposting_lambda.function_name
65-
qualifier = aws_lambda_alias.campaign_alias.name
65+
function_name = var.lambda_func_name
66+
qualifier = aws_lambda_alias.campaign_alias[0].name
6667
provisioned_concurrent_executions = var.provisioned_concurrency_count
6768
}

infrastructure/stacks/api-layer/iam_policies.tf

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,6 @@ resource "aws_iam_role_policy_attachment" "lambda_logs_policy_attachment" {
191191

192192
#Attach CloudWatchLambdaInsightsExecutionRolePolicy to lambda for enhanced monitoring
193193
resource "aws_iam_role_policy_attachment" "lambda_insights_policy" {
194-
count = var.environment == "prod" ? 1 : 0
195194
role = aws_iam_role.eligibility_lambda_role.name
196195
policy_arn = "arn:aws:iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy"
197196
}

infrastructure/stacks/iams-developer-roles/github_actions_policies.tf

Lines changed: 48 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,14 @@ resource "aws_iam_policy" "lambda_management" {
6262
"lambda:ListAliases",
6363
"lambda:AddPermission",
6464
"lambda:RemovePermission",
65-
"lambda:GetPolicy"
65+
"lambda:GetPolicy",
66+
"lambda:GetAlias",
67+
"lambda:GetFunction",
68+
"lambda:GetProvisionedConcurrencyConfig"
6669
],
6770
Resource = [
68-
"arn:aws:lambda:*:${data.aws_caller_identity.current.account_id}:function:*eligibility_signposting_api"
71+
"arn:aws:lambda:*:${data.aws_caller_identity.current.account_id}:function:eligibility_signposting_api",
72+
"arn:aws:lambda:*:${data.aws_caller_identity.current.account_id}:function:eligibility_signposting_api:*"
6973
]
7074
}
7175
]
@@ -465,29 +469,6 @@ data "aws_iam_policy_document" "github_actions_assume_role" {
465469
}
466470
}
467471

468-
resource "aws_iam_policy" "cloudwatch_logging" {
469-
name = "cloudwatch-logging-management"
470-
description = "Allow access to logging resources"
471-
path = "/service-policies/"
472-
473-
policy = jsonencode({
474-
Version = "2012-10-17",
475-
Statement = [
476-
{
477-
Effect = "Allow",
478-
Action = [
479-
"logs:ListTagsForResource",
480-
"logs:DescribeLogGroups",
481-
"logs:PutRetentionPolicy"
482-
],
483-
Resource = "arn:aws:logs:${var.default_aws_region}:${data.aws_caller_identity.current.account_id}:log-group:/aws/kinesisfirehose/*"
484-
}
485-
]
486-
})
487-
488-
tags = merge(local.tags, { Name = "cloudwatch-logging-management" })
489-
}
490-
491472
resource "aws_iam_policy" "firehose_readonly" {
492473
name = "firehose-describe-access"
493474
description = "Allow GitHub Actions to describe Firehose delivery stream"
@@ -518,9 +499,9 @@ resource "aws_iam_policy" "firehose_readonly" {
518499
tags = merge(local.tags, { Name = "firehose-describe-access" })
519500
}
520501

521-
resource "aws_iam_policy" "cloudwatch_alarms" {
522-
name = "cloudwatch-alarms-management"
523-
description = "Allow GitHub Actions to manage CloudWatch alarms and SNS topics"
502+
resource "aws_iam_policy" "cloudwatch_management" {
503+
name = "cloudwatch-management"
504+
description = "Allow GitHub Actions to manage CloudWatch logs, alarms, and SNS topics"
524505
path = "/service-policies/"
525506

526507
policy = jsonencode({
@@ -529,15 +510,18 @@ resource "aws_iam_policy" "cloudwatch_alarms" {
529510
{
530511
Effect = "Allow",
531512
Action = [
532-
# CloudWatch Alarms management
513+
"logs:ListTagsForResource",
514+
"logs:DescribeLogGroups",
515+
"logs:PutRetentionPolicy",
516+
533517
"cloudwatch:PutMetricAlarm",
534518
"cloudwatch:DeleteAlarms",
535519
"cloudwatch:DescribeAlarms",
536520
"cloudwatch:DescribeAlarmsForMetric",
537521
"cloudwatch:ListTagsForResource",
538522
"cloudwatch:TagResource",
539523
"cloudwatch:UntagResource",
540-
# SNS Topic management for alarm notifications
524+
541525
"sns:CreateTopic",
542526
"sns:DeleteTopic",
543527
"sns:GetTopicAttributes",
@@ -552,14 +536,40 @@ resource "aws_iam_policy" "cloudwatch_alarms" {
552536
"sns:ListSubscriptionsByTopic"
553537
],
554538
Resource = [
539+
"arn:aws:logs:${var.default_aws_region}:${data.aws_caller_identity.current.account_id}:log-group:/aws/kinesisfirehose/*",
555540
"arn:aws:cloudwatch:${var.default_aws_region}:${data.aws_caller_identity.current.account_id}:alarm:*",
556541
"arn:aws:sns:${var.default_aws_region}:${data.aws_caller_identity.current.account_id}:cloudwatch-security-alarms*"
557542
]
558543
}
559544
]
560545
})
561546

562-
tags = merge(local.tags, { Name = "cloudwatch-alarms-management" })
547+
tags = merge(local.tags, { Name = "cloudwatch-management" })
548+
}
549+
550+
# SQS Management Policy for GetQueueAttributes
551+
resource "aws_iam_policy" "sqs_management" {
552+
name = "sqs-management"
553+
description = "Policy granting permissions to get SQS queue attributes"
554+
path = "/service-policies/"
555+
556+
policy = jsonencode({
557+
Version = "2012-10-17",
558+
Statement = [
559+
{
560+
Effect = "Allow",
561+
Action = [
562+
"sqs:GetQueueAttributes",
563+
"sqs:listqueuetags"
564+
],
565+
Resource = [
566+
"arn:aws:sqs:eu-west-2:${data.aws_caller_identity.current.account_id}:*"
567+
]
568+
}
569+
]
570+
})
571+
572+
tags = merge(local.tags, { Name = "sqs-management" })
563573
}
564574

565575
# Attach the policies to the role
@@ -598,17 +608,18 @@ resource "aws_iam_role_policy_attachment" "iam_management" {
598608
policy_arn = aws_iam_policy.iam_management.arn
599609
}
600610

601-
resource "aws_iam_role_policy_attachment" "cloudwatch_logging" {
611+
resource "aws_iam_role_policy_attachment" "firehose_readonly_attach" {
602612
role = aws_iam_role.github_actions.name
603-
policy_arn = aws_iam_policy.cloudwatch_logging.arn
613+
policy_arn = aws_iam_policy.firehose_readonly.arn
604614
}
605615

606-
resource "aws_iam_role_policy_attachment" "firehose_readonly_attach" {
616+
resource "aws_iam_role_policy_attachment" "cloudwatch_management" {
607617
role = aws_iam_role.github_actions.name
608-
policy_arn = aws_iam_policy.firehose_readonly.arn
618+
policy_arn = aws_iam_policy.cloudwatch_management.arn
609619
}
610620

611-
resource "aws_iam_role_policy_attachment" "cloudwatch_alarms" {
621+
resource "aws_iam_role_policy_attachment" "sqs_management" {
612622
role = aws_iam_role.github_actions.name
613-
policy_arn = aws_iam_policy.cloudwatch_alarms.arn
623+
policy_arn = aws_iam_policy.sqs_management.arn
614624
}
625+

infrastructure/stacks/iams-developer-roles/iams_permissions_boundary.tf

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,8 @@ data "aws_iam_policy_document" "permissions_boundary" {
150150
"lambda:AddPermission",
151151
"lambda:RemovePermission",
152152
"lambda:GetPolicy",
153+
"lambda:GetAlias",
154+
"lambda:GetProvisionedConcurrencyConfig",
153155

154156
# CloudWatch Logs - log management
155157
"logs:CreateLogGroup",
@@ -220,7 +222,9 @@ data "aws_iam_policy_document" "permissions_boundary" {
220222
"ssm:AddTagsToResource",
221223

222224
#SQS - message management
223-
"sqs:SendMessage"
225+
"sqs:SendMessage",
226+
"sqs:GetQueueAttributes",
227+
"sqs:listqueuetags"
224228
]
225229

226230
resources = ["*"]

0 commit comments

Comments
 (0)