Skip to content

Commit 4870804

Browse files
committed
eli-204 removing stack interdependency
1 parent 6c8f0db commit 4870804

File tree

4 files changed

+96
-98
lines changed

4 files changed

+96
-98
lines changed
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
# Policy document for Permissions boundary
2+
data "aws_iam_policy_document" "permissions_boundary" {
3+
#checkov:skip=CKV2_AWS_40: Ensure AWS IAM policy does not allow full IAM privileges
4+
statement {
5+
sid = "RestrictRegion"
6+
effect = "Allow"
7+
8+
actions = [
9+
"acm:*",
10+
"application-autoscaling:*",
11+
"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+
]
38+
39+
resources = ["*"]
40+
41+
condition {
42+
test = "StringEquals"
43+
variable = "aws:RequestedRegion"
44+
values = [var.default_aws_region]
45+
}
46+
}
47+
48+
statement {
49+
sid = "DenyPrivEsculationViaIamRoles"
50+
effect = "Deny"
51+
actions = ["iam:*"]
52+
resources = ["*"]
53+
condition {
54+
test = "ArnLike"
55+
variable = "iam:PolicyARN"
56+
values = ["arn:aws:iam::*:policy/${upper(var.project_name)}-*"]
57+
}
58+
}
59+
60+
statement {
61+
sid = "DenyPrivEsculationViaIamProfiles"
62+
effect = "Deny"
63+
actions = ["iam:*"]
64+
resources = ["arn:aws:iam::*:role/${upper(var.project_name)}-*"]
65+
}
66+
}
67+
68+
# Permissions Boundary policy created only in owner workspace
69+
resource "aws_iam_policy" "permissions_boundary" {
70+
count = local.is_iam_owner ? 1 : 0
71+
name = "${upper(var.project_name)}-PermissionsBoundary"
72+
description = "Allows access to AWS services in the regions the client uses only"
73+
policy = data.aws_iam_policy_document.permissions_boundary.json
74+
75+
tags = merge(
76+
local.tags,
77+
{
78+
Stack = "iams-developer-roles"
79+
}
80+
)
81+
}
82+
83+
# Data source for non-owner workspaces (using ARN)
84+
data "aws_iam_policy" "permissions_boundary" {
85+
count = local.is_iam_owner ? 0 : 1
86+
arn = "arn:aws:iam::${data.aws_caller_identity.current.account_id}:policy/${upper(var.project_name)}-PermissionsBoundary"
87+
}
88+
89+
# Local to always reference the correct policy ARN
90+
locals {
91+
permissions_boundary_arn = local.is_iam_owner ? aws_iam_policy.permissions_boundary[0].arn : data.aws_iam_policy.permissions_boundary[0].arn
92+
}

infrastructure/stacks/api-layer/iam_roles.tf

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
module "iam_permissions_boundary" {
2-
source = "../iams-developer-roles"
3-
}
4-
51
# Lambda trust policy
62
data "aws_iam_policy_document" "lambda_assume_role" {
73
statement {
@@ -29,15 +25,15 @@ resource "aws_iam_role" "lambda_read_role" {
2925
count = local.is_iam_owner ? 1 : 0
3026
name = "lambda-read-role"
3127
assume_role_policy = data.aws_iam_policy_document.lambda_assume_role.json
32-
permissions_boundary = module.iam_permissions_boundary.permissions_boundary_arn
28+
permissions_boundary = local.permissions_boundary_arn
3329
}
3430

3531
# External write role: only created in default workspace
3632
resource "aws_iam_role" "write_access_role" {
3733
count = local.is_iam_owner ? 1 : 0
3834
name = "external-write-role"
3935
assume_role_policy = data.aws_iam_policy_document.dps_assume_role.json
40-
permissions_boundary = module.iam_permissions_boundary.permissions_boundary_arn
36+
permissions_boundary = local.permissions_boundary_arn
4137
}
4238

4339
# Data sources for referencing existing roles in non-default workspaces
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../_shared/iams_permissions_boundary.tf

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

Lines changed: 0 additions & 92 deletions
This file was deleted.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../_shared/iams_permissions_boundary.tf

0 commit comments

Comments
 (0)