Использование AWS Systems Manager, Session Manager и AWS Single Sign-On.

Пример использования.
В прошлом ваша компания использовала хост-бастион в общедоступной подсети для доступа к вашим экземплярам EC2. Проблема в том, что для этого вам необходимо открыть порт для Интернета. В дополнение к этой угрозе безопасности вам также потребуется управлять доступностью хоста-бастиона и разрешениями пользователей на доступ к хосту-бастиону. Ваша компания хотела бы усилить безопасность и уменьшить поверхность для атак, добавив удаленный доступ через AWS Systems Manager Session Manager с AWS Single Sign-On.

AWS Systems Manager Session Manager

AWS Systems Manager Session Manager обеспечивает безопасный удаленный доступ для управления экземплярами EC2 как Windows, так и Linux без необходимости открывать порты в Интернет или управлять ключами SSH. Session Manager может управлять экземплярами EC2 в облаке, локально или в сочетании того и другого с помощью оболочки на основе браузера или интерфейса командной строки AWS. После предоставления доступа можно включить ведение журнала и аудит активности сеанса, которые можно интегрировать с AWS CloutTrail, AWS CloudWatch Logs и Amazon S3.

Единый вход AWS

AWS Single Sign-On позволяет управлять централизованным доступом к учетным записям AWS и предоставлять пользователю возможность единого входа. Он предоставляет пользовательский портал, позволяющий пользователям получать доступ к своим ролям в своих учетных записях AWS в одном месте, и может быть интегрирован с такими поставщиками удостоверений, как Microsoft AD или Azure AD. Эту услугу можно использовать без дополнительных затрат, и она поддерживает многофакторную аутентификацию.

Предпосылки

  • Аккаунт AWS
  • Мобильный телефон с приложением MFA, например Google Authenticator.

Настройте свою среду

  1. Создайте пользователя IAM с политикой Доступ администратора, если у вас ее еще нет.
  2. Создайте VPC как минимум с одной общедоступной и одной частной подсетью со шлюзом NAT в вашей общедоступной подсети и интернет-шлюзом, подключенным к VPC. Для получения дополнительной информации о том, как создать VPC, ознакомьтесь с разделом Создание VPC с общедоступными и частными подсетями для ваших кластеров.
  3. Создайте корзину S3 для хранения журналов диспетчера сеансов с именем ssm-logs ‹случайная строка›, чтобы создать уникальное имя корзины.

Создать инстансы EC2

  1. Перейдите к EC2 и нажмите Запустить экземпляры. Услуги ›EC2
  2. Выберите Amazon Linux 2 AMI.
  3. Выберите t2.micro, затем нажмите Далее.
  4. Сеть: выберите свой VPC, Подсеть: выберите частную подсеть. Остальное оставьте по умолчанию. Затем нажмите Далее.
  5. Оставьте хранилище по умолчанию. Нажмите Далее.
  6. Добавить теги. Ключ: Имя Значение: DevServer01 Ключ: Проект Значение: Dev. Нажмите Далее.
  7. Пока используйте группу безопасности по умолчанию.
  8. Выберите или создайте пару ключей и Запустите экземпляры. или нет kp, поскольку мы не будем подключаться по SSH.
  9. Повторите шаги 1–8, но замените теги на Key: Name Value: ProdServer01 & Key: Project Value: Prod .

Создать группу журналов CloudWatch

  1. Перейдите в Группы CloudWatch Log. Услуги ›CloudWatch› Журналы ›Группы журналов.

2. Нажмите Создать группу журналов.

3. Имя группы журналов: SSMLogGroup. Затем нажмите Создать.

AWS Systems Manager

  1. Перейдите в Системный Менеджер. Услуги ›Системный менеджер
  2. Нажмите Быстрая настройка в левой части браузера, а затем нажмите Создать.

3. Выберите Управление хостом, затем нажмите Далее.

4. Оставьте значения по умолчанию для раздела Диспетчер системы.

5. Выберите Текущая учетная запись, Текущий регион и Все экземпляры. Затем нажмите Создать.

6. Это действие создает четыре роли IAM и шесть ассоциаций менеджеров состояния системного администратора.

7. Если вы проверите свои экземпляры EC2, вы должны увидеть прикрепленную новую роль IAM.

8. Чтобы просмотреть свои управляемые экземпляры, выберите Менеджер парка в левой части браузера.

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

10. Перейдите к EC2, выберите свой экземпляр. Нажмите Состояние экземпляра и выберите Перезагрузить экземпляр.

11. Когда вы вернетесь в Fleet Manager, обновитесь, и вы должны увидеть свои экземпляры.

Конечная точка VPC для системного менеджера

