AWS S3: произошла ошибка (AccessDenied) при вызове операции GetObject: доступ запрещен - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть учетная запись AWS с разрешениями на чтение / запись, как показано ниже: enter image description here

Я хотел бы сделать так, чтобы пользователь IAM мог загружать файлы с S3но я получаю отказ в доступе при выполнении aws s3 sync s3://<bucket_name> . Я пробовал разные вещи, но безрезультатно.Несколько шагов, которые я сделал:

  1. Создал пользователя с именем s3-full-access
  2. Выполнил aws configure в моем CLI и ввел сгенерированный идентификатор ключа доступа и секретный ключ доступа дляуказанный выше пользователь
  3. Создал политику сегмента (показанную ниже), которая, как я надеялся, предоставляет доступ моему пользователю, созданному на первом шаге.

enter image description here

В моем ведре есть папка с именем AffectivaLogs, в которую различные пользователи анонимно добавляли файлы, и кажется, что, хотя корзина общедоступна, папка внутри нее нет, и я даже не могу сделать ее общедоступной,и это приводит к следующей ошибке.

enter image description here

Ниже приведены настройки общего доступа:

enter image description here

Обновление: я обновил политику корзины следующим образом, но она не работает.

enter image description here

1 Ответ

0 голосов
/ 18 февраля 2019

Чтобы проверить ситуацию, я сделал следующее:

  • Создан Пользователь IAM без прикрепленных политик
  • Создан корзина Amazon S3
  • Выключено S3 блокировать настройки общего доступа:
    • Блокировать новые политики общего доступа
    • Блокировать публичный и кросс-аккаунт доступесли у корзины есть публичные политики
  • Добавлена ​​ Политика корзины , предоставляющая s3:* доступ к содержимому корзины для IAMПользователь

Затем я запустил aws s3 sync и получил Access Denied.

Затем я изменил политику, чтобы также разрешить доступ к самому контейнеру :

{
    "Id": "Policy",
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "statement",
            "Action": "s3:*",
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::my-bucket/*",
                "arn:aws:s3:::my-bucket"
            ],
            "Principal": {
                "AWS": [
                    "arn:aws:iam::123456789012:user/stack-user"
                ]
            }
        }
    ]
}

Это сработало.

Итог: Также добавьте разрешения на доступ к корзине , в дополнение к содержимому корзины..(Я подозреваю, что это потому, что aws s3 sync требует перечисления содержимого сегмента, в дополнение к доступу к самим объектам.)

...