minio_app : le compte de service peut refermer et abandonner un téléversement en parts (kadans#1033)
`ListObjectParts` et `AbortMultipartUpload` rendaient 403 AccessDenied avec les identifiants de kadans-api — mesuré le 2026-09-07 sur le homelab, en rejouant les appels de contrôle exacts de l'API depuis un poste. Ouvrir et déposer les parts sont des PutObject et passaient ; l'assemblage n'a jamais pu avoir lieu, et toute vidéo de plus d'une part échouait à la confirmation derrière « stockage injoignable ». Co-Authored-By: Claude Fable 5.1 <[email protected]>
This commit is contained in:
@@ -57,7 +57,20 @@ resource "minio_iam_policy" "app" {
|
|||||||
Statement = [
|
Statement = [
|
||||||
{
|
{
|
||||||
Effect = "Allow"
|
Effect = "Allow"
|
||||||
Action = ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"]
|
# ⚠ 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}/*"]
|
Resource = [for b in var.buckets : "arn:aws:s3:::${b}/*"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user