Часть 3 полного шаблона AWS

Это третье руководство из серии The Complete AWS Boilerplate для быстрого создания целых интернет-продуктов в облаке Amazon.

Добро пожаловать в The Complete AWS Boilerplate. Сегодня мы собираемся глубже погрузиться в безопасность с помощью IAM (Identity Access Management). Предварительным условием для этого руководства является часть 1, в которой мы рассмотрим процесс создания новой учетной записи пользователя для IAM. Нажмите здесь, если вы еще не читали это.

Подчеркнем, безопасность - это то, что следует учитывать с первого дня. Гораздо проще построить инфраструктуру с учетом безопасности, чем проводить аудит и обновлять инфраструктуру для обеспечения безопасности позже.

Для начала войдите в свою учетную запись «Root Admin» в Консоли AWS. Мы собираемся создать новую учетную запись администратора под названием «CTO», которая будет использоваться для всех наших будущих входов в систему. Мы также создадим несколько групп пользователей для различных команд в нашей организации. Прежде чем мы начнем, давайте рассмотрим некоторые концепции.

Пока не беспокойтесь о понимании приведенной ниже диаграммы. Мы вернемся к этому в конце этого урока.

Основные концепции безопасности

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

  • Группы пользователей
  • Пользователи
  • Роли
  • Политики
  • Многофакторная аутентификация

Различные группы в вашей организации должны иметь определенный доступ к определенным ресурсам AWS. Например, ваша группа продаж должна иметь возможность просматривать данные, но не изменять их. Ваши штатные программисты должны иметь возможность вносить изменения везде, где это необходимо, но стажеры не должны (чтобы они не удалили базу данных в процессе производства). Субподрядчики должны иметь возможность касаться только тех частей, для которых они наняты. Вы уловили идею.

Итак, давайте действительно сделаем это в нашей консоли IAM. Мы начнем с создания группы пользователей под названием «Бизнес-аналитики», которой разрешен доступ для чтения ко всем таблицам DynamoDB.

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

Группы пользователей

Перейдите в IAM, щелкните вкладку «Группы» и нажмите «Создать новую группу».

Назовем это Business-Analysts.

Теперь мы можем прикреплять политики к нашей группе. Политики - это просто правила, определяющие, кто имеет доступ к чему. what может быть корзиной S3 или любым другим ресурсом AWS. who может быть пользователем (например, стажером или техническим директором), но также может быть ресурсом AWS. Как это возможно? Потому что AWS позволяет ресурсам запускать выполнение заданий. Например, мы можем запустить корзину S3 для запуска сценария сжатия изображения в любое время, когда в корзину добавляется новый файл JPG или PNG. Этот сценарий также является ресурсом AWS, и нам нужно будет создать настраиваемую политику IAM, чтобы наша корзина S3 могла получить доступ к этому сценарию. Позже в этом руководстве мы создадим настраиваемую политику IAM, чтобы разрешить MFA (многофакторную аутентификацию).

А пока продолжим прикреплять нашу политику для пользователей.

Найдите политику AmazonDynamoDBReadOnlyAccess и проверьте ее. Добавьте любые другие, если хотите.

Обратите внимание, что если мы щелкнем раскрывающийся список «Тип политики», мы увидим, что эти политики можно отфильтровать на «AWS Managed» и «Customer Managed». Существуют политики, которые поставляются с AWS по умолчанию, и есть настраиваемые политики, которые мы можем создать сами (о которых мы узнаем в разделе MFA этого руководства).

Перейдем к следующему шагу - обзору.

Если все в порядке, нажимаем «Создать группу».

Теперь давайте создадим еще одну группу под названием «Разработчики».

За исключением этого раза, мы собираемся установить для параметра Тип политики значение Функция работы. Это дает нам список общих рабочих функций с предопределенными политиками. Мы собираемся использовать PowerUserAccess, который предоставляет доступ для чтения и записи ко всем ресурсам AWS, за исключением изменения IAM. Теперь у нас есть 2 группы, как показано на скриншоте ниже.

Создание пользователей

Следующее, что мы сделаем, - это создадим пользователя CTO. Щелкните вкладку «Пользователи» и «Добавить пользователя».

Я планирую предоставить администратору CTO доступ ко всему в консоли AWS, включая возможность изменять IAM. Мы собираемся предоставить только доступ к AWS Console, а НЕ программный доступ, потому что программный доступ слишком опасен для учетной записи администратора. Представьте себе хакера, который получил доступ к вашим учетным данным технического директора с программным доступом. Сценарий может легко удалить / украсть все в вашем облаке за считанные минуты, тогда как взаимодействие с графическим интерфейсом существенно медленнее. Кроме того, с MFA хакеру также понадобится ваш телефон для входа в консоль AWS.

Когда будете готовы, нажмите «Далее».

Теперь мы можем добавить технического директора в группу «Разработчики». Мы также собираемся прикрепить политику напрямую.