Поскольку наши экземпляры EC2 находятся в частной подсети, нам нужно будет настроить конечные точки VPC, чтобы разрешить доступ к конечным точкам Systems Manager.

  1. Перейдите в VPC. Услуги ›VPC
  2. Нажмите Конечные точки.

3. Нажмите "Создать конечную точку".

4. Для Категория сервиса оставьте значение по умолчанию Сервисы AWS.

5. Выполните поиск с помощью ssm и выберите com.amazonaws.us-east-1.ssm.

6. Выберите VPC, в котором находятся ваши экземпляры, и выберите подсети, в которых были запущены ваши экземпляры EC2. Я выбрал все три частные подсети, хотя оба моих экземпляра находятся в us-east-1c на случай, если я добавлю больше экземпляров в будущем.

7. В поле Группа безопасности выберите существующую группу или создайте новую. Группа безопасности должна иметь правила для входящего трафика Тип: HTTPS, Источник: ваш CIDR VPC.

8. Нажмите Создать конечную точку.

9. Повторите шаги 3–7 для имени службы: com.amazonaws.us-east-1.ec2messages и имени службы: com.amazonaws.us-east-1. ssmmessages.

10. После того, как Статус ваших трех конечных точек изменится на Доступен, вернитесь в Диспетчер сеансов и нажмите Начать сеанс. .

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

Включить ведение журнала диспетчера сеансов

Мы можем хранить журналы Session Manager в S3 или передавать их в CloudWatch Logs.

  1. Перейдите в Диспетчер сеанса и выберите вкладку Настройки. Затем нажмите Изменить.

2. В разделе Ведение журнала CloudWatch:

  • Включите ведение журнала CloudWatch
  • Выберите Выбрать имя группы журналов из этого списка.
  • Выберите SSMLogGroup.

3. Для раздела S3 logging:

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

4. Нажмите Сохранить.

Добавить политику в роль IAM

Мы должны добавить разрешения для роли экземпляра AmazonSSMRoleForInstancesQuickSetup, которая была создана в Host Management, чтобы разрешить доставку журналов.

  1. Перейдите к IAM и нажмите Роли.

2. Используйте поиск, чтобы найти AmazonSSMRoleForInstancesQuickStetup. Печатать очень много, поэтому достаточно «ssmrole». Щелкните по роли.

3. Нажмите Прикрепить политики.

4. Нажмите Создать политику.

5. Должен открыться новый браузер. Выберите вкладку JSON.

6. Используйте приведенный ниже JSON.

Замените YOUR_REGION на регион, который вы используете, YOUR_ACCOUNT_ID на идентификатор вашей учетной записи, YOUR_BUCKET_NAME на сегмент, который мы создали для ведения журнала, а YOUR_LOG_GROUP на созданную нами группу журналов.

{
    "Version": "2012-10-17",
    "Statement": [
  {
  "Sid": "describeLogGroups",
  "Effect": "Allow",
  "Action": [
   "logs:DescribeLogGroups"
  ],
  "Resource": [
   "arn:aws:logs:<YOUR_REGION>:<YOUR_ACCOUNT_ID>:log-group:*"
  ]
 },
 {
  "Sid": "describeLogStreams",
  "Effect": "Allow",
  "Action": [
   "logs:DescribeLogStreams"
  ],
  "Resource": [
   "arn:aws:logs:<YOUR_REGION>:<YOUR_ACCOUNT_ID>:log-group:*:log-stream:*"
  ]
 },
 {
  "Sid": "createLogStream",
  "Effect": "Allow",
  "Action": [
   "logs:CreateLogStream",
   "logs:PutRetentionPolicy"
  ],
  "Resource": [
   "arn:aws:logs:<YOUR_REGION>:<YOUR_ACCOUNT_ID>:log-group:<YOUR_LOG_GROUP>:*"
  ]
 },
 {
  "Sid": "putEvents",
  "Effect": "Allow",
  "Action": [
   "logs:PutLogEvents",
   "logs:GetLogEvents"
  ],
  "Resource": [
   "arn:aws:logs:<YOUR_REGION>:<YOUR_ACCOUNT_ID>:log-group:<YOUR_LOG_GROUP>:log-stream:*"
  ]
 },
 {
  "Sid": "listBucket",
  "Effect": "Allow",
  "Action": "s3:ListBucket",
  "Resource": "arn:aws:s3:::<YOUR_BUCKET_NAME>"
 },
 {
  "Sid": "putObject",
  "Effect": "Allow",
  "Action": "s3:PutObject",
  "Resource": "arn:aws:s3:::<YOUR_BUCKET_NAME>/*"
 }
 ]
}

