Saltar para o conteúdo principal
Versão 3.0

Segurança - Ranger

ChartVersion3.0.1TypeapplicationAppVersion2.7.0
CompatibilidadeKubernetes1.32+OpenShift4.19+Rancher2.10.x+

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

ModoUso típicoObservação
Usuário local adminInstalação inicial e administração emergencialTroque a senha padrão de exemplo
LDAP/ADLogin com diretório corporativoExige bind DN, senha de bind e filtros de busca
UserSyncSincronização de usuários e grupos para o RangerRecomendado junto com LDAP/AD
LDAPSConexão LDAP protegida por TLSExige 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 desabilitado
  • TDP-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:

Terminal input
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âmetroDescrição
tdp-ranger.ranger.adminUserUsuário administrador local do Ranger
tdp-ranger.ranger.adminPasswordSenha do administrador local
tdp-ranger.ranger.dbPasswordSenha do usuário de banco do Ranger
tdp-ranger.ranger.existingSecretSecret com credenciais do banco do Ranger
tdp-ranger.ldap.enabledHabilita autenticação LDAP/AD
tdp-ranger.ldap.connection.urlURL do servidor LDAP ou LDAPS
tdp-ranger.ldap.connection.allowInsecurePermite conexão LDAP sem TLS
tdp-ranger.ldap.bind.passwordSecretSecret com senha de bind
tdp-ranger.ldap.user.searchFilterFiltro de busca de usuários
tdp-ranger.ldap.group.searchFilterFiltro de busca de grupos
tdp-ranger.ldap.tls.enabledHabilita TLS/LDAPS
tdp-ranger.usersync.enabledHabilita sincronização de usuários e grupos
tdp-ranger.usersync.roleAssignment.enabledHabilita atribuição automática de roles

Solução de problemas

SintomaPossível causaVerificação
Login local falhaSenha admin incorreta ou Secret desatualizadoVerifique Secret e eventos do pod
Login LDAP falhaBind DN, senha ou filtro incorretoTeste DN, filtro e Secret de bind
LDAPS falhaCertificado não confiável ou host não bate com certificadoVerifique CA, SAN e truststore.pem
Usuários não aparecemUserSync desabilitado ou filtros restritivosVerifique logs do UserSync
Roles não são atribuídasDN de grupo não bate com o diretórioCompare 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 admin apenas para bootstrap e recuperação controlada.
  • Valide UserSync antes de criar políticas dependentes de grupos.