Sous AWS, un rôle a une politique qui autorise s3:DeleteObject et une autre qui l'interdit. Que se passe-t-il ?
Réponse courte
La requête est refusée. Dans l'évaluation des politiques AWS, un Deny explicite dans toute politique applicable (basée sur l'identité, sur la ressource, limite de permissions, SCP ou RCP) l'emporte sur tous les Allow. L'ordre n'a pas d'importance, et un Allow plus précis ne bat pas un Deny plus large. Sans Allow, le défaut est un refus implicite, mais seul un Deny explicite ne peut pas être contourné.
C'est une question classique d'IAM cloud, car beaucoup d'ingénieurs transposent l'intuition « la règle la plus spécifique gagne » des pare-feux. AWS fonctionne autrement.
La règle
La documentation sur la logique d'évaluation des politiques AWS indique que, pour un accès au sein d'un même compte, les permissions résultantes sont l'union des politiques basées sur l'identité et sur la ressource, et qu'un « explicit deny » dans l'une ou l'autre l'emporte sur l'autorisation. La même phrase revient pour les limites de permissions, les SCP et les RCP.
En résumé
- Défaut : tout est refusé sauf autorisation (refus implicite).
- Allow : n'accorde l'accès que si rien ne l'interdit explicitement, et seulement dans l'intersection des limites, SCP ou RCP applicables.
- Deny explicite : gagne toujours. Ordre, spécificité et type de politique sont sans effet.
Dans le scénario, la requête s3:DeleteObject échoue.
Pourquoi c'est important
Les Deny explicites servent à bâtir des garde-fous durables : une SCP interdisant cloudtrail:StopLogging ou les actions hors des régions approuvées ne peut pas être annulée par l'Allow d'un administrateur du compte. En dépannage, un « AccessDenied » malgré un Allow visible signale souvent un Deny (ou un Allow manquant dans une limite/SCP) ailleurs.
Pourquoi les distracteurs séduisent
« Le plus spécifique gagne » et « l'Allow d'identité gagne » viennent d'autres systèmes ou de vœux pieux. « Ordre alphabétique » est inventé ; l'évaluation ne dépend pas de l'ordre.
Ce que veulent les recruteurs
« Le Deny explicite gagne toujours ; sinon, il faut un Allow dans chaque couche applicable. » Bonus pour les SCP comme garde-fous.
Questions de suivi probables
- Quelle différence entre refus implicite et refus explicite ?
- Comment limites de permissions et SCP interagissent-elles avec les Allow d'identité ?
- Comment utiliser un Deny conditionnel pour protéger un bucket sensible ?