Segurança - Ranger
Visão geral
O chart tdp-ranger concentra a segurança em quatro pontos: credenciais administrativas, credenciais de banco, autenticação LDAP/AD e sincronização de usuários/grupos.
Esses pontos afetam diretamente quem consegue acessar o Ranger Admin, como as políticas são armazenadas e quais identidades aparecem para atribuição de permissões.
Use Secrets para valores sensíveis e mantenha apenas placeholders em arquivos versionados.
Senhas de exemplo devem ser substituídas antes de qualquer ambiente com dados reais.
Modos de autenticação
| Modo | Uso típico | Observação |
|---|---|---|
Usuário local admin | Instalação inicial e administração emergencial | Troque a senha padrão de exemplo |
| LDAP/AD | Login com diretório corporativo | Exige bind DN, senha de bind e filtros de busca |
| UserSync | Sincronização de usuários e grupos para o Ranger | Recomendado junto com LDAP/AD |
| LDAPS | Conexão LDAP protegida por TLS | Exige certificado/truststore compatível |
O usuário local admin é útil para bootstrap e recuperação.
Em ambientes compartilhados, prefira autenticação corporativa e atribuição de roles por grupos.
Credenciais administrativas
Configure tdp-ranger.ranger.adminUser e tdp-ranger.ranger.adminPassword antes da instalação.
A senha do Ranger Admin deve conter no mínimo 8 caracteres, com letras maiúsculas, minúsculas, número e caractere especial.
Evite registrar a senha real em arquivos versionados.
Quando o ambiente usar ferramenta externa de gestão de segredos, mantenha o arquivo de valores apenas com placeholders e injete o valor no processo de deploy.
Credenciais do banco de dados
O Ranger usa PostgreSQL para armazenar políticas, usuários e configurações.
Quando o banco é externo, o chart executa um job de bootstrap (db-create-job) que cria o banco e o usuário do Ranger.
O job só é criado quando as duas condições forem atendidas:
tdp-ranger.postgres.enabled=false— banco embutido desabilitadoTDP-Settings.externalDatabase.enabled=true— PostgreSQL externo habilitado
O job lê as credenciais do administrador PostgreSQL em um Secret cujo nome corresponde ao releaseName do release tdp-postgresql (padrão: tdp-postgresql) e cuja chave esperada é postgres-password. Esse Secret é gerado automaticamente pelo chart tdp-postgresql.
O Secret de credenciais do Ranger para o banco é esperado em tdp-ranger.ranger.existingSecret, com a senha na chave definida por tdp-ranger.ranger.existingSecretPasswordKey.
Para desabilitar explicitamente o job:
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-ranger \
-n <NAMESPACE> \
--set TDP-Settings.externalDatabase.enabled=false
LDAP/AD
Habilite LDAP/AD quando o Ranger Admin precisar autenticar usuários em um diretório corporativo.
A configuração deve informar a URL do servidor, o DN de bind, a senha de bind, o DN base, os filtros de busca e os atributos usados para usuários e grupos.
O fluxo recomendado é manter tdp-ranger.ldap.enabled=false na configuração base, criar os Secrets necessários e aplicar a configuração LDAP/AD somente no install ou upgrade do ambiente que usará diretório corporativo.
Isso evita habilitar autenticação externa sem bind DN, senha de bind, filtros e certificados já definidos.
Exemplo de aplicação com um arquivo de valores dedicado para LDAP/AD:
helm upgrade --install <RELEASE_NAME> oci://registry.tecnisys.com.br/tdp/charts/tdp-ranger -f <BASE_VALUES_FILE> -f <LDAP_VALUES_FILE> -n <NAMESPACE>
Crie o Secret da senha de bind no mesmo namespace do Ranger:
kubectl create secret generic tdp-ranger-ldap-secret --from-literal=bind-password='<LDAP_BIND_PASSWORD>' -n <NAMESPACE>
Exemplo de configuração:
tdp-ranger:
ldap:
enabled: true
connection:
url: "ldap://<LDAP_HOST>:389"
allowInsecure: true
bind:
dn: "cn=<LDAP_BIND_USER>,dc=<LDAP_DOMAIN>,dc=com"
passwordSecret:
name: "tdp-ranger-ldap-secret"
key: "bind-password"
baseDn: "dc=<LDAP_DOMAIN>,dc=com"
user:
searchBase: "ou=users,dc=<LDAP_DOMAIN>,dc=com"
searchFilter: "(&(objectClass=person)(uid={0}))"
nameAttribute: "uid"
emailAttribute: "mail"
group:
searchBase: "ou=groups,dc=<LDAP_DOMAIN>,dc=com"
searchFilter: "(objectClass=groupOfNames)"
memberAttribute: "member"
Para Active Directory, ajuste filtros e atributos para o schema usado pelo domínio, como sAMAccountName quando aplicável.
Para OpenLDAP ou FreeIPA, valide uid, cn, memberOf e classes de objeto usadas no diretório.
LDAPS e truststore
Use LDAPS quando o diretório exigir conexão protegida por TLS.
Nesse modo, o Ranger precisa confiar no certificado apresentado pelo servidor LDAP.
Crie o Secret com o certificado ou truststore esperado:
kubectl create secret generic tdp-ranger-ldap-certs --from-file=truststore.pem=<LOCAL_PATH> -n <NAMESPACE>
Para habilitar o LDAPS, substitua o bloco connection pela URL ldaps:// (porta 636) com allowInsecure: false e adicione a seção tls referenciando o Secret tdp-ranger-ldap-certs:
tdp-ranger:
ldap:
connection:
url: "ldaps://<LDAP_HOST>:636"
allowInsecure: false
tls:
enabled: true
truststore:
secretName: "tdp-ranger-ldap-certs"
secretKey: "truststore.pem"
path: "/etc/ranger/ldap-certs"
Se a cadeia de certificados estiver incompleta, o login LDAP pode falhar mesmo com usuário e senha corretos.
Valide CA, SAN do certificado e resolução DNS do host LDAP.
UserSync
O UserSync sincroniza usuários e grupos do diretório com o Ranger Admin.
Isso permite criar políticas usando identidades corporativas sem cadastrar usuários manualmente.
Quando LDAP/AD estiver habilitado, configure tdp-ranger.usersync.enabled=true e ajuste fonte de sincronização, intervalo, filtros e recursos.
O UserSync usa um initContainer para aguardar o Ranger Admin ficar disponível antes de iniciar a sincronização.
No fluxo dedicado de LDAP/AD, o UserSync usa a imagem registry.tecnisys.com.br/tdp/images/ranger-usersync:2.7.0 e carrega install.properties a partir de ConfigMap, aplicando os segredos em tempo de execução. Personalize recursos via tdp-ranger.usersync.resources e ajustes finos de LDAP via tdp-ranger.usersync.ldap.
Exemplo:
tdp-ranger:
usersync:
enabled: true
syncSource: "ldap"
syncInterval: 60
Atribuição de roles
Use tdp-ranger.usersync.roleAssignment.rules para atribuir roles do Ranger a usuários ou grupos sincronizados.
Esse recurso evita que a administração dependa exclusivamente do usuário local admin.
tdp-ranger:
usersync:
roleAssignment:
enabled: true
rules:
- role: "ROLE_SYS_ADMIN"
users: []
groups:
- "cn=ranger_admins,ou=groups,dc=<LDAP_DOMAIN>,dc=com"
- role: "ROLE_ADMIN_AUDITOR"
users: []
groups:
- "cn=ranger_auditors,ou=groups,dc=<LDAP_DOMAIN>,dc=com"
Roles suportadas incluem ROLE_SYS_ADMIN, ROLE_KEY_ADMIN, ROLE_ADMIN_AUDITOR, ROLE_KEY_ADMIN_AUDITOR e ROLE_USER.
Use grupos do diretório para reduzir alterações manuais no Ranger Admin.
Parâmetros principais
| Parâmetro | Descrição |
|---|---|
tdp-ranger.ranger.adminUser | Usuário administrador local do Ranger |
tdp-ranger.ranger.adminPassword | Senha do administrador local |
tdp-ranger.ranger.dbPassword | Senha do usuário de banco do Ranger |
tdp-ranger.ranger.existingSecret | Secret com credenciais do banco do Ranger |
tdp-ranger.ldap.enabled | Habilita autenticação LDAP/AD |
tdp-ranger.ldap.connection.url | URL do servidor LDAP ou LDAPS |
tdp-ranger.ldap.connection.allowInsecure | Permite conexão LDAP sem TLS |
tdp-ranger.ldap.bind.passwordSecret | Secret com senha de bind |
tdp-ranger.ldap.user.searchFilter | Filtro de busca de usuários |
tdp-ranger.ldap.group.searchFilter | Filtro de busca de grupos |
tdp-ranger.ldap.tls.enabled | Habilita TLS/LDAPS |
tdp-ranger.usersync.enabled | Habilita sincronização de usuários e grupos |
tdp-ranger.usersync.roleAssignment.enabled | Habilita atribuição automática de roles |
Solução de problemas
| Sintoma | Possível causa | Verificação |
|---|---|---|
| Login local falha | Senha admin incorreta ou Secret desatualizado | Verifique Secret e eventos do pod |
| Login LDAP falha | Bind DN, senha ou filtro incorreto | Teste DN, filtro e Secret de bind |
| LDAPS falha | Certificado não confiável ou host não bate com certificado | Verifique CA, SAN e truststore.pem |
| Usuários não aparecem | UserSync desabilitado ou filtros restritivos | Verifique logs do UserSync |
| Roles não são atribuídas | DN de grupo não bate com o diretório | Compare o DN real do grupo com a regra |
Comandos úteis:
kubectl -n <NAMESPACE> get pods
kubectl -n <NAMESPACE> get secrets
kubectl -n <NAMESPACE> logs deploy/<RELEASE_NAME>-ranger
Boas práticas
- Troque todas as senhas de exemplo antes de ambientes com dados reais.
- Use Secrets ou ferramenta externa para valores sensíveis.
- Prefira LDAPS para diretórios corporativos.
- Use grupos LDAP/AD para administrar roles e políticas.
- Mantenha o usuário local
adminapenas para bootstrap e recuperação controlada. - Valide UserSync antes de criar políticas dependentes de grupos.