Users and Permissions
Federated access with AWS IAM Identity Center (SSO) and fine-grained permission sets. This design connects an external identity provider to AWS so users authenticate once and receive the right level of access across every account. It turns group membership and permission sets into the primary control model, which keeps access consistent as environments and teams grow.
Problems this Architecture solves
- Removes the need for long-lived IAM users and scattered account-by-account credentials.
- Standardizes how teams get access across environments with group-based, least-privilege permissions.
- Makes onboarding, offboarding, and permission changes easier to control from one identity plane.
Identity Federation
Centrally managed users via IAM Identity Center, integrated with your IdP of choice (Okta, Google Workspace, Microsoft Entra, etc.)
Supported Identity Providers
- Okta
- Google Workspace
- Microsoft Entra ID (Azure AD)
- JumpCloud
- OneLogin
- Any SAML 2.0 compatible IdP
Authentication Flow
- User navigates to AWS access portal
- Redirected to IdP for authentication
- User enters credentials + MFA
- IdP returns SAML assertion to AWS
- IAM Identity Center validates assertion
- User selects account and permission set
- Temporary credentials issued (AssumeRoleWithSAML)
Group Mapping
IdP groups mapped to SSO permission sets across AWS accounts for role-based access control.
Example Mappings
DevOps Team
- Dev Account: TerraformApplyAccess (write)
- Prod Account: TerraformApplyAccess (write)
- Purpose: Full infrastructure management
Developers
- Dev Account: TerraformPlanAccess (read-only)
- Prod Account: TerraformPlanAccess (read-only)
- Purpose: View infrastructure, no changes
Platform Team
- All Accounts: AdministratorAccess
- Purpose: Full AWS console access
Security Team
- core-security: AdministratorAccess
- All Accounts: ReadOnlyAccess + SecurityAudit
- Purpose: Security monitoring and incident response
Permission Sets
Least-privilege access with custom and AWS-managed permission sets for fine-grained control.
AWS Managed Permission Sets
AdministratorAccess
- Policy:
arn:aws:iam::aws:policy/AdministratorAccess - Use Case: Platform team, emergency access
- Permissions: Full access to all AWS services
PowerUserAccess
- Policy:
arn:aws:iam::aws:policy/PowerUserAccess - Use Case: Developers needing broad access without IAM changes
- Permissions: All services except IAM and Organizations
ReadOnlyAccess
- Policy:
arn:aws:iam::aws:policy/ReadOnlyAccess - Use Case: Auditors, support staff, read-only access
- Permissions: Read-only access to all services
Billing
- Policy:
arn:aws:iam::aws:policy/job-function/Billing - Use Case: Finance team, cost management
- Permissions: View and manage billing, Cost Explorer, Budgets
Terraform Permission Sets
TerraformApply
- Permissions: Full Terraform operations (plan, apply, destroy)
- Use Case: CI/CD pipelines, DevOps team
- Includes: EC2, VPC, RDS, S3, IAM (limited), etc.
TerraformPlan
- Permissions: Read-only Terraform plan operations
- Use Case: Developers reviewing infrastructure changes
- Includes: Describe/List operations only
TerraformState
- Permissions: S3 state file access, DynamoDB locking
- Use Case: Terraform backend operations
- Includes: S3 GetObject/PutObject, DynamoDB GetItem/PutItem
Custom Permission Sets
RootAccess
- Permissions: Privileged operations requiring root account
- Use Case: Account closure, support plan changes, MFA reset
- Includes: Organizations management, billing configuration