En AWS, un rol tiene una política que permite s3:DeleteObject y otra que lo deniega. ¿Qué ocurre?
Respuesta breve
La solicitud se deniega. En la evaluación de políticas de AWS, un Deny explícito en cualquier política aplicable (basada en identidad, en recurso, límite de permisos, SCP o RCP) prevalece sobre todos los Allow. El orden no importa, y un Allow más específico no vence a un Deny más amplio. Sin ningún Allow el valor por defecto es una denegación implícita, pero solo un Deny explícito no puede anularse.
Es una pregunta clásica de IAM en la nube porque muchos ingenieros trasladan la intuición de los firewalls de que «gana la regla más específica». AWS funciona distinto.
La regla
La documentación de la lógica de evaluación de políticas de AWS indica que, para acceso en la misma cuenta, los permisos resultantes son la unión de las políticas basadas en identidad y en recurso, y que un «explicit deny» en cualquiera de ellas anula el allow. La misma frase se repite para límites de permisos, políticas de control de servicio (SCP) y de control de recursos (RCP).
En conjunto
- Por defecto: todo se deniega salvo que una política lo permita (denegación implícita).
- Allow: concede acceso solo si nada lo deniega explícitamente, y solo dentro de la intersección de límites, SCP o RCP aplicables.
- Deny explícito: siempre gana. Orden, especificidad y tipo de política son irrelevantes.
En el escenario, la solicitud s3:DeleteObject falla.
Por qué importa
Los Deny explícitos sirven para construir barreras duraderas: una SCP que deniega cloudtrail:StopLogging o acciones fuera de regiones aprobadas no puede deshacerse con el Allow de un administrador de la cuenta. Al depurar, un «AccessDenied» pese a un Allow visible suele indicar un Deny (o un allow ausente en un límite/SCP) en otro lugar.
Por qué tientan los distractores
«Gana la más específica» y «gana el Allow de identidad» vienen de otros sistemas o de ilusiones. El «orden alfabético» es inventado; la evaluación no depende del orden.
Qué buscan los entrevistadores
«El Deny explícito siempre gana; si no, hace falta un Allow en cada capa aplicable.» Extra por mencionar las SCP como barreras.
Posibles preguntas de seguimiento
- ¿Qué diferencia hay entre denegación implícita y explícita?
- ¿Cómo interactúan los límites de permisos y las SCP con los Allow de identidad?
- ¿Cómo usarías un Deny condicional para proteger un bucket sensible?