Skip to content

Commit a7cb932

Browse files
committed
eli-385 updating permissions boundary to only include exact permissions we use
1 parent 73324b6 commit a7cb932

1 file changed

Lines changed: 211 additions & 28 deletions

File tree

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

Lines changed: 211 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)