Skip to content

Commit 90cd9c9

Browse files
author
Bob Strahan
committed
Add IAM permissions boundary support to CloudFormation templates
1 parent d52fb0f commit 90cd9c9

File tree

5 files changed

+69
-1
lines changed

5 files changed

+69
-1
lines changed

options/bda-lending-project/template.yaml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,20 @@ Parameters:
2727
- CRITICAL
2828
Description: Default logging level for Lambda functions
2929

30+
PermissionsBoundaryArn:
31+
Type: String
32+
Default: ""
33+
Description: >-
34+
(Optional) ARN of an existing IAM Permissions Boundary policy to attach to all IAM roles.
35+
Required by some organizations with Service Control Policies (SCPs).
36+
Format: arn:aws:iam::account-id:policy/policy-name
37+
Leave blank if no Permissions Boundary is required.
38+
AllowedPattern: "^(|arn:aws:iam::[0-9]{12}:policy/.+)$"
39+
ConstraintDescription: Must be empty or a valid IAM policy ARN
40+
41+
Conditions:
42+
HasPermissionsBoundary: !Not [!Equals [!Ref PermissionsBoundaryArn, ""]]
43+
3044
Resources:
3145

3246
# IAM role for Lambda function
@@ -47,6 +61,7 @@ Resources:
4761
Action: sts:AssumeRole
4862
ManagedPolicyArns:
4963
- arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
64+
PermissionsBoundary: !If [HasPermissionsBoundary, !Ref PermissionsBoundaryArn, !Ref AWS::NoValue]
5065
Policies:
5166
- PolicyName: BedrockDataAutomationAccess
5267
PolicyDocument:
@@ -143,4 +158,4 @@ Outputs:
143158

144159
BlueprintArns:
145160
Description: ARNs of the blueprints added to the project
146-
Value: !Join [", ", !GetAtt BDAProject.blueprintArns]
161+
Value: !Join [", ", !GetAtt BDAProject.blueprintArns]

options/bedrockkb/template.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,17 @@ Parameters:
123123
Type: String
124124
Default: AMAZON_BEDROCK_TEXT_CHUNK
125125

126+
PermissionsBoundaryArn:
127+
Type: String
128+
Default: ""
129+
Description: >-
130+
(Optional) ARN of an existing IAM Permissions Boundary policy to attach to all IAM roles.
131+
Required by some organizations with Service Control Policies (SCPs).
132+
Format: arn:aws:iam::account-id:policy/policy-name
133+
Leave blank if no Permissions Boundary is required.
134+
AllowedPattern: "^(|arn:aws:iam::[0-9]{12}:policy/.+)$"
135+
ConstraintDescription: Must be empty or a valid IAM policy ARN
136+
126137
Metadata:
127138
AWS::CloudFormation::Interface:
128139
ParameterGroups:
@@ -228,6 +239,7 @@ Conditions:
228239
Fn::Or:
229240
- Condition: IsChunkingStrategyFixed
230241
- Condition: IsChunkingStrategyDefault
242+
HasPermissionsBoundary: !Not [!Equals [!Ref PermissionsBoundaryArn, ""]]
231243

