@@ -62,10 +62,17 @@ 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" ,
69+ " lambda:GetLayerVersion" ,
70+ " lambda:PutProvisionedConcurrencyConfig"
6671 ],
6772 Resource = [
68- " arn:aws:lambda:*:${ data . aws_caller_identity . current . account_id } :function:*eligibility_signposting_api"
73+ " arn:aws:lambda:*:${ data . aws_caller_identity . current . account_id } :function:eligibility_signposting_api" ,
74+ " arn:aws:lambda:*:${ data . aws_caller_identity . current . account_id } :function:eligibility_signposting_api:*" ,
75+ " arn:aws:lambda:*:580247275435:layer:LambdaInsightsExtension:*"
6976 ]
7077 }
7178 ]
@@ -465,29 +472,6 @@ data "aws_iam_policy_document" "github_actions_assume_role" {
465472 }
466473}
467474
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-
491475resource "aws_iam_policy" "firehose_readonly" {
492476 name = " firehose-describe-access"
493477 description = " Allow GitHub Actions to describe Firehose delivery stream"
@@ -518,9 +502,9 @@ resource "aws_iam_policy" "firehose_readonly" {
518502 tags = merge (local. tags , { Name = " firehose-describe-access" })
519503}
520504
521- resource "aws_iam_policy" "cloudwatch_alarms " {
522- name = " cloudwatch-alarms- management"
523- description = " Allow GitHub Actions to manage CloudWatch alarms and SNS topics"
505+ resource "aws_iam_policy" "cloudwatch_management " {
506+ name = " cloudwatch-management"
507+ description = " Allow GitHub Actions to manage CloudWatch logs, alarms, and SNS topics"
524508 path = " /service-policies/"
525509
526510 policy = jsonencode ({
@@ -529,15 +513,18 @@ resource "aws_iam_policy" "cloudwatch_alarms" {
529513 {
530514 Effect = " Allow" ,
531515 Action = [
532- # CloudWatch Alarms management
516+ " logs:ListTagsForResource" ,
517+ " logs:DescribeLogGroups" ,
518+ " logs:PutRetentionPolicy" ,
519+
533520 " cloudwatch:PutMetricAlarm" ,
534521 " cloudwatch:DeleteAlarms" ,
535522 " cloudwatch:DescribeAlarms" ,
536523 " cloudwatch:DescribeAlarmsForMetric" ,
537524 " cloudwatch:ListTagsForResource" ,
538525 " cloudwatch:TagResource" ,
539526 " cloudwatch:UntagResource" ,
540- # SNS Topic management for alarm notifications
527+
541528 " sns:CreateTopic" ,
542529 " sns:DeleteTopic" ,
543530 " sns:GetTopicAttributes" ,
@@ -552,14 +539,41 @@ resource "aws_iam_policy" "cloudwatch_alarms" {
552539 " sns:ListSubscriptionsByTopic"
553540 ],
554541 Resource = [
542+ " arn:aws:logs:${ var . default_aws_region } :${ data . aws_caller_identity . current . account_id } :log-group:/aws/kinesisfirehose/*" ,
555543 " arn:aws:cloudwatch:${ var . default_aws_region } :${ data . aws_caller_identity . current . account_id } :alarm:*" ,
556544 " arn:aws:sns:${ var . default_aws_region } :${ data . aws_caller_identity . current . account_id } :cloudwatch-security-alarms*"
557545 ]
558546 }
559547 ]
560548 })
561549
562- tags = merge (local. tags , { Name = " cloudwatch-alarms-management" })
550+ tags = merge (local. tags , { Name = " cloudwatch-management" })
551+ }
552+
553+ # SQS Management Policy for GetQueueAttributes
554+ resource "aws_iam_policy" "sqs_management" {
555+ name = " sqs-management"
556+ description = " Policy granting permissions to get SQS queue attributes"
557+ path = " /service-policies/"
558+
559+ policy = jsonencode ({
560+ Version = " 2012-10-17" ,
561+ Statement = [
562+ {
563+ Effect = " Allow" ,
564+ Action = [
565+ " sqs:GetQueueAttributes" ,
566+ " sqs:listqueuetags" ,
567+ " sqs:createqueue"
568+ ],
569+ Resource = [
570+ " arn:aws:sqs:eu-west-2:${ data . aws_caller_identity . current . account_id } :*"
571+ ]
572+ }
573+ ]
574+ })
575+
576+ tags = merge (local. tags , { Name = " sqs-management" })
563577}
564578
565579# Attach the policies to the role
@@ -598,17 +612,18 @@ resource "aws_iam_role_policy_attachment" "iam_management" {
598612 policy_arn = aws_iam_policy. iam_management . arn
599613}
600614
601- resource "aws_iam_role_policy_attachment" "cloudwatch_logging " {
615+ resource "aws_iam_role_policy_attachment" "firehose_readonly_attach " {
602616 role = aws_iam_role. github_actions . name
603- policy_arn = aws_iam_policy. cloudwatch_logging . arn
617+ policy_arn = aws_iam_policy. firehose_readonly . arn
604618}
605619
606- resource "aws_iam_role_policy_attachment" "firehose_readonly_attach " {
620+ resource "aws_iam_role_policy_attachment" "cloudwatch_management " {
607621 role = aws_iam_role. github_actions . name
608- policy_arn = aws_iam_policy. firehose_readonly . arn
622+ policy_arn = aws_iam_policy. cloudwatch_management . arn
609623}
610624
611- resource "aws_iam_role_policy_attachment" "cloudwatch_alarms " {
625+ resource "aws_iam_role_policy_attachment" "sqs_management " {
612626 role = aws_iam_role. github_actions . name
613- policy_arn = aws_iam_policy. cloudwatch_alarms . arn
627+ policy_arn = aws_iam_policy. sqs_management . arn
614628}
629+
0 commit comments