docs(minio) — le raisonnement part dans l'ADR, le code garde ce qui protège
Helm Charts / Detect changed charts (push) Successful in 22s
Helm Charts / Detect changed charts (pull_request) Successful in 16s
MinIO / Auth with gitea for vault (push) Failing after 8m33s
MinIO / Tofu - minio IAC (push) Has been skipped
MinIO / Auth with gitea for vault (pull_request) Failing after 8m32s
MinIO / Tofu - minio IAC (pull_request) Has been skipped
Hashicorp Vault / Auth with gitea for vault (pull_request) Failing after 8m32s
Hashicorp Vault / Tofu - Vault IAC (pull_request) Has been skipped
Helm Charts / Library charts tool (push) Has been skipped
Helm Charts / Library charts tool (pull_request) Has been skipped
Hashicorp Vault / Auth with gitea for vault (push) Failing after 8m31s
Hashicorp Vault / Tofu - Vault IAC (push) Has been skipped
Helm Charts / Application charts pgcat (push) Has been skipped
Helm Charts / Application charts pgcat (pull_request) Has been skipped
Helm Charts / Detect changed charts (push) Successful in 22s
Helm Charts / Detect changed charts (pull_request) Successful in 16s
MinIO / Auth with gitea for vault (push) Failing after 8m33s
MinIO / Tofu - minio IAC (push) Has been skipped
MinIO / Auth with gitea for vault (pull_request) Failing after 8m32s
MinIO / Tofu - minio IAC (pull_request) Has been skipped
Hashicorp Vault / Auth with gitea for vault (pull_request) Failing after 8m32s
Hashicorp Vault / Tofu - Vault IAC (pull_request) Has been skipped
Helm Charts / Library charts tool (push) Has been skipped
Helm Charts / Library charts tool (pull_request) Has been skipped
Hashicorp Vault / Auth with gitea for vault (push) Failing after 8m31s
Hashicorp Vault / Tofu - Vault IAC (push) Has been skipped
Helm Charts / Application charts pgcat (push) Has been skipped
Helm Charts / Application charts pgcat (pull_request) Has been skipped
Les décisions de conception (qui déclare, qui détient, pourquoi les octets ne passent pas par l'API) vivent désormais dans `factory/doc/adr/20260726-stockage-objet-minio.md`. Le code ne garde que ce qu'un relecteur ne peut pas deviner et qui l'empêcherait de casser quelque chose : l'absence VOLONTAIRE de s3:GetObject/PutObject dans la politique du provisionneur, l'absence VOLONTAIRE de basic-auth sur l'ingress S3, le caractère inconditionnel de la règle Vault, et l'avertissement sur les noms d'actions MinIO non éprouvés. Chaque fichier pointe l'ADR. 283 → 230 lignes sur minio/iac. tofu fmt propre, tofu validate réussi sur les deux racines. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01CoafGWmRVESaWX819USUUA
This commit is contained in:
@@ -1,21 +1,10 @@
|
||||
# ── Le compte PROVISIONNEUR : ce que `tools` doit fournir en plus du module ───
|
||||
# Compte de PROVISIONNEMENT : crée buckets, politiques et comptes de service —
|
||||
# aucun droit sur les objets. C'est lui que lisent les rôles CI des apps, pour
|
||||
# qu'elles déclarent leurs buckets sans qu'on leur confie le root.
|
||||
# Décisions : factory/doc/adr/20260726-stockage-objet-minio.md
|
||||
#
|
||||
# Une app qui déclare ses buckets depuis son propre dépôt doit pouvoir les
|
||||
# créer — donc disposer de droits d'ADMINISTRATION sur MinIO. Lui donner le
|
||||
# ROOT serait absurde : le root lit et écrit TOUS les objets de TOUTES les apps.
|
||||
#
|
||||
# Ce compte-ci ne peut que PROVISIONNER : créer un bucket, une politique, un
|
||||
# compte de service, et les attacher. Il n'a AUCUN droit de lecture ou
|
||||
# d'écriture sur les objets. Une app compromise pourrait créer des buckets —
|
||||
# une nuisance —, pas lire les vidéos d'une autre.
|
||||
#
|
||||
# Le root, lui, reste dans `kvv2/minio/config`, que seul le rôle CI `minio`
|
||||
# peut lire.
|
||||
#
|
||||
# ⚠ NON VÉRIFIÉ CONTRE LE SERVEUR : les noms d'actions d'administration MinIO
|
||||
# ci-dessous viennent de la documentation, pas d'un essai — je n'ai pas
|
||||
# d'identifiants admin en main. Le PREMIER `apply` les confirmera ou les
|
||||
# corrigera ; c'est le seul point de cette PR que je ne peux pas prouver ici.
|
||||
# ⚠ Noms d'actions issus de la documentation MinIO, NON éprouvés contre le
|
||||
# serveur : le premier apply les confirmera ou les corrigera.
|
||||
resource "minio_iam_policy" "provisioner" {
|
||||
name = "provisioner"
|
||||
policy = jsonencode({
|
||||
@@ -37,8 +26,7 @@ resource "minio_iam_policy" "provisioner" {
|
||||
Resource = ["arn:aws:s3:::*"]
|
||||
},
|
||||
{
|
||||
# Créer et inspecter un bucket — mais PAS lire ni écrire ses objets :
|
||||
# `s3:GetObject` et `s3:PutObject` sont volontairement absents.
|
||||
# s3:GetObject / s3:PutObject volontairement ABSENTS.
|
||||
Effect = "Allow"
|
||||
Action = ["s3:CreateBucket", "s3:DeleteBucket", "s3:ListAllMyBuckets", "s3:GetBucketLocation", "s3:GetBucketPolicy", "s3:PutBucketPolicy"]
|
||||
Resource = ["arn:aws:s3:::*"]
|
||||
@@ -63,9 +51,6 @@ resource "minio_iam_user_policy_attachment" "provisioner" {
|
||||
policy_name = minio_iam_policy.provisioner.id
|
||||
}
|
||||
|
||||
# Lisible par le rôle CI de CHAQUE app (règle générique ajoutée à `app_policy`) :
|
||||
# c'est ce qui permet à une app de provisionner ses propres buckets sans qu'on
|
||||
# lui confie le root.
|
||||
resource "vault_kv_secret_v2" "provisioner" {
|
||||
mount = "kvv2"
|
||||
name = "minio/provisioner"
|
||||
|
||||
Reference in New Issue
Block a user