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 base de dados, autenticação LDAP/AD e sincronização de usuários/grupos. Esses pontos afetam diretamente quem consegue aceder ao 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 ficheiros versionados. Palavras-passe 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 palavra-passe padrão de exemplo
LDAP/ADLogin com diretório corporativoExige bind DN, palavra-passe 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 palavra-passe do Ranger Admin deve conter no mínimo 8 caracteres, com letras maiúsculas, minúsculas, número e caractere especial.

Evite registar a palavra-passe real em ficheiros versionados. Quando o ambiente usar ferramenta externa de gestão de segredos, mantenha o ficheiro de valores apenas com placeholders e injete o valor no processo de deploy.

Credenciais da base de dados

O Ranger usa PostgreSQL para armazenar políticas, usuários e configurações. Quando a base de dados é externa, o chart executa um job de bootstrap (db-create-job) que cria a base de dados e o usuário do Ranger.

O job só é criado quando as duas condições forem atendidas:

  • tdp-ranger.postgres.enabled=false — base de dados embutida desativada
  • TDP-Settings.externalDatabase.enabled=true — PostgreSQL externo habilitado

O job lê as credenciais do administrador PostgreSQL num Secret cujo nome corresponde ao releaseName do release tdp-postgresql (padrão: tdp-postgresql) e cuja chave esperada é postgres-password. Este Secret é gerado automaticamente pelo chart tdp-postgresql.

O Secret de credenciais do Ranger para a base de dados é esperado em tdp-ranger.ranger.existingSecret, com a palavra-passe na chave definida por tdp-ranger.ranger.existingSecretPasswordKey.

Para desativar 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 num diretório corporativo. A configuração deve informar a URL do servidor, o DN de bind, a palavra-passe 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 apenas no install ou upgrade do ambiente que usará diretório corporativo. Isso evita habilitar autenticação externa sem bind DN, palavra-passe de bind, filtros e certificados já definidos.

Exemplo de aplicação com um ficheiro 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 palavra-passe 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 secçã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 palavra-passe 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.adminPasswordPalavra-passe do administrador local
tdp-ranger.ranger.dbPasswordPalavra-passe do usuário de base de dados do Ranger
tdp-ranger.ranger.existingSecretSecret com credenciais da base de dados 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 palavra-passe 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 falhaPalavra-passe admin incorreta ou Secret desatualizadoVerifique Secret e eventos do pod
Login LDAP falhaBind DN, palavra-passe 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 desativado 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 palavras-passe 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.