@@ -36,13 +36,13 @@ const (
3636 AWSIAMInstanceProfileControllers = "AWSIAMInstanceProfileControllers"
3737 AWSIAMInstanceProfileControlPlane = "AWSIAMInstanceProfileControlPlane"
3838 AWSIAMInstanceProfileNodes = "AWSIAMInstanceProfileNodes"
39+ AWSIAMUserBootstrapper = "AWSIAMUserBootstrapper"
3940 AWSIAMRoleControllers = "AWSIAMRoleControllers"
4041 AWSIAMRoleControlPlane = "AWSIAMRoleControlPlane"
4142 AWSIAMRoleNodes = "AWSIAMRoleNodes"
4243 AWSIAMRoleEKSControlPlane = "AWSIAMRoleEKSControlPlane"
4344 AWSIAMRoleEKSNodegroup = "AWSIAMRoleEKSNodegroup"
4445 AWSIAMRoleEKSFargate = "AWSIAMRoleEKSFargate"
45- AWSIAMUserBootstrapper = "AWSIAMUserBootstrapper"
4646 ControllersPolicy PolicyName = "AWSIAMManagedPolicyControllers"
4747 ControllersPolicyEKS PolicyName = "AWSIAMManagedPolicyControllersEKS"
4848 ControlPlanePolicy PolicyName = "AWSIAMManagedPolicyCloudProviderControlPlane"
@@ -71,18 +71,26 @@ func (t Template) NewManagedName(name string) string {
7171 return fmt .Sprintf ("%s%s%s" , t .Spec .NamePrefix , name , * t .Spec .NameSuffix )
7272}
7373
74+ func (t Template ) NewEKSManagedName (name string ) string {
75+ return fmt .Sprintf ("%s%s" , t .Spec .NamePrefix , name )
76+ }
77+
7478// RenderCloudFormation will render and return a cloudformation Template.
75- func (t Template ) RenderCloudFormation () * cloudformation.Template {
79+ func (t Template ) RenderCloudFormation (permissionsBoundary * string ) * cloudformation.Template {
7680 template := cloudformation .NewTemplate ()
7781
7882 if t .Spec .BootstrapUser .Enable {
79- template . Resources [ AWSIAMUserBootstrapper ] = & cfn_iam.User {
83+ user : = & cfn_iam.User {
8084 UserName : t .Spec .BootstrapUser .UserName ,
8185 Groups : t .bootstrapUserGroups (),
8286 ManagedPolicyArns : t .Spec .ControlPlane .ExtraPolicyAttachments ,
8387 Policies : t .bootstrapUserPolicy (),
8488 Tags : converters .MapToCloudFormationTags (t .Spec .BootstrapUser .Tags ),
8589 }
90+ if permissionsBoundary != nil && len (* permissionsBoundary ) > 0 {
91+ user .PermissionsBoundary = * permissionsBoundary
92+ }
93+ template .Resources [AWSIAMUserBootstrapper ] = user
8694
8795 template .Resources [AWSIAMGroupBootstrapper ] = & cfn_iam.Group {
8896 GroupName : t .Spec .BootstrapUser .GroupName ,
@@ -134,28 +142,40 @@ func (t Template) RenderCloudFormation() *cloudformation.Template {
134142 }
135143 }
136144
137- template . Resources [ AWSIAMRoleControlPlane ] = & cfn_iam.Role {
145+ cpRole : = & cfn_iam.Role {
138146 RoleName : t .NewManagedName ("control-plane" ),
139147 AssumeRolePolicyDocument : t .controlPlaneTrustPolicy (),
140148 ManagedPolicyArns : t .Spec .ControlPlane .ExtraPolicyAttachments ,
141149 Policies : t .controlPlanePolicies (),
142150 Tags : converters .MapToCloudFormationTags (t .Spec .ControlPlane .Tags ),
143151 }
152+ if permissionsBoundary != nil && len (* permissionsBoundary ) > 0 {
153+ cpRole .PermissionsBoundary = * permissionsBoundary
154+ }
155+ template .Resources [AWSIAMRoleControlPlane ] = cpRole
144156
145- template . Resources [ AWSIAMRoleControllers ] = & cfn_iam.Role {
157+ ctrRole : = & cfn_iam.Role {
146158 RoleName : t .NewManagedName ("controllers" ),
147159 AssumeRolePolicyDocument : t .controllersTrustPolicy (),
148160 Policies : t .controllersRolePolicy (),
149161 Tags : converters .MapToCloudFormationTags (t .Spec .ClusterAPIControllers .Tags ),
150162 }
163+ if permissionsBoundary != nil && len (* permissionsBoundary ) > 0 {
164+ ctrRole .PermissionsBoundary = * permissionsBoundary
165+ }
166+ template .Resources [AWSIAMRoleControllers ] = ctrRole
151167
152- template . Resources [ AWSIAMRoleNodes ] = & cfn_iam.Role {
168+ nodeRole : = & cfn_iam.Role {
153169 RoleName : t .NewManagedName ("nodes" ),
154170 AssumeRolePolicyDocument : t .nodeTrustPolicy (),
155171 ManagedPolicyArns : t .nodeManagedPolicies (),
156172 Policies : t .nodePolicies (),
157173 Tags : converters .MapToCloudFormationTags (t .Spec .Nodes .Tags ),
158174 }
175+ if permissionsBoundary != nil && len (* permissionsBoundary ) > 0 {
176+ nodeRole .PermissionsBoundary = * permissionsBoundary
177+ }
178+ template .Resources [AWSIAMRoleNodes ] = nodeRole
159179
160180 template .Resources [AWSIAMInstanceProfileControlPlane ] = & cfn_iam.InstanceProfile {
161181 InstanceProfileName : t .NewManagedName ("control-plane" ),
@@ -179,30 +199,42 @@ func (t Template) RenderCloudFormation() *cloudformation.Template {
179199 }
180200
181201 if ! t .Spec .EKS .DefaultControlPlaneRole .Disable && ! t .Spec .EKS .Disable {
182- template . Resources [ AWSIAMRoleEKSControlPlane ] = & cfn_iam.Role {
183- RoleName : ekscontrolplanev1 .DefaultEKSControlPlaneRole ,
202+ eksCPRole : = & cfn_iam.Role {
203+ RoleName : t . NewEKSManagedName ( ekscontrolplanev1 .DefaultEKSControlPlaneRole ) ,
184204 AssumeRolePolicyDocument : AssumeRolePolicy (iamv1 .PrincipalService , []string {"eks.amazonaws.com" }),
185205 ManagedPolicyArns : t .eksControlPlanePolicies (),
186206 Tags : converters .MapToCloudFormationTags (t .Spec .EKS .DefaultControlPlaneRole .Tags ),
187207 }
208+ if permissionsBoundary != nil && len (* permissionsBoundary ) > 0 {
209+ eksCPRole .PermissionsBoundary = * permissionsBoundary
210+ }
211+ template .Resources [AWSIAMRoleEKSControlPlane ] = eksCPRole
188212 }
189213
190214 if ! t .Spec .EKS .ManagedMachinePool .Disable && ! t .Spec .EKS .Disable {
191- template . Resources [ AWSIAMRoleEKSNodegroup ] = & cfn_iam.Role {
192- RoleName : expinfrav1 .DefaultEKSNodegroupRole ,
215+ eksNGRole : = & cfn_iam.Role {
216+ RoleName : t . NewEKSManagedName ( expinfrav1 .DefaultEKSNodegroupRole ) ,
193217 AssumeRolePolicyDocument : AssumeRolePolicy (iamv1 .PrincipalService , []string {"ec2.amazonaws.com" , "eks.amazonaws.com" }),
194218 ManagedPolicyArns : t .eksMachinePoolPolicies (),
195219 Tags : converters .MapToCloudFormationTags (t .Spec .EKS .ManagedMachinePool .Tags ),
196220 }
221+ if permissionsBoundary != nil && len (* permissionsBoundary ) > 0 {
222+ eksNGRole .PermissionsBoundary = * permissionsBoundary
223+ }
224+ template .Resources [AWSIAMRoleEKSNodegroup ] = eksNGRole
197225 }
198226
199227 if ! t .Spec .EKS .Fargate .Disable && ! t .Spec .EKS .Disable {
200- template . Resources [ AWSIAMRoleEKSFargate ] = & cfn_iam.Role {
201- RoleName : expinfrav1 .DefaultEKSFargateRole ,
228+ eksFGRole : = & cfn_iam.Role {
229+ RoleName : t . NewEKSManagedName ( expinfrav1 .DefaultEKSFargateRole ) ,
202230 AssumeRolePolicyDocument : AssumeRolePolicy (iamv1 .PrincipalService , []string {eksiam .EKSFargateService }),
203231 ManagedPolicyArns : t .fargateProfilePolicies (t .Spec .EKS .Fargate ),
204232 Tags : converters .MapToCloudFormationTags (t .Spec .EKS .Fargate .Tags ),
205233 }
234+ if permissionsBoundary != nil && len (* permissionsBoundary ) > 0 {
235+ eksFGRole .PermissionsBoundary = * permissionsBoundary
236+ }
237+ template .Resources [AWSIAMRoleEKSFargate ] = eksFGRole
206238 }
207239
208240 if t .Spec .EKS .EnableUserEKSConsolePolicy && ! t .Spec .EKS .Disable {
0 commit comments