DevOpsFacile
AccueilParcours de formationCertificationsModulesCheat SheetÀ Propos
DevOpsFacile

Une plateforme d'apprentissage complète pour maîtriser les pratiques DevOps modernes, du débutant à l'expert.

contact@devopsfacile.fr

Formation

  • Parcours de formation
  • Modules

Informations

  • À Propos
  • Conditions d'utilisation
  • Confidentialité
  • Mentions légales

© 2026 DevOps Facile. Tous droits réservés.

Fait avec pour la communauté DevOps

ModulesAWS - Avancé : ECS, IAM avancé et architecture multi-région08 - Politiques IAM avancées et audit des permissions

Détails

  • 45 minutes
  • Avancé

Objectifs

  • Créer des politiques IAM fine-grained avec conditions
  • Appliquer le principe du moindre privilège
  • Utiliser IAM Policy Simulator pour tester les permissions
  • Auditer les permissions avec IAM Access Analyzer
Module AWS - Avancé : ECS, IAM avancé et architecture multi-région

Exercice 08 : Politiques IAM avancées et audit des permissions

🎯 Objectifs

À la fin de cet exercice, vous serez capable de :

  • ✅ Écrire des politiques IAM précises avec conditions et variables
  • ✅ Appliquer le principe du moindre privilège pour les rôles de service
  • ✅ Simuler et tester des politiques avant de les appliquer
  • ✅ Identifier les accès excessifs avec IAM Access Analyzer

Durée estimée : 45 minutes

Difficulté : ⭐⭐⭐⭐☆ (Avancé)

Prérequis : Exercice 01 (IAM basique) complété, VPC et S3 créés


📖 Contexte

La cause numéro un des incidents de sécurité cloud est une mauvaise configuration IAM : permissions trop larges, accès publics non intentionnels, clés d'accès non rotées. Le principe du moindre privilège stipule qu'une entité (utilisateur, service, application) ne doit avoir accès qu'aux ressources dont elle a strictement besoin pour sa fonction.


📋 Énoncé

Créez des politiques IAM précises pour différents cas d'usage, testez-les et auditez votre configuration.


🧭 Déroulement de l'exercice

Tâche 1 : Politique en lecture seule sur un bucket S3 spécifique

Au lieu d'accorder s3:* sur * (toutes les actions sur tous les buckets), créez une politique qui donne accès uniquement à UN bucket en lecture seule.

json
// politique-s3-readonly.json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ListerLesBuckets",
      "Effect": "Allow",
      "Action": "s3:ListAllMyBuckets",
      "Resource": "*"
    },
    {
      "Sid": "AccesLectureSeuleSurMonBucket",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:ListBucket",
        "s3:GetBucketLocation"
      ],
      "Resource": [
        "arn:aws:s3:::devops-exercice-<votre-prenom>-2024",
        "arn:aws:s3:::devops-exercice-<votre-prenom>-2024/*"
      ]
    }
  ]
}
bash
# Créer la politique
aws iam create-policy \
  --policy-name "S3ReadOnly-MonBucket" \
  --policy-document file://politique-s3-readonly.json

# Attacher à un utilisateur test
aws iam attach-user-policy \
  --user-name utilisateur-test \
  --policy-arn "arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):policy/S3ReadOnly-MonBucket"

Tâche 2 : Politique avec conditions

Les conditions permettent de restreindre les permissions selon des critères : IP source, MFA activé, tag de ressource, etc.

json
// politique-s3-conditions.json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AccesUniqueDepuisVPC",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::devops-exercice-<votre-prenom>-2024/*",
      "Condition": {
        "StringEquals": {
          "aws:SourceVpc": "vpc-xxxxxxxxx"
        }
      }
    },
    {
      "Sid": "InterditSansMFA",
      "Effect": "Deny",
      "Action": [
        "s3:DeleteObject",
        "s3:DeleteBucket"
      ],
      "Resource": "*",
      "Condition": {
        "BoolIfExists": {
          "aws:MultiFactorAuthPresent": "false"
        }
      }
    }
  ]
}

Indice : La condition Deny avec MultiFactorAuthPresent: false bloque la suppression pour les utilisateurs qui ne se sont pas authentifiés avec MFA. C'est une défense en profondeur : même si des credentials sont compromis, le pirate ne peut pas supprimer des données sans le MFA.