7. Нажмите Далее, а затем Далее, чтобы просмотреть политику.

8. Придумайте название для вашей политики. Я назвал свой SSMLoggingPolicy и щелкнул Создать политику.

9. Теперь вернитесь на страницу Attach Permissions и нажмите кнопку «Обновить».

10. Найдите и выберите SSMLoggingPolicy, который мы только что создали. Затем нажмите Прикрепить политику.

11. На странице «Сводка» вы должны увидеть, что новая политика была прикреплена.

Проверьте конфигурацию диспетчера сеансов

  1. Перейдите в Системный менеджер и нажмите Диспетчер сеанса.
  2. Нажмите Начать сеанс.
  3. После открытия сеанса выполните несколько команд, чтобы убедиться, что все работает. Я использовал следующую команду:
ls -lh

Включить систему единого входа AWS

  1. Перейдите к AWS Single Sign-On. Услуги ›AWS Single Sign-On
  2. Нажмите Включить AWS SSO.
  3. Выберите один из экземпляров и нажмите Начать сеанс.

3. Нажмите Создать организацию AWS.
4. На странице приветствия обратите внимание на URL-адрес пользовательского портала. Мы будем использовать его позже для тестирования.

Создание пользователей и групп AWS SSO

  1. В левой части браузера нажмите Группы. Затем нажмите Создать группу.

2. Для Название группы: Производство. Затем нажмите Создать.

3. Создайте еще одну группу с именем Разработка.
4. Выберите Пользователи. Затем Добавить пользователя.

5. Введите следующую информацию и нажмите Далее:

  • Имя пользователя: user1
  • Пароль: выберите Отправить пользователю электронное письмо с инструкциями по установке пароля.
  • Электронная почта: используйте действующий адрес электронной почты.
  • Имя: Пользователь
  • Фамилия: 1

6. Выберите Производство и нажмите Добавить пользователя.

7. Выполните шаги 1–6 для второго пользователя.

Данные пользователя будут такими же, как и user1, со следующими изменениями:

  • Имя пользователя: user2
  • Электронная почта: используйте действующий адрес электронной почты, отличный от пользователя user1
  • Имя: Пользователь
  • Фамилия: 2

Группы:

  • Выберите Разработка.

8. Добавить пользователя

9. Проверьте обе учетные записи электронной почты для своего пользователя и найдите свое приглашение на awsapps.com. Нажмите «Принять приглашение».

10. Создайте новый пароль.

Доступ к аккаунту AWS

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

  1. В левой части браузера выберите Аккаунты AWS.
  2. Перейдите на вкладку Наборы разрешений и нажмите Создать набор разрешений.

3. Выберите Создать настраиваемый набор разрешений, а затем нажмите Далее.

4. Введите следующее:

  • Название: ProductionSet
  • Описание: Project = Prod (я решил, что мое описание будет кратким, но приведу столько деталей, сколько вам нужно)
  • Выберите Создать настраиваемую политику разрешений.

  • Введите следующую политику разрешений:
{
 "Version": "2012-10-17",
 "Statement": [
  {
   "Sid": "VisualEditor0",
   "Effect": "Allow",
   "Action": [
    "ssm:DescribeSessions",
    "ssm:DescribeInstanceProperties",
    "ec2:DescribeInstances",
    "ssm:GetConnectionStatus"
   ],
   "Resource": "*"
  },
  {
   "Effect": "Allow",
   "Action": [
    "ssm:StartSession"
   ],
   "Resource": [
    "arn:aws:ec2:*:*:instance/*"
   ],
   "Condition": {
    "StringLike": {
     "ssm:resourceTag/Project": [
      "Prod"
     ]
    }
   }
  },
  {
   "Effect": "Allow",
   "Action": [
    "ssm:TerminateSession"
   ],
   "Resource": [
    "arn:aws:ssm:*:*:session/${aws:username}-*"
   ]
  }
 ]
}

5. Щелкните Далее.

6. Добавьте теги. Ключ: имя, Значение: ProductionAccess. Затем нажмите Далее.

7. Просмотрите и нажмите Создать.

