@@ -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-
491472resource "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+
0 commit comments