Щелкните вкладку «Присоединить существующие политики напрямую» и выберите AdminstratorAccess, чтобы сделать доступным все, включая IAM. Когда вы закончите, вернитесь на вкладку «Пользователи» и щелкните пользователя CTO.

Затем нажмите «Учетные данные безопасности».

Щелкните эту ссылку URL в «Сводке» и войдите в свою новую учетную запись технического директора. Это тот же самый администратор, который вы используете в настоящее время, но лучше для ведения журнала (AWS автоматически регистрирует, кто какие изменения внес, поэтому учетную запись технического директора можно напрямую связать с кем-то в вашей организации).

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

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

Пользователи также могут принимать политики из групп:

Приведенные выше диаграммы могут показаться запутанными, поэтому давайте вернемся к этой простой диаграмме, которая объясняет те же отношения IAM:

Установка политики паролей

Для большей безопасности мы можем потребовать от пользователей иметь сложные пароли, которые периодически меняются. Перейдите на панель управления IAM и откройте «Применить политику паролей IAM» из контрольного списка состояния безопасности и нажмите «Управление политикой паролей».

Вы можете сделать свои пароли настолько простыми или сложными, насколько захотите.

Настройка многофакторной аутентификации (MFA)

Наконец мы попали в МИД. Это называется многофакторной аутентификацией, потому что у вас есть дополнительные требования к входу в систему, помимо пароля (первый «фактор» аутентификации). MFA обычно зависит от времени и устройства, например текстового SMS-сообщения, отправляемого на ваш телефон, срок действия которого истекает через 10 минут. Хакер с вашим паролем не сможет войти в систему, если у него нет вашего телефона. Этот дополнительный уровень безопасности - это то, что мы будем настраивать на вашем смартфоне для всех входов пользователей. Итак, начнем с панели управления IAM.

Сначала мы не можем активировать MFA. Если мы нажмем Узнать больше, мы перейдем на эту страницу здесь, где говорится, что мы должны добавить политику IAM, чтобы разрешить MFA.

Создание настраиваемых политик

Просто скопируйте в буфер обмена приведенную ниже политику IAM (представленную в виде файла JSON).

{     "Version": "2012-10-17",     "Statement": [         {             "Sid": "AllowListActions",             "Effect": "Allow",             "Action": [                 "iam:ListUsers",                 "iam:ListVirtualMFADevices"             ],             "Resource": "*"         },         {             "Sid": "AllowIndividualUserToListOnlyTheirOwnMFA",             "Effect": "Allow",             "Action": [                 "iam:ListMFADevices"             ],             "Resource": [                 "arn:aws:iam::*:mfa/*",                 "arn:aws:iam::*:user/${aws:username}"             ]         },         {             "Sid": "AllowIndividualUserToManageTheirOwnMFA",             "Effect": "Allow",             "Action": [                 "iam:CreateVirtualMFADevice",                 "iam:DeleteVirtualMFADevice",                 "iam:EnableMFADevice",                 "iam:ResyncMFADevice"             ],             "Resource": [                 "arn:aws:iam::*:mfa/${aws:username}",                 "arn:aws:iam::*:user/${aws:username}"             ]         },         {             "Sid": "AllowIndividualUserToDeactivateOnlyTheirOwnMFAOnlyWhenUsingMFA",             "Effect": "Allow",             "Action": [                 "iam:DeactivateMFADevice"             ],             "Resource": [                 "arn:aws:iam::*:mfa/${aws:username}",                 "arn:aws:iam::*:user/${aws:username}"             ],             "Condition": {                 "Bool": {                     "aws:MultiFactorAuthPresent": "true"                 }             }         },         {             "Sid": "BlockMostAccessUnlessSignedInWithMFA",             "Effect": "Deny",             "NotAction": [                 "iam:CreateVirtualMFADevice",                 "iam:EnableMFADevice",                 "iam:ListMFADevices",                 "iam:ListUsers",                 "iam:ListVirtualMFADevices",                 "iam:ResyncMFADevice"             ],             "Resource": "*",             "Condition": {                 "BoolIfExists": {                     "aws:MultiFactorAuthPresent": "false"                 }             }         }     ] }

Теперь вернемся к нашему техническому директору и нажмите кнопку «Добавить разрешения» на вкладке «Разрешения».

Перейдите на вкладку «Присоединить существующие политики напрямую» и нажмите кнопку «Создать политику».

Появится новая вкладка, где вы можете создать политику в виде файла JSON. Вставьте предыдущий текст JSON. Следующий шаг очень важен. В JSON замените все экземпляры ${aws:username} своим именем пользователя (в данном случае это будет CTO).

Прежде чем мы продолжим, давайте воспользуемся этой возможностью, чтобы изучить структуру этой политики IAM. Первый уровень этого файла JSON - это version: date string и structure: array. Мы можем использовать version для поддержки управления версиями нашего файла IAM (необходимого для крупных предприятий). Более интересен structure, правила, составляющие эту политику. Давайте рассмотрим одно из правил внутри массива структур.

