minio_app : le compte de service peut refermer et abandonner un téléversement en parts (kadans#1033) (#35)
Helm Charts / Detect changed charts (push) Successful in 1m2s
Helm Charts / Library charts tool (push) Skipped
Helm Charts / Application charts chart (push) Skipped
Helm Charts / Application charts crowdsec (push) Skipped
Helm Charts / Application charts grafana (push) Skipped
Helm Charts / Application charts hashicorp-vault (push) Skipped
Helm Charts / Application charts pgbouncer (push) Skipped
Helm Charts / Application charts pgcat (push) Skipped
Helm Charts / Application charts prometheus (push) Skipped
Helm Charts / Application charts redis (push) Skipped
Helm Charts / Application charts minio (push) Successful in 11s
Helm Charts / Detect changed charts (push) Successful in 1m2s
Helm Charts / Library charts tool (push) Skipped
Helm Charts / Application charts chart (push) Skipped
Helm Charts / Application charts crowdsec (push) Skipped
Helm Charts / Application charts grafana (push) Skipped
Helm Charts / Application charts hashicorp-vault (push) Skipped
Helm Charts / Application charts pgbouncer (push) Skipped
Helm Charts / Application charts pgcat (push) Skipped
Helm Charts / Application charts prometheus (push) Skipped
Helm Charts / Application charts redis (push) Skipped
Helm Charts / Application charts minio (push) Successful in 11s
This commit was merged in pull request #35.
This commit is contained in:
@@ -41,6 +41,10 @@ des variables dans le Deployment.
|
||||
- les **téléversements abandonnés** sont ramassés au bout d'un jour (voir plus
|
||||
bas : c'est de l'hygiène de protocole, pas un choix de l'app) ;
|
||||
- le compte de service ne peut **rien** toucher d'autre que ces buckets-là ;
|
||||
- le compte de service peut **refermer et abandonner un téléversement en
|
||||
parts** — `ListMultipartUploadParts` et `AbortMultipartUpload`, les deux
|
||||
actions que `PutObject` ne couvre pas (sans elles, l'assemblage rend 403 et
|
||||
aucun objet de plus d'une part n'arrive jamais — mesuré le 2026-09-07) ;
|
||||
- ses clés vont dans `kvv2/minio/<app>`, que le module Vault central autorise
|
||||
déjà l'app à lire (règle **inconditionnelle** : le chemin porte le nom de
|
||||
l'app, donc il ne peut exposer que ses propres clés).
|
||||
|
||||
@@ -56,8 +56,21 @@ resource "minio_iam_policy" "app" {
|
||||
Version = "2012-10-17"
|
||||
Statement = [
|
||||
{
|
||||
Effect = "Allow"
|
||||
Action = ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"]
|
||||
Effect = "Allow"
|
||||
# ⚠ LES DEUX ACTIONS DU MULTIPART QUE `s3:PutObject` NE COUVRE PAS — mesuré
|
||||
# le 2026-09-07 sur le homelab, avec les identifiants de kadans-api rejoués
|
||||
# depuis un poste : ouvrir un téléversement et déposer ses parts passent
|
||||
# (ce sont des PutObject), mais `ListObjectParts` rend 403 AccessDenied.
|
||||
# L'app ne pouvait donc JAMAIS refermer un téléversement en parts : toute
|
||||
# vidéo qui dépasse la taille d'une part échouait à l'assemblage, à tous
|
||||
# les coups, derrière un « stockage injoignable » qui ne nommait rien.
|
||||
# `AbortMultipartUpload` était refusé pareil : l'app ne pouvait pas non
|
||||
# plus abandonner ce qu'elle avait ouvert — seule la règle de cycle de vie
|
||||
# ci-dessus ramassait, un jour plus tard.
|
||||
Action = [
|
||||
"s3:GetObject", "s3:PutObject", "s3:DeleteObject",
|
||||
"s3:ListMultipartUploadParts", "s3:AbortMultipartUpload",
|
||||
]
|
||||
Resource = [for b in var.buckets : "arn:aws:s3:::${b}/*"]
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user