@@ -6,35 +6,218 @@ data "aws_iam_policy_document" "permissions_boundary" {
66 effect = " Allow"
77
88 actions = [
9- " acm:*" ,
10- " application-autoscaling:*" ,
9+ # ACM - only specific actions needed for certificate management
10+ " acm:DescribeCertificate" ,
11+ " acm:GetCertificate" ,
12+ " acm:ListCertificates" ,
13+ " acm:ListTagsForCertificate" ,
14+ " acm:RequestCertificate" ,
15+ " acm:AddTagsToCertificate" ,
16+ " acm:ImportCertificate" ,
17+
18+ # API Gateway - specific actions for deployment
1119 " apigateway:*" ,
12- " cloudtrail:*" ,
13- " cloudwatch:*" ,
14- " config:*" ,
15- " dynamodb:*" ,
16- " ec2:*" ,
17- " events:*" ,
18- " firehose:*" ,
19- " glue:*" ,
20- " health:*" ,
21- " iam:*" ,
22- " kms:*" ,
23- " lambda:*" ,
24- " logs:*" ,
25- " network-firewall:*" ,
26- " pipes:*" ,
27- " s3:*" ,
28- " schemas:*" ,
29- " sns:*" ,
30- " servicequotas:*" ,
31- " ssm:*" ,
32- " states:*" ,
33- " support:*" ,
34- " sqs:*" ,
35- " tag:*" ,
36- " trustedadvisor:*" ,
37- " xray:*"
20+
21+ # CloudWatch - monitoring and alarms
22+ " cloudwatch:PutMetricAlarm" ,
23+ " cloudwatch:DeleteAlarms" ,
24+ " cloudwatch:DescribeAlarms" ,
25+ " cloudwatch:DescribeAlarmsForMetric" ,
26+ " cloudwatch:ListTagsForResource" ,
27+ " cloudwatch:TagResource" ,
28+ " cloudwatch:UntagResource" ,
29+
30+ # DynamoDB - table management
31+ " dynamodb:DescribeTimeToLive" ,
32+ " dynamodb:DescribeTable" ,
33+ " dynamodb:DescribeContinuousBackups" ,
34+ " dynamodb:ListTables" ,
35+ " dynamodb:DeleteTable" ,
36+ " dynamodb:CreateTable" ,
37+ " dynamodb:TagResource" ,
38+ " dynamodb:ListTagsOfResource" ,
39+
40+ # EC2 - networking infrastructure
41+ " ec2:Describe*" ,
42+ " ec2:ModifyVpcBlockPublicAccessOptions" ,
43+ " ec2:CreateTags" ,
44+ " ec2:CreateNetworkAclEntry" ,
45+ " ec2:CreateNetworkAcl" ,
46+ " ec2:AssociateRouteTable" ,
47+ " ec2:CreateVpc" ,
48+ " ec2:ModifyVpcAttribute" ,
49+ " ec2:DeleteVpc" ,
50+ " ec2:CreateRouteTable" ,
51+ " ec2:CreateSubnet" ,
52+ " ec2:RevokeSecurityGroupIngress" ,
53+ " ec2:CreateSecurityGroup" ,
54+ " ec2:RevokeSecurityGroupEgress" ,
55+ " ec2:AuthorizeSecurityGroupIngress" ,
56+ " ec2:AuthorizeSecurityGroupEgress" ,
57+ " ec2:CreateVpcEndpoint" ,
58+ " ec2:CreateFlowLogs" ,
59+ " ec2:ReplaceNetworkAclAssociation" ,
60+ " ec2:DeleteSecurityGroup" ,
61+ " ec2:DeleteNetworkAcl" ,
62+
63+ # EventBridge - alarm forwarding to Splunk
64+ " events:PutRule" ,
65+ " events:PutTargets" ,
66+ " events:DeleteRule" ,
67+ " events:RemoveTargets" ,
68+ " events:DescribeRule" ,
69+ " events:ListTargetsByRule" ,
70+ " events:TagResource" ,
71+ " events:UntagResource" ,
72+
73+ # Kinesis Firehose - log streaming
74+ " firehose:CreateDeliveryStream" ,
75+ " firehose:DeleteDeliveryStream" ,
76+ " firehose:DescribeDeliveryStream" ,
77+ " firehose:UpdateDestination" ,
78+ " firehose:PutRecord" ,
79+ " firehose:PutRecordBatch" ,
80+ " firehose:TagDeliveryStream" ,
81+ " firehose:ListTagsForDeliveryStream" ,
82+ " firehose:UntagDeliveryStream" ,
83+ " firehose:StartDeliveryStreamEncryption" ,
84+ " firehose:StopDeliveryStreamEncryption" ,
85+
86+ # IAM - specific role and policy management
87+ " iam:GetRole" ,
88+ " iam:GetRolePolicy" ,
89+ " iam:GetPolicy" ,
90+ " iam:GetPolicyVersion" ,
91+ " iam:ListRoles" ,
92+ " iam:ListPolicies" ,
93+ " iam:ListRolePolicies" ,
94+ " iam:ListAttachedRolePolicies" ,
95+ " iam:ListPolicyVersions" ,
96+ " iam:CreateRole" ,
97+ " iam:DeleteRole" ,
98+ " iam:UpdateRole" ,
99+ " iam:PutRolePolicy" ,
100+ " iam:PutRolePermissionsBoundary" ,
101+ " iam:AttachRolePolicy" ,
102+ " iam:DetachRolePolicy" ,
103+ " iam:CreatePolicy" ,
104+ " iam:CreatePolicyVersion" ,
105+ " iam:TagRole" ,
106+ " iam:PassRole" ,
107+ " iam:TagPolicy" ,
108+
109+ # KMS - encryption key management
110+ " kms:CreateKey" ,
111+ " kms:DescribeKey" ,
112+ " kms:Describe*" ,
113+ " kms:CreateAlias" ,
114+ " kms:ListKeys" ,
115+ " kms:List*" ,
116+ " kms:ListAliases" ,
117+ " kms:GetKeyPolicy" ,
118+ " kms:GetKeyPolicy*" ,
119+ " kms:GetKeyRotationStatus" ,
120+ " kms:DeleteAlias" ,
121+ " kms:UpdateKeyDescription" ,
122+ " kms:CreateGrant" ,
123+ " kms:TagResource" ,
124+ " kms:EnableKeyRotation" ,
125+ " kms:ScheduleKeyDeletion" ,
126+ " kms:PutKeyPolicy" ,
127+ " kms:Encrypt" ,
128+ " kms:Decrypt" ,
129+ " kms:Decrypt*" ,
130+ " kms:ReEncrypt*" ,
131+ " kms:GenerateDataKey" ,
132+
133+ # Lambda - function management
134+ " lambda:CreateFunction" ,
135+ " lambda:UpdateFunctionCode" ,
136+ " lambda:UpdateFunctionConfiguration" ,
137+ " lambda:DeleteFunction" ,
138+ " lambda:GetFunction" ,
139+ " lambda:GetFunctionConfiguration" ,
140+ " lambda:GetFunctionCodeSigningConfig" ,
141+ " lambda:ListVersionsByFunction" ,
142+ " lambda:TagResource" ,
143+ " lambda:UntagResource" ,
144+ " lambda:ListTags" ,
145+ " lambda:PublishVersion" ,
146+ " lambda:CreateAlias" ,
147+ " lambda:UpdateAlias" ,
148+ " lambda:DeleteAlias" ,
149+ " lambda:ListAliases" ,
150+ " lambda:AddPermission" ,
151+ " lambda:RemovePermission" ,
152+ " lambda:GetPolicy" ,
153+
154+ # CloudWatch Logs - log management
155+ " logs:CreateLogGroup" ,
156+ " logs:CreateLogStream" ,
157+ " logs:PutLogEvents" ,
158+ " logs:DescribeLogGroups" ,
159+ " logs:DescribeLogStreams" ,
160+ " logs:Describe*" ,
161+ " logs:ListTagsForResource" ,
162+ " logs:PutRetentionPolicy" ,
163+ " logs:AssociateKmsKey" ,
164+ " logs:PutMetricFilter" ,
165+
166+ # S3 - bucket and object management
167+ " s3:GetLifecycleConfiguration" ,
168+ " s3:PutLifecycleConfiguration" ,
169+ " s3:GetBucketVersioning" ,
170+ " s3:GetEncryptionConfiguration" ,
171+ " s3:PutEncryptionConfiguration" ,
172+ " s3:GetBucketPolicy" ,
173+ " s3:GetBucketObjectLockConfiguration" ,
174+ " s3:GetBucketLogging" ,
175+ " s3:GetReplicationConfiguration" ,
176+ " s3:GetBucketWebsite" ,
177+ " s3:GetBucketRequestPayment" ,
178+ " s3:GetBucketCORS" ,
179+ " s3:GetBucketAcl" ,
180+ " s3:PutBucketAcl" ,
181+ " s3:GetAccelerateConfiguration" ,
182+ " s3:ListBucket" ,
183+ " s3:GetObject" ,
184+ " s3:PutObject" ,
185+ " s3:DeleteObject" ,
186+ " s3:GetBucketLocation" ,
187+ " s3:GetBucketPublicAccessBlock" ,
188+ " s3:PutBucketCORS" ,
189+ " s3:CreateBucket" ,
190+ " s3:DeleteBucket" ,
191+ " s3:GetBucketTagging" ,
192+ " s3:PutBucketPolicy" ,
193+ " s3:PutBucketVersioning" ,
194+ " s3:PutBucketPublicAccessBlock" ,
195+ " s3:PutBucketLogging" ,
196+ " s3:GetObjectTagging" ,
197+ " s3:PutObjectTagging" ,
198+ " s3:GetObjectVersion" ,
199+
200+ # SNS - notification management
201+ " sns:CreateTopic" ,
202+ " sns:DeleteTopic" ,
203+ " sns:GetTopicAttributes" ,
204+ " sns:SetTopicAttributes" ,
205+ " sns:ListTopics" ,
206+ " sns:ListTagsForResource" ,
207+ " sns:TagResource" ,
208+ " sns:UntagResource" ,
209+ " sns:Subscribe" ,
210+ " sns:Unsubscribe" ,
211+ " sns:ListSubscriptions" ,
212+ " sns:ListSubscriptionsByTopic" ,
213+
214+ # SSM - parameter management
215+ " ssm:DescribeParameters" ,
216+ " ssm:GetParameter" ,
217+ " ssm:GetParameters" ,
218+ " ssm:ListTagsForResource" ,
219+ " ssm:PutParameter" ,
220+ " ssm:AddTagsToResource"
38221 ]
39222
40223 resources = [" *" ]
0 commit comments