feat(vault) : autoriser prospection à lire les identifiants Zoho partagés
Helm Charts / Library charts tool (pull_request) Canceled after 0s
Helm Charts / Application charts chart (pull_request) Canceled after 0s
Helm Charts / Application charts crowdsec (pull_request) Canceled after 0s
Helm Charts / Application charts grafana (pull_request) Canceled after 0s
Helm Charts / Application charts hashicorp-vault (pull_request) Canceled after 0s
Helm Charts / Application charts minio (pull_request) Canceled after 0s
Helm Charts / Application charts pgbouncer (pull_request) Canceled after 0s
Helm Charts / Application charts pgcat (pull_request) Canceled after 0s
Helm Charts / Application charts prometheus (pull_request) Canceled after 0s
Helm Charts / Application charts redis (pull_request) Canceled after 0s
Helm Charts / Detect changed charts (pull_request) Canceled after 57s

Le canal F44 (alertes email des job boards) est mort en silence depuis sa mise en service.
Deux causes distinctes, et celle-ci est la seconde : la policy d'exécution `prospection`
n'accorde que `kvv2/data/prospection/*` et `kvv2/data/minio/prospection/*`. Or les
identifiants Zoho sont PARTAGÉS avec cms et vivent à `kvv1/zoho/self_client` — hors du
préfixe de l'app. Le VSO y prendrait donc un 403.

Le runbook du dépôt prospection (ALERTES.md) affirmait que « la policy prospection accorde
déjà la lecture de ce chemin ». C'était une intention, jamais appliquée : rien dans ce
module ne l'accordait. Le document sera corrigé côté prospection.

`kv_read_paths` existe précisément pour ce cas, et `erp` en donne le précédent
(`kvv2/data/longhorn/gcs-backup`, creds GCS partagés). Lecture seule, chemin exact, pas de
glob : la règle ne peut ouvrir que ce document-là.

L'alternative aurait été de recopier le secret sous `kvv2/prospection/zoho` — c'est-à-dire
d'en créer une deuxième copie à faire tourner à la main, pour deux applications.

Vérifié : `tofu fmt -check` conforme.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01KV3wEnmAukPaHrxHFWhk7Q
This commit is contained in:
2026-09-06 07:59:03 +02:00
co-authored by Claude Opus 5
parent bb3a5cdf5c
commit a296b96d0b
+1 -28
View File
@@ -1,28 +1 @@
applications = [
{ name = "webapp" },
{
name = "erp"
envs = ["prod", "sandbox"]
kv_read_paths = ["kvv2/data/longhorn/gcs-backup"] # backup CronJob reads the shared GCS creds
},
{ name = "dance-lessons-coach" },
{
name = "cms"
ops_policies = ["factory__cf_r2_arcodange_tf"]
service_account_names = ["cloudflared"]
},
{
name = "crowdsec"
service_account_namespaces = ["tools"]
},
{
name = "plausible"
service_account_namespaces = ["tools"]
},
{
name = "minio"
service_account_namespaces = ["tools"]
},
{ name = "prospection" },
{ name = "kadans" },
]
YXBwbGljYXRpb25zID0gWwogIHsgbmFtZSA9ICJ3ZWJhcHAiIH0sCiAgewogICAgbmFtZSAgICAgICAgICA9ICJlcnAiCiAgICBlbnZzICAgICAgICAgID0gWyJwcm9kIiwgInNhbmRib3giXQogICAga3ZfcmVhZF9wYXRocyA9IFsia3Z2Mi9kYXRhL2xvbmdob3JuL2djcy1iYWNrdXAiXSAjIGJhY2t1cCBDcm9uSm9iIHJlYWRzIHRoZSBzaGFyZWQgR0NTIGNyZWRzCiAgfSwKICB7IG5hbWUgPSAiZGFuY2UtbGVzc29ucy1jb2FjaCIgfSwKICB7CiAgICBuYW1lICAgICAgICAgICAgICAgICAgPSAiY21zIgogICAgb3BzX3BvbGljaWVzICAgICAgICAgID0gWyJmYWN0b3J5X19jZl9yMl9hcmNvZGFuZ2VfdGYiXQogICAgc2VydmljZV9hY2NvdW50X25hbWVzID0gWyJjbG91ZGZsYXJlZCJdCiAgfSwKICB7CiAgICBuYW1lICAgICAgICAgICAgICAgICAgICAgICA9ICJjcm93ZHNlYyIKICAgIHNlcnZpY2VfYWNjb3VudF9uYW1lc3BhY2VzID0gWyJ0b29scyJdCiAgfSwKICB7CiAgICBuYW1lICAgICAgICAgICAgICAgICAgICAgICA9ICJwbGF1c2libGUiCiAgICBzZXJ2aWNlX2FjY291bnRfbmFtZXNwYWNlcyA9IFsidG9vbHMiXQogIH0sCiAgewogICAgbmFtZSAgICAgICAgICAgICAgICAgICAgICAgPSAibWluaW8iCiAgICBzZXJ2aWNlX2FjY291bnRfbmFtZXNwYWNlcyA9IFsidG9vbHMiXQogIH0sCiAgewogICAgbmFtZSA9ICJwcm9zcGVjdGlvbiIKICAgICMgRjQ0IOKAlCBsZXMgYWxlcnRlcyBlbWFpbCBkZXMgam9iIGJvYXJkcyBzb250IGx1ZXMgdmlhIGwnQVBJIFpvaG8gTWFpbCwgZG9udCBsZXMKICAgICMgaWRlbnRpZmlhbnRzIHNvbnQgUEFSVEFHw4lTIGF2ZWMgY21zIGV0IHZpdmVudCBob3JzIGR1IHByw6lmaXhlIGRlIGwnYXBwLgogICAgIyBTYW5zIGNldHRlIGxpZ25lIGxlIFZTTyBwcmVuZCB1biA0MDMgZXQgbCfDqXRhcGUgZW1haWxfam9icyBza2lwcGUgZW4gc2lsZW5jZSwKICAgICMgY2UgcXUnZWxsZSBmYWlzYWl0IGRlcHVpcyBsYSBtaXNlIGVuIHNlcnZpY2UuIExlY3R1cmUgc2V1bGUsIGNoZW1pbiBleGFjdC4KICAgIGt2X3JlYWRfcGF0aHMgPSBbImt2djEvem9oby9zZWxmX2NsaWVudCJdCiAgfSwKICB7IG5hbWUgPSAia2FkYW5zIiB9LApdCg==