Conditions e context keys
Lição 12 · Módulo 3 — Modelo de avaliação
Permissão contextual
Até aqui, as policies diziam "quem pode fazer o quê, em qual recurso". O elemento Condition adiciona uma quarta dimensão: sob quais circunstâncias.
Circunstâncias incluem: IP de origem, presença de MFA, hora do dia, tag do recurso, tag do principal, região solicitada, VPC endpoint usado, e muito mais.
Anatomia de uma Condition
12345678
"Condition": { "StringEquals": { "aws:RequestedRegion": ["us-east-1", "sa-east-1"] }, "Bool": { "aws:MultiFactorAuthPresent": "true" }} Três partes:
- Operator —
StringEquals,Bool,IpAddress,DateGreaterThan,ArnLike… - Context key —
aws:RequestedRegion,aws:MultiFactorAuthPresent… - Value — valor único ou lista.
Múltiplas conditions são combinadas com AND. Múltiplos valores dentro de uma condition são combinados com OR.
Global context keys
As global context keys
(prefixo aws:) funcionam em qualquer serviço:
aws:SourceIp— IP da request. Use com operadorIpAddress.aws:MultiFactorAuthPresent— MFA foi usada nesta sessão?aws:SecureTransport— conexão foi via HTTPS?aws:RequestedRegion— em qual região foi feita a chamada?aws:PrincipalTag/<key>— tag do principal que faz a request.aws:ResourceTag/<key>— tag do recurso alvo.aws:SourceVpc/aws:SourceVpce— VPC/VPC Endpoint da origem.aws:CurrentTime— hora UTC da request.
Service-specific context keys
Cada serviço define suas próprias context keys, listadas na Service Authorization Reference. Alguns exemplos:
s3:prefix— prefixo que o cliente está listando.ec2:InstanceType— tipo de instância sendo iniciada.iam:PassedToService— para qual serviço uma role está sendo passada.kms:ViaService— qual serviço está chamando o KMS.
Padrões úteis
Exigir MFA para ações destrutivas
Deny + BoolIfExists12
{ "Effect": "Deny", "Action": "ec2:TerminateInstances", "Resource": "*", "Condition": { "BoolIfExists": { "aws:MultiFactorAuthPresent": "false" } } } Restringir por região
Deny + NotAction12
{ "Effect": "Deny", "NotAction": ["iam:*","organizations:*"], "Resource": "*", "Condition": { "StringNotEquals": { "aws:RequestedRegion": ["us-east-1","sa-east-1"] } } } Forçar HTTPS em bucket
bucket policy12
{ "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::meu-bucket/*", "Condition": { "Bool": { "aws:SecureTransport": "false" } } } Teste rápido
Você quer permitir ec2:RunInstances apenas para instâncias t3.micro ou t3.small. Qual condition usar?
Resumo
Conditions transformam policies estáticas em contextuais. Use global keys
(aws:*) para controles transversais e service keys para controles
finos. Consulte sempre a Service Authorization Reference para saber quais keys cada ação suporta.
Referência Well-Architected
Conditions são fundamentais para aplicar least privilege de forma contextual — restringindo não apenas "o que", mas também "quando" e "como".
Referências
Terminou esta lição?
Seu progresso fica salvo apenas neste navegador.