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.

Activar 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.enabledActiva o modo seguro no NiFi
security.protocolhttps para TLS; http para acesso sem encriptação
security.portPorta de escuta — 8443 com HTTPS, 8080 com HTTP
security.ldap.enabledActiva a autenticação LDAP
security.ldap.urlEndereço do servidor LDAP
security.ldap.managerDnDN do utilizador de bind (só leitura no directório)
security.ldap.managerPasswordPalavra-passe do bind — não versionar em repositório público
Credenciais de bind

Não armazene managerPassword em repositório Git. Utilize um ficheiro de valores privado (fora do controlo de versões) ou um mecanismo de gestão de Secrets para injectar esta credencial no deploy.

LDAP — configuração detalhada

A autenticação via LDAP delega o login ao directório corporativo (LDAP ou Active Directory). O bloco de configuração fica em 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 utilizadores estão localizados
searchFilterFiltro de pesquisa — {0} é substituído pelo username introduzido
authenticationStrategyTipo de bind: SIMPLE para autenticação directa
managerDnDN do utilizador de bind (só leitura no directório)
managerPasswordPalavra-passe do utilizador 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 activar o LDAP, é necessário definir o utilizador inicial e o administrador no authorizersXML. O valor deve ser uma identidade válida devolvida pelo seu fornecedor 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 exacta que o LDAP devolve para o utilizador (geralmente o uid ou o DN do utilizador, consoante identityStrategy).

Desactivar 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 modo seguro (nifiCluster.security.protocol: "https"), o Ingress Controller precisa da anotação backend-protocol para fazer o proxy correctamente. 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
informação

Estas anotações são específicas do NGINX Ingress Controller. Caso utilize outro controlador, consulte a 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.