Least Privilege Principle
The GovTech platform implements strict least privilege access control with a three-tier functional hierarchy:Functional Hierarchy
AWS IAM doesn’t have native group hierarchies. This hierarchy is functional and risk-based, defining who has access to what resources with what level of oversight.Access Requirements by Level
- Level 1 - Critical
- Level 2 - Operational
- Level 3 - Read-Only
Risk Level: A malicious actor could destroy entire infrastructureGroups:
- GovTech-Network-Admin
- GovTech-EKS-Admin
- GovTech-Database-Admin
- GovTech-Terraform-Operator
- Hardware MFA required (YubiKey recommended)
- Maximum 8-hour session duration
- Requires approval from second responsible party
- All actions generate immediate CloudWatch alerts
- Weekly access review required
IAM Groups and Policies
Level 1: Critical Access
GovTech-Network-Admin
GovTech-Network-Admin
Managed Policies:
AmazonEC2FullAccessAmazonVPCFullAccess
- Create and modify VPCs, subnets, Internet Gateways, NAT Gateways
- Manage Security Groups and Network ACLs
- Configure Route Tables
- Modify EC2 instances and network interfaces
- Network architecture changes
- New subnet creation
- Security group firewall rules
- VPC peering configuration
GovTech-EKS-Admin
GovTech-EKS-Admin
Managed Policies:
AmazonEKSClusterPolicy
GovTech-IAM-EKS-Roles
- Create and manage EKS clusters
- Configure node groups
- Upgrade Kubernetes versions
- Create IAM roles for EKS (prefix
eks-*andgovtech-*) - Manage OIDC providers for IRSA
- EKS cluster creation/upgrades
- Node group scaling
- Kubernetes version updates
- IRSA (IAM Roles for Service Accounts) setup
GovTech-Database-Admin
GovTech-Database-Admin
Custom Policies:Production databases with tag
GovTech-RDS-Admin
- Create and modify RDS instances
- Configure database parameters
- Create and restore snapshots
- Manage DB subnet groups
Environment: production cannot be deleted.Use Cases:- Database maintenance
- Parameter tuning
- Backup and restore
- Performance optimization
GovTech-Terraform-Operator
GovTech-Terraform-Operator
Custom Policies:Use Cases:
GovTech-Terraform-StateGovTech-S3-Admin
- Read/write Terraform state in S3 bucket
govtech-terraform-state - DynamoDB state locking (table:
terraform-locks) - Manage S3 buckets with prefix
govtech-*
- Execute
terraform apply - Infrastructure changes
- Application S3 bucket management
Level 2: Operational Access
GovTech-Container-Deploy
GovTech-Container-Deploy
Custom Policies:EKS Deploy Policy:Use Cases:
GovTech-ECR-AdminGovTech-EKS-Deploy
- Deploy new application versions
- Push Docker images to ECR
- Execute
kubectl apply - Manage Kubernetes deployments
GovTech-ALB-Operator
GovTech-ALB-Operator
Custom Policies:WAF Integration:Use Cases:
GovTech-ALB-ControllerGovTech-AutoScaling
- Create/modify Application Load Balancers
- Manage Target Groups and Listeners
- Configure SSL/TLS certificates (ACM)
- Integrate WAF with ALB
- Security group management for ALBs
- Configure Kubernetes Ingress resources
- Manage TLS certificates
- Configure HPA (Horizontal Pod Autoscaler)
- Auto-scaling group management
GovTech-CICD-Operator
GovTech-CICD-Operator
Custom Policies:CI/CD Secrets:Use Cases:
GovTech-CICD-AccessGovTech-ECR-ReadOnly
- Configure GitHub Actions workflows
- Manage CI/CD pipeline credentials
- Pull container images for testing
Level 3: Read-Only Access
GovTech-Secrets-ReadOnly
GovTech-Secrets-ReadOnly
Custom Policies:Use Cases:
GovTech-Secrets-Read
- Deployment scripts needing credentials
- Troubleshooting configuration issues
- Development environment setup
GovTech-Monitor-ReadOnly
GovTech-Monitor-ReadOnly
Managed Policies:Use Cases:
CloudWatchReadOnlyAccess
GovTech-Monitoring
- SRE/on-call monitoring
- Performance troubleshooting
- Log analysis
- GuardDuty threat review
GovTech-Security-Auditor
GovTech-Security-Auditor
Managed Policies:Use Cases:
SecurityAudit
GovTech-Security-Auditor
- Security audits
- Compliance reviews
- Incident investigation
- Access pattern analysis
Permission Boundaries
All roles use a permission boundary to enforce hard limits:Permission boundaries act as a maximum permission set. Even if a user’s policy grants access, the permission boundary can still deny it.
User Management
Adding a New User
Recommended Group Assignment by Role
| Role | Recommended Groups |
|---|---|
| Cloud Architect | Network-Admin, EKS-Admin, Terraform-Operator (temporary) |
| DevOps Engineer | Container-Deploy, CICD-Operator |
| SRE / On-Call | Monitor-ReadOnly, Secrets-ReadOnly |
| Database Administrator | Database-Admin (temporary for maintenance) |
| Security Analyst | Security-Auditor |
| Developer | Container-Deploy (if responsible for own deployments) |
Rotating Access Keys
Audit Commands
Monthly Security Checklist
IAM Security Review Checklist
IAM Security Review Checklist
- Review CloudTrail for unusual actions or off-hours access
- Verify no access keys older than 90 days
- Confirm MFA is enabled for all users
- Review active GuardDuty and Security Hub findings
- Validate no users with direct permissions (must use groups)
- Check for IAM roles with excessive permissions
- Verify permission boundaries are attached to all roles
- Review temporary access grants (should be revoked after use)
Next Steps
Network Policies
Learn about Kubernetes network segmentation
Secrets Management
Secure credential management with AWS Secrets Manager