Segurança — Kafka (UI)
Este documento cobre a autenticação da interface web Kafka UI. Os listeners do cluster (plain e TLS) são configurados nos parâmetros do cluster Kafka — consulte Configuração do Kafka para detalhes sobre os listeners de broker.
O Kafka UI suporta dois modos de autenticação:
| Modo | Descrição |
|---|---|
LOGIN_FORM | Usuário e senha definidos diretamente no values.yaml |
LDAP | Autenticação delegada a um servidor LDAP/AD corporativo |
LOGIN_FORM (padrão)
O modo LOGIN_FORM é o padrão do chart e requer apenas a definição de usuário e senha:
kafka-ui:
yamlApplicationConfig:
auth:
type: LOGIN_FORM
spring:
security:
user:
name: admin
password: <ui-password>
O chart instala com password: admin por predefinição. Troque essa senha antes de expor a interface fora da rede interna do cluster. Use arquivos de valores privados (não versionados) ou mecanismos de Secret do seu ambiente para proteger a credencial.
LDAP
O modo LDAP delega a autenticação ao servidor LDAP ou Active Directory corporativo. É o modo recomendado em ambientes compartilhados ou quando há política de identidade centralizada.
kafka-ui:
yamlApplicationConfig:
auth:
type: LDAP
spring:
ldap:
urls: ldap://<ldap-host>:389
base: "<ldap-base-dn>"
admin-user: "<ldap-bind-dn>"
admin-password: "<ldap-bind-password>"
| Campo | Descrição | Exemplo |
|---|---|---|
urls | Endereço do servidor LDAP | ldap://ldap.empresa.com.br:389 |
base | Base DN de busca de usuários | dc=empresa,dc=com,dc=br |
admin-user | DN do usuário de bind (consulta) | uid=kafkaui,cn=users,cn=accounts,dc=empresa,dc=com,dc=br |
admin-password | Senha do usuário de bind | Não versionar — use secrets |
Não armazene <ldap-bind-password> em repositório Git. A injeção via variável de ambiente depende da versão do Kafka UI — consulte helm show values e a documentação da subchart para opções de extraEnvVars disponíveis na sua versão.
Uso de LDAPS (TLS)
Para conexão segura ao servidor LDAP, substitua o esquema ldap:// por ldaps:// e use a porta 636:
spring:
ldap:
urls: ldaps://<ldap-host>:636
Certifique-se de que o certificado da CA do servidor LDAP está presente no truststore do pod. Em ambientes que usam PKI própria, pode ser necessário montar o certificado como volume e configurá-lo no runtime.
Recomendações
| Aspecto | Recomendação |
|---|---|
| Ambiente de desenvolvimento | LOGIN_FORM com senha forte, acesso via port-forward |
| Ambiente compartilhado / produção | LDAP com LDAPS (porta 636) |
| Credenciais | Nunca versionar senhas em values.yaml público; usar arquivos privados ou gestão de Secrets |
| Exposição da UI | Prefira acesso via Ingress com TLS ou port-forward controlado; evite NodePort em redes abertas |
Resolução de Problemas
| Problema | Causa provável | Solução |
|---|---|---|
| Credenciais inválidas na UI (LOGIN_FORM) | Senha incorreta ou campo name/password com typo | Verificar spring.security.user nos valores aplicados |
| Login LDAP falha com "invalid credentials" | Bind DN ou senha incorretos | Testar bind com ldapsearch ou ferramenta LDAP externa |
| Login LDAP falha com "connection refused" | Host/porta LDAP inacessível pelo pod | Verificar conectividade de rede e firewalls do cluster |
Mudanças no yamlApplicationConfig não refletem | Pod não reiniciado após atualização | Forçar rollout: kubectl -n <namespace> rollout restart deployment kafka-ui |