> ## Documentation Index
> Fetch the complete documentation index at: https://docs.snakysec.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 02 asset inventory

# Inventaire des actifs et analyse d'impact métier (BIA)

## 1. Objet

Recensement exhaustif des actifs informationnels critiques de la plateforme
MSSP SnakySec, classés selon leur criticité métier et associés à un objectif
RPO/RTO. Cet inventaire alimente :

* La stratégie de sauvegarde ([03-backup-strategy.md](./03-backup-strategy.md))
* La matrice RPO/RTO formalisée ([04-rto-rpo-matrix.md](./04-rto-rpo-matrix.md))
* Les runbooks de restauration (`docs/dr/runbooks/*`)
* L'analyse de risques EBIOS RM (à formaliser Phase 1)

## 2. Méthodologie BIA

### 2.1 Critères de criticité

Chaque actif est évalué sur 4 axes (alignement DICT ANSSI) :

| Axe                 | Question                                                                        |
| ------------------- | ------------------------------------------------------------------------------- |
| **D**isponibilité   | Combien de temps peut-on tolérer son indisponibilité avant impact contractuel ? |
| **I**ntégrité       | Quelle est la conséquence d'une altération non détectée ?                       |
| **C**onfidentialité | Quelle est la conséquence d'une divulgation non autorisée ?                     |
| **T**raçabilité     | A-t-on besoin de prouver l'historique des accès/modifications ?                 |

### 2.2 Échelle de criticité

| Niveau         | Description                                                             | Exemple                       |
| -------------- | ----------------------------------------------------------------------- | ----------------------------- |
| **Critique**   | Indisponibilité = arrêt complet du service, impact contractuel immédiat | PostgreSQL, Vault             |
| **Importante** | Indisponibilité = dégradation fonctionnelle, impact contractuel modéré  | Artifacts audit, Redis        |
| **Modérée**    | Indisponibilité = inconfort utilisateur, pas d'impact contractuel       | TLS certs (re-issuables auto) |
| **Faible**     | Indisponibilité = aucun impact direct                                   | Logs Traefik (régénérables)   |

## 3. Inventaire infrastructure

### 3.1 Hébergement et réseau

| Asset                         | Localisation                 | Criticité    | RPO             | RTO   | Source recovery                                                                           |
| ----------------------------- | ---------------------------- | ------------ | --------------- | ----- | ----------------------------------------------------------------------------------------- |
| VPS OVH (production)          | OVH Gravelines (France)      | **Critique** | N/A (stateless) | 1h    | Image OVH + bootstrap script                                                              |
| Domaine snakysec.com          | Registrar (Gandi/OVH)        | **Critique** | N/A             | 24h   | Récupération via support registrar                                                        |
| Zone DNS snakysec.com         | OVH DNS                      | **Critique** | 30j             | 1h    | Backup mensuel YAML zone (cf. [runbooks/09-restore-dns.md](./runbooks/09-restore-dns.md)) |
| Certificats TLS Let's Encrypt | Volume Docker `traefik-acme` | Modérée      | N/A             | 15min | Re-issue automatique via traefik ACME                                                     |

### 3.2 Stack applicative Docker

| Asset           | Container  | Criticité    | RPO                    | RTO   | Source recovery                           |
| --------------- | ---------- | ------------ | ---------------------- | ----- | ----------------------------------------- |
| Reverse proxy   | `traefik`  | Importante   | N/A                    | 15min | Recreate from compose, ACME re-issue      |
| App Next.js     | `next-app` | Importante   | N/A (stateless)        | 30min | Pull image registry + restart             |
| PostgreSQL 16   | `postgres` | **Critique** | 5min                   | 2h    | pgbackrest WAL streaming + base full      |
| Redis           | `redis`    | Faible       | N/A (jobs idempotents) | 30min | Recreate empty, re-trigger pending jobs   |
| HashiCorp Vault | `vault`    | **Critique** | 24h                    | 1h    | Snapshot raft chiffré + unseal Shamir 3/5 |
| Worker BullMQ   | `worker`   | Importante   | N/A                    | 30min | Pull image + restart, jobs re-pickup auto |

### 3.3 Volumes Docker persistants

| Volume          | Contenu                                | Criticité    | RPO  | RTO   | Source recovery                    |
| --------------- | -------------------------------------- | ------------ | ---- | ----- | ---------------------------------- |
| `postgres-data` | Base PostgreSQL prod                   | **Critique** | 5min | 2h    | pgbackrest restore PITR            |
| `vault-data`    | Storage raft Vault                     | **Critique** | 24h  | 1h    | restic restore + unseal            |
| `traefik-acme`  | Certs Let's Encrypt                    | Modérée      | N/A  | 15min | Re-issue ACME                      |
| `artifacts`     | Audits JSON, rapports GRC, exports CSV | Importante   | 24h  | 4h    | restic restore depuis OVH/Scaleway |
| `redis-data`    | AOF Redis (jobs en cours)              | Faible       | N/A  | N/A   | Pas de restore (jobs idempotents)  |

