Что такое IAM

IAM является важным привратником Amazon Web Service (AWS). Это место, где мы будем администрировать аутентификацию и авторизацию для сред и сервисов AWS.

Давайте представим пример использования, когда мы хотим разработать облачное приложение с использованием инфраструктуры AWS. Для взаимодействия с API AWS (например, через интерфейс командной строки CLI). Сначала нам нужно создать нового пользователя IAM. Затем пользователю необходимо предоставить разрешения на доступ к определенным ресурсам. Как? Путем прикрепления определенных политик IAM. Если мы хотим, чтобы 2 сервиса взаимодействовали друг с другом, например EC2 и DynamoDB. Затем нам потребуется действующая роль IAM, специально предназначенная для этих сервисов.

Один только этот простой пример уже может сказать, насколько важен IAM в экосистеме AWS. Фактически, IAM есть везде. Мы будем видеть, взаимодействовать и настраивать все это на этапах разработки, обеспечения безопасности и мониторинга.

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

Строительные блоки

IAM состоит из пользователей, групп, ролей и документов политик.

Пользователи

Каждый пользователь IAM имеет определенные разрешения для доступа к определенным ресурсам AWS и управления ими. Когда вы впервые создаете учетную запись AWS, AWS предоставляет вам учетную запись root. Этот пользователь находится в «режиме бога», поэтому он имеет полный контроль над всем.

Является ли учетная запись root единственным пользователем, который нам нужен? Абсолютно НЕТ. Настоятельно рекомендуется иметь разных пользователей для разных приложений и, что более важно, ограничить контроль доступа для отдельных пользователей. Кроме того, существует практическое правило взаимодействия и настройки сервисов AWS через пользователей IAM, а не жесткого кодирования учетных данных безопасности, таких как ключ оценки и секретный ключ.

Например, разработчику в команде должен быть предоставлен доступ только к EC2, S3 и CodeCommit, определенно не доступ администратора. Таким образом, наши приложения будут более безопасными, так как никто не сможет причинить вред, непреднамеренно или преднамеренно.

При создании нового пользователя (а не пользователя root в первый раз) мы можем сообщить AWS, какие учетные данные для аутентификации мы хотим получить. Есть 2 типа:

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

Настроить пользователя IAM локально

Давайте рассмотрим настройку пользователя IAM на вашем локальном компьютере. Это однократный процесс, и при дальнейшем взаимодействии с интерфейсом командной строки AWS будут использоваться эти учетные данные. Если вы хотите настроить другого пользователя, повторите следующие шаги с ключами этого пользователя.

  • Создайте папку конфигурации AWS в корневом каталоге.
  • mkdir ~/.aws cd ~/.aws
  • Создать credential файл для хранения ключа доступа и секретного ключа
  • touch credential vim credential

Вот что вам нужно сохранить в этот файл:

[<YOUR_USER_NAME>]
aws_access_key_id=<ACCESS_KEY>
aws_secret_access_key=<SECRET_KEY>
  • Создайте config файл для конфигураций output и region
touch config
vim config

Затем добавьте свою конфигурацию таким же образом, как:

[profile <YOUR_USER_NAME>]
region=<YOUR_REGION>
output=json

Обратите внимание, что указанный здесь регион будет использоваться для определения того, где AWS размещает ресурсы вашего приложения. Например, если у меня регион eu-north-1, и позже я использую эту конфигурацию для создания корзины S3 через интерфейс командной строки, эта корзина будет расположена в Стокгольме. Вы можете перейти сюда, чтобы увидеть список поддерживаемых регионов.

Группы

Группа - это совокупность пользователей IAM. Группа полезна, когда мы хотим управлять разрешениями для группы пользователей. Без группы перечисление разрешений для каждого отдельного пользователя будет огромной проблемой. Мы могли бы предоставить разрешения группе, а затем добавить пользователей в эту группу. Эти добавленные пользователи автоматически получат все разрешения своей группы.

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

Роли

Роль IAM - это объект, который определяет список разрешений, позволяющих доверенному объекту взаимодействовать с другими сервисами AWS. Этим объектом может быть сервис, например EC2, Lambda или аккаунт AWS.

Создание новой роли аналогично делегированию прав доступа этим доверенным объектам без необходимости совместного использования ключей доступа. Роль не может отправлять прямые запросы к сервисам AWS, но не к тому объекту, к которому она прикреплена. Помните, что вы можете использовать роли IAM для делегирования доступа другой учетной записи AWS.

Политики

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

Есть 3 типа политик:

  • Управляемые политики AWS: создаются и администрируются AWS. Управляемые политики могут повторно использоваться между объектами IAM и не могут быть изменены.
  • Политики, управляемые клиентом: создаются и используются собственными пользователями и могут повторно использоваться во всех сущностях, подобных предыдущему.
  • Встроенные политики: создаются пользователем и встроены непосредственно в отдельного пользователя, группу или роль. Встроенные политики не могут быть повторно использованы в разных объектах IAM, поскольку они подчеркивают прямую связь 1–1 между объектом и самой политикой. После удаления объекта, встроенные политики, прикрепленные к нему, также удаляются.

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

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

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

TL;DR

  • IAM управляет аутентификацией и авторизацией для консоли управления AWS и ресурсов AWS.
  • Пользователи, группы, роли и политики - это разные объекты IAM.
  • Пользователь IAM может отправлять запросы к сервисам AWS напрямую и имеет долгосрочные ключи доступа и учетные данные.
  • Группа - это, по сути, удобство управления для управления одним и тем же набором разрешений для нескольких пользователей.
  • Роль IAM - это средство делегировать доступ к ресурсам AWS доверенным объектам, таким как сервисы AWS, такие как EC2, Lambda, и даже другому аккаунту AWS.
  • Чтобы предоставить определенные разрешения для объекта IAM, вам необходимо прикрепить к этому объекту политику. Политика - это файл JSON, описывающий разрешения. Вы можете написать свои собственные политики, управляемые клиентами, или использовать готовые политики, управляемые AWS. Первое рекомендуется как лучшая практика.

Ресурсы

Часто задаваемые вопросы об AWS IAM

Регионы, зоны доступности и локальные зоны

Создание политик IAM - AWS Identity and Access Management

Снова в школу: понимание грамматики политики IAM | Блог по безопасности AWS

Это конец этого блога. Я хотел бы услышать ваши идеи и мысли 🤗 Пожалуйста, запишите их ниже 👇👇👇

✍️ Автор

Винь Ле @ vinhle95

👨🏻‍💻🤓🏋️‍🏸🎾🚀

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

Этот блог изначально опубликован по адресу https://blog.vinhlee.com/iam.

Сказать привет 🙌 на:

🔗 Twitter

🔗 Средний

🔗 LinkedIn

🔗 Github

🔗 Персональный сайт