☁️ Cloud

cloud-cloud-security-guide

Sécurité cloud incluant IAM, encryption, networking, compliance, secrets management et CSPM.

⚡ Installation & lancement en 1 commande

Copiez-collez dans votre terminal : le skill s'installe dans ~/.claude/skills et Claude Code se lance directement dessus.

macOS / Linux
curl -fsSL https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.sh | sh -s -- cloud-cloud-security-guide --launch
Windows (PowerShell)
iex "& { $(iwr -useb https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.ps1) } cloud-cloud-security-guide -Launch"

🚀 Déjà installé ?

claude "/cloud-cloud-security-guide"

Ou tapez /cloud-cloud-security-guide dans une session Claude Code, ou décrivez simplement votre besoin — le skill se déclenche automatiquement via le skill-router.

🔑 Déclencheurs automatiques

Le skill s'active automatiquement quand votre demande contient :

sécurité cloudcloud securityIAMencryption at restCSPM

📦 Installation manuelle

git clone https://github.com/khalilbenaz/claude-skills-collection.git cp -r claude-skills-collection/skills/cloud-cloud-security-guide ~/.claude/skills/

Payload du plugin : skills/cloud-cloud-security-guide · source éditable : cloud-skills/cloud-security-guide

📖 Manuel

Cloud Security Guide

Workflow en 8 étapes

1. Auditer et durcir l'IAM

Critère de déclenchement : nouveau compte cloud, audit trimestriel, onboarding d'un service.

# AWS — lister les utilisateurs sans MFA
aws iam generate-credential-report
aws iam get-credential-report --query 'Content' --output text | base64 -d | grep ',false,'

# AWS — trouver les politiques permissives (Action: *)
aws iam list-policies --scope Local --query "Policies[*].Arn" --output text | \
  xargs -I{} aws iam get-policy-version --policy-arn {} --version-id v1 \
  --query "PolicyVersion.Document" 2>/dev/null | grep -B5 '"Action": "\*"'

# Azure — Access Review via CLI
az ad user list --query "[?accountEnabled==\`true\`].{UPN:userPrincipalName}" --output table

Règles d'or :

// AWS SCP — forcer MFA
{
  "Effect": "Deny",
  "NotAction": ["iam:CreateVirtualMFADevice","iam:EnableMFADevice","sts:GetSessionToken"],
  "Resource": "*",
  "Condition": {"BoolIfExists": {"aws:MultiFactorAuthPresent": "false"}}
}

2. Segmenter le réseau

# AWS — VPC avec sous-réseaux isolés (Terraform snippet)
resource "aws_vpc" "main" { cidr_block = "10.0.0.0/16" }
resource "aws_subnet" "public"   { cidr_block = "10.0.1.0/24" ... }
resource "aws_subnet" "private"  { cidr_block = "10.0.2.0/24" ... }
resource "aws_subnet" "data"     { cidr_block = "10.0.3.0/24" ... }

# Activer les VPC Flow Logs
aws ec2 create-flow-logs \
  --resource-type VPC --resource-ids vpc-xxx \
  --traffic-type ALL --log-destination-type cloud-watch-logs \
  --log-group-name /vpc/flowlogs

Décision rapide :

RessourceExposition autorisée
Base de donnéesJamais publique — Private endpoint obligatoire
Application webVia ALB/WAF uniquement
API interneVia VPN ou Service Mesh
Bucket/BlobJamais public sauf CDN explicite

3. Chiffrer les données

# AWS — activer le chiffrement SSE-KMS sur un bucket S3
aws s3api put-bucket-encryption --bucket mon-bucket \
  --server-side-encryption-configuration '{
    "Rules":[{"ApplyServerSideEncryptionByDefault":{"SSEAlgorithm":"aws:kms","KMSMasterKeyID":"arn:aws:kms:..."}}]
  }'

# Azure — activer CMK sur un Storage Account
az storage account update \
  --name monstorage --resource-group monrg \
  --encryption-key-source Microsoft.Keyvault \
  --encryption-key-vault https://monkeyvault.vault.azure.net/ \
  --encryption-key-name maclé --encryption-key-version latest

Critères CMK vs clés gérées par le provider :


4. Gérer les secrets sans les exposer

# AWS — créer un secret avec rotation
aws secretsmanager create-secret \
  --name prod/myapp/db-password \
  --secret-string '{"username":"admin","password":"xxx"}'