## 4. Inventaire applicatif (données)

### 4.1 Modèles Prisma critiques

| Table                          | Volumétrie estimée                     | Criticité    | Justification                                        |
| ------------------------------ | -------------------------------------- | ------------ | ---------------------------------------------------- |
| `User`                         | \<100 (V1)                             | **Critique** | Identités, rôles, permissions                        |
| `Role` + `UserPermissionGrant` | \<500                                  | **Critique** | RBAC granulaire, audit trail                         |
| `Client` (tenants)             | \<50 (V1)                              | **Critique** | Configurations multi-tenants                         |
| `ClientSecret`                 | \<200 (chiffré AES-256-GCM)            | **Critique** | Secrets Entra par client                             |
| `AuditRun`                     | \~12/mois × 50 clients = 600/an        | Importante   | Historique audits CIS/SCuBA                          |
| `ControlResult`                | \~600 audits × 220 contrôles = 132k/an | Importante   | Résultats détaillés audits                           |
| `GapFinding`                   | \~600 audits × \~30 findings = 18k/an  | Importante   | Findings remédiation                                 |
| `Baseline` + `BaselineControl` | \<200                                  | **Critique** | Référentiels client (justifications, exceptions)     |
| `PlatformAuditLog`             | \~10k entrées/mois                     | **Critique** | Audit trail scellé Ed25519, intégrité non négociable |
| `LogAnchor`                    | 1/jour = \~365/an                      | **Critique** | Anchors signés Ed25519 quotidiens                    |
| `PlatformState`                | \<20                                   | **Critique** | État lockdown chaîne hash, anchors latest            |

### 4.2 Données stockées hors base

| Asset                                   | Localisation                         | Criticité    | RPO | RTO          |
| --------------------------------------- | ------------------------------------ | ------------ | --- | ------------ |
| Audits JSON bruts (schema 3.0)          | `artifacts/audit/<client>/<run-id>/` | Importante   | 24h | 4h           |
| Rapports GRC générés (8 docs × clients) | `artifacts/grc/<client>/<doc-type>/` | Importante   | 24h | 4h           |
| Exports CSV access-review               | `artifacts/exports/`                 | Faible       | N/A | Régénérables |
| PDF certifiés (Phase 2)                 | `artifacts/certified/`               | **Critique** | 24h | 4h           |

## 5. Inventaire secrets

### 5.1 Vault — paths de production

| Path Vault                                            | Contenu                         | Criticité    | Rotation                                               |
| ----------------------------------------------------- | ------------------------------- | ------------ | ------------------------------------------------------ |
| `mssp/data/platform/auth_secret`                      | NextAuth JWT signing key        | **Critique** | Annuel + immédiat sur incident                         |
| `mssp/data/platform/encryption_key`                   | AES-256-GCM master key          | **Critique** | Annuel + procédure ré-encryption                       |
| `mssp/data/platform/entra_cert_pem`                   | Cert X.509 plateforme           | **Critique** | Annuel                                                 |
| `mssp/data/platform/entra_cert_private_key`           | Clé privée X.509                | **Critique** | Annuel                                                 |
| `mssp/data/platform/log_anchor_private_key`           | Ed25519 signing key audit log   | **Critique** | Annuel + invalide chain anchors antérieurs si rotation |
| `mssp/data/platform/log_anchor_public_key`            | Ed25519 verify key              | Importante   | Annuel (synchronisé avec privée)                       |
| `mssp/data/platform/postgres_password`                | Mot de passe DB                 | **Critique** | Annuel                                                 |
| `mssp/data/platform/redis_password`                   | Mot de passe Redis              | Importante   | Annuel                                                 |
| `mssp/data/platform/gitlab_token`                     | Token API GitLab                | Importante   | 90j                                                    |
| `mssp/data/platform/sentry_dsn`                       | DSN Sentry SaaS                 | Modérée      | Sur demande                                            |
| `mssp/data/platform/sentry_auth_token`                | Token MCP Sentry                | Importante   | Annuel                                                 |
| `mssp/data/clients/<slug>/entra_*`                    | Credentials SSO clients         | **Critique** | Sur demande client ou rotation cert annuel             |
| `mssp/data/dr/pgbackrest_cipher_pass`                 | Clé chiffrement repo pgbackrest | **Critique** | Annuel                                                 |
| `mssp/data/dr/restic_password`                        | Passphrase restic snapshots     | **Critique** | Annuel                                                 |
| `mssp/data/dr/ovh_s3_access_key` + `_secret_key`      | Accès bucket OVH                | **Critique** | Annuel                                                 |
| `mssp/data/dr/scaleway_s3_access_key` + `_secret_key` | Accès bucket Scaleway           | **Critique** | Annuel                                                 |

