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"]
    }
Другие вопросы по тегам