Saltar para o conteúdo principal
Versão 3.0

Segurança — CloudBeaver

ChartVersion3.0.1TypeapplicationAppVersion25.3.0
CompatibilidadeKubernetes1.32+OpenShift4.19+Rancher2.10.x+
Suporte a recursosLDAPsuportado

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

Terminal input
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
Configuração gerada automaticamente pelo chart

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

Terminal input
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-cloudbeaver \
-n <NAMESPACE> --create-namespace \
-f <VALUES_FILE>

Parâmetros

ÁreaUsoExemplo
ldap.server.*Host, porta, SSL/TLShost: "ldap.empresa.local"
ldap.bind.*DN de bind + nome do Secret com senhadn: "cn=admin,dc=empresa,dc=local"
ldap.userSearch.*Base DN, filtro, atributo de loginbaseDN: "ou=pessoas,dc=empresa,dc=local"
ldap.extraEnvVarsInjeção da senha de bind via secretKeyRefSempre 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

Terminal input
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

Terminal input
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

Terminal input
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

Terminal input
# 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

Terminal input
# 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

Terminal input
# 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:

Terminal input
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:

Terminal input
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

  1. O usuário seleciona "LDAP" na tela de login do CloudBeaver.
  2. O CloudBeaver realiza um bind ao servidor LDAP usando as credenciais configuradas em ldap.bind.
  3. Busca o usuário com o filtro definido em ldap.userSearch.filter e o atributo userIdAttribute.
  4. Autentica o usuário com a senha informada no login.
  5. 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: true para 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 como false em produção para validar o certificado TLS do servidor LDAP.

LDAP vs autenticação local

O CloudBeaver suporta autenticação local e LDAP simultaneamente:

TipoUsuáriosQuando usar
LocalUsuários criados diretamente no CloudBeaver (ex.: admin)Sempre disponível; necessário para administração inicial
LDAPUsuários do diretório corporativoAmbientes com SSO ou autenticação centralizada
Usuário admin local

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.