Syntax highlighting of 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` добавляем строку `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'' режима. Здесь можно использовать более простой вариант аутентификации