AWS Identity and Access Management (IAM)
🛡️ Introduction à IAM
IAM (Identity and Access Management) est le service AWS qui permet de :
- Contrôler qui peut accéder à vos ressources AWS (authentification)
- Définir ce qu'ils peuvent faire avec ces ressources (autorisation)
- Offrir une gestion centralisée des accès sans partager les identifiants principaux
Authentification
Lorsque vous créez votre compte AWS, vous utilisez la combinaison d'une adresse e-mail et d'un mot de passe pour vérifier votre identité. Si un utilisateur saisit l'adresse e-mail et le mot de passe corrects, le système suppose que l'utilisateur est autorisé à entrer et lui accorde l'accès. Il s'agit du processus d'authentification.
L'authentification garantit que l'utilisateur est bien celui qu'il prétend être. Les noms d'utilisateur et les mots de passe sont les types d'authentification les plus courants. Mais vous pouvez également utiliser d'autres formulaires, tels que l'authentification basée sur des jetons ou des données biométriques, comme une empreinte digitale. L'authentification répond simplement à la question suivante : « Êtes-vous celui que vous prétendez être ? »
Autorisation
Une fois authentifié et connecté à votre compte AWS, vous serez peut-être curieux de savoir quelles actions vous pouvez entreprendre. C'est ici que l'autorisation entre en jeu. L'autorisation est le processus consistant à accorder aux utilisateurs l'autorisation d'accéder aux ressources et services AWS. L'autorisation détermine si un utilisateur peut effectuer certaines actions, telles que lire, modifier, supprimer ou créer des ressources. L'autorisation répond à la question « Quelles actions pouvez-vous effectuer ? »
🌟 Fonctionnalités principales
🌍 Portée globale
- Service disponible dans toutes les régions AWS
- Configuration unique applicable partout
🔄 Intégration complète
- Compatible avec tous les services AWS majeurs
- Supporte les accès :
- Via la console AWS
- Par API/CLI
- Depuis applications tierces
🔐 Sécurité avancée
Fonctionnalité | Description | Bénéfice |
---|---|---|
MFA | Authentification à 2 facteurs | Protection contre les accès non autorisés |
Fédération | Intégration avec Active Directory | SSO pour les entreprises |
Politiques granulaires | Contrôle d'accès précis | Principe du moindre privilège |
🧩 Composants IAM (Utilisateurs et Groupes IAM AWS)
Utilisateur IAM
Un utilisateur IAM représente une personne ou un service qui interagit avec AWS.
Caractéristiques :
- Défini dans votre compte AWS
- Toute activité est facturée sur votre compte
- Possède des informations d'identification uniques (empêche le partage)
Types d'accès :
- Accès à la console AWS : Nom d'utilisateur + mot de passe
- Accès programmatique : Clés d'accès pour AWS CLI/API (permanentes jusqu'à rotation manuelle)
Gestion des Autorisations
Méthodes d'attribution :
- Directement à l'utilisateur (peu scalable)
- Via des groupes IAM (recommandé)
Problèmes de l'attribution directe :
- Complexité croissante avec le nombre d'utilisateurs
- Difficulté de traçabilité (ex: 3000 utilisateurs)
Groupes IAM
Collection d'utilisateurs partageant les mêmes permissions.
Avantages :
- Gestion centralisée des permissions
- Évolutivité (nouveaux membres héritent des permissions du groupe)
- Meilleure organisation (par rôles : devs, sécurité, admins...)
Caractéristiques clés :
- Un groupe peut contenir plusieurs utilisateurs
- Un utilisateur peut appartenir à plusieurs groupes
- Les groupes ne peuvent pas contenir d'autres groupes
Exemples d'usage :
- Nouveau développeur → Ajout au groupe "devs" → Obtient automatiquement les bonnes permissions
- Changement de rôle → Déplacement entre groupes → Permissions mises à jour automatiquement
Compte Root vs IAM
- Compte Root : Accès complet à toutes les ressources (à utiliser avec précaution)
- Utilisateurs IAM : Permissions explicites nécessaires via les politiques IAM
Bonnes Pratiques
- Toujours utiliser des groupes plutôt que des permissions individuelles
- Organiser les groupes par fonction métier
- Éviter l'utilisation du compte root pour les opérations quotidiennes
- Utiliser les politiques IAM pour granularité des permissions
Politiques IAM
Fonctionnement des Politiques IAM
Les politiques IAM contrôlent l'accès aux services et ressources AWS en étant associées à des identités IAM (utilisateurs, groupes, rôles).
Processus d'évaluation :
- Lorsqu'une identité IAM fait une requête → AWS évalue :
- Les politiques attachées directement à l'identité
- Les politiques des groupes auxquels appartient l'identité
- Décision finale : Autorisation ou Refus
Structure d'une Politique IAM
Les politiques sont des documents JSON avec ces éléments principaux :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
]
}
Éléments Clés :
-
Version
- Spécifie la syntaxe de la politique (toujours utiliser "2012-10-17" pour les fonctionnalités récentes)
-
Effect
- "Allow" : Autorise l'accès
- "Deny" : Bloque l'accès (prioritaire sur Allow)
-
Action
- Liste des opérations autorisées/refusées
- Peut utiliser le wildcard "*" pour toutes les actions
- Ex: "s3:GetObject", "ec2:StartInstances"
-
Resource
- ARN des ressources concernées
- "*" = toutes les ressources
- Ex: "arn:aws:s3:::mon-bucket/*"
Exemples de Politiques
- Politique Administrateur (Accès Complet)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyS3AccessOutsideMyBoundary",
"Effect": "Deny",
"Action": ["s3:*"],
"Resource": "*",
"Condition": {
"StringNotEquals": {
"aws:ResourceAccount": ["222222222222"]
}
}
}
]
}
Explications :
- Bloque (Deny) toutes les actions S3 (s3:*)
- Sauf si la ressource appartient au compte AWS 222222222222
- Utilise une Condition pour affiner le contrôle
Bonnes pratiques AWS IAM pour la sécurité des comptes
🔒 Verrouillage de l'utilisateur racine
- Ne jamais partager les identifiants racine
- Supprimer les clés d'accès associées au compte racine
- Activer la MFA (Authentification Multi-Facteurs) obligatoire
🛡️ Principe du moindre privilège
- Accorder uniquement les permissions nécessaires
- Commencer avec des politiques restrictives puis étendre au besoin
- Appliquer aux :
- Utilisateurs
- Groupes
- Rôles
⚙️ Bonnes pratiques IAM
- Rôles > Utilisateurs :
- Autorisations temporaires (15min à 36h)
- Maintenance simplifiée
- Éviter d'utiliser IAM pour :
- Authentification de sites web
- Sécurité OS/réseaux
🏢 Gestion des identités à grande échelle
- Utiliser un Fournisseur d'Identité (IdP) comme :
- AWS IAM Identity Center
- Solutions tierces (Okta, Azure AD...)
- Avantages :
- Source unique de vérité
- Pas de duplication des utilisateurs
- Gestion centralisée (ex: départ d'un employé)
🧹 Nettoyage régulier
- Supprimer les éléments inutilisés :
- Utilisateurs
- Rôles
- Clés d'accès
- Politiques obsolètes
- Utiliser les dernières activités consultées comme indicateur
Résume
- Principe du moindre privilège : Donner uniquement les permissions nécessaires
- Utiliser des conditions pour des restrictions contextuelles
- Éviter "Action": "" et "Resource": "" sauf nécessité absolue
- Tester les politiques avec le simulateur IAM avant déploiement
- Documenter avec le champ "Sid" (Statement ID)