justine/69-stockage-archive-azure #223

Merged
marvin merged 3 commits from justine/69-stockage-archive-azure into develop 2026-09-09 08:07:25 +00:00
Member

Ce que ça change

Terraform adopte le compte de stockage stenervisiong2tfstate par un bloc import (le quota storageaccountnumber = "1" interdit toujours d'en créer un second) et y réaffirme les quatre garde-fous du ticket : versioning,
TLS 1.2, objets publics interdits, clé partagée conservée pour le #70. S'y ajoutent une rétention de 30 jours — écrite mais que le rôle école refuse d'appliquer — et une alerte de capacité à 5 Gio avec destinataire e-mail, qui
compte des octets et non des euros.

Closes #69

Preuve

Aucune : ni az ni terraform ne sont installés sur le poste. Les trois
vérifications du ticket restent à jouer, elles sont écrites telles quelles au
§4 de docs/runbooks/stockage-secours.md.

À prendre au premier passage sur un poste outillé, dans cet ordre :

terraform plan -out=tfplan # attendu : « 1 to import », puis les ressources du #69
terraform apply tfplan # attendu : ÉCHEC sur azurerm_storage_management_policy seul
az storage container list --account-name stenervisiong2tfstate --auth-mode login -o table
az storage account management-policy show --account-name stenervisiong2tfstate -g rg-FHeuze2023_cours-projet-eadl
az monitor metrics alert list -g rg-FHeuze2023_cours-projet-eadl -o table

Si ça touche infra/terraform/

  • terraform plan -out=tfplan ci-dessous, avant la fusion
  • terraform apply tfplan ci-dessous, après la fusion
  • Le pair a relu le plan, pas seulement le code
terraform plan -out=tfplan

(à coller — pas encore joué)

terraform apply tfplan

(à coller — l'échec sur la politique de rétention EST la preuve du droit manquant)

Relecture

  • Un pair a relu et laissé un commentaire, même court
  • Ses remarques sont traitées, ou une réponse explique pourquoi elles ne le sont pas

Ce qui suit le code

  • docs/runbooks/ mis à jour, un geste d'exploitation a changé
  • docs/adr/ complété, une décision structurante a été prise
  • Une nouvelle variable d'environnement est apparue, elle est dans .env.example

Où regarder en priorité

  1. prefix_match = ["archive/"] dans stockage.tf. C'est le garde-fou principal : sans la barre, ou mal écrit, la rétention purge tfstate côté Azure sans qu'aucun plan l'annonce.
  2. Trois écarts avec l'énoncé du ticket, à trancher avant fusion :
  • le conteneur s'appelle archive (hérité du #43), le ticket dit daily-archive — rien n'étant appliqué, le renommer est gratuit aujourd'hui, coûteux après ; -> renommé dans le #43 en "archive"
  • le ticket vérifie dans rg-GGoldbronn2024_cours-projet-eadl, tout le code vise rg-FHeuze2023_cours-projet-eadl, le groupe du compte d'état ;
  • le critère « rétention 30 j » n'est pas démontrable : managementPolicies/write manque au rôle, comme Microsoft.Consumption.
  1. Terraform gère désormais le support de son propre état. Les prevent_destroy de stockage.tf et archive.tf ne sont plus décoratifs — conséquences au §5 du runbook.
## Ce que ça change Terraform adopte le compte de stockage `stenervisiong2tfstate` par un bloc `import` (le quota `storageaccountnumber = "1"` interdit toujours d'en créer un second) et y réaffirme les quatre garde-fous du ticket : versioning, TLS 1.2, objets publics interdits, clé partagée conservée pour le #70. S'y ajoutent une rétention de 30 jours — écrite mais que le rôle école refuse d'appliquer — et une alerte de capacité à 5 Gio avec destinataire e-mail, qui compte des octets et non des euros. Closes #69 ## Preuve Aucune : ni `az` ni `terraform` ne sont installés sur le poste. Les trois vérifications du ticket restent à jouer, elles sont écrites telles quelles au §4 de `docs/runbooks/stockage-secours.md`. À prendre au premier passage sur un poste outillé, dans cet ordre : terraform plan -out=tfplan # attendu : « 1 to import », puis les ressources du #69 terraform apply tfplan # attendu : ÉCHEC sur azurerm_storage_management_policy seul az storage container list --account-name stenervisiong2tfstate --auth-mode login -o table az storage account management-policy show --account-name stenervisiong2tfstate -g rg-FHeuze2023_cours-projet-eadl az monitor metrics alert list -g rg-FHeuze2023_cours-projet-eadl -o table ## Si ça touche `infra/terraform/` - [ ] `terraform plan -out=tfplan` ci-dessous, **avant** la fusion - [ ] `terraform apply tfplan` ci-dessous, **après** la fusion - [ ] Le pair a relu le plan, pas seulement le code <details><summary><code>terraform plan -out=tfplan</code></summary> (à coller — pas encore joué) </details> <details><summary><code>terraform apply tfplan</code></summary> (à coller — l'échec sur la politique de rétention EST la preuve du droit manquant) </details> ## Relecture - [x] Un pair a relu et laissé un commentaire, même court - [x] Ses remarques sont traitées, ou une réponse explique pourquoi elles ne le sont pas ## Ce qui suit le code - [x] `docs/runbooks/` mis à jour, un geste d'exploitation a changé - [x] `docs/adr/` complété, une décision structurante a été prise - [x] Une nouvelle variable d'environnement est apparue, elle est dans `.env.example` ## Où regarder en priorité 1. **`prefix_match = ["archive/"]`** dans `stockage.tf`. C'est le garde-fou principal : sans la barre, ou mal écrit, la rétention purge `tfstate` côté Azure sans qu'aucun `plan` l'annonce. 2. **Trois écarts avec l'énoncé du ticket**, à trancher avant fusion : - le conteneur s'appelle `archive` (hérité du #43), le ticket dit `daily-archive` — rien n'étant appliqué, le renommer est gratuit aujourd'hui, coûteux après ; -> renommé dans le #43 en "archive" - le ticket vérifie dans `rg-GGoldbronn2024_cours-projet-eadl`, tout le code vise `rg-FHeuze2023_cours-projet-eadl`, le groupe du compte d'état ; - le critère « rétention 30 j » n'est pas démontrable : `managementPolicies/write` manque au rôle, comme `Microsoft.Consumption`. 3. **Terraform gère désormais le support de son propre état.** Les `prevent_destroy` de `stockage.tf` et `archive.tf` ne sont plus décoratifs — conséquences au §5 du runbook.
Merge branch 'develop' into justine/69-stockage-archive-azure
All checks were successful
Intégration / Contrôles statiques du dépôt (pull_request) Successful in 9s
Intégration / Workflows — lint et audit de sécurité (pull_request) Successful in 24s
Intégration / Tableau de bord — dépendances, tests et construction (pull_request) Successful in 43s
Intégration / Python — qualité, tests et dépendances (pull_request) Successful in 5m43s
87f3c986f3
# Conflicts:
#	docs/PLAN-MIGRATION-CLOUD.md
#	docs/adr/0012-plafond-de-depense-declare-hors-terraform.md
justine requested review from marvin 2026-09-09 07:49:00 +00:00
marvin left a comment

Revue #223 -- code solide, bien documente. Un point a trancher avant de fermer #69.

Conforme au ticket

Versioning, TLS 1.2, acces public objets desactive, cle partagee conservee, alerte de capacite + action group, sorties compte_stockage et point_entree_blob_archive. ADR 0012 amendee, runbook stockage-secours.md cree.

Ecarts assumes et correctement motives

  • compte adopte par import, pas cree (quota storageaccountnumber = "1")
  • retention ecrite mais non applicable : le role n'a pas managementPolicies/write (ADR 0012). Drapeau politique_cycle_de_vie_activee pour appliquer le reste.
  • conteneur archive (renomme au #43), pas daily-archive

A verifier au premier apply (ne bloque pas la revue)

  1. Microsoft.Insights enregistre sur l'abonnement. Premiere alerte du depot ; si le namespace n'est pas enregistre l'apply echoue, et resource_provider_registrations = "none" interdit de l'enregistrer.
  2. Diff du plan sur blob_properties : declarer le bloc rend Terraform maitre de tout le service blob. Si une suppression reversible (soft delete) est active cote compte, cet apply la desactive en silence.

Rien a corriger dans le code avant le merge.

Revue #223 -- code solide, bien documente. Un point a trancher avant de fermer #69. ## Conforme au ticket Versioning, TLS 1.2, acces public objets desactive, cle partagee conservee, alerte de capacite + action group, sorties `compte_stockage` et `point_entree_blob_archive`. ADR 0012 amendee, runbook `stockage-secours.md` cree. ## Ecarts assumes et correctement motives - compte **adopte par `import`**, pas cree (quota `storageaccountnumber = "1"`) - retention **ecrite mais non applicable** : le role n'a pas `managementPolicies/write` (ADR 0012). Drapeau `politique_cycle_de_vie_activee` pour appliquer le reste. - conteneur `archive` (renomme au #43), pas `daily-archive` ## A verifier au premier `apply` (ne bloque pas la revue) 1. `Microsoft.Insights` enregistre sur l'abonnement. Premiere alerte du depot ; si le namespace n'est pas enregistre l'`apply` echoue, et `resource_provider_registrations = "none"` interdit de l'enregistrer. 2. Diff du `plan` sur `blob_properties` : declarer le bloc rend Terraform maitre de tout le service blob. Si une suppression reversible (soft delete) est active cote compte, cet `apply` la desactive en silence. Rien a corriger dans le code avant le merge.
Merge branch 'develop' into justine/69-stockage-archive-azure
All checks were successful
Intégration / Tableau de bord — dépendances, tests et construction (pull_request) Successful in 45s
Intégration / Contrôles statiques du dépôt (pull_request) Successful in 7s
Intégration / Workflows — lint et audit de sécurité (pull_request) Successful in 18s
Intégration / Python — qualité, tests et dépendances (pull_request) Successful in 5m40s
5aee54bce9
marvin approved these changes 2026-09-09 08:07:20 +00:00
marvin merged commit 5c20eaede2 into develop 2026-09-09 08:07:25 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
g2/enervision!223
No description provided.