Работали ли вы с Keycloak?

«Работали ли вы с Keycloak?» — вопрос из категории Безопасность, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, я развертывал и настраивал Keycloak как центральный сервис аутентификации и авторизации (IAM) для внутренних и клиентских приложений.

Мой практический опыт с Keycloak:

  1. Развертывание и управление инфраструктурой: Разворачивал Keycloak в высокодоступной конфигурации на Kubernetes. Использовал PostgreSQL в качестве базы данных для хранения realm'ов и пользователей. Управление конфигурацией (realms, clients, roles) автоматизировал с помощью Terraform, что позволяло версионировать настройки безопасности и быстро восстанавливать окружение.
    # Пример: Создание клиента для внутреннего API-сервиса
    resource "keycloak_openid_client" "internal_api" {
    realm_id = keycloak_realm.apps.id
    client_id = "internal-api-service"
    name     = "Internal API Service"
    enabled  = true
    access_type = "CONFIDENTIAL"
    service_accounts_enabled = true
    valid_redirect_uris = [ "https://api.internal.com/*" ]
    }
    # Создание роли и назначение её Service Account'у
    resource "keycloak_role" "api_writer" {
    realm_id = keycloak_realm.apps.id
    name     = "writer"
    }
    resource "keycloak_openid_client_service_account_role" "sa_role" {
    realm_id                = keycloak_realm.apps.id
    service_account_user_id = keycloak_openid_client.internal_api.service_account_user_id
    client_id               = keycloak_openid_client.internal_api.id
    role                    = keycloak_role.api_writer.name
    }
  2. Интеграция с инфраструктурой: Настраивал провайдер OIDC в Ingress NGINX Controller для аутентификации пользователей на уровне шлюза. Интегрировал Keycloak с такими инструментами, как Grafana (для единого входа) и API-шлюзами (Kong, KrakenD).
  3. Безопасность и мониторинг: Настраивал политики паролей, двухфакторную аутентичность (2FA) и блокировку учетных записей. Направлял аудит-логи Keycloak (события входа, регистрации) в централизованную систему логирования (Loki) для последующего анализа и оповещений.