@@ -27,7 +27,7 @@ func DataAwsCrossaccountPolicy() common.Resource {
27
27
if ! slices .Contains (AwsPartitions , data .AwsPartition ) {
28
28
return errors .New (AwsPartitionsValidationError )
29
29
}
30
-
30
+ awsNamespace := AwsConfig [ data . AwsPartition ][ "awsNamespace" ]
31
31
if ! slices .Contains ([]string {"managed" , "customer" , "restricted" }, data .PolicyType ) {
32
32
return fmt .Errorf ("policy_type must be either 'managed', 'customer' or 'restricted'" )
33
33
}
@@ -151,7 +151,7 @@ func DataAwsCrossaccountPolicy() common.Resource {
151
151
"iam:CreateServiceLinkedRole" ,
152
152
"iam:PutRolePolicy" ,
153
153
},
154
- Resources : fmt .Sprintf ("arn:%s:iam::*:role/aws-service-role/spot.amazonaws.com/AWSServiceRoleForEC2Spot" , data . AwsPartition ),
154
+ Resources : fmt .Sprintf ("arn:%s:iam::*:role/aws-service-role/spot.amazonaws.com/AWSServiceRoleForEC2Spot" , awsNamespace ),
155
155
Condition : map [string ]map [string ]string {
156
156
"StringLike" : {
157
157
"iam:AWSServiceName" : "spot.amazonaws.com" ,
@@ -174,7 +174,6 @@ func DataAwsCrossaccountPolicy() common.Resource {
174
174
if data .PolicyType == "restricted" {
175
175
region := data .Region
176
176
aws_account_id := data .AwsAccountId
177
- awsPartition := data .AwsPartition
178
177
vpc_id := data .VpcId
179
178
security_group_id := data .SecurityGroupId
180
179
policy .Statements = append (policy .Statements ,
@@ -186,7 +185,7 @@ func DataAwsCrossaccountPolicy() common.Resource {
186
185
"ec2:DisassociateIamInstanceProfile" ,
187
186
"ec2:ReplaceIamInstanceProfileAssociation" ,
188
187
},
189
- Resources : fmt .Sprintf ("arn:%s:ec2:%s:%s:instance/*" , awsPartition , region , aws_account_id ),
188
+ Resources : fmt .Sprintf ("arn:%s:ec2:%s:%s:instance/*" , awsNamespace , region , aws_account_id ),
190
189
Condition : map [string ]map [string ]string {
191
190
"StringEquals" : {
192
191
"ec2:ResourceTag/Vendor" : "Databricks" ,
@@ -198,8 +197,8 @@ func DataAwsCrossaccountPolicy() common.Resource {
198
197
Effect : "Allow" ,
199
198
Actions : "ec2:RunInstances" ,
200
199
Resources : []string {
201
- fmt .Sprintf ("arn:%s:ec2:%s:%s:volume/*" , awsPartition , region , aws_account_id ),
202
- fmt .Sprintf ("arn:%s:ec2:%s:%s:instance/*" , awsPartition , region , aws_account_id ),
200
+ fmt .Sprintf ("arn:%s:ec2:%s:%s:volume/*" , awsNamespace , region , aws_account_id ),
201
+ fmt .Sprintf ("arn:%s:ec2:%s:%s:instance/*" , awsNamespace , region , aws_account_id ),
203
202
},
204
203
Condition : map [string ]map [string ]string {
205
204
"StringEquals" : {
@@ -211,7 +210,7 @@ func DataAwsCrossaccountPolicy() common.Resource {
211
210
Sid : "AllowEc2RunInstanceImagePerTag" ,
212
211
Effect : "Allow" ,
213
212
Actions : "ec2:RunInstances" ,
214
- Resources : fmt .Sprintf ("arn:%s:ec2:%s:%s:image/*" , awsPartition , region , aws_account_id ),
213
+ Resources : fmt .Sprintf ("arn:%s:ec2:%s:%s:image/*" , awsNamespace , region , aws_account_id ),
215
214
Condition : map [string ]map [string ]string {
216
215
"StringEquals" : {
217
216
"aws:ResourceTag/Vendor" : "Databricks" ,
@@ -223,13 +222,13 @@ func DataAwsCrossaccountPolicy() common.Resource {
223
222
Effect : "Allow" ,
224
223
Actions : "ec2:RunInstances" ,
225
224
Resources : []string {
226
- fmt .Sprintf ("arn:%s:ec2:%s:%s:network-interface/*" , awsPartition , region , aws_account_id ),
227
- fmt .Sprintf ("arn:%s:ec2:%s:%s:subnet/*" , awsPartition , region , aws_account_id ),
228
- fmt .Sprintf ("arn:%s:ec2:%s:%s:security-group/*" , awsPartition , region , aws_account_id ),
225
+ fmt .Sprintf ("arn:%s:ec2:%s:%s:network-interface/*" , awsNamespace , region , aws_account_id ),
226
+ fmt .Sprintf ("arn:%s:ec2:%s:%s:subnet/*" , awsNamespace , region , aws_account_id ),
227
+ fmt .Sprintf ("arn:%s:ec2:%s:%s:security-group/*" , awsNamespace , region , aws_account_id ),
229
228
},
230
229
Condition : map [string ]map [string ]string {
231
230
"StringEquals" : {
232
- "ec2:vpc" : fmt .Sprintf ("arn:%s:ec2:%s:%s:vpc/%s" , awsPartition , region , aws_account_id , vpc_id ),
231
+ "ec2:vpc" : fmt .Sprintf ("arn:%s:ec2:%s:%s:vpc/%s" , awsNamespace , region , aws_account_id , vpc_id ),
233
232
},
234
233
},
235
234
},
@@ -238,19 +237,19 @@ func DataAwsCrossaccountPolicy() common.Resource {
238
237
Effect : "Allow" ,
239
238
Actions : "ec2:RunInstances" ,
240
239
NotResources : []string {
241
- fmt .Sprintf ("arn:%s:ec2:%s:%s:image/*" , awsPartition , region , aws_account_id ),
242
- fmt .Sprintf ("arn:%s:ec2:%s:%s:network-interface/*" , awsPartition , region , aws_account_id ),
243
- fmt .Sprintf ("arn:%s:ec2:%s:%s:subnet/*" , awsPartition , region , aws_account_id ),
244
- fmt .Sprintf ("arn:%s:ec2:%s:%s:security-group/*" , awsPartition , region , aws_account_id ),
245
- fmt .Sprintf ("arn:%s:ec2:%s:%s:volume/*" , awsPartition , region , aws_account_id ),
246
- fmt .Sprintf ("arn:%s:ec2:%s:%s:instance/*" , awsPartition , region , aws_account_id ),
240
+ fmt .Sprintf ("arn:%s:ec2:%s:%s:image/*" , awsNamespace , region , aws_account_id ),
241
+ fmt .Sprintf ("arn:%s:ec2:%s:%s:network-interface/*" , awsNamespace , region , aws_account_id ),
242
+ fmt .Sprintf ("arn:%s:ec2:%s:%s:subnet/*" , awsNamespace , region , aws_account_id ),
243
+ fmt .Sprintf ("arn:%s:ec2:%s:%s:security-group/*" , awsNamespace , region , aws_account_id ),
244
+ fmt .Sprintf ("arn:%s:ec2:%s:%s:volume/*" , awsNamespace , region , aws_account_id ),
245
+ fmt .Sprintf ("arn:%s:ec2:%s:%s:instance/*" , awsNamespace , region , aws_account_id ),
247
246
},
248
247
},
249
248
& awsIamPolicyStatement {
250
249
Sid : "EC2TerminateInstancesTag" ,
251
250
Effect : "Allow" ,
252
251
Actions : "ec2:TerminateInstances" ,
253
- Resources : fmt .Sprintf ("arn:%s:ec2:%s:%s:instance/*" , awsPartition , region , aws_account_id ),
252
+ Resources : fmt .Sprintf ("arn:%s:ec2:%s:%s:instance/*" , awsNamespace , region , aws_account_id ),
254
253
Condition : map [string ]map [string ]string {
255
254
"StringEquals" : {
256
255
"ec2:ResourceTag/Vendor" : "Databricks" ,
@@ -265,8 +264,8 @@ func DataAwsCrossaccountPolicy() common.Resource {
265
264
"ec2:DetachVolume" ,
266
265
},
267
266
Resources : []string {
268
- fmt .Sprintf ("arn:%s:ec2:%s:%s:instance/*" , awsPartition , region , aws_account_id ),
269
- fmt .Sprintf ("arn:%s:ec2:%s:%s:volume/*" , awsPartition , region , aws_account_id ),
267
+ fmt .Sprintf ("arn:%s:ec2:%s:%s:instance/*" , awsNamespace , region , aws_account_id ),
268
+ fmt .Sprintf ("arn:%s:ec2:%s:%s:volume/*" , awsNamespace , region , aws_account_id ),
270
269
},
271
270
Condition : map [string ]map [string ]string {
272
271
"StringEquals" : {
@@ -278,7 +277,7 @@ func DataAwsCrossaccountPolicy() common.Resource {
278
277
Sid : "EC2CreateVolumeByTag" ,
279
278
Effect : "Allow" ,
280
279
Actions : "ec2:CreateVolume" ,
281
- Resources : fmt .Sprintf ("arn:%s:ec2:%s:%s:volume/*" , awsPartition , region , aws_account_id ),
280
+ Resources : fmt .Sprintf ("arn:%s:ec2:%s:%s:volume/*" , awsNamespace , region , aws_account_id ),
282
281
Condition : map [string ]map [string ]string {
283
282
"StringEquals" : {
284
283
"aws:RequestTag/Vendor" : "Databricks" ,
@@ -290,7 +289,7 @@ func DataAwsCrossaccountPolicy() common.Resource {
290
289
Effect : "Allow" ,
291
290
Actions : "ec2:DeleteVolume" ,
292
291
Resources : []string {
293
- fmt .Sprintf ("arn:%s:ec2:%s:%s:volume/*" , awsPartition , region , aws_account_id ),
292
+ fmt .Sprintf ("arn:%s:ec2:%s:%s:volume/*" , awsNamespace , region , aws_account_id ),
294
293
},
295
294
Condition : map [string ]map [string ]string {
296
295
"StringEquals" : {
@@ -307,10 +306,10 @@ func DataAwsCrossaccountPolicy() common.Resource {
307
306
"ec2:RevokeSecurityGroupEgress" ,
308
307
"ec2:RevokeSecurityGroupIngress" ,
309
308
},
310
- Resources : fmt .Sprintf ("arn:%s:ec2:%s:%s:security-group/%s" , awsPartition , region , aws_account_id , security_group_id ),
309
+ Resources : fmt .Sprintf ("arn:%s:ec2:%s:%s:security-group/%s" , awsNamespace , region , aws_account_id , security_group_id ),
311
310
Condition : map [string ]map [string ]string {
312
311
"StringEquals" : {
313
- "ec2:vpc" : fmt .Sprintf ("arn:%s:ec2:%s:%s:vpc/%s" , awsPartition , region , aws_account_id , vpc_id ),
312
+ "ec2:vpc" : fmt .Sprintf ("arn:%s:ec2:%s:%s:vpc/%s" , awsNamespace , region , aws_account_id , vpc_id ),
314
313
},
315
314
},
316
315
},
0 commit comments