8. Повторите шаги 1–7, внося следующие изменения в набор разрешений на разработку:

  • Название: DevelopmentSet
  • Описание: Project = Dev
  • Специальная политика разрешений:
{
 "Version": "2012-10-17",
 "Statement": [
  {
   "Sid": "VisualEditor0",
   "Effect": "Allow",
   "Action": [
    "ssm:DescribeSessions",
    "ssm:DescribeInstanceProperties",
    "ec2:DescribeInstances",
    "ssm:GetConnectionStatus"
   ],
   "Resource": "*"
  },
  {
   "Effect": "Allow",
   "Action": [
    "ssm:StartSession"
   ],
   "Resource": [
    "arn:aws:ec2:*:*:instance/*"
   ],
   "Condition": {
    "StringLike": {
     "ssm:resourceTag/Project": [
      "Dev"
     ]
    }
   }
  },
  {
   "Effect": "Allow",
   "Action": [
    "ssm:TerminateSession"
   ],
   "Resource": [
    "arn:aws:ssm:*:*:session/${aws:username}-*"
   ]
  }
 ]
}
  • Добавить теги - Ключ: Имя, Значение: Доступ к разработке

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

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

11. Выберите вкладку Группы, затем выберите группу Производственная и нажмите Далее.

12. Выберите ProductionSet и нажмите Готово.

13. Повторите шаги 10–12, но вместо этого выберите «Группа разработки» и «Набор разработчика».

14. Теперь, если вы выберете пользователя user1 или user2 для входа в URL-адрес пользовательского портала, вы должны увидеть учетную запись AWS.

Многофакторная аутентификация

  1. В консоли AWS SSO нажмите Настройки, затем в разделе Многофакторная аутентификация нажмите Настроить.

2. Используйте следующие варианты:

  • Пользователи должны получать запрос на использование MFA: выберите "Каждый раз, когда они входят в систему (всегда включен)".
  • Пользователи могут аутентифицироваться с помощью этих типов MFA: выберите Authenticator и при необходимости отмените выбор другого.
  • Если у пользователя еще нет зарегистрированного устройства MRA: попросите его предоставить одноразовый пароль, отправленный по электронной почте, для входа в систему.

3. Войдите в пользовательский портал AWS SSO как user1. Поскольку мы обновили требование MFA, вы должны получить уведомление о том, что код подтверждения был отправлен вам по электронной почте. После получения введите код и войдите в систему.

4. В правом верхнем углу браузера нажмите Устройства MFA, затем нажмите Зарегистрировать устройство.

5. Нажмите Показать QR-код и отсканируйте с помощью приложения MFA. Затем введите шестизначный код на шаге 3. Затем нажмите Назначить MFA.

6. Вы можете проверить это, выйдя из системы, а затем снова войдя, используя свой MFA.

7. Повторите шаги 3–6 для пользователя user2.

Тестирование

  1. Войдите в систему как user1, используя MFA со своим URL-адресом пользовательского портала.
  2. Выберите Аккаунт AWS. затем щелкните Консоль управления.

3. Теперь вы вошли в систему как user1.

4. Как user1 перейдите в Системный менеджер.

5. Выберите Диспетчер сеанса и нажмите Начать сеанс.

6. Выберите ProdServer01 и нажмите S Начало сеанса.

7. Выполните несколько команд и выйдите.

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

9. Теперь проверьте разрешения еще раз, перейдя к некоторым сервисам AWS. Посмотрите, можете ли вы получить к ним доступ и можете ли вы что-нибудь сделать. В качестве примера я перешел на консоль EC2 и смог увидеть панель инструментов, но не все, что есть на ней. Когда я перешел на S3, я не увидел ничего, кроме большого красного уведомления об ошибке, в котором говорилось, что у меня нет разрешений для сегментов.

10. Теперь войдите в систему как user2 и попробуйте то же самое. У вас должен быть доступ к DevServer01, но не к ProdServer01. Не забывайте запускать некоторые команды в диспетчере сеансов.

11. Выйдите из системы и снова войдите в Консоль AWS, используя свою учетную запись администратора.

12. Перейдите в CloudWatch ›Группы журналов, и вы увидите два наших потока журналов от пользователя user1 и user2. Вы можете щелкнуть поток, чтобы детализировать его глубже и увидеть, какие команды мы выполняли, и выводимые данные.

13. Перейдите к S3 и выберите нашу корзину ведения журнала. Вы должны увидеть два файла с нашими журналами.

Очистить

  1. Завершите работу инстансов EC2.
  2. Удалите доступ пользователей SSO.
  • В консоли AWS SSO выберите учетные записи AWS.
  • Щелкните имя своей учетной записи.
  • Щелкните Удалить доступ и подтвердите для обоих.

3. В Консоли AWS SSO удалите пользователей и группы, созданные для этого проекта.

4. Перейдите к VPC ›Конечные точки. Выберите одну из конечных точек, щелкните Действия, Удалить конечную точку. Вам нужно будет сделать это индивидуально для всех трех созданных нами конечных точек.

5. Если вы создали VPC, не забудьте удалить шлюз NAT и освободить эластичный IP-адрес.

6. Удалите группу журналов и созданную корзину S3.

Больше контента на plainenglish.io