AWS S3: 403 при перечислении объектов, но не при создании объектов
У меня есть политика AWS IAM с двумя правилами, оба из которых относятся к одному и тому же конкретному пути в корзине S3. Пользователи могут только перечислять/управлять файлами внутри этого пути.
Управление действиями работает нормально (создание/загрузка, удаление), но когда дело доходит до LISTING файлов (первое правило), я получаю 403 в этом конкретном пути или что-то внутри него (и, конечно, вне его).
Служба EKS — это приложение Quarkus, чрезвычайно простое и базовое, оно имеет только зависимость от S3 и необходимые вещи. Ни одна другая служба не имеет к нему доступа с использованием этой политики.
Первый пост, поэтому, пожалуйста, простите меня, если мне не хватает какой-либо информации или формата вопроса. Я искал вокруг, но ни одно из связанных решений не сработало для меня, поэтому в моем JSON должно быть что-то не так, особенно при чтении AWS.
Заранее спасибо.
ПРИМЕЧАНИЕ: приведенный ниже код не включает действие, которое работает, а только часть, которая не работает.
{
"Statement": [
{
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::mybucket/folderA/subfolder/*"
],
"Sid": "ListObjectsInBucket"
}
],
"Version": "2012-10-17"
}
Я использовал эту документацию в качестве основы (кроме части доступа к консоли): https://docs.amazonaws.cn/en_us/IAM/latest/UserGuide/reference_policies_examples_s3_rw-bucket-console.html
РЕШЕНИЕ ПОСЛЕ ПРАВИЛЬНОГО ОТВЕТА
Используя полученный ответ, я добавил условие к правилу в строке 12 и далее, указав путь, а строка 10 относится только к имени корзины. Приведенная ниже политика теперь работает как шарм:
{
"Statement": [
{
"Sid": "ListObjectsInBucket",
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::bucket"
],
"Condition": {
"StringLike": {
"s3:prefix": "folderA/subfolder/*"
}
}
}
],
"Version": "2012-10-17"
}
1 ответ
Вы не разрешаете доступ к корзине, но он должен быть там, чтобы иметь возможность отображать содержимое корзины.folderA/subfolder/etc на самом деле является ключом в ведре. Помните, что в графическом интерфейсе вы можете видеть его как папку, но на самом деле все плоско, прямо в корзине в виде пар ключ-значение, где значение является содержимым.
Если вы внимательно посмотрите на ссылку, которую вы отправили, вы увидите, что есть разрешение на ведро выше разрешения для объекта:
{
"Sid": "ListObjectsInBucket",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": ["arn:aws:s3:::bucket-name"]
}