Keycloak

Установка и запуск

TODO

Рецепты

SSH

Пример реализации доступа к серверам через ssh с использованием ролей Keycloak.

План:

  1. настраиваем сервер
  2. устанавливаем расширение в Keycloak

На этапе настройки сервера устанавливаем 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.

sudo visudo

# --- вместо
%sudo  ALL=(ALL:ALL) ALL
# --- используем
%sudo ALL=NOPASSWD: ALL

На втором этапе устанавливаем расширение keycloak-restrict-client-auth для Keycloak. Это расширение нам требуется для ограничение доступа к Realm клиенту, созданному на предыдущем этапе. "Из коробки" (на сколько понимаю) Keycloak не предоставляет такую возможность.

Установку выполняем по README.md для Client Role based режима. Здесь можно использовать более простой вариант аутентификации

SSH authorization flow

Кроме того, требуется указать новый способ аутентификации в настройках клиента ssh-login: Clients > ssh-login > Advanced > Authentication flow overrides > Direct Grant Flow