aws secretsmanager rotate-secret \
  --secret-id prod/myapp/db-password \
  --rotation-lambda-arn arn:aws:lambda:...

# Récupérer au runtime (Python)
import boto3, json
secret = json.loads(
  boto3.client("secretsmanager").get_secret_value(SecretId="prod/myapp/db-password")["SecretString"]
)

Règles :


5. Déployer un CSPM et automatiser la remédiation

# AWS Security Hub — activer CIS Benchmark
aws securityhub enable-security-hub --enable-default-standards
aws securityhub batch-enable-standards \
  --standards-subscription-requests '[
    {"StandardsArn":"arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.4.0"}
  ]'

# Azure — activer Defender for Cloud sur tous les plans
az security pricing create -n VirtualMachines --tier Standard
az security pricing create -n StorageAccounts --tier Standard

Remédiation automatique : utiliser AWS Config Remediation Actions ou Azure Policy DeployIfNotExists pour corriger automatiquement les findings récurrents (ex: activer CloudTrail si désactivé).


6. Détection de menaces et SIEM

# AWS — activer GuardDuty sur tous les comptes d'une org
aws guardduty create-detector --enable --finding-publishing-frequency FIFTEEN_MINUTES
# Déléguer à un compte sécurité centralisé
aws guardduty enable-organization-admin-account --admin-account-id 123456789012

# Centraliser les logs CloudTrail → S3 → CloudWatch → SIEM
aws cloudtrail create-trail \
  --name org-trail --s3-bucket-name audit-logs-bucket \
  --is-multi-region-trail --enable-log-file-validation

Alertes prioritaires à configurer :


7. Conformité as Code

# OPA — policy interdisant les buckets S3 publics (Rego)
deny[msg] {
  input.resource.type == "aws_s3_bucket"
  input.resource.config.acl == "public-read"
  msg := sprintf("Bucket %v ne doit pas être public", [input.resource.name])
}

# AWS Config Rule custom
aws configservice put-config-rule --config-rule '{
  "ConfigRuleName": "s3-no-public-acl",
  "Source": {"Owner":"AWS","SourceIdentifier":"S3_BUCKET_PUBLIC_READ_PROHIBITED"}
}'

Mapping frameworks 2026 :

ContrôleCISISO 27001SOC 2PCI-DSS
MFA obligatoire1.10A.9.4.2CC6.18.4
Chiffrement at-rest2.1A.10.1CC6.73.4
Logs d'audit 12 mois3.1A.12.4CC7.210.5

8. Réponse aux incidents cloud

Procédure d'isolation rapide :

# AWS — isoler une instance compromise
aws ec2 create-security-group --group-name quarantine --description "No ingress/egress"
aws ec2 modify-instance-attribute \
  --instance-id i-xxxx --groups sg-quarantine

# Snapshot pour préservation des preuves
aws ec2 create-snapshot --volume-id vol-xxxx \
  --description "forensics-$(date +%Y%m%d-%H%M%S)" \
  --tag-specifications 'ResourceType=snapshot,Tags=[{Key=incident,Value=INC-001}]'

Décisions clés lors d'un incident :

  1. Isoler SANS éteindre (préserver la mémoire volatile si forensics nécessaire).
  2. Révoquer les credentials immédiatement (pas juste désactiver).
  3. Notifier le DPO si données personnelles concernées (RGPD : 72h).

Anti-patterns et pièges

PiègeConséquenceCorrection
IAM *:* sur un rôle LambdaBlast radius total si compromisScope minimal sur les ARNs nécessaires
Bucket S3 public "pour simplifier"Fuite de données, amende RGPDCloudFront + OAC obligatoire
Secrets dans les variables Terraform en clairExposés dans le statesensitive = true + state chiffré + backend sécurisé
MFA uniquement sur root, pas sur les adminsÉlévation facile via un compte adminSCP MFA obligatoire sur tous les comptes humains
CloudTrail désactivé en devPas de traces en cas d'incidentTrail org couvrant tous les comptes y compris dev
Rotation des clés KMS jamais activéeClé compromise = données indéchiffrables à termeRotation automatique annuelle
Partage de credentials entre servicesTraçabilité impossibleUne identité par service (service account / role)
Security groups 0.0.0.0/0 en entréeExposition totaleRestreindre au CIDR minimal ou au SG source

Bonnes pratiques 2026