{
            "Sid": "AllowIndividualUserToDeactivateOnlyTheirOwnMFAOnlyWhenUsingMFA",
            "Effect": "Allow",
            "Action": [
                "iam:DeactivateMFADevice"
            ],
            "Resource": [
                "arn:aws:iam::*:mfa/CTO",
                "arn:aws:iam::*:user/CTO"
            ],
            "Condition": {
                "Bool": {
                    "aws:MultiFactorAuthPresent": "true"
                }
            }
        }

Sid - уникальный идентификатор для идентификации этого правила.

Effect - это то, что мы хотим сделать с этим правилом (в данном случае это Allow действие, но также может быть Deny).

Action - это то, что можно сделать, а это целый ряд возможностей. В приведенном выше примере это разрешает деактивацию устройства MFA (устройство MFA - это устройство, которое действует как вторичная проверка вашей личности. Обычно это происходит, когда вы получаете 4-значный PIN-код, отправляемый в виде текстового сообщения, отправляемого на ваш телефон. ). Обратите внимание, что правило деактивации называется “iam:DeactivateMFADevice”. Это не случайно названо, для всего есть список действий IAM. Вы можете увидеть этот список здесь.

Resource относится к ресурсам AWS, на которые влияет это правило. Поэтому, когда мы Allow iam:DeactivateMFADevice на arn:aws:iam::*:mfa/CTO и arn:aws:iam::*:user/CTO, мы разрешаем пользователю CTO деактивировать многофакторную аутентификацию CTO. Ресурсы всегда используют ARN (номер ресурса Amazon), который является уникальным идентификатором для этого ресурса AWS. Вы также можете добавить подстановочные знаки к оператору, например arn:aws:iam::*:mfa/*, который позволит нашему CTO пользователю деактивировать MFA любого пользователя.

Condition используется для проверки безопасности ресурсов перед разрешением действия. В этом случае мы можем попытаться сделать iam:DeactivateMFADevice, только если aws:MultiFactorAuthPresent равно true. Чтобы увидеть полный список условных операторов, нажмите здесь.

Хорошо, теперь давайте закончим эту настраиваемую политику, нажав «Обзор политики», присвоив ей название «Allow-MFA-CTO» (многофакторная аутентификация), и нажмите «Создать политику».

Мы вернемся к списку политик IAM. Вернитесь на вкладку для добавления разрешений нашему пользователю и нажмите кнопку обновления в правом верхнем углу. Затем найдите «Allow-MFA» и нажмите «Далее: обзор» и убедитесь, что вы хотите создать политику.

Вы вернетесь к экрану пользователя и увидите новую политику IAM, добавленную к нашему пользователю.

Теперь, если мы вернемся на вкладку «Панель мониторинга» в IAM, мы получим много красного. Что происходит??

Что ж, если мы посмотрим на созданную нами политику IAM, одно из правил имеет Sid, называемое BlockMostAccessUnlessSignedInWithMFA. В сеансе входа нашего текущего пользователя не было входа с помощью MFA, поэтому многие вещи заблокированы. Но мы также еще не настроили устройство MFA, поэтому наш текущий пользователь по сути бесполезен. Нам нужно выйти и снова войти в систему с нашей Root Adminstrator account.

После повторного входа в систему с нашей Root Adminstrator учетной записью вернитесь в панель управления IAM на вкладку «Пользователи» и щелкните пользователя CTO, которого мы создали. Перейдите на вкладку «Учетные данные безопасности» и нажмите «Управление» рядом с «Назначенное устройство MFA».

Выберите «Виртуальное устройство MFA».

На следующем экране нажмите «Показать QR-код».

Теперь вам нужно будет загрузить приложение для смартфона для MFA. Возможны следующие варианты: Google Authenticator или Authy (я использую Authy). Обе ссылки содержат руководства по настройке. Это займет менее 5 минут, и как только вы отсканируете QR-код, все будет готово! После успешного сканирования QR-кода введите 2 последовательных кода MFA, показанных на вашем смартфоне, и нажмите Назначить MFA. Вот и все!

Вы также захотите сделать это для своей Root Adminstrator учетной записи, поэтому вернитесь в панель управления IAM.

Давайте закончим с этим последним делом в нашем статусе безопасности. Нажмите «Управление MFA» и во всплывающем окне нажмите «Перейти к учетным данным безопасности».

Повторите тот же процесс настройки MFA для Root Administrator, и мы, наконец, закончили настройку безопасности! Разве это не выглядит чудесно?

Теперь, если мы выйдем из Root Adminstrator и вернемся к нашему CTO пользователю, нам будет предложено ввести код MFA.

Просто введите его, и готово!

Поздравляю! Теперь вы понимаете IAM и с первого дня получаете безопасное облако AWS!

Рассмотрение

В этом уроке мы узнали:

  • Взаимосвязь между политиками, ролями, пользователями и группами
  • Как создать группу и назначить в нее пользователей
  • Как создать роль и назначить ее пользователю
  • Как создать пользователя
  • Как создать и прочитать IAM-политику в формате JSON
  • Как настроить многофакторную аутентификацию

Увидимся в следующем уроке!