Protegendo o Keycloak
O Keycloak pode logar eventos de login pelo logger org.keycloak.events; linhas LOGIN_ERROR carregam o ipAddress do cliente. O EzyShield as transforma em eventos keycloak_auth_fail (realm/username capturados, capados, não-confiáveis) e traz keycloak_bruteforce (5 falhas / 5 min, score 85) mais uma variante sustained de 1 h.
Habilite o log de eventos no Keycloak (obrigatório)
O Keycloak não loga eventos de login por padrão. Duas partes:
- O event listener — no admin console: Realm settings → Events → Event listeners, garanta que
jboss-loggingestá presente (está, por padrão). Save events NÃO é necessário — o logger dispara de qualquer forma. - O log level — a categoria
org.keycloak.eventsloga sucessos em DEBUG masLOGIN_ERRORem WARN. Garanta que seu nível mostra isso (o WARN padrão já mostra):
# Keycloak quarkus (conf/keycloak.conf ou CLI):
log-level=INFO,org.keycloak.events:WARNSanidade: falhe um login e confirme que uma linha type=LOGIN_ERROR, … ipAddress=… chega no seu journal/log de container.
Coletores
collectors:
# serviço systemd
- kind: journald
unit: keycloak
# docker (nome de container contendo "keycloak" é roteado automaticamente)
- kind: docker
container: keycloakFonte por arquivo também funciona (keycloak.log, ou qualquer caminho com parser: keycloak).
Nota de reverse proxy
ipAddress é o que o Keycloak vê. Atrás de proxy, configure os headers de proxy do Keycloak (proxy-headers=xforwarded no Quarkus) para ele resolver o cliente real — senão toda falha parece vir do proxy. Verifique em dry-run com ezyshield watch antes de armar.
Rollout
Dry-run primeiro, allowliste suas redes, observe um dia de decisões, então ezyshield arm.