@@ -802,6 +802,115 @@ resource "aws_iam_policy" "cloudwatch_management" {
802802 tags = merge (local. tags , { Name = " cloudwatch-management" })
803803}
804804
805+ data "aws_iam_policy_document" "regression_test_permissions" {
806+ statement {
807+ sid = " S3Access"
808+ Effect = " Allow" ,
809+ Action = [
810+ " s3:ListBucket" ,
811+ " s3:GetObject" ,
812+ " s3:PutObject" ,
813+ " s3:DeleteObject" ,
814+ " s3:GetBucketTagging" ,
815+ " s3:GetObjectTagging" ,
816+ " s3:PutObjectTagging" ,
817+ " s3:GetObjectVersion" ,
818+ ],
819+ Resource = [
820+ " arn:aws:s3:::*eligibility-signposting-api-${ var . environment } -eli-rules" ,
821+ " arn:aws:s3:::*eligibility-signposting-api-${ var . environment } -eli-rules/*" ,
822+ " arn:aws:s3:::*eligibility-signposting-api-${ var . environment } -consumer-map" ,
823+ " arn:aws:s3:::*eligibility-signposting-api-${ var . environment } -consumer-map/*"
824+ ]
825+ }
826+
827+ statement {
828+ sid = " DynamoAccess"
829+ Effect = " Allow"
830+ Action = [
831+ " dynamodb:GetItem" ,
832+ " dynamodb:PutItem" ,
833+ " dynamodb:Query" ,
834+ " dynamodb:Scan" ,
835+ " dynamodb:UpdateItem" ,
836+ " dynamodb:DeleteItem" ,
837+ " dynamodb:DescribeTable" ,
838+ " dynamodb:ListTables" ,
839+ " dynamodb:DeleteTable" ,
840+ " dynamodb:CreateTable" ,
841+ " dynamodb:TagResource" ,
842+ " dynamodb:UntagResource" ,
843+ " dynamodb:ListTagsOfResource"
844+ ]
845+ resources = [
846+ " arn:aws:dynamodb:${ var . default_aws_region } :${ data . aws_caller_identity . current . account_id } :table/my-table"
847+ ]
848+ }
849+
850+ statement {
851+ sid = " SecretsManagerAccess"
852+ Effect = " Allow"
853+ Action = [
854+ " secretsmanager:GetSecretValue" ,
855+ " secretsmanager:PutSecretValue" ,
856+ " secretsmanager:DescribeSecret" ,
857+ " secretsmanager:UpdateSecretVersionStage"
858+ ]
859+ }
860+
861+ statement {
862+ sid = " CloudWatchLogsRead"
863+ Effect = " Allow"
864+ Action = [
865+ " logs:DescribeLogGroups" ,
866+ " logs:DescribeLogStreams" ,
867+ " logs:GetLogEvents" ,
868+ " logs:FilterLogEvents" ,
869+ " logs:StartQuery" ,
870+ " logs:GetQueryResults" ,
871+ " logs:StopQuery"
872+ ]
873+ resources = [" *" ]
874+ }
875+
876+ statement {
877+ sid = " XRayRead"
878+ Effect = " Allow"
879+ Action = [
880+ " xray:GetTraceSummaries" ,
881+ " xray:BatchGetTraces" ,
882+ " xray:GetServiceGraph" ,
883+ " xray:GetGroups" ,
884+ " xray:GetGroup" ,
885+ " xray:GetSamplingRules" ,
886+ " xray:GetSamplingTargets" ,
887+ " xray:GetSamplingStatisticSummaries" ,
888+ " xray:UpdateSamplingRule"
889+ ]
890+ resources = [" *" ]
891+ }
892+
893+ statement {
894+ sid = " SSMRead"
895+ Effect = " Allow"
896+ Action = [
897+ " ssm:GetParameter" ,
898+ " ssm:GetParameters" ,
899+ " ssm:GetParametersByPath"
900+ ]
901+ resources = [
902+ " arn:aws:ssm:${ var . default_aws_region } :${ data . aws_caller_identity . current . account_id } :parameter/my-app/*"
903+ ]
904+ }
905+ }
906+
907+ resource "aws_iam_policy" "regression_test_permissions" {
908+ name = " regression-test-permissions"
909+ description = " Permissions for the regression test GitHub Actions role"
910+ path = " /service-policies/"
911+ policy = data. aws_iam_policy_document . regression_test_permissions . json
912+ }
913+
805914# Assume role policy document for GitHub Actions
806915data "aws_iam_policy_document" "github_actions_assume_role" {
807916 statement {
@@ -913,3 +1022,13 @@ resource "aws_iam_role_policy_attachment" "cloudwatch_management" {
9131022 role = aws_iam_role. github_actions . name
9141023 policy_arn = aws_iam_policy. cloudwatch_management . arn
9151024}
1025+
1026+ resource "aws_iam_role_policy_attachment" "regression_test_permissions" {
1027+ role = aws_iam_role. regression_test_role . name
1028+ policy_arn = aws_iam_policy. regression_test_permissions . arn
1029+ }
1030+
1031+ resource "aws_iam_role_policy_attachment" "security_management" {
1032+ role = aws_iam_role. regression_test_role . name
1033+ policy_arn = aws_iam_policy. security_management . arn
1034+ }
0 commit comments