### 5.2 Shares Shamir Vault

Cf. [01-keyholders.md](./01-keyholders.md) pour la répartition complète.

## 6. Inventaire comptes externes

| Service                                         | Usage                                   | Criticité    | Récupération                                                     |
| ----------------------------------------------- | --------------------------------------- | ------------ | ---------------------------------------------------------------- |
| **OVH Cloud**                                   | VPS prod + DNS + Object Storage primary | **Critique** | Compte personnel Nicolas, 2FA YubiKey, codes de récup en KeePass |
| **Scaleway**                                    | Object Storage secondary backup         | **Critique** | Compte personnel Nicolas, 2FA YubiKey                            |
| **GitLab.com**                                  | Repos source code + CI/CD               | **Critique** | Compte personnel Nicolas, 2FA YubiKey, SSH keys backup           |
| **Microsoft Entra (snakysec.onmicrosoft.com)**  | Tenant MSSP, app registrations          | **Critique** | Comptes Global Admin × 2 (Nicolas + break-glass) avec MFA strict |
| **Sentry SaaS EU**                              | Monitoring runtime                      | Importante   | Compte personnel Nicolas, 2FA                                    |
| **Functional Software / NameCheap (registrar)** | Domaine snakysec.com                    | **Critique** | Compte personnel Nicolas, 2FA, contact admin technique           |
| **Stoik / Acheel (assurance cyber)**            | Couverture incidents                    | Importante   | Contrat papier + email                                           |
| **Notaire (trustee Shamir)**                    | Détention shares S4-S5                  | **Critique** | Coordonnées dans [01-keyholders.md](./01-keyholders.md)          |

### 6.1 Compte break-glass Entra

Un compte Global Admin **break-glass** (non utilisé en quotidien, MFA exclu,
mot de passe long stocké en KeePass + papier coffre domicile) garantit
l'accès au tenant Entra SnakySec en cas de perte du compte principal.

| Asset        | Détail                                                                            |
| ------------ | --------------------------------------------------------------------------------- |
| UPN          | [breakglass@snakysec.onmicrosoft.com](mailto:breakglass@snakysec.onmicrosoft.com) |
| Mot de passe | 32 chars random, dans KeePass + papier coffre                                     |
| MFA          | **Exclu intentionnellement** (sinon bricked sur perte device)                     |
| Surveillance | Conditional Access alerte sur connexion (Sentry alert)                            |
| Test         | Annuel, login + déconnexion immédiate, journalisé                                 |

## 7. Inventaire dépendances tierces

| Dépendance                 | Type                   | Criticité runtime     | Mitigation                                         |
| -------------------------- | ---------------------- | --------------------- | -------------------------------------------------- |
| Microsoft Graph API        | API externe            | **Critique** (audits) | SLA Microsoft 99.9%, monitoring uptime             |
| Microsoft Entra (auth)     | API externe            | **Critique** (login)  | SLA Microsoft 99.9%, fallback session courte       |
| Functional Software Sentry | SaaS observabilité     | Importante            | Dégradation = perte logs runtime, pas blocage      |
| GitLab.com CI              | SaaS CI/CD             | Importante            | Dégradation = pas de deploy, mais prod tourne      |
| Let's Encrypt              | ACME cert provider     | Modérée               | Failover manuel ZeroSSL si LE down                 |
| OVH/Scaleway S3            | Object Storage backups | Importante            | Multi-fournisseur découplé, single failure tolérée |

## 8. Volumétrie totale estimée (V1)

| Catégorie                  | Volumétrie | Croissance/an                                   |
| -------------------------- | ---------- | ----------------------------------------------- |
| PostgreSQL data            | \~5 GB     | \~2 GB/an (audits + logs)                       |
| Vault data (raft)          | \<100 MB   | Stable                                          |
| Artifacts (audits + GRC)   | \~50 GB    | \~30 GB/an (50 clients × 12 audits + GRC packs) |
| WAL Postgres / 90j         | \~20 GB    | Stable (rétention fixe)                         |
| **Total backups chiffrés** | \~80 GB    | \~50 GB/an                                      |

**Coût stockage estimé** :

* OVH Object Storage Standard : 80 GB × 0.014 €/GB/mois = \~1.10 €/mois
* Scaleway Object Storage Standard : 80 GB × 0.014 €/GB/mois = \~1.10 €/mois
* **Total backups : \~2.20 €/mois** (négligeable)

## 9. Validation

| Version | Date       | Auteur             | Approbateur        |
| ------- | ---------- | ------------------ | ------------------ |
| 1.0     | 2026-04-26 | Nicolas Schiffgens | Nicolas Schiffgens |
