Skip to content

Conversation

@akazakou
Copy link

@akazakou akazakou commented Jan 22, 2026

Description

Implements the feature requested in #284 to apply permissions boundary to all bootstrap roles, not just the CloudFormation execution role.

Changes

CloudFormation Bootstrap Template

  • Added PermissionsBoundaryAllRoles parameter (default: 'false')
  • Added ApplyPermissionsBoundaryToAllRoles condition
  • Added PermissionsBoundary property to 4 roles:
    • FilePublishingRole
    • ImagePublishingRole
    • LookupRole
    • DeploymentActionRole

CLI Configuration

  • Added --permissions-boundary-all-roles option with type boolean and default false

CLI Logic

  • Added warning when --permissions-boundary-all-roles is used without --custom-permissions-boundary or --example-permissions-boundary
  • Passes the parameter to the bootstrap function

Bootstrap Props & Environment

  • Added permissionsBoundaryAllRoles?: boolean to BootstrappingParameters interface
  • Added mapping of PermissionsBoundaryAllRoles parameter to CloudFormation

Public API

  • Added permissionsBoundaryAllRoles?: boolean to public BootstrapParameters interface in @aws-cdk/toolkit-lib

Tests

  • Added 11 comprehensive unit tests in bootstrap2.test.ts:
    • Parameter passing (true/false/default values)
    • Warning display when flag is used without a permissions boundary
    • No warning when used with customPermissionsBoundary or examplePermissionsBoundary
    • Template contains PermissionsBoundaryAllRoles parameter
    • Template contains ApplyPermissionsBoundaryToAllRoles condition
    • Additional roles have conditional PermissionsBoundary property
    • CloudFormationExecutionRole continues to use PermissionsBoundarySet condition (backward compatible)
  • Updated existing tests in bootstrap.test.ts to include the new parameter

Usage

cdk bootstrap --custom-permissions-boundary my-policy --permissions-boundary-all-roles

This will apply the permissions boundary to ALL bootstrap roles (FilePublishingRole, ImagePublishingRole, LookupRole, DeploymentActionRole, and CloudFormationExecutionRole) instead of just the CloudFormationExecutionRole.

Testing

  • Build compiles successfully (yarn nx run aws-cdk:compile)
  • Lint checks pass (yarn nx run aws-cdk:eslint)
  • All bootstrap tests pass
  • All toolkit-lib tests pass (1291 tests)

Closes #284

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license

Implements the feature requested in aws#284 to apply permissions boundary
to all bootstrap roles, not just the CloudFormation execution role.

Changes:
- Add PermissionsBoundaryAllRoles parameter to bootstrap template
- Add ApplyPermissionsBoundaryToAllRoles condition
- Apply permissions boundary to FilePublishingRole, ImagePublishingRole,
  LookupRole, and DeploymentActionRole when flag is set
- Add --permissions-boundary-all-roles CLI option (default: false)
- Display warning when flag is used without --custom-permissions-boundary
  or --example-permissions-boundary
- Update tests to include new parameter

Closes aws#284
Moves the --permissions-boundary-all-roles warning from cli.ts to
bootstrap-environment.ts to follow the existing parameter validation
pattern in the modernBootstrap function.
auto-merge was automatically disabled January 22, 2026 18:16

Head branch was pushed to by a user without write access

- Test parameter passing (true/false/default)
- Test warning when used without permissions boundary
- Test no warning with customPermissionsBoundary or examplePermissionsBoundary
- Test template contains PermissionsBoundaryAllRoles parameter
- Test template contains ApplyPermissionsBoundaryToAllRoles condition
- Test PermissionsBoundary on additional roles with condition
- Test CloudFormationExecutionRole uses PermissionsBoundarySet condition
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Apply PermissionBoundary to all bootstrap roles (for easier self-service bootstrapping under existing boundary)

1 participant