Настройка RBAC-пользователей, sudo-профилей и SSH-ключей на LCM-узлах¶
Для создания системных пользователей на LCM-узлах, настройки sudo-профилей и размещения публичных SSH-ключей используется скрипт setup-rbac-users.sh. Параметры пользователей задаются в YAML-файле в переменной keystack_sudoers.
Профили применяются однократно. Последующая автоматическая синхронизация пользователей, sudo-профилей и SSH-ключей с исходным YAML-файлом или внешним Git-репозиторием не выполняется.
Примечание
Механизм настройки RBAC-пользователей LCM не связан с параметром enable_rbac_model в lcm-config.yaml. Этот параметр используется для настройки ролевой модели GitLab и NetBox.
Скрипт setup-rbac-users.sh и файл rbac-profiles.yml входят в установочный пакет SberLinux. Автоматическое применение профилей через installer.sh выполняется только для SberLinux и только при наличии файла rbac-profiles.yml в каталоге инсталлятора.
Формат профилей¶
keystack_sudoers представляет собой словарь, где ключ — имя системного пользователя, а значение содержит параметры:
sudo— список правил sudoers;key— список публичных SSH-ключей.
Пример:
keystack_sudoers:
<имя_пользователя>:
sudo:
- "<правило_sudoers>"
key:
- "<публичный_SSH_ключ>"
При применении профиля для пользователей, кроме аварийной учётной записи, скрипт:
создаёт системного пользователя с домашним каталогом и оболочкой
/bin/bash, если пользователь ещё не существует;проверяет правила sudo через
visudoи размещает их в/etc/sudoers.d/<имя_пользователя>;размещает публичные SSH-ключи в
~/.ssh/authorized_keys.
Пользователь создаётся независимо от наличия правил sudo. Если для пользователя задано sudo: [], файл в /etc/sudoers.d/ для него не создаётся.
Если список key содержит SSH-ключи, файл authorized_keys перезаписывается указанными значениями. Если список ключей пуст, существующий файл authorized_keys не изменяется.
Предупреждение
Если для пользователя уже настроен SSH-доступ, добавьте в key все публичные SSH-ключи, которые необходимо сохранить. При применении профиля существующий файл authorized_keys будет перезаписан.
Для узлов региона keystack_sudoers применяется отдельным механизмом. Настройка sudo-профилей и SSH-ключей на узлах региона описана в разделе Настройка sudo-профилей и SSH-ключей.
Автоматическое применение профилей¶
При запуске installer.sh в SberLinux скрипт setup-rbac-users.sh запускается автоматически, если файл rbac-profiles.yml находится в каталоге инсталлятора.
Для подключения к LCM-узлам используются значения из файла lcm-config.yaml:
ssh_username— пользователь для SSH-подключения;control_plane— LCM-узлы, на которых применяются профили.
Автоматический запуск использует локальный файл rbac-profiles.yml. Получение профилей из внешнего Git-репозитория через installer.sh не выполняется.
Ручное применение профилей¶
Профили можно применить вручную из локального YAML-файла или получить из внешнего Git-репозитория.
Для ручного запуска скрипта утилита yq должна быть доступна в PATH на LCM-узле, с которого выполняется настройка.
Из локального файла¶
Для применения локального файла выполните на первом LCM-узле:
$ ./setup-rbac-users.sh \
--local ./rbac-profiles.yml \
--ssh-user <ssh_username> \
--host <LCM-узел-1>,<LCM-узел-2>,<LCM-узел-3>
Для --ssh-user укажите значение параметра ssh_username из lcm-config.yaml, для --host — узлы из списка control_plane.
Из внешнего Git-репозитория¶
Для получения профилей из внешнего Git-репозитория выполните:
$ ./setup-rbac-users.sh \
--repo https://gitlab.example.com/infra/sudo-profiles.git \
--branch main \
--file sudoers.yml \
--ssh-user <ssh_username> \
--host <LCM-узел-1>,<LCM-узел-2>,<LCM-узел-3>
Параметр --branch задаёт ветку репозитория, параметр --file — YAML-файл с переменной keystack_sudoers. Если параметры не указаны, используются ветка master и файл sudoers.yml.
Пробный запуск¶
Перед применением профилей выполните пробный запуск с параметром --dry-run:
$ ./setup-rbac-users.sh \
--local ./rbac-profiles.yml \
--ssh-user <ssh_username> \
--host <LCM-узел-1>,<LCM-узел-2>,<LCM-узел-3> \
--dry-run
В этом режиме скрипт выводит пользователей, количество правил sudo и SSH-ключей, список целевых LCM-узлов и команды, которые будут выполнены, но не вносит изменения на узлах.
Настройка аварийной учётной записи¶
Аварийная учётная запись настраивается в два этапа, поскольку пароль не передаётся через YAML-файл.
По умолчанию скрипт использует имя аварийной учётной записи emergency. При автоматическом запуске из installer.sh параметр --emergency-user не передаётся, поэтому на первом этапе как аварийная обрабатывается только учётная запись с именем emergency.
При обычном применении профилей скрипт создаёт эту учётную запись без пароля, sudo-профиля и SSH-ключей. Для ручного сценария имя аварийной учётной записи можно задать параметром --emergency-user.
После завершения развёртывания LCM выполните второй этап:
$ ./setup-rbac-users.sh \
--setup-emergency \
--emergency-user <имя_аварийной_учётной_записи> \
--ssh-user <ssh_username> \
--host <LCM-узел-1>,<LCM-узел-2>,<LCM-узел-3>
Введите пароль аварийной учётной записи и повторите его для подтверждения. Скрипт установит пароль и создаст для пользователя sudo-профиль с правилом ALL=(ALL) ALL.
После применения профилей изменения в локальном YAML-файле или внешнем Git-репозитории автоматически на LCM-узлы не переносятся.