Рейтинг:0

Политика сегментов AWS S3 для получения и загрузки

флаг si

У меня есть два ведра, каждое со своими целями. Пока не могу разобраться в сложной настройке параметров ведра. Кажется, есть три вещи для настройки

  1. Заблокировать публичный доступ
  2. Политика корзины
  3. ACL-список

Я знаю, что если я выключу (1), все, что я хочу сделать, просто сработает. Несмотря на то, что это четыре самые бессмысленные настройки, которые я когда-либо видел (зачем мне ограничивать доступ к корзине на основе того, когда политика была изменена???)

Кажется, что то, что я добавляю к (2), не имеет большого значения. Например, у меня есть одна политика, которая разрешает только GetObject, но я могу DeleteObject и PutObject из SDK. У меня есть другая политика, которая разрешает DeleteObject, GetObject и PutObject, но работает только удаление, а установка выдает отказ в доступе (из учетной записи IAM, которая имеет административный доступ ко всему на свете).

Я даже не знаю смысла (3). Зачем мне когда-либо разрешать разрешения на Любые Пользователь АВС? Тем не мение..

У меня есть два ведра с двумя целями, и я не могу сообразить, что делать.

A: общедоступная корзина для статического веб-сайта.

Для этого у меня есть Бок с публичным доступом к ВЫКЛ, и такая политика (которая, я думаю, вообще ничего не делает). Любой может просматривать содержимое корзины (хорошо!), но эта политика не должна разрешать никакие объекты PutObject, хотя и разрешает.

{
    «Версия»: «2012-10-17»,
    "Идентификатор": "Политика1632669906301",
    "Заявление": [
        {
            "Сид": "Stmt1632669869776",
            «Эффект»: «Разрешить»,
            "Главный": "*",
            «Действие»: «s3: GetObject»,
            "Ресурс": "arn:aws:s3:::publicwebsite/*"
        }
    ]
}

Почему я могу загружать и удалять, когда определен только GetObject?

B: безопасное ведро для резервных копий

Это ведро предназначено для моего приложения, чтобы отправлять резервные копии данных. Так что единственное, что должно иметь возможность читать/писать, это мое приложение. Но если я включу Блокировать общий доступ, я не могу загружать, но могу удалить. Опять же, в этом нет никакого смысла. Если я выключу Блокировать общий доступ, я смогу сделать все это. Вот политика

{
    «Версия»: «2012-10-17»,
    "Идентификатор": "Политика1635858319261",
    "Заявление": [
        {
            "Сид": "Stmt1635858317672",
            «Эффект»: «Разрешить»,
            "Главный": {
                «AWS»: «arn:aws:iam::XXXXXXXXX:user/backup-user»
            },
            "Действие": [
                "s3:УдалитьОбъект",
                "s3:ПолучитьОбъект",
                "s3:ПоместитьОбъект"
            ],
            "Ресурс": "arn:aws:s3:::backups/*"
        }
    ]
}

Почему я могу удалить, но не поставить?


Кроме того, Амазонка АДАМАНТ о постоянном блокировании общего доступа, но вы даже не можете изменить политику Bucket, если она включена! Это безумие!!!!!!!


Вот мои выводы после некоторых тестов.

Мои аккаунты такие

  1. учетная запись root, владелец ведра
  2. Аккаунт IAM (администратор) с административным всем
  3. IAM-аккаунт (Пользователь) без каких-либо полномочий вообще что-либо делать

Политики корзин см. во второй публикации выше.

Я изучаю, что делает комбинация политики и параметров блокировки общего доступа. Они по-прежнему не имеют никакого смысла.

Дело 1

  • Блокировать весь публичный доступ: ВЫКЛ.
  • Политика корзины: ПУСТО
  • ACL: владелец корзины (список, запись | чтение, запись)

Результат: Администратор может загружать и удалять, Пользователь ничего не может сделать

Случай 2

  • Заблокировать весь публичный доступ:
    • [x] новые списки контроля доступа
  • Политика корзины: ПУСТО
  • ACL: владелец корзины (список, запись | чтение, запись)

Результат: Администратор может удалить, но не загрузить, Пользователь ничего не может сделать

Случай 3

  • Заблокировать весь публичный доступ:
    • [x] новые списки контроля доступа
    • [x] любые списки контроля доступа
  • Политика корзины: ПУСТО
  • ACL: владелец корзины (список, запись | чтение, запись)

Результат: Администратор может удалить, но не загрузить, Пользователь ничего не может сделать

Случай 4

  • Заблокировать весь публичный доступ:
    • [x] новые списки контроля доступа
    • [x] любые списки контроля доступа
    • [x] новые политики точек доступа
  • Политика корзины: ПУСТО
  • ACL: владелец корзины (список, запись | чтение, запись)

Результат: Администратор может удалить, но не загрузить, Пользователь ничего не может сделать

