Syntax highlighting of 6d08fec ~( devops/keycloak)
= Keycloak = == Установка и запуск == TODO == Рецепты == === SSH === Пример реализации доступа к серверам через `ssh` с использованием ролей Keycloak. План: 1. настраиваем сервер 2. устанавливаем расширение в Keycloak На этапе настройки сервера устанавливаем [[https://github.com/kha7iq/kc-ssh-pam | kc-ssh-pam]]. В процессе установки можно внести ряд дополнений: Запрещаем дальнейшие действия в случае неудачной проверки пользователя в Keycloak. Это может быть полезным, если локальный пользователь с таким же именем существует или в Keycloak такого пользователя. В таком случае, пользователь сможет зайти под локальной учетной записью, что не является предпочтительным. {{{ # --- вместо auth sufficient pam_exec.so expose_authtok log=/var/log/kc-ssh-pam.log /opt/kc-ssh-pam/kc-ssh-pam # --- использовать auth requisite pam_exec.so expose_authtok log=/var/log/kc-ssh-pam.log /opt/kc-ssh-pam/kc-ssh-pam }}} В скрипте `/usr/share/libpam-script/pam_script_auth` добавляем строку {{{#!highlight bash adduser $PAM_USER sudo }}} чтобы новый пользователь сразу добавлялся в группу `sudo`. Также, здесь необходимо отключить пароль для `sudo`. {{{#!highlight bash sudo visudo # --- вместо %sudo ALL=(ALL:ALL) ALL # --- используем %sudo ALL=NOPASSWD: ALL }}} На втором этапе устанавливаем расширение [[https://github.com/sventorben/keycloak-restrict-client-auth | keycloak-restrict-client-auth ]] для Keycloak. Это расширение нам требуется для ограничение доступа к Realm клиенту, созданному на предыдущем этапе. "Из коробки" (на сколько понимаю) Keycloak не предоставляет такую возможность. Установку выполняем по [[https://github.com/sventorben/keycloak-restrict-client-auth/blob/main/README.md | README.md ]] для ''Client Role based'' режима. Здесь можно использовать более простой вариант аутентификации {{devops/keycloak/ssh-flow|SSH authorization flow | width=50%}} Кроме того, требуется указать новый способ аутентификации в настройках клиента ''ssh-login'': Clients > ssh-login > Advanced > Authentication flow overrides > Direct Grant Flow По итогу получаем, что при назначении роли `restricted-access` пользователю или группе предоставляется `ssh` доступ с ''sudo'' к преднастроенным серверам.
