Guardrails — SCP, Boundary, Session
Lição 14 · Módulo 4 — Permissões em escala
O conceito de guardrail
Guardrails são limites que você não quer que alguém cruze, mesmo que tenha permissão explícita. São aplicados de forma ampla e agem como teto de segurança.
Três tipos de guardrail no IAM: SCP (organizacional), Permissions Boundary (por identidade), Session Policy (por sessão). Cada um com escopo diferente.
Service Control Policies (SCP)
SCPs são aplicadas em organizational units (OUs) dentro do AWS Organizations. Afetam todas as identidades de todas as contas naquela OU, incluindo o root user.
Usos típicos:
- Bloquear regiões não aprovadas.
- Impedir desativação de CloudTrail / GuardDuty / Config.
- Proibir criação de access keys long-term em contas produtivas.
- Forçar uso de determinadas tags em novos recursos.
Permissions Boundaries
Uma permissions boundary é uma policy anexada a um user ou role que define o teto máximo de permissões efetivas daquela identidade.
O caso de uso clássico: delegar criação de roles com segurança.
- Você dá ao time de dev permissão de criar roles (
iam:CreateRole). - Mas exige (via condition
iam:PermissionsBoundary) que toda role criada tenha uma boundary específica. - A boundary limita o que essas roles podem fazer, não importa que policies anexem.
Session Policies
Passadas no momento do sts:AssumeRole via parâmetro --policy ou
--policy-arns. Aplicam-se só àquela sessão específica.
1234
aws sts assume-role \ --role-arn arn:aws:iam::111:role/S3Admin \ --role-session-name task-42 \ --policy '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":"s3:GetObject","Resource":"arn:aws:s3:::reports/*"}]}' Útil quando uma mesma role serve vários propósitos e você quer restringir por tarefa — sem criar N roles diferentes.
A permissão efetiva (interseção total)
Quando múltiplos tipos estão ativos, a permissão efetiva é:
1234
efetivo = (identity ∪ resource) ∩ permissions-boundary ∩ SCP ∩ session-policy Se qualquer um dos limitadores não permite, a request é negada. E qualquer Deny explícito em qualquer lugar também nega.
Exemplo de SCP bloqueando regiões
1234567891011121314151617
{ "Version": "2012-10-17", "Statement": [{ "Sid": "DenyOutsideApprovedRegions", "Effect": "Deny", "NotAction": [ "iam:*", "organizations:*", "cloudfront:*", "route53:*", "support:*", "sts:*" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:RequestedRegion": ["us-east-1", "sa-east-1"] } } }]} NotAction excluí serviços globais (que não são regionais) da restrição.
Em tudo o mais, só us-east-1 e sa-east-1 são permitidas.
Teste rápido
Você quer dar ao time dev a capacidade de criar roles para suas aplicações, mas essas roles nunca podem modificar IAM nem acessar produção. Qual combinação?
Resumo
SCP: guard-rail da organização. Boundary: guard-rail por identidade. Session policy: guard-rail por sessão. Use combinados — cada um cobre uma camada diferente do blast radius.
Referência Well-Architected
Esta lição está alinhada com a boa prática Define permission guardrails for your organization do Well-Architected Framework.
Referências
Terminou esta lição?
Seu progresso fica salvo apenas neste navegador.