Используем Azure AD для SSH в Linux VM

Всем привет!
Сегодня хотел бы рассказать о новой возможности для Azure Linux VM -> используем Azure AD для SSH к VM.

Требования:

ДистрибутивВерсии
CentOSCentOS 7, CentOS 8
DebianDebian 9, Debian 10
openSUSEopenSUSE Leap 42.3, openSUSE Leap 15.1+
RedHat Enterprise LinuxRHEL 7.4 to RHEL 7.10, RHEL 8.3+
SUSE Linux Enterprise ServerSLES 12, SLES 15.1+
Ubuntu ServerUbuntu Server 16.04 to Ubuntu Server 20.04

После того, как мы выбрали дистрибутив, переходим в Экстеншенс (Extentions) и добавляем “AADSSHLoginForLinux”:

Это автоматически добавит нам Managed Identity:

После добавления Экстеншена (Extention), внутри Linux VM добавится Linux Pluggable Authentication Modules (PAM) вместе с SSH Auth Add-on для PAM.

Для того, чтоб у пользователя появились какие-либо права внутри виртуальной машины, пользователю нужно назначить права через RBAC (в целом, экстеншон и будет связующим звеном с RBAC). Существует 2 вида прав, которые вы можете назначить: полные права и read-only права:

Что же должность быть со стороны пользователя, который хочет подключиться?
Все очень просто, нужен SSH клиент и Az Cli, который в свою очередь сам поставить MSAL и маленькое дополнение к SSH клиенту.

Далее мы уже можем проверять, как это работает.

Запускаем:
az login
и далее выбираем нашу Linux VM
az ssh vm -n LinuxVM -g LinuxVM-RG
и все. Вы внутри.

Как же это работает для Azure?
Присаживайтесь, покажу…

  1. После того, как мы вводим команду az ssh vm, она обращается к MSAL библиотеке
  2. MSAL библиотека идет к Azure AD за сертификатом
  3. Есть возможность настроить Conditional Access, например, разрешить это действие только для Azure AD Joined компьютеров
  4. Azure AD выдает сертификат, который будет валиден 1 час
  5. MSAL библиотека возвращает сертификат для Az Cli
  6. Az Cli обращается к SSH клиенту
  7. SSH клиент обращается к нашей виртуальной машине
  8. Виртуальная машина обращается к PAM модулю
  9. PAM модуль обращается к Azure Instance Metadata Service (AIMS) для проверки сертификата
  10. AIMS обращается к Azure AD для проверки
  11. Azure AD подтверждает AIMS валидность сертификата
  12. AIMS говорит PAM модулю, что сертификат валидный
  13. PAM модуль подтверждает ОС, что все хорошо
  14. Далее ОС спрашивает у SSH Auth про права пользователя
  15. SSH Auth идет опять к AIMS
  16. В этот раз AIMS идет в RBAC, чтоб узнать права пользователя
  17. RBAC рассказывает AIMS, какие права у пользователя
  18. AIMS отдает это все SSH Auth, которые создает все необходимые папки для пользователя

Вот и вся магию, надеюсь кому-то было интересно и подчерпнули что-то полезное и\или новое.
До новых встреч!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s