Ben Smith (Cloud Posse)
02/17/2026, 9:56 PMaws-identity-center component handles creating 3 types of access for tfstate. Plan, Apply, and state access (for !terraform.state operations).
then in tfstate backend component we typically allow the permissionset to access the role via
access_roles:
default:
allowed_permission_sets:
core-root:
- Terraform*Access
the asterisk is because we're very close to the ACL Limit of 4096.
Finally the typical provider we use is https://github.com/cloudposse-terraform-components/mixins/blob/main/src/mixins/provider-without-account-map.tf (this is vendored in with a component.yaml snippet:
mixins:
- uri: <https://raw.githubusercontent.com/cloudposse-terraform-components/mixins/{{> .Version }}/src/mixins/provider-without-account-map.tf
version: v0.3.0
filename: <http://providers.tf|providers.tf>
- uri: <https://raw.githubusercontent.com/cloudposse-terraform-components/mixins/{{> .Version }}/src/mixins/account-verification.mixin.tf
version: v0.3.0
filename: <http://account-verification.mixin.tf|account-verification.mixin.tf>
these help because were in the process of removing the account-map. and help map a static var account-map rather than the older component lookup.
so then people planning terraform are using a custom built permissionset to plan (and or apply) their terraform code.
You're deploying it with whatever you have access to via the permissionsets. Which are configured via identities and profilesBen Smith (Cloud Posse)
02/17/2026, 9:56 PMMiguel Zablah
02/17/2026, 11:35 PM