AWSJuniorTechnical
Что сильнее: explicit deny или allow?
Explicit Deny всегда сильнее любого Allow. Если хотя бы одна применимая политика содержит Deny, итог — отказ, независимо от количества Allow в других политиках.
Правило приоритета
В IAM evaluation logic explicit Deny имеет абсолютный приоритет. Порядок такой: implicit deny (по умолчанию) → explicit Allow → explicit Deny. Любой применимый Deny в identity policy, resource policy, SCP, boundary, session policy или VPC endpoint policy завершает оценку отказом.
Зачем это нужно
- Guardrails: SCP с Deny на
iam:DeleteRoleдля production-OU работает, даже если у админа есть AdministratorAccess. - Защита данных: S3 bucket policy с Deny при
aws:SecureTransport = falseблокирует HTTP-трафик. - Compliance: Deny на
aws:RequestedRegion != eu-central-1удерживает данные в нужном регионе.
Пример bucket policy с Deny
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyInsecureTransport",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::secure-bucket",
"arn:aws:s3:::secure-bucket/*"
],
"Condition": {
"Bool": { "aws:SecureTransport": "false" }
}
}
]
}
Пример SCP с условным Deny
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"StringNotEquals": { "aws:RequestedRegion": ["eu-central-1", "eu-west-1"] }
}
}]
}
Подводные камни
NotActionв Deny часто блокирует больше, чем планировалось — лучше явно перечислять Action.- Deny с условием может неожиданно сработать для service-linked roles (например, AWSServiceRoleForAutoScaling).
- Bucket policy Deny на
aws:PrincipalArnможет заблокировать replication role или CloudTrail. - Deny в KMS key policy блокирует даже владельца ключа, если не оставлено
kms:*для root. - SCP Deny применяется только к member accounts, но не к management account организации.
- После применения Deny добавление новых Allow не помогает — нужно править саму Deny-политику.
Common mistakes
- Пытаться перебить Deny более широким Allow.
- Не анализировать Conditions в deny statement.
- Создавать Deny, который блокирует AWS service principals.
What the interviewer is testing
- Чётко говорит, что explicit deny сильнее.
- Отличает implicit deny от explicit deny.
- Понимает риски широких deny statements.