232244
Resources:
233245
# Custom resource to transform input to lowercase.
@@ -388,6 +400,7 @@ Resources:
388400
- lambda.amazonaws.com
389401
Action:
390402
- sts:AssumeRole
403+
PermissionsBoundary: !If [HasPermissionsBoundary, !Ref PermissionsBoundaryArn, !Ref AWS::NoValue]
391404
Policies:
392405
- PolicyName: OSSLambdaRoleDefaultPolicy # Reference: https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsx-ray.html
393406
PolicyDocument:
@@ -515,6 +528,7 @@ Resources:
515528
aws:SourceAccount: !Sub ${AWS::AccountId}
516529
ArnLike:
517530
aws:SourceArn: !Sub arn:aws:bedrock:${AWS::Region}:${AWS::AccountId}:knowledge-base/*
531+
PermissionsBoundary: !If [HasPermissionsBoundary, !Ref PermissionsBoundaryArn, !Ref AWS::NoValue]
518532
Policies:
519533
- PolicyName: bedrock-invoke-model
520534
PolicyDocument:
@@ -711,6 +725,7 @@ Resources:
711725
Action: sts:AssumeRole
712726
ManagedPolicyArns:
713727
- arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
728+
PermissionsBoundary: !If [HasPermissionsBoundary, !Ref PermissionsBoundaryArn, !Ref AWS::NoValue]
714729
Policies:
715730
- PolicyDocument:
716731
Version: 2012-10-17
@@ -812,6 +827,7 @@ Resources:
812827
Principal:
813828
Service: scheduler.amazonaws.com
814829
Action: sts:AssumeRole
830+
PermissionsBoundary: !If [HasPermissionsBoundary, !Ref PermissionsBoundaryArn, !Ref AWS::NoValue]
815831
Policies:
816832
- PolicyName: BedrockAgentStartIngestionPolicy
817833
PolicyDocument:

patterns/pattern-1/template.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,21 @@ Parameters:
101101
Type: String
102102
Description: "SageMaker A2I Review Portal URL for HITL tasks"
103103

104+
PermissionsBoundaryArn:
105+
Type: String
106+
Default: ""
107+
Description: >-
108+
(Optional) ARN of an existing IAM Permissions Boundary policy to attach to all IAM roles.
109+
Required by some organizations with Service Control Policies (SCPs).
110+
Format: arn:aws:iam::account-id:policy/policy-name
111+
Leave blank if no Permissions Boundary is required.
112+
AllowedPattern: "^(|arn:aws:iam::[0-9]{12}:policy/.+)$"
113+
ConstraintDescription: Must be empty or a valid IAM policy ARN
114+
104115
Conditions:
105116
IsSummarizationEnabled: !Equals [!Ref IsSummarizationEnabled, "true"]
106117
HasGuardrailConfig: !And [!Not [!Equals [!Ref BedrockGuardrailId, ""]], !Not [!Equals [!Ref BedrockGuardrailVersion, ""]]]
118+
HasPermissionsBoundary: !Not [!Equals [!Ref PermissionsBoundaryArn, ""]]
107119

108120
Resources:
109121

@@ -917,6 +929,7 @@ Resources:
917929
Action: sts:AssumeRole
918930
ManagedPolicyArns:
919931
- arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
932+
PermissionsBoundary: !If [HasPermissionsBoundary, !Ref PermissionsBoundaryArn, !Ref AWS::NoValue]
920933
Policies:
921934
- PolicyName: HITLProcessLambdaPolicy
922935
PolicyDocument:

patterns/pattern-2/template.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,24 @@ Parameters:
104104
Type: String
105105
Description: "Hash token from config library to force updates when config library changes"
106106

107+
PermissionsBoundaryArn:
108+
Type: String
109+
Default: ""
110+
Description: >-
111+
(Optional) ARN of an existing IAM Permissions Boundary policy to attach to all IAM roles.
112+
Required by some organizations with Service Control Policies (SCPs).
113+
Format: arn:aws:iam::account-id:policy/policy-name
114+
Leave blank if no Permissions Boundary is required.
115+
AllowedPattern: "^(|arn:aws:iam::[0-9]{12}:policy/.+)$"
116+
ConstraintDescription: Must be empty or a valid IAM policy ARN
117+
107118
Conditions:
108119
IsSummarizationEnabled: !Equals [!Ref IsSummarizationEnabled, "true"]
109120
IsAssessmentEnabled: !Equals [!Ref IsAssessmentEnabled, "true"]
110121
HasGuardrailConfig: !And [!Not [!Equals [!Ref BedrockGuardrailId, ""]], !Not [!Equals [!Ref BedrockGuardrailVersion, ""]]]
111122
HasCustomClassificationModelARN : !Not [!Equals [!Ref CustomClassificationModelARN , ""]]
112123
HasCustomExtractionModelARN : !Not [!Equals [!Ref CustomExtractionModelARN , ""]]
124+
HasPermissionsBoundary: !Not [!Equals [!Ref PermissionsBoundaryArn, ""]]
113125

114126

115127
Resources:

patterns/pattern-3/template.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,10 +99,22 @@ Parameters:
9999
Type: String
100100
Description: "Hash token from config library to force updates when config library changes"
101101

102+
PermissionsBoundaryArn:
103+
Type: String
104+
Default: ""
105+
Description: >-
106+
(Optional) ARN of an existing IAM Permissions Boundary policy to attach to all IAM roles.
107+
Required by some organizations with Service Control Policies (SCPs).
108+
Format: arn:aws:iam::account-id:policy/policy-name
109+
Leave blank if no Permissions Boundary is required.
110+
AllowedPattern: "^(|arn:aws:iam::[0-9]{12}:policy/.+)$"
111+
ConstraintDescription: Must be empty or a valid IAM policy ARN
112+
102113
Conditions:
103114
IsSummarizationEnabled: !Equals [!Ref IsSummarizationEnabled, "true"]
104115
IsAssessmentEnabled: !Equals [!Ref IsAssessmentEnabled, "true"]
105116
HasGuardrailConfig: !And [!Not [!Equals [!Ref BedrockGuardrailId, ""]], !Not [!Equals [!Ref BedrockGuardrailVersion, ""]]]
117+
HasPermissionsBoundary: !Not [!Equals [!Ref PermissionsBoundaryArn, ""]]
106118

107119
Resources:
108120

0 commit comments

Comments
 (0)