Segurança — NiFi
O chart tdp-nifi suporta autenticação LDAP e HTTPS com certificados gerenciados pelo cert-manager. A configuração é feita sob a chave nifiCluster no values.yaml.
Por padrão, o NiFi é implantado sem LDAP ativo e sem HTTPS forçado. A ativação de qualquer um desses recursos requer configuração explícita dos blocos abaixo.
Ativando LDAP e HTTPS
O bloco nifiCluster.security controla o protocolo de acesso (http ou https), a porta e a integração com LDAP de forma unificada:
nifiCluster:
security:
enabled: true
protocol: "https"
port: 8443
ldap:
enabled: true
url: "ldap://<ldap-host>:389"
managerDn: "uid=<bind-user>,cn=users,cn=accounts,dc=empresa,dc=com,dc=br"
managerPassword: "<bind-password>"
| Campo | Descrição |
|---|---|
security.enabled | Habilita o modo seguro no NiFi |
security.protocol | https para TLS; http para acesso sem criptografia |
security.port | Porta de escuta — 8443 com HTTPS, 8080 com HTTP |
security.ldap.enabled | Habilita autenticação LDAP |
security.ldap.url | Endereço do servidor LDAP |
security.ldap.managerDn | DN do usuário de bind (somente leitura no diretório) |
security.ldap.managerPassword | Senha do bind — não versionar em repositório público |
Não armazene managerPassword em repositório Git. Use um arquivo de valores privado (fora do controle de versão) ou um mecanismo de gestão de Secrets para injetar essa credencial no deploy.
LDAP — configuração detalhada
Para controle fino do comportamento de busca e autenticação, use o bloco nifiCluster.ldapConfiguration:
nifiCluster:
ldapConfiguration:
enabled: true
url: "ldap://<ldap-host>:389"
searchBase: "cn=users,cn=accounts,dc=empresa,dc=com,dc=br"
searchFilter: "(&(uid={0})(objectClass=person))"
authenticationStrategy: "SIMPLE"
managerDn: "uid=<bind-user>,cn=users,cn=accounts,dc=empresa,dc=com,dc=br"
managerPassword: "<bind-password>"
referralStrategy: "FOLLOW"
identityStrategy: "USE_USERNAME"
| Campo | Descrição |
|---|---|
url | Endereço do servidor LDAP |
searchBase | Base DN onde os usuários estão localizados |
searchFilter | Filtro de busca — {0} é substituído pelo username informado |
authenticationStrategy | Tipo de bind: SIMPLE para autenticação direta |
managerDn | DN do usuário de bind (somente leitura no diretório) |
managerPassword | Senha do usuário de bind — não versionar em repositório público |
identityStrategy | USE_USERNAME usa o login como identidade no NiFi |
Adicionalmente, inclua o provider no bloco de propriedades do NiFi:
nifiCluster:
readOnlyConfig:
nifiProperties:
overrideConfigs: |
nifi.sensitive.props.key=<chave-sensivel>
nifi.security.user.login.identity.provider=ldap-provider
Identidades iniciais
Após habilitar o LDAP, é necessário definir o usuário inicial e o administrador no authorizersXML. O valor deve ser uma identidade válida retornada pelo seu provedor LDAP:
nifiCluster:
authorizersSecret:
authorizersXML: |
<property name="Initial User Identity 1"><identidade-ldap></property>
<property name="Initial Admin Identity"><identidade-ldap></property>
Substitua <identidade-ldap> pela identidade exata que o LDAP retorna para o usuário (em geral o uid ou o DN do usuário, dependendo de identityStrategy).
Desativando LDAP
Para reverter ao acesso HTTP sem autenticação LDAP:
nifiCluster:
security:
enabled: false
protocol: "http"
port: 8080
ldap:
enabled: false
Ingress com HTTPS
Quando o NiFi opera em HTTPS (security.protocol: "https"), o Ingress Controller precisa ser informado do protocolo de backend para que o proxy funcione corretamente. Configure a anotação no bloco de Ingress do NiFi:
nifiCluster:
ingress:
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
rules:
paths:
backend:
service:
port:
number: 8443
Para reverter ao HTTP, ajuste a anotação e a porta:
nifiCluster:
ingress:
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
rules:
paths:
backend:
service:
port:
number: 8080
Essas anotações são específicas do NGINX Ingress Controller. Caso utilize outro controlador, consulte sua documentação para a configuração equivalente de backend TLS.
HTTPS com cert-manager
O NiFi pode ser configurado para operar em HTTPS utilizando certificados emitidos automaticamente pelo cert-manager. O webhook do operador NiFiKop também exige cert-manager quando nifikop.webhook.enabled: true.
nifiCluster:
https:
enabled: true
host: nifi.empresa.com
sslSecrets:
create: true
pkiBackend: cert-manager
issuerRef:
name: selfsigned-issuer
kind: Issuer
| Campo | Descrição |
|---|---|
https.enabled | Habilita HTTPS no cluster NiFi |
https.host | Hostname que será usado no certificado |
sslSecrets.create | Cria automaticamente o Secret de TLS |
sslSecrets.pkiBackend | cert-manager delega a emissão ao cert-manager |
issuerRef.name | Nome do Issuer ou ClusterIssuer configurado no cluster |
Pré-requisito: cert-manager
O cert-manager deve estar instalado no cluster antes do deploy do NiFi com HTTPS ou com webhook habilitado:
kubectl create namespace cert-manager
kubectl apply --validate=false -f \
https://github.com/jetstack/cert-manager/releases/download/v1.7.2/cert-manager.crds.yaml
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager \
--namespace cert-manager \
--version v1.17.2 jetstack/cert-manager
Boas práticas
| Aspecto | Recomendação |
|---|---|
| Ambiente de desenvolvimento | LDAP desabilitado, acesso via port-forward |
| Ambiente compartilhado / produção | LDAP com ldaps:// (porta 636) e HTTPS habilitado |
| Credenciais | Nunca versionar managerPassword em valores públicos |
| Certificados | Preferir cert-manager com ClusterIssuer em produção |
Resolução de Problemas
| Problema | Causa provável | Solução |
|---|---|---|
| Pod NiFi não sobe com HTTPS | cert-manager ausente ou Issuer não encontrado | Verificar instalação do cert-manager e nome do Issuer |
| Login LDAP falha | DN de bind ou senha incorretos | Testar bind com ldapsearch antes de configurar |
| Certificado inválido no navegador | Uso de selfsigned-issuer | Esperado em desenvolvimento; usar CA válida em produção |
Para a lista completa de parâmetros, use helm show values na versão do chart que instalou.