diff --git a/developpement/securite_web/img/histogram.png b/developpement/securite_web/img/histogram.png
new file mode 100644
index 0000000..8534862
Binary files /dev/null and b/developpement/securite_web/img/histogram.png differ
diff --git a/developpement/securite_web/img/jauge.jpg b/developpement/securite_web/img/jauge.jpg
new file mode 100644
index 0000000..2a14329
Binary files /dev/null and b/developpement/securite_web/img/jauge.jpg differ
diff --git a/developpement/securite_web/presentation/slides.md b/developpement/securite_web/presentation/slides.md
new file mode 100644
index 0000000..ff55597
--- /dev/null
+++ b/developpement/securite_web/presentation/slides.md
@@ -0,0 +1,110 @@
+
+
+# Sécurité des applications Web
+## William Petit - S.C.O.P. Cadoles
+
+---
+
+## Métrologie appliquée à la sécurité
+
+### Méthodologie générale
+### Les facteurs d'une bonne métrique
+### Exemple d'outil: Prometheus
+
+---
+
+
+## Méthodologie générale
+
+1. Définir le modèle de menace
+2. Identifier et isoler les scénarios d'attaque pour les différentes menaces
+3. Trouver les indicateurs "clés" pour ces scénarios i.e. identifier les métriques pertinentes pour la détection des comportements suspects
+4. Mettre en place les sondes pour les métriques
+5. Définir les seuils d'alerte et les réponses à apporter
+
+---
+
+## Les facteurs d'une bonne métrique
+
+- **Concision** _Le domaine de mesure est il correctement défini ? La métrique n'essaye t-elle pas de mesurer trop de choses ?_
+- **Fidélité** _La mesure est elle reproductible ? Mesure t-elle toujours la même chose ?_
+- **Intégrité** _Le processus de mesure est il vulnérable à la falsification ?_
+- **Utilité** _La métrique apporte elle une information utile au processus décisionnel ?_
+
+---
+
+## Exemple d'outil: Prometheus
+
+---
+
+## Configuration générale
+
+---
+
+## Instrumentation de l'application
+
+### Modèle de données
+### Les différents types de métriques
+### Visualiser les métriques
+### Effectuer des requêtes sur les métriques
+
+---
+
+## Modèle de données
+
+Prometheus stocke des échantillons (mesures) sous la forme de **séries temporelles**. Il créait une nouvelle série pour chaque association **(nom_métrique, label1=value, label2=value, ...)**.
+
+Chaque couple **(label, valeur)** est appelée **dimension** de la métrique.
+
+
+**Représentation**
+```
+ http_total_requests{ method="POST", path="/test" }
+ | name | labels |
+```
+
+
+
+---
+
+## Les différents types de métriques (1)
+
+### Compteur
+
+Un compteur est une métrique dont la valeur ne peut faire qu'augmenter au cours du temps.
+
+> **Exemple** Nombre total de connexions d'un compte sur un site
+
+---
+
+## Les différents types de métriques (2)
+
+### Jauge
+
+Une jauge est une métrique dont la valeur peut augmenter ou diminuer au cours du temps.
+
+![center 50%](../img/jauge.jpg)
+
+> **Exemple** La température d'une pièce
+
+---
+
+## Les différents types de métriques (3)
+
+### Histogramme
+
+Un histogramme est une métrique répartissant les données dans des "paquets" (ou "buckets" en anglais) configurables et comptant le nombre total et par "paquet" d'échantillons ainsi que leur somme.
+
+![center 70%](../img/histogram.png)
+
+> **Exemple** Le temps de réponse des requêtes HTTP
+
+---
+
+## Configuration de l'`alertmanager`
+
+---
+
+## Écriture de règles d'alertes
+
+---
diff --git a/developpement/securite_web/ressources/demo-app/.gitignore b/developpement/securite_web/ressources/demo-app/.gitignore
new file mode 100644
index 0000000..07e6e47
--- /dev/null
+++ b/developpement/securite_web/ressources/demo-app/.gitignore
@@ -0,0 +1 @@
+/node_modules
diff --git a/developpement/securite_web/ressources/demo-app/app.js b/developpement/securite_web/ressources/demo-app/app.js
new file mode 100644
index 0000000..9138a70
--- /dev/null
+++ b/developpement/securite_web/ressources/demo-app/app.js
@@ -0,0 +1,28 @@
+// Voir https://github.com/siimon/prom-client
+const client = require('prom-client');
+// Voir http://expressjs.com/
+const express = require('express')
+
+// Création de notre application Web
+const app = express()
+
+// On collecte les métriques proposées par défaut par le module 'prom-client'
+const collectDefaultMetrics = client.collectDefaultMetrics;
+collectDefaultMetrics({ timeout: 5000 }); // Récolte toutes les 5s
+
+// Définition des métriques
+const helloWorldCounter = new client.Counter({
+ name: 'demoapp_hello_world',
+ help: 'Total de requêtes sur la page "Hello World"'
+});
+
+app.get('/', (req, res) => {
+ helloWorldCounter.inc()
+ res.send('Hello World!')
+})
+
+// On expose les métriques de notre récolteur sur /metrics
+app.get('/metrics', (req, res) => res.send(client.register.metrics()))
+
+// On écoute sur le port 0.0.0.0:3000
+app.listen(3000, () => console.log('listening on port 3000'))
diff --git a/developpement/securite_web/ressources/demo-app/package.json b/developpement/securite_web/ressources/demo-app/package.json
new file mode 100644
index 0000000..e332e00
--- /dev/null
+++ b/developpement/securite_web/ressources/demo-app/package.json
@@ -0,0 +1,15 @@
+{
+ "name": "demo-app",
+ "version": "0.0.0",
+ "description": "",
+ "main": "app.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "author": "William Petit ",
+ "license": "AGPL-3.0",
+ "dependencies": {
+ "express": "^4.16.2",
+ "prom-client": "^10.2.2"
+ }
+}
diff --git a/developpement/securite_web/ressources/prometheus/docker-compose.yml b/developpement/securite_web/ressources/prometheus/docker-compose.yml
new file mode 100644
index 0000000..a04c9af
--- /dev/null
+++ b/developpement/securite_web/ressources/prometheus/docker-compose.yml
@@ -0,0 +1,18 @@
+version: '2'
+services:
+ prometheus:
+ image: prom/prometheus
+ volumes:
+ - ./etc/prometheus:/etc/prometheus
+ ports:
+ - 9090:9090
+ alertmanager:
+ image: prom/alertmanager
+ volumes:
+ - ./etc/alertmanager:/etc/alertmanager
+ ports:
+ - 9093:9093
+ faketools:
+ image: bornholm/faketools
+ ports:
+ - 8080:8080
diff --git a/developpement/securite_web/ressources/prometheus/etc/alertmanager/config.yml b/developpement/securite_web/ressources/prometheus/etc/alertmanager/config.yml
new file mode 100644
index 0000000..eec8517
--- /dev/null
+++ b/developpement/securite_web/ressources/prometheus/etc/alertmanager/config.yml
@@ -0,0 +1,14 @@
+global:
+ smtp_smarthost: 'faketools:2525'
+ smtp_from: 'alertmanager@my.org'
+ smtp_auth_username: 'alertmanager'
+ smtp_auth_password: 'password'
+ smtp_require_tls: false
+
+route:
+ receiver: dev-team
+
+receivers:
+ - name: 'dev-team'
+ email_configs:
+ - to: 'dev-team@my.org'
diff --git a/developpement/securite_web/ressources/prometheus/etc/prometheus/prometheus.yml b/developpement/securite_web/ressources/prometheus/etc/prometheus/prometheus.yml
new file mode 100644
index 0000000..51f8d28
--- /dev/null
+++ b/developpement/securite_web/ressources/prometheus/etc/prometheus/prometheus.yml
@@ -0,0 +1,20 @@
+# Configuration de l'application sur laquelle
+# Prometheus doit récolter des informations
+
+scrape_configs:
+ - job_name: demoapp
+ scrape_interval: 10s
+ metrics_path: /metrics
+ static_configs:
+ - targets: [ "172.17.0.1:3000" ]
+
+# Configuration de l'alertmanager
+
+alerting:
+ alertmanagers:
+ - static_configs:
+ - targets: [ "alertmanager:9093" ]
+
+# Définition des règles d'alertes
+rule_files:
+ - "/etc/prometheus/rules.d/*.yml"
diff --git a/developpement/securite_web/ressources/prometheus/etc/prometheus/rules.d/hello-world.yml b/developpement/securite_web/ressources/prometheus/etc/prometheus/rules.d/hello-world.yml
new file mode 100644
index 0000000..fe12f87
--- /dev/null
+++ b/developpement/securite_web/ressources/prometheus/etc/prometheus/rules.d/hello-world.yml
@@ -0,0 +1,6 @@
+groups:
+ - name: hello-world
+ rules:
+ - alert: HelloWorldAlert
+ expr: demoapp_hello_world > 5
+ for: 10s