Scénarios d’architecture sécurisée
Traitez des questions de mise en situation sur le moindre privilège IAM, le chiffrement, l’isolation VPC et WAF/Shield afin de consolider vos connaissances du domaine de la sécurité.
Scénarios d’architecture sécurisée est une leçon Cloud & IT Cert Prep gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cloud & IT Cert Prep, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cloud & IT Cert Prep comprend 4 leçons au total.
Mise en situation 1 : accès EC2 à S3 selon le principe du moindre privilège
Mise en situation : Une instance EC2 exécute une application Web qui doit lire des objets dans un compartiment S3 précis. L’équipe de sécurité exige qu’aucun identifiant à long terme ne soit stocké sur l’instance et que l’accès respecte le principe du moindre privilège. Solution : Créez un rôle IAM associé à une politique autorisant uniquement s3:GetObject sur l’ARN du compartiment concerné. Attachez le rôle à l’instance EC2 sous la forme d’un profil d’instance. L’application utilise le service de métadonnées d’instance (IMDS) pour récupérer automatiquement des identifiants temporaires : aucune clé stockée n’est nécessaire.
# IAM policy for least-privilege EC2 -> S3 read
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Action': ['s3:GetObject'],
'Resource': 'arn:aws:s3:::my-app-bucket/*'
}]
}
# Attach role to EC2 instance
aws ec2 associate-iam-instance-profile \
--instance-id i-1234567890abcdef0 \
--iam-instance-profile Name=EC2S3ReadRoleMise en situation 2 : chiffrement des données dans une base RDS
Mise en situation : Une entreprise stocke des données personnelles identifiables (PII) de ses clients dans une base de données RDS PostgreSQL. L’équipe chargée de la conformité exige un chiffrement au repos avec la possibilité d’auditer l’utilisation des clés. Solution : Activez le chiffrement RDS avec AWS KMS à l’aide d’une clé gérée par le client (CMK). La CMK permet à l’équipe de sécurité de contrôler la rotation des clés, de consulter leur utilisation dans CloudTrail et de révoquer l’accès si nécessaire. Remarque : le chiffrement doit être activé lors de la création de l’instance RDS ; vous ne pouvez pas chiffrer sur place une instance RDS existante qui ne l’est pas. Pour chiffrer une base existante, créez un instantané, copiez-le en activant le chiffrement, puis restaurez-le à partir de l’instantané chiffré.
# Create an encrypted RDS instance
aws rds create-db-instance \
--db-instance-identifier prod-postgres \
--db-instance-class db.t3.medium \
--engine postgres \
--master-username admin \
--master-user-password SecurePass123! \
--storage-encrypted \
--kms-key-id arn:aws:kms:us-east-1:123456789012:key/mrk-abc123 \
--allocated-storage 100Mise en situation 3 : compartiment S3 — blocage de l’accès public
Mise en situation : Un développeur a accidentellement rendu public un compartiment S3, exposant ainsi des données client. L’équipe de sécurité veut garantir qu’aucun compartiment S3 du compte ne puisse jamais être rendu public, même si un développeur tente de le faire. Solution : Activez le blocage de l’accès public S3 au niveau du compte. Cette fonctionnalité remplace toute politique ou ACL au niveau du compartiment accordant un accès public, quelles que soient les configurations des différentes équipes. Associez-y une règle AWS Config (s3-bucket-public-read-prohibited) pour détecter en continu les compartiments non conformes et générer des alertes.
# Block all public access at account level
aws s3control put-public-access-block \
--account-id 123456789012 \
--public-access-block-configuration \
'BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true'
# Deploy Config rule to detect violations
aws configservice put-config-rule \
--config-rule '{"ConfigRuleName": "s3-bucket-public-read-prohibited", "Source": {"Owner": "AWS", "SourceIdentifier": "S3_BUCKET_PUBLIC_READ_PROHIBITED"}}'Mise en situation 4 : isolation VPC pour la couche de base de données
Mise en situation : Une entreprise veut s’assurer que sa base de données RDS est accessible uniquement depuis ses serveurs d’application et non depuis Internet. Solution : Placez RDS dans un sous-réseau privé sans route vers une passerelle Internet. Créez un groupe de sécurité pour RDS qui autorise uniquement le trafic entrant sur le port 5432 (PostgreSQL) depuis le groupe de sécurité des serveurs d’application — et non depuis une plage d’adresses IP. Ainsi, même si un serveur d’application est compromis, l’attaquant ne peut pas atteindre la base de données depuis l’extérieur du VPC, et les déplacements latéraux sont limités par les règles des groupes de sécurité.
# Create RDS security group allowing only the app tier SG as source
aws ec2 create-security-group \
--group-name rds-sg \
--description 'RDS security group' \
--vpc-id vpc-abc123
aws ec2 authorize-security-group-ingress \
--group-id sg-rds \
--protocol tcp \
--port 5432 \
--source-group sg-app # app tier security group ID onlyMise en situation 5 : rotation des identifiants de base de données
Mise en situation : Le code de l’application contient actuellement des identifiants de base de données inscrits en dur dans des fichiers de configuration. L’audit de sécurité considère cela comme un risque critique. Solution : Stockez les identifiants dans AWS Secrets Manager et configurez la rotation automatique (Secrets Manager fournit des fonctions Lambda intégrées pour la rotation de RDS). Mettez à jour l’application afin qu’elle récupère les identifiants auprès de Secrets Manager au moment de l’exécution à l’aide du SDK. L’application obtient automatiquement des identifiants à jour sans déploiement à chaque rotation. Activez le modèle de rotation des secrets RDS pour bénéficier d’une rotation entièrement gérée et sans interruption.
# Store RDS credentials in Secrets Manager
aws secretsmanager create-secret \
--name prod/myapp/rds \
--secret-string '{"username":"admin","password":"OldPass123!","host":"rds-endpoint.amazonaws.com","port":5432}'
# Enable automatic rotation every 30 days
aws secretsmanager rotate-secret \
--secret-id prod/myapp/rds \
--rotation-lambda-arn arn:aws:lambda:us-east-1:123:function:SecretsManagerRDSPostgreSQLRotationSingleUser \
--rotation-rules AutomaticallyAfterDays=30Mise en situation 6 : détection d’une activité inhabituelle via l’API
Mise en situation : Une entreprise veut détecter si les identifiants d’un compte AWS sont compromis et utilisés depuis des emplacements inattendus. Solution : Activez Amazon GuardDuty dans toutes les Régions. GuardDuty analyse les événements CloudTrail, les journaux de flux VPC et les journaux DNS au moyen de l’apprentissage automatique pour détecter les anomalies : appels d’API depuis des zones géographiques inhabituelles, schémas de minage de bitcoins sur EC2, communications avec des nœuds de sortie Tor ou schémas d’exfiltration d’identifiants. GuardDuty génère des résultats qui peuvent déclencher des règles EventBridge afin de notifier automatiquement l’équipe de sécurité via SNS ou de créer un ticket d’assistance.
# Enable GuardDuty in a Region
aws guardduty create-detector \
--enable \
--finding-publishing-frequency FIFTEEN_MINUTES
# EventBridge rule to react to GuardDuty HIGH severity findings
aws events put-rule \
--name guardduty-high-severity \
--event-pattern '{
"source": ["aws.guardduty"],
"detail-type": ["GuardDuty Finding"],
"detail": {"severity": [{"numeric": [">=", 7]}]}
}'Mise en situation 7 : WAF pour bloquer les requêtes malveillantes
Mise en situation : Une application Web exécutée derrière un ALB reçoit des attaques par injection SQL. L’application ne peut pas être modifiée immédiatement. Solution : Associez AWS WAF à l’ALB. Déployez le groupe de règles AWS Managed Rules for Common Threats (Core Rule Set et groupe de règles SQL Database), qui comprend une détection préconfigurée des injections SQL. WAF inspecte les requêtes HTTP avant qu’elles n’atteignent l’ALB et bloque celles qui correspondent à des schémas d’attaque — aucune modification du code de l’application n’est nécessaire. Activez également la journalisation WAF vers Kinesis Firehose pour l’analyse de sécurité.
# Create WAF Web ACL with SQL injection protection
aws wafv2 create-web-acl \
--name AppProtection \
--scope REGIONAL \
--default-action Allow={} \
--rules '[{
"Name": "AWSManagedRulesSQLiRuleSet",
"Priority": 1,
"Statement": {
"ManagedRuleGroupStatement": {
"VendorName": "AWS",
"Name": "AWSManagedRulesSQLiRuleSet"
}
},
"OverrideAction": {"None": {}},
"VisibilityConfig": {"SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "SQLi"}
}]' \
--region us-east-1Mise en situation 8 : AssumeRole entre comptes
Mise en situation : Un compte de sécurité central a besoin d’un accès en lecture seule à tous les comptes de charge de travail d’une AWS Organisation afin d’effectuer des audits de sécurité. Solution : Dans chaque compte de charge de travail, créez un rôle IAM doté d’une politique d’approbation autorisant le compte de sécurité (par ID de compte) à l’assumer. Associez-lui une politique en lecture seule (par exemple, la politique gérée AWS SecurityAudit). L’équipe de sécurité du compte central utilise STS AssumeRole pour assumer temporairement le rôle dans chaque compte de charge de travail. Cette approche respecte le principe du moindre privilège : aucun utilisateur IAM permanent n’est créé dans les comptes de charge de travail.
# Trust policy in workload account (allows security account to assume role)
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Principal': {
'AWS': 'arn:aws:iam::SECURITY_ACCOUNT_ID:root'
},
'Action': 'sts:AssumeRole'
}]
}
# From security account: assume role in workload account
aws sts assume-role \
--role-arn arn:aws:iam::WORKLOAD_ACCOUNT_ID:role/SecurityAuditRole \
--role-session-name audit-2024-01Mise en situation 9 : restriction des actions avec des SCP
Mise en situation : Une entreprise utilise AWS Organizations et veut empêcher tout compte d’une OU hors production de lancer des instances GPU coûteuses. Solution : Créez une politique de contrôle des services (SCP) qui refuse ec2:RunInstances pour les familles d’instances GPU (p3, p4, g4, g5), puis associez-la à l’OU hors production. Les SCP s’appliquent même aux utilisateurs racine et aux utilisateurs IAM disposant de privilèges d’administrateur dans les comptes membres : elles servent de garde-fous qu’aucune identité du compte ne peut contourner. Cela empêche des dépenses importantes accidentelles ou malveillantes dans les comptes de développement et de test.
# SCP to deny GPU instance types in non-prod OU
{
'Version': '2012-10-17',
'Statement': [{
'Sid': 'DenyGPUInstances',
'Effect': 'Deny',
'Action': 'ec2:RunInstances',
'Resource': 'arn:aws:ec2:*:*:instance/*',
'Condition': {
'StringLike': {
'ec2:InstanceType': ['p3.*', 'p4d.*', 'g4.*', 'g5.*']
}
}
}]
}Mise en situation 10 : piste d’audit pour la conformité
Mise en situation : Une entreprise de services financiers doit démontrer aux auditeurs que tous les appels d’API AWS sont journalisés, protégés contre toute altération et conservés pendant 7 ans. Solution : Créez une piste AWS CloudTrail multi-Région qui envoie les journaux vers un compartiment S3 dédié dans un compte de journalisation. Activez la validation de l’intégrité des fichiers journaux (fichiers d’empreintes cryptographiques qui détectent toute altération des journaux). Définissez une politique S3 Object Lock en mode Compliance avec une durée de conservation de 7 ans sur le compartiment de journalisation. Ainsi, les journaux ne peuvent être ni supprimés ni modifiés — même par l’utilisateur racine — pendant la durée de conservation requise.
# Create multi-region trail with integrity validation
aws cloudtrail create-trail \
--name compliance-trail \
--s3-bucket-name central-audit-logs-123 \
--is-multi-region-trail \
--enable-log-file-validation \
--include-global-service-events
aws cloudtrail start-logging --name compliance-trailMise en situation 11 : point de terminaison VPC pour un accès privé à S3
Mise en situation : Des instances EC2 dans un VPC privé doivent accéder à S3 sans que le trafic ne traverse Internet. Une passerelle NAT est actuellement utilisée, et les coûts sont élevés en raison des frais de traitement des données de la passerelle NAT. Solution : Créez un point de terminaison VPC de type passerelle pour S3. Ajoutez une entrée de route à la table de routage du sous-réseau privé, en dirigeant la liste de préfixes S3 vers le point de terminaison. Le trafic vers S3 reste désormais entièrement au sein du réseau fédérateur AWS : aucune passerelle NAT ni passerelle Internet n’est nécessaire. Les points de terminaison VPC de type passerelle pour S3 sont gratuits (contrairement aux points de terminaison d’interface, facturés à l’heure et par AZ). Cette solution améliore également la sécurité en supprimant l’accès à S3 du chemin passant par Internet.
# Create S3 Gateway VPC Endpoint
aws ec2 create-vpc-endpoint \
--vpc-id vpc-abc123 \
--service-name com.amazonaws.us-east-1.s3 \
--route-table-ids rtb-private-1a rtb-private-1b
# Result: route table automatically gets a route:
# Destination: pl-63a5400a (S3 prefix list)
# Target: vpce-xyz456 (the Gateway Endpoint)
# EC2 instances now reach S3 privately at no endpoint costVérification rapide
Vérifiez votre compréhension des concepts AWS Solutions Architect (SAA-C03) présentés dans cette leçon.
Récapitulatif de la leçon
Dans cette leçon, vous avez étudié des scénarios portant sur les rôles IAM et les profils d’instance pour accéder à EC2 sans identifiants, Secrets Manager pour la rotation automatique des identifiants de Database, AWS WAF pour bloquer les attaques par injection sans modifier le code, ainsi que CloudTrail avec S3 Object Lock pour des journaux de conformité infalsifiables. Nous allons maintenant aborder des scénarios d’architecture résiliente et hautement disponible.
Questions Fréquemment Posées
La leçon « Scénarios d’architecture sécurisée » est-elle gratuite ?
Oui — le texte complet de « Scénarios d’architecture sécurisée » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cloud & IT Cert Prep, passe à CoddyKit PRO. Le cours Cloud & IT Cert Prep comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Scénarios d’architecture sécurisée » ?
Traitez des questions de mise en situation sur le moindre privilège IAM, le chiffrement, l’isolation VPC et WAF/Shield afin de consolider vos connaissances du domaine de la sécurité. Tu pratiques Cloud & IT Cert Prep avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Cloud & IT Cert Prep ?
Aucune expérience préalable n'est requise. Cloud & IT Cert Prep sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Scénarios d’architecture sécurisée » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Cloud & IT Cert Prep ?
Oui. Chaque leçon Cloud & IT Cert Prep inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Scénarios d’architecture sécurisée
- Scénarios d’architectures résilientes et hautement disponibles
- Scénarios de haute performance et d’optimisation des coûts
- Mini-examen complet à domaines mixtes