This is who IAM
Posté le 27 mai 2025 • 6 min de lecture • 1 087 motsAWS Identity and Access Management (IAM) est un service fondamental qui permet de contrôler de manière granulaire l'accès aux ressources AWS. Bien configuré, IAM garantit la sécurité, la conformité et la productivité dans l’utilisation du cloud.

IAM repose sur des entités et des stratégies.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::example_bucket"
}
]
}Cette politique IAM permet à une entité AWS (utilisateur, rôle ou groupe) de lister les objets contenus dans un bucket S3 spécifique nommé example_bucket. Elle utilise la version standard du langage de politique (2012-10-17) et applique un effet “Allow” à l’action “s3:ListBucket” sur la ressource identifiée par son ARN (arn:aws:s3:::example_bucket). Cela signifie que l’entité pourra voir la liste des objets dans ce bucket (noms, tailles, métadonnées), mais ne pourra ni lire, ni modifier les fichiers eux-mêmes, sauf si d’autres permissions sont ajoutées. C’est une politique minimale, souvent utilisée dans des scénarios d’inventaire ou de navigation dans un bucket via l’API ou la console AWS.
IAM repose sur la règle du Least Privilege : chaque entité ne reçoit que les permissions strictement nécessaires.
Certaines ressources AWS permettent un contrôle fin des accès. Ex :
| Élément | Stratégie IAM globale | Contrôle au niveau du service |
|---|---|---|
| S3 Bucket Policy | ❌ | ✅ |
| EC2 | ✅ | ❌ |
| Lambda | ✅ | ✅ |
| CloudWatch Logs | ✅ | ✅ |
Utilisation de Cognito pour gérer l’authentification, puis IAM attribue des rôles temporaires via des identifiants JWT pour accéder à S3 ou DynamoDB.
Dans un cluster EKS, on associe un rôle IAM à un service Kubernetes pour limiter ses accès aux seuls buckets S3 nécessaires.
IAM s’intègre avec AWS CloudTrail pour tracer chaque appel d’API, utile pour :
Les politiques conditionnelles IAM permettent d’ajouter des règles dynamiques et contextuelles aux autorisations. Elles sont clés pour limiter les accès selon :
Une clause Condition s’ajoute dans un bloc Statement JSON. Exemple :
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "203.0.113.0/24"
}
}
}Cette politique IAM autorise toutes les actions (“s3:”) sur toutes les ressources S3 (“Resource”: “”) uniquement si la requête provient d’une adresse IP incluse dans le bloc 203.0.113.0/24. La clause Condition permet ici d’ajouter une règle contextuelle : elle restreint l’accès en fonction de l’adresse IP source (aws:SourceIp). Ce type de condition renforce la sécurité en limitant l’usage des permissions à un périmètre réseau spécifique, souvent celui d’un bureau ou d’un VPN d’entreprise.
| Type de condition | Opérateur | Exemple (clé) |
|---|---|---|
| IP source | IpAddress | aws:SourceIp |
| Heure | DateLessThan / DateGreaterThan | aws:CurrentTime |
| MFA activé | Bool | aws:MultiFactorAuthPresent |
| Tags | StringEquals | aws:RequestTag/Project |
"Condition": {
"DateGreaterThan": { "aws:CurrentTime": "2025-04-09T08:00:00Z" },
"DateLessThan": { "aws:CurrentTime": "2025-04-09T18:00:00Z" }
}"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "true"
}
}"Condition": {
"StringEquals": {
"aws:RequestTag/Environment": "prod"
}
}Une structure multi-compte AWS offre :
Mais cela complexifie la gestion des permissions, d’où l’utilité d’AWS Organizations.
AWS Organizations permet de :
Les SCP définissent ce qu’un compte peut ou ne peut pas faire, indépendamment des stratégies IAM internes.
Les SCP s’appliquent au niveau du compte ou de l’OU. Elles filtrent les permissions effectives.
| Élément | Stratégie IAM | SCP | Résultat |
|---|---|---|---|
| Autorise EC2 Start | ✅ | ❌ | ❌ |
| Refuse EC2 Stop | ✅ | ❌ | ✅ |
| Refuse S3 Delete | ❌ | ❌ | ❌ |
🔐 Important : une stratégie IAM ne peut jamais outrepasser une SCP.
prod, dev, sandbox.sandbox :{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "ec2:*",
"Resource": "*"
}
]
}dev.Pour permettre à un rôle ou utilisateur d’un compte A d’agir sur les ressources du compte B :
AssumeRole.Exemple dans le compte B :
{
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::123456789012:root" },
"Action": "sts:AssumeRole"
}AWS IAM est un pilier central de toute stratégie de sécurité cloud. Bien que sa configuration initiale puisse sembler complexe, elle est essentielle pour garantir un environnement AWS sûr, structuré et évolutif. En maîtrisant ses concepts et en appliquant les bonnes pratiques, vous construisez des fondations robustes pour vos projets cloud.