Случай 5

  • Блокировать весь публичный доступ: ВКЛ.
  • Политика корзины: ПУСТО
  • ACL: владелец корзины (список, запись | чтение, запись)

Результат: Администратор может удалить, но не загрузить, Пользователь ничего не может сделать

Заключение: Блокировать общий доступ, если установлено значение ВКЛ, разрешает все. Любая другая конфигурация позволяет удалить (а может и больше, например получить), но не поставить.


Случай 6

  • Блокировать весь публичный доступ: ВЫКЛ.
  • Политика корзины: Администратор (получить/поместить/удалить объект) Пользователь (ничего)
  • ACL: владелец корзины (список, запись | чтение, запись)

Результат: Администратор может загружать и удалять, Пользователь ничего не может сделать

Случай 7

  • Заблокировать весь публичный доступ:
    • [x] новые списки контроля доступа
  • Политика корзины: Администратор (получить/поместить/удалить объект) Пользователь (ничего)
  • ACL: владелец корзины (список, запись | чтение, запись)

Результат: Администратор может удалить, Пользователь ничего не может сделать

Случай 8

  • Заблокировать весь публичный доступ:
    • [x] новые списки контроля доступа
    • [x] любые списки контроля доступа
  • Политика корзины: Администратор (получить/поместить/удалить объект) Пользователь (ничего)
  • ACL: владелец корзины (список, запись | чтение, запись)

Результат: Администратор может удалить, Пользователь ничего не может сделать

Случай 9

  • Заблокировать весь публичный доступ:
    • [x] новые списки контроля доступа
    • [x] любые списки контроля доступа
    • [x] новые политики точек доступа
  • Политика корзины: Администратор (получить/поместить/удалить объект) Пользователь (ничего)
  • ACL: владелец корзины (список, запись | чтение, запись)

Результат: Администратор может удалить, Пользователь ничего не может сделать

Случай 10

  • Блокировать весь публичный доступ: ВКЛ.
  • Политика корзины: Администратор (получить/поместить/удалить объект) Пользователь (ничего)
  • ACL: владелец корзины (список, запись | чтение, запись)

Результат: Администратор может удалить, Пользователь ничего не может сделать

Заключение: политика ведра буквально ни на что не влияет


TLDR: кажется, что политика Bucket ничего не делает.Только блокировать общий доступ имеет какой-либо измеримый эффект, и единственный полезный вариант — отключить его. Я также удалил свою политику корзины из общедоступной корзины, и это также ничего не изменило.

Мой вывод таков: либо политика Bucket нарушена, либо документации недостаточно, либо сами настройки противоречат интуиции и на самом деле не делают того, о чем говорят. Или любая комбинация чего угодно.

На данный момент я бы предпочел разместить свой контент на FTP-сервере в моем подвале.

флаг vn
Что вы используете для размещения объектов? Я видел библиотеки, которые требуют, например, не только PutObject, но и PutObjectAcl.
pbuzz007 avatar
флаг si
Пакет SDK для Node.js
флаг vn
Можете ли вы показать конкретные используемые вызовы и полученное конкретное сообщение об ошибке?
pbuzz007 avatar
флаг si
Ничего особенного в этом нет. Я вызываю функцию s3.upload, предоставленную AWS SDK, и получаю сообщение об ошибке «Отказано в доступе». Тем не менее, я могу удалить просто отлично.
Tim avatar
флаг gp
Tim
К сожалению, у нас недостаточно информации, чтобы помочь здесь. Чтобы полностью изучить это, я хотел бы увидеть разрешения IAM, политику корзины, ACL корзины для каждой корзины, блокировать настройки общего доступа, затем выполнить команду CLI и результаты. Было бы много работы.С этим может быть сложно работать, но я могу заверить вас, что это работает так, как задокументировано. Вы проходили какое-либо обучение AWS? Либо специально для безопасности S3, либо, что еще лучше, для помощника архитектора AWS / обучения безопасности AWS. AWS — очень сложная корпоративная платформа, люди тратят годы на ее изучение.
pbuzz007 avatar
флаг si
Я перечислил комбинации трех основных настроек разрешений корзины. Если кому-то нужны годы, чтобы понять это, это довольно нелепо. Мне просто нужна приватная корзина с CRUD для одного пользователя IAM и ни для кого другого, и одна корзина с GET для всех и CRUD для одного пользователя IAM и больше ни для кого. Я буквально перепробовал все возможные комбинации, и результаты ерунда. Блокировать публичный доступ — одна из самых плохо определенных и сформулированных настроек, которые я могу себе представить.
pbuzz007 avatar
флаг si
Я также перечислил все, что вы просили, включая настройки IAM (Администратор = все, Пользователь = ничего). Команды запускаются из Node JS SDK, и результаты просто «Отказано в доступе» или успех, точка. Там честно не так много. Это просто не работает, как описано. Политики не работают должным образом.

Ответить или комментировать

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