Déployer des stratégies de sécurité robustes dans un environnement DevOps, maîtriser l’IAM, les scans de vulnérabilités, les pentests, et assurer la conformité réglementaire.
Ă€ l'issue de ce cours, vous saurez :
SecOps (Security Operations) désigne la pratique consistant à intégrer les équipes de sécurité (Sec) et d'opérations (Ops) pour renforcer la posture de sécurité globale d'une organisation. Cette collaboration permet de détecter plus rapidement les menaces, d'y répondre efficacement et de renforcer en continu les défenses systémiques.
Contrairement à une approche cloisonnée où la sécurité intervient uniquement en fin de cycle, SecOps fait de la sécurité une activité continue, itérative et pleinement intégrée dans les opérations quotidiennes.
SecOps est souvent confondu avec DevSecOps, mais les deux approches ciblent des périmètres différents :
Ces deux dimensions sont complémentaires. Une stratégie efficace combine les pratiques DevSecOps pour "sécuriser par conception" et SecOps pour réagir, adapter et protéger l'infrastructure en fonctionnement.
Dans les architectures modernes (cloud, microservices, CI/CD rapide), les surfaces d'attaque sont dynamiques et mouvantes. Quelques enjeux clés :
Historiquement, la sécurité était gérée à part, souvent en bout de chaîne. Cela entraîne :
En adoptant une approche "by design", on intègre :
Cela permet de protéger les systèmes sans sacrifier l'agilité, en faisant de la sécurité une valeur partagée et opérationnelle.
La gestion des identités et des accès (IAM, Identity and Access Management) est au cœur de toute stratégie de sécurité efficace dans un environnement DevOps. Une bonne implémentation d’IAM permet de contrôler qui peut faire quoi, où, et comment, tout en automatisant la gouvernance des droits d’accès.
Chaque entité (utilisateur, service, machine) ne doit disposer que des permissions strictement nécessaires à son fonctionnement. Cela limite la surface d’attaque potentielle en cas de compromission.
Aller plus loin que le moindre privilège en supprimant tout accès permanent : les privilèges sont délivrés temporairement à la demande et automatiquement révoqués après usage. Cette approche est particulièrement pertinente pour les environnements critiques ou sensibles.
Les permissions sont attribuées via des rôles définis. Un utilisateur appartient à un ou plusieurs rôles, chaque rôle définissant un ensemble de permissions. Ce modèle est simple et bien adapté à des organisations hiérarchiques.
Les permissions sont accordées dynamiquement selon des attributs liés à l’utilisateur, à la ressource ou au contexte (ex. : heure, adresse IP, type d’appareil). ABAC offre une flexibilité accrue mais complexifie la gestion.
| Critère | AWS IAM | Azure AD | GCP IAM |
|---|---|---|---|
| Modèle principal | RBAC + politiques JSON | RBAC + Conditions | RBAC + Policies |
| Intégration avec AD | Active Directory, Okta, etc. | Native Azure AD | Possible via Cloud Identity |
| IAM granulaire | Très granulaire (service, ressource) | Moins granulaire mais cohérent | Granularité sur les ressources |
| Support ABAC | Oui (avec tags et conditions) | Oui (avec conditions dynamiques) | Oui (conditions IAM) |
| Gestion via IaC | Terraform, CloudFormation | Terraform, ARM templates | Terraform, Deployment Manager |
Chaque fournisseur propose des mécaniques similaires mais avec des spécificités syntaxiques et fonctionnelles. Il est essentiel de bien comprendre les différences pour sécuriser des infrastructures multi-cloud.
Terraform permet de gérer l’IAM de manière déclarative et reproductible. Quelques bonnes pratiques :
.tf pour éviter les fuitesExemple pour AWS IAM :
resource "aws_iam_policy" "read_only" { name = "ReadOnlyPolicy" policy = file("policies/read_only.json") } resource "aws_iam_role" "readonly_user" { name = "ReadOnlyUser" assume_role_policy = jsonencode({ Version = "2012-10-17", Statement = [{ Action = "sts:AssumeRole", Effect = "Allow", Principal = { Service = "ec2.amazonaws.com" } }] }) } resource "aws_iam_role_policy_attachment" "attach" { role = aws_iam_role.readonly_user.name policy_arn = aws_iam_policy.read_only.arn }
Les bonnes pratiques incluent :
Gestion native des rôles, utilisateurs, groupes et politiques via JSON. Intégration poussée avec tous les services AWS. Compatible avec les approches ZSP et RBAC.
Permet la gestion centralisée des identités pour Azure mais aussi pour des SaaS (Office365, etc.). Fortement couplé avec RBAC Azure et Conditional Access.
Fournisseur IAM SaaS très répandu dans les grandes organisations. Compatible avec SAML, OAuth2, OIDC. Offre une bonne gestion des cycles de vie utilisateurs.
Outil IAM open-source orienté microservices. Idéal pour les applications nécessitant une fédération d’identité, du SSO et une personnalisation fine des politiques d’accès.
Une gestion IAM robuste est une condition incontournable pour sécuriser un environnement DevOps, en particulier à grande échelle ou en multi-cloud. Le couplage avec l’IaC permet d’en faire une brique reproductible, auditable, et évolutive.
Dans un environnement DevOps, les vulnérabilités peuvent apparaître à différents niveaux. Pour assurer une couverture complète, il est indispensable de connaître les catégories principales :
Chacune de ces couches peut être exploitée si elle n’est pas correctement auditée.
Une sélection d’outils permet de couvrir différents besoins en détection de vulnérabilités :
Le choix de l’outil dépend du contexte (CI/CD, analyse ponctuelle, audit réseau) et des contraintes (open-source, performances, intégration).
L’objectif est d’intégrer le scan de vulnérabilités dans les pipelines pour automatiser la détection et agir rapidement. Voici des exemples d’intégration :
trivy ou snyk comme étape dans .gitlab-ci.yml, avec publication de rapports HTML/JSON.trivy-action ou snyk/actions dans les workflows.Ces intégrations permettent une vérification systématique à chaque push, merge ou release.
Une fois les résultats collectés, il faut savoir les lire et les prioriser :
Des outils comme DefectDojo ou VulnWhisperer permettent de centraliser et trier les résultats.
Deux approches complémentaires permettent de réduire rapidement les risques :
Il est essentiel d’inclure un cycle de validation (test fonctionnel, non-régression) avant déploiement. La correction n’est pas qu’une action technique, c’est un processus à formaliser dans le cycle DevSecOps.
Les tests de pénétration, ou pentests, permettent d'évaluer la sécurité d'un système en simulant des attaques réelles. Intégrés dans une démarche DevSecOps, ils fournissent un retour direct sur les failles exploitables dans un environnement donné. Ce chapitre détaille les types de tests, les outils à maîtriser, les stratégies d'automatisation, ainsi que les bonnes pratiques d'interprétation des rapports.
Maîtriser les tests de pénétration permet non seulement de réagir aux menaces actuelles, mais aussi d'anticiper celles à venir. Leur intégration dans les workflows DevOps contribue à une posture de sécurité proactive et continue.
L'intégration de la sécurité dans les pipelines CI/CD garantit que chaque modification du code est testée pour ses impacts fonctionnels et pour sa robustesse face aux attaques. Ce chapitre détaille la construction d'un pipeline de sécurité cohérent, les outils à mobiliser, et les mécanismes d'alerting.
Un pipeline de sécurité doit comporter des étapes ordonnées pour garantir l'efficacité des détections :
Chaque étape renvoie ses résultats au moteur de CI pour déclencher ou bloquer la suite du pipeline.
detect-secrets, gitleaks ou truffleHog pour empĂŞcher l'ajout de secrets dans le code.stages: - lint - security - test - deploy lint: script: - eslint . secret_scan: stage: security script: - trufflehog filesystem . sast: stage: security script: - snyk test docker_scan: stage: security script: - trivy image monimage:latest iac_scan: stage: security script: - checkov -d infrastructure/ pentest: stage: security script: - python scripts/run_pentest.py deploy: script: - ./deploy.sh
Ce pipeline enchaîne les différentes étapes de scan et bloque le déploiement en cas de vulnérabilité critique.
Chaque outil de sécurité doit générer un rapport en JSON, SARIF ou tout autre format parseable.
Ces rapports peuvent ĂŞtre :
L'intégration systématique de la sécurité dans la CI/CD permet une détection anticipée des risques et une réaction rapide. Elle assure une traçabilité complète des vulnérabilités et renforce la qualité globale du produit dès la phase de développement.
Assurer la conformité et la traçabilité des actions est indispensable pour répondre aux exigences réglementaires et garantir une posture de sécurité solide. Ce chapitre explore les normes les plus courantes, la mise en place de contrôles automatiques et les outils pour la collecte et l'analyse des journaux.
Dans un environnement cloud, la conformité vise à s'assurer que les systèmes, données et pratiques opérationnelles respectent des règles internes et des obligations légales ou industrielles. Cela inclut :
Le cloud ajoute de la complexité à ces enjeux : partages de responsabilité, multiplicité des fournisseurs, scalabilité dynamique, réglementations transfrontalières.
Intégrer ces outils dans le pipeline CI/CD garantit que les configurations déployées sont conformes aux politiques internes et aux réglementations.
Une bonne stratégie d'audit inclut :
Intégrer la conformité et l'audit dans une approche DevSecOps permet de détecter les déviations, réagir rapidement, et prouver à tout moment la maîtrise de ses systèmes.
Ce TP vous guide dans la création et l'application de politiques IAM personnalisées sur AWS, à l'aide de Terraform. Vous partirez de zéro et aboutirez à une infrastructure sécurisée et entièrement codée dans des fichiers .tf, avec des permissions strictement minimales pour un utilisateur donné.
Un compte AWS actif avec droits d'administration
Terraform installé sur votre machine (version >= 1.0)
sudo apt update && sudo apt install terraform -y
AWS CLI configuré avec des credentials valides
aws configure
Un éditeur de texte comme VS Code (recommandé)
Entrez vos identifiants IAM Admin existants :
aws configure
Répondez aux questions :
AWS Access Key ID: XXXXXXXXXXXXXXXXXX
AWS Secret Access Key: XXXXXXXXXXXXXXXXXXXXXXXXX
Default region name: eu-west-3
Default output format: json
mkdir terraform_iam_policy && cd terraform_iam_policy
main.tfCréez le fichier main.tf avec le contenu suivant :
provider "aws" { region = "eu-west-3" }
terraform init
iam_policy.tftouch iam_policy.tf
iam_policy.tfresource "aws_iam_policy" "readonly_s3" { name = "ReadonlyS3" description = "Accès en lecture seule à S3" policy = jsonencode({ Version = "2012-10-17" Statement = [ { Action = [ "s3:GetObject", "s3:ListBucket" ] Effect = "Allow" Resource = [ "arn:aws:s3:::*" ] } ] }) }
iam_user.tftouch iam_user.tf
iam_user.tfresource "aws_iam_user" "user_readonly" { name = "readonly_user" } resource "aws_iam_user_policy_attachment" "attach_readonly" { user = aws_iam_user.user_readonly.name policy_arn = aws_iam_policy.readonly_s3.arn } resource "aws_iam_access_key" "readonly_user_key" { user = aws_iam_user.user_readonly.name }
terraform validate
terraform plan
terraform apply -auto-approve
Une fois la commande terminée, notez bien les identifiants générés :
Créez un nouveau profil avec les identifiants :
aws configure --profile readonly_user
Testez une commande autorisée :
aws s3 ls --profile readonly_user
Testez une commande interdite :
aws s3 rm s3://votre-bucket/fichier.txt --profile readonly_user
Vous devriez obtenir une erreur d'autorisation.
Ajoutez un rôle distinct au lieu d’utiliser un utilisateur statique :
resource "aws_iam_role" "read_role" { name = "ReadOnlyRole" assume_role_policy = jsonencode({ Version = "2012-10-17" Statement = [ { Effect = "Allow" Principal = { Service = "ec2.amazonaws.com" } Action = "sts:AssumeRole" } ] }) } resource "aws_iam_role_policy_attachment" "attach_readonly" { role = aws_iam_role.read_role.name policy_arn = aws_iam_policy.readonly_s3.arn }
Quand vous avez terminé le test :
terraform destroy -auto-approve
Ce TP vous guide dans l'intégration complète de deux scanners de vulnérabilités dans un pipeline CI/CD GitLab : Trivy (open-source, rapide) et Nessus (complet et très détaillé). L'objectif est de créer un pipeline sécurisé capable de bloquer les builds en cas de failles critiques.
Créez un fichier .gitlab-ci.yml ou modifiez l’existant :
tst_trivy_scan: image: aquasec/trivy:latest stage: test variables: TRIVY_EXIT_CODE: 1 script: - trivy image --exit-code $TRIVY_EXIT_CODE --severity CRITICAL,HIGH yourregistry/yourimage:latest allow_failure: false only: - merge_requests - main
Explication :
image : utilise l'image officielle de Trivy--exit-code 1 : échoue le job si des failles sévères sont présentesallow_failure: false : empêche le build de continuer si échecVous pouvez aussi scanner les dépendances applicatives (si le projet contient un package.json, go.mod, etc.) :
trivy fs --exit-code 1 --severity CRITICAL,HIGH .
Ajoutez cette commande en plus si vous voulez scanner tout le répertoire projet.
Ajoutez un rapport exporté :
trivy image -f json -o trivy_report.json yourimage:latest
Puis :
artifacts: paths: - trivy_report.json when: always
Téléchargement sur : https://www.tenable.com/downloads/nessus
Exemple pour Ubuntu 22.04 :
wget https://downloads.nessus.org/nessus3dl.php?file=Nessus-10.x.x-Ubuntu22.deb&licence_accept=yes&t=curl sudo dpkg -i Nessus-10.x.x-Ubuntu22.deb sudo systemctl start nessusd
Allez sur https://localhost:8834 pour configurer un compte admin.
Une fois connecté à l'interface web :
GitLabPolicynessus_scan.sh#!/bin/bash NESSUS_HOST="https://nessus-instance:8834" ACCESS_KEY="$NESSUS_ACCESS_KEY" SECRET_KEY="$NESSUS_SECRET_KEY" TARGET_IP="$TARGET_IP" # Auth TOKEN=$(curl -s -k -X POST \ -H "Content-Type: application/json" \ -d "{\"username\":\"$ACCESS_KEY\", \"password\":\"$SECRET_KEY\"}" \ $NESSUS_HOST/session | jq -r .token) # Lancer le scan SCAN_ID=$(curl -s -k -X POST \ -H "X-Cookie: token=$TOKEN" \ -H "Content-Type: application/json" \ -d "{\"uuid\":\"basic_network_scan\", \"settings\":{\"name\":\"GitLabScan\",\"policy_id\":1,\"text_targets\":\"$TARGET_IP\"}}" \ $NESSUS_HOST/scans | jq -r .scan.id) # Lancer le scan curl -s -k -X POST \ -H "X-Cookie: token=$TOKEN" \ $NESSUS_HOST/scans/$SCAN_ID/launch # Attendre 2 minutes (ou ajuster selon le scope) sleep 120 # Exporter le rapport REPORT_ID=$(curl -s -k -X POST \ -H "X-Cookie: token=$TOKEN" \ -H "Content-Type: application/json" \ -d '{"format": "pdf"}' \ $NESSUS_HOST/scans/$SCAN_ID/export | jq -r .file) # Téléchargement curl -k -H "X-Cookie: token=$TOKEN" \ $NESSUS_HOST/scans/$SCAN_ID/export/$REPORT_ID/download \ -o nessus_report.pdf
nessus_scan.shchmod +x nessus_scan.sh
GitLab > Settings > CI/CD > Variables
NESSUS_ACCESS_KEYNESSUS_SECRET_KEYTARGET_IP : IP de l’instance cible (EC2, container exposé).gitlab-ci.ymlnessus_scan: image: curlimages/curl:latest stage: test script: - apk add jq - ./nessus_scan.sh artifacts: paths: - nessus_report.pdf only: - main
Ajoutez un parsing simple pour générer une alerte si des failles sont critiques (voir contenu JSON si export JSON au lieu de PDF).
Exemple :
if grep -q "Critical" trivy_report.json; then echo "[!] Vulnérabilités critiques trouvées" exit 1 fi
Ajoutez ce test à la fin du job tst_trivy_scan pour empêcher les déploiements non sécurisés.
Ce TP vous guide pas à pas dans la réalisation d'un test de pénétration ciblé en combinant Nmap pour la reconnaissance réseau et Burp Suite pour l’analyse d’applications web. Chaque action est explicitée pour ne laisser aucune ambiguïté.
Matériel :
Deux machines virtuelles dans le même réseau (NAT ou réseau privé)
Logiciels Ă installer :
Nmap : souvent déjà installé sur Kali, sinon :
sudo apt update && sudo apt install nmap
Burp Suite Community (fourni avec Kali, sinon : https://portswigger.net/burp)
Navigateur Firefox (préférable pour la configuration proxy)
Sur la machine cible :
ip a
Repérez l'adresse IP associée à l'interface réseau (souvent eth0 ou ens33).
Exemple : 192.168.56.102
Conservez cette IP, elle vous servira tout au long du TP.
Sur la machine Kali, ouvrez un terminal.
1. Scan de ports rapide :
nmap -sS -T4 -Pn 192.168.56.102
Explications :
-sS : scan SYN (rapide et furtif)-T4 : vitesse de scan agressive-Pn : ne pas faire de ping préalable (utile si ICMP est bloqué)2. Scan complet avec détection de services :
nmap -sV -O -A -p- 192.168.56.102
-sV : détection des versions de services-O : détection du système d’exploitation-A : détection avancée (scripts NSE, traceroute...)-p- : scan tous les ports (1 à 65535)3. Interprétation des résultats :
Notez les ports ouverts et les services associés. Recherchez en priorité les ports web : 80, 443, 8080...
Sur Kali :
burpsuite &
Ou utilisez l’interface graphique :
Créez un projet temporaire → Next → Start Burp.
Ouvrez Firefox → Menu ≡ → Paramètres → Réseau → Paramètres...
Cochez "Configuration manuelle du proxy"
127.0.0.18080Cliquez sur OK.
http://burpsuite → cliquez sur le lien "CA Certificate".cerhttp://192.168.56.102)Dans les formulaires ou les URL de l'application vulnérable, testez les cas suivants :
Injection SQL :
admin' OR '1'='1
XSS :
<script>alert('XSS')</script>
Traversal de répertoire :
../../../../etc/passwd
Notez :
Pour chaque faille détectée, écrivez dans un fichier texte ou un outil comme Dradis :
Structure du rapport :
Si vous avez accès à la machine vulnérable :
ufw enable sur Ubuntu)sudo apt update && sudo apt upgrade
Ce TP vous guide pas à pas pour ajouter des contrôles de politiques de sécurité personnalisés à un cluster Kubernetes à l’aide d’OPA Gatekeeper. Chaque commande est expliquée en détail, afin que vous puissiez suivre sans aucune connaissance préalable de l’outil.
kubectl installé et configuré pour pointer vers votre clustertkubectl create ns gatekeeper-system
kubectl apply -f https://raw.githubusercontent.com/open-policy-agent/gatekeeper/release-3.15/deploy/gatekeeper.yaml
kubectl get pods -n gatekeeper-system
Attendez que tous les pods soient en Running. Si besoin :
kubectl describe pod -n gatekeeper-system <nom_du_pod>
Cette politique interdit les pods qui utilisent une image sans tag (ex : nginx au lieu de nginx:1.25.2).
k8srequiredimagetag_template.yaml :apiVersion: templates.gatekeeper.sh/v1beta1 kind: ConstraintTemplate metadata: name: k8srequiredimagetag spec: crd: spec: names: kind: K8sRequiredImageTag targets: - target: admission.k8s.gatekeeper.sh rego: | package k8srequiredimagetag violation[{ "msg": msg, "details": {"container": container.name} }] { container := input.review.object.spec.containers[_] not endswith(container.image, ":latest") not contains(container.image, ":") msg := sprintf("Image '%v' does not have a tag", [container.image]) }
kubectl apply -f k8srequiredimagetag_template.yaml
require-imagetag.yaml :apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sRequiredImageTag metadata: name: require-imagetag spec: match: kinds: - apiGroups: [""] kinds: ["Pod"]
kubectl apply -f require-imagetag.yaml
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: name: pod-sans-tag spec: containers: - name: nginx image: nginx EOF
Pour vérifier le message d'erreur :
kubectl describe k8srequiredimagetag.constraints.gatekeeper.sh require-imagetag
Ou simplement observer le message d’erreur retourné lors de l’application du pod.
Gatekeeper crée des objets de type ConstraintViolation visibles avec la commande :
kubectl get constrainttemplates kubectl get constraints
Voici quelques politiques à essayer de votre côté :
hostNetwork: trueenv=prod)Toutes sont disponibles ici : https://github.com/open-policy-agent/gatekeeper-library
Pour tout supprimer :
kubectl delete -f require-imagetag.yaml kubectl delete -f k8srequiredimagetag_template.yaml kubectl delete -f https://raw.githubusercontent.com/open-policy-agent/gatekeeper/release-3.15/deploy/gatekeeper.yaml kubectl delete ns gatekeeper-system
Ce TP propose une mise en situation opérationnelle pour réaliser un audit de conformité RGPD, avec mise en place de journaux d'audit et d'un système d'alerting. L'objectif est d'automatiser la détection d'activités non conformes au RGPD dans un système d'information.
Matériel :
Logiciels Ă installer :
Créez un fichier rgpd_checklist.md avec ces informations, à conserver comme guide d'audit.
sudo apt update && sudo apt install auditd audispd-plugins -y
Vérifiez que le service fonctionne :
sudo systemctl status auditd
Créez une règle d’audit sur un répertoire contenant des données sensibles :
echo "-w /home/user/donnees_rgpd/ -p rwxa -k acces_rgpd" | sudo tee -a /etc/audit/rules.d/rgpd.rules
Rechargez les règles :
sudo augenrules --load
Test : accédez ou modifiez un fichier dans ce répertoire puis exécutez :
sudo ausearch -k acces_rgpd
curl -sO https://packages.wazuh.com/4.6/wazuh-install.sh chmod +x wazuh-install.sh sudo ./wazuh-install.sh -a
Ce script installe :
https://<IP-VOTRE-VM>:5601admin / adminSur la machine cible :
curl -sO https://packages.wazuh.com/4.x/apt/wazuh-agent.deb sudo dpkg -i wazuh-agent.deb
Configurez l’adresse IP du manager Wazuh dans /var/ossec/etc/ossec.conf :
<server> <address>IP_DU_MANAGER</address> </server>
Démarrez l’agent :
sudo systemctl enable wazuh-agent sudo systemctl start wazuh-agent
Depuis l’interface Wazuh, vérifiez que l’agent apparaît comme "connected".
Dans l’interface Wazuh :
acces_rgpd<rule id="100101" level="10"> <if_sid>80700</if_sid> <match>acces_rgpd</match> <description>Accès à des données personnelles</description> </rule>
sudo systemctl restart wazuh-manager
cat /home/user/donnees_rgpd/info.txt
Vérifiez dans l’interface que l’alerte a bien été déclenchée.
Connectez-vous Ă l'interface Kibana : https://<IP-VOTRE-VM>:5601
Cliquez sur Dashboard > Create dashboard
Donnez-lui un nom comme Audit RGPD
Cliquez sur Add from library ou Create new visualization
Choisissez Lens pour créer une visualisation simple
Source de données : sélectionnez l'index wazuh-alerts-*
Dans l’éditeur de visualisation :
Drag-and-drop le champ rule.description dans la zone de filtreAccès à des données personnelles@timestamp en axe X (Time histogram)Count pour obtenir le nombre d'événementsSauvegardez la visualisation et ajoutez-la au tableau de bord
agent.name pour filtrer par machineuser.name si vous voulez filtrer par utilisateurevent.type, event.action ou tout autre champ pertinentSharePDF Reports ou CSV ReportsPDF Reports n’est pas activé, installez Reporting via le menu Stack Management > Kibana > ReportingGenerate report > Téléchargez le fichier une fois prêtCreate a new job > Sélectionnez votre dashboardInterval : quotidien, hebdomadaire, etc./var/audit_rgpd/reports/ sur une machine protégée# Exemple de script de rotation (à placer dans /etc/cron.daily/rotate_rgpd.sh) #!/bin/bash find /var/audit_rgpd/reports/ -type f -mtime +30 -delete
Ce rapport constitue une preuve d'audit conforme aux obligations de documentation RGPD.
Wazuh permet d’exporter des rapports de journaux filtrés. Pour cela :
Créez un tableau de bord Kibana détaillé sur le tag acces_rgpd en suivant les étapes ci-dessous :
Accédez à l’interface Kibana à l’adresse https://<IP-VOTRE-VM>:5601 avec votre navigateur.
Dans le menu latéral, cliquez sur Dashboard puis sur le bouton Create dashboard en haut à droite.
Nommez votre dashboard, par exemple Audit RGPD - Accès Données Sensibles, puis cliquez sur Create new visualization.
Choisissez Lens comme type de visualisation. Vous allez voir une interface de glisser-déposer.
Dans la source de données, sélectionnez l’index wazuh-alerts-*.
Dans la section de configuration :
rule.description dans la section centrale.rule.description et entrez : Accès à des données personnelles.@timestamp dans l’axe X (horizontal) sous forme d’Histogramme temporel.Cliquez sur Save and return pour enregistrer votre visualisation.
De retour dans le dashboard, cliquez sur Add from library pour ajouter la visualisation que vous venez de créer.
Vous pouvez répéter l’opération pour créer d’autres visualisations pertinentes, comme :
user.nameagent.nameevent.type)Une fois toutes vos visualisations ajoutées, cliquez sur Save pour enregistrer définitivement le dashboard.
Pour valider la pertinence de votre dashboard, accédez à un fichier sensible sur la machine cible (comme /home/user/donnees_rgpd/info.txt), attendez quelques secondes, puis rafraîchissez le dashboard.
Vous devez observer une entrée correspondant à l’alerte Accès à des données personnelles dans la timeline de votre dashboard.
2. Filtrez par date, type d’accès, utilisateur
3. Exportez au format CSV ou PDF
Vous pouvez aussi planifier des rapports périodiques avec alertes email.
Avant de considérer l'audit RGPD comme terminé, suivez minutieusement cette checklist point par point. Cochez chaque item une fois validé :
auditd est installé et actif (systemctl status auditd vérifié)/etc/audit/rules.d/rgpd.rules contient les règles pertinentes)ausearchrule.description contient bien les libellés d'alerte RGPD comme prévumatch: acces_rgpdAudit RGPD existe et contient au moins une visualisation pertinente@timestamp permet de filtrer les événements dans le tempsagent.name, user.name, etc.) sont fonctionnels/var/audit_rgpd/reports/ par exemple)✅ Si tous les points ci-dessus sont cochés, votre audit RGPD automatisé est considéré comme complet et conforme.
Ce chapitre va te permettre de renforcer ta posture de sécurité sur la durée. On va structurer les efforts autour de quatre leviers : gouvernance distribuée (Security Champions), analyse proactive (threat modeling), alignement économique (budgets), et vigilance continue (veille).
Distribuer la compétence sécurité dans chaque équipe produit ou technique, en identifiant un référent motivé (le Security Champion) et en l’équipant pour assurer un relai quotidien.
Crée un fichier security_champions.md avec :
Missions
Moyens
Crée un événement récurrent avec :
Visualiser les menaces potentielles et anticiper les vecteurs d’attaque avant qu’ils ne se produisent.
Dans un tableau assets.csv, indique :
Nom;Type;Sensibilité;Exposition
Base client;Base de données;Élevée;Internet
Repo Git;Code source;Élevée;VPN
Console AWS;Interface;Critique;Internet
Crée un tableau threats.csv avec une ligne par combinaison :
Actif;Menace;Description;Impact;Probabilité
Base client;Tampering;Modification non-autorisée des données;Élevé;Moyen
Repo Git;Repudiation;Dev supprime des commits sensibles;Moyen;Faible
npm install -g owasp-threat-dragon threatdragon
Crée un fichier risques_plan.md listant les mesures :
Menace : modification des logs d’accès
- Mesure : logs immuables en append-only sur serveur distant
- Échéance : T2 2025
- Responsable : @devops_lead
Savoir combien coûte (et économise) la sécurité.
Crée un fichier budget_sec.yaml :
licences: - wazuh: 0 - gitlab_premium: 2400 formation: - elearning: 1500 outillage: - trivy: 0 - burp_suite_pro: 399
Dans risques_financiers.csv, crée :
Scénario;Impact financier
Fuite RGPD (base clients);200000€
Ransomware chiffrant les backups;500000€
Dans GitLab ou Jira, crée un tag #securité et une "Epic Sécurité" contenant toutes les tâches. Export mensuel pour calculer temps passé.
Dans Grafana ou un tableur partagé :
Être au courant des vulnérabilités critiques le jour même de leur publication.
Installe Fluent Reader ou RSS Guard
Abonne-toi aux flux :
Dans Slack, Discord ou Matrix :
#vulnérabilitésDans chaque ticket de dépendance (GitHub/GitLab), ajoute :
🛡️ Vérifier si CVE-2024-xxxx affecte notre version de X