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}/*"]
}
}
}
]}