Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| eadl:bloc4:fm4:td1 [2026/06/08 17:57] – [Contexte] jcheron | eadl:bloc4:fm4:td1 [2026/06/08 18:12] (Version actuelle) – [Challenge final] jcheron | ||
|---|---|---|---|
| Ligne 3: | Ligne 3: | ||
| ===== Objectifs ===== | ===== Objectifs ===== | ||
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| ===== Contexte ===== | ===== Contexte ===== | ||
| Ligne 26: | Ligne 26: | ||
| Mettre en place une architecture IAM sécurisée pour : | Mettre en place une architecture IAM sécurisée pour : | ||
| - | - les administrateurs | + | * les administrateurs |
| - | - les développeurs | + | |
| - | - les analystes | + | |
| Le tout doit être : | Le tout doit être : | ||
| - | - reproductible | + | * reproductible |
| - | - versionné | + | |
| - | - automatisé avec Terraform | + | |
| ===== Contraintes ===== | ===== Contraintes ===== | ||
| Ligne 40: | Ligne 40: | ||
| Vous devez respecter les règles suivantes : | Vous devez respecter les règles suivantes : | ||
| - | - Aucun utilisateur ne doit avoir de droits administrateur globaux | + | * Aucun utilisateur ne doit avoir de droits administrateur globaux |
| - | - Le principe du moindre privilège est obligatoire | + | |
| - | - Les permissions doivent être mutualisées (pas de duplication inutile) | + | |
| - | - Les accès doivent être compréhensibles et maintenables | + | |
| - | - Toute la configuration doit être réalisée avec Terraform | + | |
| + | |||
| + | ===== Infrastructure existante ===== | ||
| + | |||
| + | Une première tentative de mise en place IAM a été réalisée. | ||
| + | |||
| + | Fichier : `iam/ | ||
| + | <sxh js> | ||
| + | provider " | ||
| + | region = " | ||
| + | } | ||
| + | |||
| + | resource " | ||
| + | name = " | ||
| + | } | ||
| + | |||
| + | resource " | ||
| + | name = " | ||
| + | } | ||
| + | |||
| + | resource " | ||
| + | name = " | ||
| + | user = aws_iam_user.dev1.name | ||
| + | |||
| + | policy = jsonencode({ | ||
| + | Version = " | ||
| + | Statement = [ | ||
| + | { | ||
| + | Effect = " | ||
| + | Action = " | ||
| + | Resource = " | ||
| + | } | ||
| + | ] | ||
| + | }) | ||
| + | } | ||
| + | |||
| + | resource " | ||
| + | user = aws_iam_user.dev2.name | ||
| + | policy_arn = " | ||
| + | } | ||
| + | </ | ||
| ===== Ressources ===== | ===== Ressources ===== | ||
| Ligne 50: | Ligne 90: | ||
| Documentation officielle : | Documentation officielle : | ||
| - | - AWS IAM : concepts (users, groups, roles) | + | * AWS IAM : concepts (users, groups, roles) |
| - | - AWS IAM Policy JSON | + | |
| - | - Bonnes pratiques AWS IAM (least privilege) | + | |
| Commandes utiles : | Commandes utiles : | ||
| Ligne 65: | Ligne 105: | ||
| ===== Travail à réaliser ===== | ===== Travail à réaliser ===== | ||
| + | |||
| + | <WRAP round todo> | ||
| Vous devez produire une configuration Terraform permettant de : | Vous devez produire une configuration Terraform permettant de : | ||
| - | 1. Créer les entités suivantes : | + | - Partir de l’existant et le corriger |
| - | - 1 groupe Admin | + | - Conserver les utilisateurs actuels |
| - | | + | - Reconcevoir entièrement la gestion des permissions |
| - | | + | |
| - | 2. Définir des policies adaptées : | + | - Créer les entités suivantes |
| - | - Admin : gestion complète de l’infrastructure | + | * 1 groupe Admin |
| - | - Dev : gestion EC2 uniquement | + | * 1 groupe |
| - | - Analyst | + | * 1 groupe |
| - | 3. Associer correctement : | + | - Définir des policies |
| - | - users → groupes | + | * Admin : gestion complète de l’infrastructure |
| - | - groupes → policies | + | * Dev : gestion EC2 uniquement |
| + | * Analyst : lecture S3 uniquement | ||
| - | 4. Mettre en place au moins un rôle IAM pour un service AWS | + | - Associer correctement : |
| + | * users → groupes | ||
| + | * groupes → policies | ||
| + | |||
| + | - Mettre en place au moins un rôle IAM pour un service AWS | ||
| Livrables attendus : | Livrables attendus : | ||
| - | - code Terraform fonctionnel | + | * code Terraform fonctionnel |
| - | - structure claire des fichiers | + | |
| - | - justification des choix | + | |
| + | </ | ||
| ===== Point d’attention (volontaire) ===== | ===== Point d’attention (volontaire) ===== | ||
| Une mauvaise pratique courante consiste à utiliser : | Une mauvaise pratique courante consiste à utiliser : | ||
| - | - Action: " | + | * Action: " |
| - | - Resource: " | + | |
| Cette pratique est interdite dans ce TD. | Cette pratique est interdite dans ce TD. | ||
| - | <WRAP round help> | + | <WRAP round question> |
| - | Dans quels cas pourrait-on être tenté de l’utiliser | + | Pourquoi cette pratique apparaît-elle souvent dans des projets réels |
| - | Pourquoi est-ce dangereux | + | |
| + | Dans quels cas peut-elle sembler " | ||
| </ | </ | ||
| ===== Phase d’analyse ===== | ===== Phase d’analyse ===== | ||
| - | <WRAP round help> | + | <WRAP round question> |
| - | Quelle est la différence entre : | + | Quels sont les problèmes de sécurité présents dans l’infrastructure fournie ? |
| - | + | ||
| - | - un utilisateur IAM | + | |
| - | - un groupe IAM | + | |
| - | - un rôle IAM | + | |
| - | Dans quel cas utiliser chaque élément | + | Lesquels sont critiques ? Lesquels sont acceptables temporairement |
| </ | </ | ||
| Ligne 120: | Ligne 163: | ||
| Vous devez revoir votre architecture si : | Vous devez revoir votre architecture si : | ||
| - | - un utilisateur a trop de droits | + | * un utilisateur a trop de droits |
| - | - une policy est trop large | + | |
| - | - des permissions sont dupliquées | + | |
| ===== Extension ===== | ===== Extension ===== | ||
| Ligne 128: | Ligne 171: | ||
| Ajouter : | Ajouter : | ||
| - | - une séparation environnement DEV / PROD | + | * une séparation environnement DEV / PROD |
| - | - une restriction par ressource (ex : un seul bucket S3) | + | |
| ===== Challenge final ===== | ===== Challenge final ===== | ||
| Ligne 135: | Ligne 178: | ||
| Un développeur doit pouvoir : | Un développeur doit pouvoir : | ||
| - | - lancer une instance EC2 | + | * lancer une instance EC2 |
| - | - mais ne pas pouvoir supprimer une instance existante | + | |
| Implémenter cette contrainte. | Implémenter cette contrainte. | ||
| - | <WRAP round help> | + | <WRAP round question> |
| - | Quelle difficulté cela pose-t-il en IAM ? | + | Pourquoi cette règle est-elle difficile à implémenter proprement |
| </ | </ | ||
| Ligne 148: | Ligne 191: | ||
| Vous devez être capable d’expliquer : | Vous devez être capable d’expliquer : | ||
| - | - votre architecture IAM | + | * votre architecture IAM |
| - | - vos choix de policies | + | |
| - | - les compromis réalisés | + | |