AWS S3 ListMultipartUploads: доступ запрещен

Я проследил за этим блогом, чтобы настроить свои учетные записи AWS IAM и S3 с Федерацией веб-идентификации. Я могу аутентифицировать и получать учетные данные сеанса и токены все в порядке. Я также могу загружать и загружать объекты. Тем не менее, я получаю:

доступ закрыт

в следующем запросе ListMultipartUploads:

var request = new ListMultipartUploadsRequest()
{
    BucketName = bucketName,
    Prefix = $"{UserId}/"
};

var response = await s3Client.ListMultipartUploadsAsync(request);

Политика доступа, прикрепленная к моей роли IAM:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::mybucket/${myidentityprovider:userId}/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:ListBucketMultipartUploads"
            ],
            "Resource": [
                "arn:aws:s3:::mybucket"
            ],
            "Condition": {
                "StringLike": {
                    "s3:prefix": "${myidentityprovider:userId}/"
                }
            }
        }
    ]
}

Как вы видите, у меня есть разрешение "s3:ListBucketMultipartUploads", поэтому пользователь должен иметь возможность выполнять ListMultiPartUploads в своих сегментах. Что я делаю неправильно?

1 ответ

Я вижу ошибку в вашем утверждении префикса,

Это должен быть массив,

"s3: префикс": ["${myidentityprovider:userId}/*"]

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "s3:AbortMultipartUpload",
            "s3:DeleteObject",
            "s3:GetObject",
            "s3:PutObject"
        ],
        "Resource": "arn:aws:s3:::mybucket/${myidentityprovider:userId}/*"
    },
    {
        "Effect": "Allow",
        "Action": [
            "s3:ListBucket",
            "s3:ListBucketMultipartUploads"
        ],
        "Resource": [
            "arn:aws:s3:::mybucket"
        ],
        "Condition": {
            "StringLike": {
                "s3:prefix": ["${myidentityprovider:userId}/*"]
            }
        }
    }
]}
Другие вопросы по тегам