Всем привет!
Сегодня хотел бы рассказать о новой возможности для Azure Linux VM -> используем Azure AD для SSH к VM.
Требования:
Дистрибутив | Версии |
---|---|
CentOS | CentOS 7, CentOS 8 |
Debian | Debian 9, Debian 10 |
openSUSE | openSUSE Leap 42.3, openSUSE Leap 15.1+ |
RedHat Enterprise Linux | RHEL 7.4 to RHEL 7.10, RHEL 8.3+ |
SUSE Linux Enterprise Server | SLES 12, SLES 15.1+ |
Ubuntu Server | Ubuntu 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 VMaz ssh vm -n LinuxVM -g LinuxVM-RG
и все. Вы внутри.
Как же это работает для Azure?
Присаживайтесь, покажу…

- После того, как мы вводим команду az ssh vm, она обращается к MSAL библиотеке
- MSAL библиотека идет к Azure AD за сертификатом
- Есть возможность настроить Conditional Access, например, разрешить это действие только для Azure AD Joined компьютеров
- Azure AD выдает сертификат, который будет валиден 1 час
- MSAL библиотека возвращает сертификат для Az Cli
- Az Cli обращается к SSH клиенту
- SSH клиент обращается к нашей виртуальной машине
- Виртуальная машина обращается к PAM модулю
- PAM модуль обращается к Azure Instance Metadata Service (AIMS) для проверки сертификата
- AIMS обращается к Azure AD для проверки
- Azure AD подтверждает AIMS валидность сертификата
- AIMS говорит PAM модулю, что сертификат валидный
- PAM модуль подтверждает ОС, что все хорошо
- Далее ОС спрашивает у SSH Auth про права пользователя
- SSH Auth идет опять к AIMS
- В этот раз AIMS идет в RBAC, чтоб узнать права пользователя
- RBAC рассказывает AIMS, какие права у пользователя
- AIMS отдает это все SSH Auth, которые создает все необходимые папки для пользователя
Вот и вся магию, надеюсь кому-то было интересно и подчерпнули что-то полезное и\или новое.
До новых встреч!