Поиск по сайту:

Что на самом деле делают все разрешения AWS IAM?


Консоль управления AWS IAM содержит более 500 назначаемых политик на основе разрешений, которые вы можете предоставить, чтобы разрешить пользователям IAM доступ к различным сервисам. Что они все делают, и как вы можете настроить свои собственные?

Вы всегда должны точно настраивать свои разрешения

Во-первых, это ужасная идея использовать свои учетные данные root для всего. AWS рекомендует создать пользователя IAM-администратора с доступом к консоли (с помощью которого вы можете войти в систему) для управления своей учетной записью и использовать учетные данные root только для обслуживания учетной записи.

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

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

Как правило, всякий раз, когда вам нужно связать AWS CLI с удаленным компьютером, вы должны создать нового пользователя IAM и предоставить ему только те разрешения, которые ему необходимы для работы. Также рекомендуется перенастроить свой личный интерфейс командной строки с помощью:

aws configure

чтобы соответствовать разрешениям, которые вы собираетесь использовать на сервере, чтобы не столкнуться с проблемами несоответствия разрешений при тестировании.

Какие разрешения следует использовать?

Вы можете просмотреть этот список разрешений в консоли управления IAM на вкладке «Политики»:

Как правило, для большинства служб существует разрешение «только для чтения» и разрешение «полный доступ». Например, S3 имеет «AmazonS3FullAccess» и «AmazonS3ReadOnlyAccess». Все они управляются Amazon, но большинство из них здесь просто в качестве шаблонов. Гораздо лучше создавать свои собственные политики.

Например, каждое разрешение включает определенный набор действий; вы можете просмотреть их более подробно, щелкнув по ним и выбрав «JSON», который отображает полный список всего, что разрешено. Например, политика «AmazonDMSRedshiftS3Role» предоставляет следующие разрешения:

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

Вы должны создать свои собственные политики

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

Нажмите «Создать политику» в браузере политик. Вы можете редактировать их как JSON, но визуальный редактор намного проще. Выберите услугу; мы выбрали S3 для этого примера. Каждая политика применяется к определенной службе; если вам нужно дать приложению несколько разрешений, вам нужно создать отдельные политики для каждой службы.

Затем вы выбираете нужные разрешения на основе различных уровней доступа (список, чтение, тег, запись). Вам нужен «PutObject», который позволяет загружать объекты. Здесь вы можете увидеть, насколько плохой идеей является предоставление доступа на запись такому приложению; ему действительно нужно только одно разрешение, но если бы у него был полный доступ на запись, у него были бы все разрешения в этом списке.

Как видите, индивидуальных разрешений намного больше, чем политик по умолчанию. Мы не можем объяснить их все, но, к счастью, AWS позволяет легко разобраться. Нажмите на значок ? рядом с разрешением, о котором вы хотите узнать, и откроется боковая панель с кратким описанием. Если этого недостаточно, вы можете нажать «Подробнее», чтобы перейти на страницу документации для этого разрешения.

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

Вы можете выбрать ресурсы, выбрав «Добавить ARN», чтобы ограничить доступ:

Вам нужно ввести имя ресурса Amazon (ARN) для объекта, к которому вы хотите предоставить доступ. К счастью, редактор политик упрощает эту задачу и предоставляет настраиваемый диалог, который просто запрашивает имя или идентификатор ресурса; в этом случае вы можете ввести имя корзины:

Идя еще дальше, вы можете включить белый список, чтобы запросы всегда поступали с вашего сервера. Если вы разрешаете доступ для удаленной службы, и IP-адрес вашего сервера не изменится в ближайшее время, рекомендуется включить это.

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

Если вы нажмете «Добавить условие», вы можете указать расширенные условия, которым должен соответствовать запрос, прежде чем он будет одобрен, например, разрешить доступ только по четвергам, если вы этого хотите.

Когда вы закончите, нажмите «Далее», чтобы просмотреть политику и дать ей имя и описание. Нажмите «Создать политику», и она должна быть видна и назначаться пользователям в списке политик.