Segurança — CloudBeaver
Configure autenticação LDAP para o CloudBeaver Community, permitindo que usuários se autentiquem contra seu servidor LDAP corporativo em vez de usar contas locais.
Siga as práticas de não commitar senhas em arquivos versionados e usar Kubernetes Secrets ou operadores de gestão de secrets.
Pré-requisitos
- Servidor LDAP alcançável a partir do cluster (ex.:
ldap.empresa.local:389) - DN de bind com permissão para buscar usuários no diretório
- Credenciais do bind (usuário e senha)
- Base DN onde os usuários estão localizados
- Filtro LDAP para localizar usuários por ID
Credenciais e Secrets
kubectl -n <NAMESPACE> create secret generic tdp-cloudbeaver-ldap-bind \
--from-literal=password='<LDAP_BIND_PASSWORD>'
Este Secret armazena a senha de bind de forma segura, referenciada pelos valores do chart.
Configuração LDAP
A configuração LDAP usa os blocos ldap.server, ldap.bind, ldap.userSearch e ldap.extraEnvVars
para injetar CLOUDBEAVER_AUTH_LDAP_BIND_PASSWORD via secretKeyRef.
O chart gera automaticamente o arquivo cloudbeaver.conf com o bloco authConfigurations
a partir desses campos — não é necessário fornecer JSON manualmente.
tdp-cloudbeaver:
ldap:
enabled: true
server:
host: "<LDAP_HOST>"
port: 389
useSSL: false
useTLS: false
insecureSkipVerify: true
bind:
dn: "<LDAP_BIND_DN>"
passwordSecretName: "tdp-cloudbeaver-ldap-bind"
passwordSecretKey: "password"
userSearch:
baseDN: "<LDAP_USER_BASE_DN>"
filter: "(objectClass=person)"
userIdAttribute: "uid"
extraEnvVars: |
- name: CLOUDBEAVER_AUTH_LDAP_BIND_PASSWORD
valueFrom:
secretKeyRef:
name: tdp-cloudbeaver-ldap-bind
key: password
O chart gera o arquivo cloudbeaver.conf com o bloco authConfigurations automaticamente,
a partir dos campos ldap.server.*, ldap.bind.* e ldap.userSearch.*.
Não é necessário definir settings manualmente nos valores.
O campo ldap.extraEnvVars injeta a senha de bind em tempo de execução via secretKeyRef.
Placeholders a substituir:
<LDAP_HOST>: hostname ou IP do servidor LDAP<LDAP_BIND_DN>: DN completo do usuário de bind (ex.:cn=admin,dc=empresa,dc=local)<LDAP_USER_BASE_DN>: Base DN onde os usuários estão (ex.:ou=pessoas,dc=empresa,dc=local)
Instalação ou atualização
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-cloudbeaver \
-n <NAMESPACE> --create-namespace \
-f <VALUES_FILE>
Parâmetros
| Área | Uso | Exemplo |
|---|---|---|
ldap.server.* | Host, porta, SSL/TLS | host: "ldap.empresa.local" |
ldap.bind.* | DN de bind + nome do Secret com senha | dn: "cn=admin,dc=empresa,dc=local" |
ldap.userSearch.* | Base DN, filtro, atributo de login | baseDN: "ou=pessoas,dc=empresa,dc=local" |
ldap.extraEnvVars | Injeção da senha de bind via secretKeyRef | Sempre incluir CLOUDBEAVER_AUTH_LDAP_BIND_PASSWORD |
Solução de problemas
Opção LDAP não aparece no login
Verificação 1: confirmar se LDAP está ativado
tdp-cloudbeaver:
ldap:
enabled: true
Verificação 2: validar a seção authConfigurations no ConfigMap gerado
kubectl get configmap tdp-cloudbeaver-auto-config -n <NAMESPACE> -o yaml | \
grep -A 20 "authConfigurations"
Verifique se o bloco contém o provider "ldap" e se o host e DN estão corretos.
Verificação 3: verificar logs do pod
kubectl logs -n <NAMESPACE> -l app.kubernetes.io/name=tdp-cloudbeaver | grep -i ldap
Se não houver mensagens sobre LDAP, pode indicar que a configuração não foi reconhecida.
Falha de autenticação LDAP
Verificação 1: testar conectividade ao servidor LDAP
kubectl exec -it -n <NAMESPACE> <POD_NAME> -- nc -zv <LDAP_HOST> 389
Se a conexão for recusada, o LDAP não está alcançável.
Verificação 2: verificar credenciais de bind
# Executar dentro do pod ou de um pod utilitário com ldap-utils
ldapwhoami -x -H ldap://<LDAP_HOST>:389 \
-D "<LDAP_BIND_DN>" \
-w '<LDAP_BIND_PASSWORD>'
Se falhar, a senha de bind ou o DN estão incorretos.
Verificação 3: validar filtro e base DN
# Buscar usuários na base DN com o filtro configurado
ldapsearch -x -H ldap://<LDAP_HOST>:389 \
-D "<LDAP_BIND_DN>" \
-w '<LDAP_BIND_PASSWORD>' \
-b "<LDAP_USER_BASE_DN>" \
"<LDAP_FILTER>"
Se não encontrar usuários, revise o filtro ou a base DN.
Verificação 4: verificar atributo de ID do usuário
# Buscar um usuário específico e ver quais atributos possui
ldapsearch -x -H ldap://<LDAP_HOST>:389 \
-D "<LDAP_BIND_DN>" \
-w '<LDAP_BIND_PASSWORD>' \
-b "<LDAP_USER_BASE_DN>" \
"uid=<USERNAME>"
Confirme que userIdAttribute corresponde a um atributo existente (ex.: uid, mail, sAMAccountName).
Atributo de usuário não encontrado
Sintoma: usuário existe no LDAP mas CloudBeaver não consegue localizá-lo.
Verificação: inspecionar atributos do usuário no LDAP:
ldapsearch -x -H ldap://<LDAP_HOST>:389 \
-D "<LDAP_BIND_DN>" -W \
-b "<LDAP_USER_BASE_DN>" \
"(uid=<USERNAME>)" uid givenName sn mail sAMAccountName
Se o usuário não tiver o atributo definido em userIdAttribute (padrão uid),
atualize o valor — por exemplo, para sAMAccountName em ambientes Active Directory.
Logs detalhados do CloudBeaver
Para ver logs completos de autenticação:
kubectl logs -n <NAMESPACE> -l app.kubernetes.io/name=tdp-cloudbeaver --tail=100 | grep -i "auth\|ldap\|bind"
Procure por:
- Mensagens de conexão ao LDAP
- Tentativas de bind
- Erros de busca de usuários
- Mensagens de sucesso/falha de autenticação
Fluxo de autenticação LDAP
- O usuário seleciona "LDAP" na tela de login do CloudBeaver.
- O CloudBeaver realiza um bind ao servidor LDAP usando as credenciais configuradas em
ldap.bind. - Busca o usuário com o filtro definido em
ldap.userSearch.filtere o atributouserIdAttribute. - Autentica o usuário com a senha informada no login.
- Cria ou atualiza o perfil do usuário no CloudBeaver com os atributos LDAP.
Considerações de segurança
- Use LDAPS em produção: habilite
ldap.server.useSSL: truepara criptografar o tráfego LDAP. - Usuário de bind dedicado: use um usuário de bind com permissões mínimas (somente leitura no diretório).
- Segurança de rede: o servidor LDAP deve ser acessível apenas de redes autorizadas.
- Gestão de senhas: nunca commite senhas em Git; use Kubernetes Secrets com Sealed Secrets, External Secrets Operator ou HashiCorp Vault em produção.
insecureSkipVerify: defina comofalseem produção para validar o certificado TLS do servidor LDAP.
LDAP vs autenticação local
O CloudBeaver suporta autenticação local e LDAP simultaneamente:
| Tipo | Usuários | Quando usar |
|---|---|---|
| Local | Usuários criados diretamente no CloudBeaver (ex.: admin) | Sempre disponível; necessário para administração inicial |
| LDAP | Usuários do diretório corporativo | Ambientes com SSO ou autenticação centralizada |
O usuário admin local (configurado via initialData.adminName) permanece disponível
independentemente do LDAP.
Mantenha-o como contingência para acesso administrativo caso o LDAP fique indisponível.