Saltar para o conteúdo principal
Versão 3.0.0

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>"
CampoDescrição
security.enabledHabilita o modo seguro no NiFi
security.protocolhttps para TLS; http para acesso sem criptografia
security.portPorta de escuta — 8443 com HTTPS, 8080 com HTTP
security.ldap.enabledHabilita autenticação LDAP
security.ldap.urlEndereço do servidor LDAP
security.ldap.managerDnDN do usuário de bind (somente leitura no diretório)
security.ldap.managerPasswordSenha do bind — não versionar em repositório público
Credenciais de bind

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"
CampoDescrição
urlEndereço do servidor LDAP
searchBaseBase DN onde os usuários estão localizados
searchFilterFiltro de busca — {0} é substituído pelo username informado
authenticationStrategyTipo de bind: SIMPLE para autenticação direta
managerDnDN do usuário de bind (somente leitura no diretório)
managerPasswordSenha do usuário de bind — não versionar em repositório público
identityStrategyUSE_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
info

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
CampoDescrição
https.enabledHabilita HTTPS no cluster NiFi
https.hostHostname que será usado no certificado
sslSecrets.createCria automaticamente o Secret de TLS
sslSecrets.pkiBackendcert-manager delega a emissão ao cert-manager
issuerRef.nameNome 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

AspectoRecomendação
Ambiente de desenvolvimentoLDAP desabilitado, acesso via port-forward
Ambiente compartilhado / produçãoLDAP com ldaps:// (porta 636) e HTTPS habilitado
CredenciaisNunca versionar managerPassword em valores públicos
CertificadosPreferir cert-manager com ClusterIssuer em produção

Resolução de Problemas

ProblemaCausa provávelSolução
Pod NiFi não sobe com HTTPScert-manager ausente ou Issuer não encontradoVerificar instalação do cert-manager e nome do Issuer
Login LDAP falhaDN de bind ou senha incorretosTestar bind com ldapsearch antes de configurar
Certificado inválido no navegadorUso de selfsigned-issuerEsperado 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.