Tâche 3 : Rôle IAM pour EC2 (Instance Profile)

Au lieu de stocker des clés AWS sur une instance EC2, donnez-lui un rôle IAM. L'application peut alors appeler AWS sans credentials.

bash
# Politique pour l'instance EC2 (accès S3 + logs CloudWatch)
cat > role-ec2-policy.json << 'EOF'
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::devops-exercice-*",
        "arn:aws:s3:::devops-exercice-*/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogStreams"
      ],
      "Resource": "arn:aws:logs:*:*:log-group:/app/*"
    }
  ]
}
EOF

# Trust policy : qui peut assumer ce rôle ?
cat > trust-policy-ec2.json << 'EOF'
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
EOF

# Créer le rôle
aws iam create-role \
  --role-name role-ec2-app \
  --assume-role-policy-document file://trust-policy-ec2.json

# Attacher la politique au rôle
aws iam put-role-policy \
  --role-name role-ec2-app \
  --policy-name ec2-app-permissions \
  --policy-document file://role-ec2-policy.json

# Créer l'Instance Profile et y associer le rôle
aws iam create-instance-profile --instance-profile-name profil-ec2-app
aws iam add-role-to-instance-profile \
  --instance-profile-name profil-ec2-app \
  --role-name role-ec2-app

# Associer à une instance EC2 existante
INSTANCE_ID="i-xxxxxxxxxxxxxxxxx"
aws ec2 associate-iam-instance-profile \
  --instance-id $INSTANCE_ID \
  --iam-instance-profile Name=profil-ec2-app

Tâche 4 : Simuler et auditer avec IAM Policy Simulator

Simuler une politique :

  1. Console AWS → IAM → Policy Simulator (https://policysim.aws.amazon.com/)
  2. Sélectionner un utilisateur ou un rôle
  3. Sélectionner un service (ex: S3) et des actions (ex: s3:DeleteObject)
  4. Indiquer une ressource ARN
  5. Cliquer Exécuter la simulation

IAM Access Analyzer :

bash
# Activer IAM Access Analyzer
aws accessanalyzer create-analyzer \
  --analyzer-name mon-analyzer \
  --type ACCOUNT

# Lister les findings (accès excessifs détectés)
aws accessanalyzer list-findings \
  --analyzer-name mon-analyzer \
  --query 'findings[*].[id,resourceType,status,condition]' \
  --output table

✅ Vérification du résultat

  • La politique S3ReadOnly-MonBucket est créée et attachée à l'utilisateur test
  • Le rôle role-ec2-app est associé à une instance EC2
  • Sur l'instance EC2 : aws s3 ls s3://$BUCKET/ fonctionne sans configurer de credentials
  • IAM Policy Simulator confirme que s3:DeleteObject est refusé sans MFA

💡 À retenir

Les 5 règles d'or IAM :

  1. Ne jamais utiliser le compte root pour les tâches quotidiennes
  2. Principe du moindre privilège : commencer par aucun accès, ajouter au besoin
  3. Rôles IAM plutôt que clés d'accès pour les services AWS
  4. MFA obligatoire sur tous les comptes humains
  5. Auditer régulièrement avec Access Analyzer et le rapport d'informations d'identification

Structure d'une politique IAM :

json
{
  "Effect": "Allow" ou "Deny",
  "Action": ["service:Action"],      // Quoi
  "Resource": ["arn:aws:..."],       // Sur quoi
  "Condition": { ... }               // Quand (optionnel)
}

✨ Solution Complète

bash
# Vérifier les permissions effectives d'un rôle
aws iam simulate-principal-policy \
  --policy-source-arn "arn:aws:iam::ACCOUNT_ID:role/mon-role" \
  --action-names "s3:PutObject" "s3:DeleteObject" \
  --resource-arns "arn:aws:s3:::mon-bucket/*"
Retour au module

Sur cette page

  • 🎯 Objectifs
  • 📖 Contexte
  • 📋 Énoncé
  • 🧭 Déroulement de l'exercice
  • Tâche 1 : Politique en lecture seule sur un bucket S3 spécifique
  • Tâche 2 : Politique avec conditions
  • Tâche 3 : Rôle IAM pour EC2 (Instance Profile)
  • Tâche 4 : Simuler et auditer avec IAM Policy Simulator
  • ✅ Vérification du résultat
  • 💡 À retenir
  • ✨ Solution Complète