Saltar para o conteúdo principal
Versão 3.0

Segurança — NiFi

ChartVersion3.0.1TypeapplicationAppVersion1.28.0
CompatibilidadeKubernetes1.32+OpenShift4.19+Rancher2.10.x+

O chart tdp-nifi suporta três modos operacionais de segurança, controlados pelos blocos nifiCluster.security e nifiCluster.authorizersSecret. A escolha do modo determina se o NiFi opera em HTTP ou HTTPS, se exige login LDAP e quem gerencia as políticas de acesso.

Modos de segurança

ModoQuando usarAutenticaçãoAutorização
Modo 1Laboratórios locais e testes funcionais temporáriosSem loginSem controle por usuário
Modo 2Ambientes com usuários LDAP e políticas locais no NiFiLDAPArquivo local do NiFi (file)
Modo 3Ambientes com LDAP e políticas centralizadas no RangerLDAPApache Ranger (ranger)

Modo 1: sem autenticação e sem controle de políticas

Use este modo em laboratórios locais ou testes funcionais temporários.

  • NiFi opera em HTTP
  • LDAP desabilitado
  • sem tela de login
  • acesso não segmentado por usuário/perfil
nifiCluster:
security:
enabled: false
protocol: "http"
port: 8080

ldap:
enabled: false

authorization:
mode: "file"

Se o Ingress estiver habilitado, use o protocolo HTTP no backend:

ingress:
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
rules:
- host: nifi.local
paths:
- path: /
pathType: Prefix
backend:
service:
name: tdp-nifi-service
port:
number: 8080

Modo 2: LDAP com políticas gerenciadas pelo NiFi

Use este modo quando os usuários autenticam via LDAP e as políticas de acesso são geridas pelo próprio NiFi (autorizador local).

  • NiFi opera em HTTPS
  • login via LDAP
  • políticas controladas pelo NiFi usando o autorizador de arquivo local (file)
nifiCluster:
security:
enabled: true
protocol: "https"
port: 8443

ldap:
enabled: true
url: "ldap://<LDAP_HOST>:389"
searchBase: "<LDAP_USER_BASE_DN>"
searchFilter: "(&(uid={0})(objectClass=inetOrgPerson))"
managerDn: "<LDAP_BIND_DN>"
managerPassword: "<LDAP_BIND_PASSWORD>"
referralStrategy: "FOLLOW"
identityStrategy: "USE_USERNAME"

authorization:
mode: "file"

Para o primeiro acesso, defina as identidades iniciais via nifiCluster.authorizersSecret:

nifiCluster:
authorizersSecret:
enabled: true
initialUserIdentities:
- fry
- leela
initialAdminIdentity: fry
Identidades no authorizersSecret
  • initialAdminIdentity é o primeiro administrador do NiFi.
  • A identidade deve corresponder ao que o LDAP retorna após a estratégia de mapeamento configurada.
  • Com identityStrategy: USE_USERNAME, use identidades como fry, leela, admin.

Se o Ingress estiver habilitado, use o protocolo HTTPS no backend:

ingress:
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
rules:
- host: nifi.local
paths:
- path: /
pathType: Prefix
backend:
service:
name: tdp-nifi-service
port:
number: 8443

Gerenciamento declarativo de usuários (opcional)

Após o bootstrap, é possível gerenciar usuários e grupos de forma declarativa via NiFiKop:

nifiCluster:
authorization:
enabled: true
managedAdminUsers:
- name: fry-admin
identity: fry
managedReaderUsers:
- name: hermes-reader
identity: hermes

Use quando quiser repeatibilidade via Helm. Se preferir, faça o bootstrap com authorizersSecret e gerencie as políticas depois na UI do NiFi.

Modo 3: LDAP com políticas gerenciadas pelo Ranger

Use este modo quando os usuários autenticam via LDAP e as políticas de acesso são controladas pelo Apache Ranger.

Requisitos:

  • imagem NiFi com o plugin Ranger já embutido
  • overlay tdp-ranger para o fluxo de autorização NiFi
  • Secret ranger-nifi-client-tls-password
nifiCluster:
clusterImage: "registry.tecnisys.com.br/tdp/images/nifi:1.28.0-0"

security:
enabled: true
protocol: "https"
port: 8443
additionalProxyHosts:
- "nifi-headless.<NAMESPACE>.svc.cluster.local"
- "nifi-headless.<NAMESPACE>.svc.cluster.local:8443"

ldap:
enabled: true
url: "ldap://<LDAP_HOST>:389"
searchBase: "<LDAP_USER_BASE_DN>"
searchFilter: "(&(uid={0})(objectClass=inetOrgPerson))"
managerDn: "<LDAP_BIND_DN>"
managerPassword: "<LDAP_BIND_PASSWORD>"
referralStrategy: "FOLLOW"
identityStrategy: "USE_USERNAME"

authorization:
mode: "ranger"

Crie o Secret com a senha JKS do Ranger antes do deploy:

Terminal input
kubectl -n <NAMESPACE> create secret generic ranger-nifi-client-tls-password \
--from-literal=password='<KEYSTORE_PASSWORD>' \
--dry-run=client -o yaml | kubectl apply -f -

Aplique os overlays correspondentes:

Terminal input
helm upgrade --install tdp-ranger oci://registry.tecnisys.com.br/tdp/charts/tdp-ranger \
-n <NAMESPACE> \
-f <VALUES_FILE>
Terminal input
helm upgrade --install tdp-nifi oci://registry.tecnisys.com.br/tdp/charts/tdp-nifi \
-n <NAMESPACE> \
-f <VALUES_FILE>
Regras operacionais do Modo 3
  • Use a imagem NiFi customizada com o plugin Ranger já incluído.
  • nifiCluster.security.authorization.ranger.adminIdentity deve corresponder à identidade do certificado cliente Ranger (padrão no repositório TDP: CN=ranger-nifi-client).
  • O serviço Ranger deve apontar para https://<NIFI_SERVICE>/nifi-api/resources.
  • Para NiFi em cluster, o Ranger precisa de políticas técnicas para /resources, /controller, /system e /proxy.

Resumo: chaves por modo

ConfiguraçãoModo 1Modo 2Modo 3
nifiCluster.security.enabledfalsetruetrue
nifiCluster.security.protocolhttphttpshttps
nifiCluster.security.ldap.enabledfalsetruetrue
nifiCluster.security.authorization.modefilefileranger
nifiCluster.authorizersSecretnão relevantebootstrap obrigatórionão é fonte de políticas
nifiCluster.authorizationopcionalopcionalnão é a fonte principal
Configuração de autorização Rangernãonãosim
imagem NiFi com plugin Rangernãonãosim

Regras práticas

  • Para sem login: desabilite security.enabled e ldap.enabled.
  • Para login via LDAP com políticas locais no NiFi: mantenha authorization.mode: file.
  • Para login via LDAP com políticas no Ranger: use authorization.mode: ranger.

Configuração LDAP detalhada

O bloco nifiCluster.security.ldap controla todos os parâmetros de busca e autenticação LDAP:

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
referralStrategyComo seguir referências LDAP: FOLLOW ou IGNORE
identityStrategyUSE_USERNAME usa o login como identidade no NiFi
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.

Para LDAPS (TLS), substitua ldap:// por ldaps:// e use a porta 636.

Certificados TLS (cert-manager)

O NiFi opera em HTTPS com certificados gerados automaticamente via cert-manager. A configuração SSL fica sob nifiCluster.security.ssl:

nifiCluster:
security:
ssl:
enabled: true
secrets:
create: true
tlsSecretName: "nifi-cluster-ca"
pkiBackend: cert-manager
issuerRef:
name: selfsigned-issuer
kind: Issuer
CampoDescrição
ssl.enabledHabilita TLS (derivado automaticamente de protocol: https)
ssl.secrets.createCria automaticamente o Secret de TLS
ssl.secrets.pkiBackendcert-manager delega a emissão ao cert-manager
ssl.secrets.issuerRef.nameNome do Issuer ou ClusterIssuer no cluster

Pré-requisito: cert-manager via tdp-crds

No TDP, o chart tdp-crds instala os CRDs necessários, incluindo os do cert-manager. Instale o tdp-crds antes do tdp-nifi:

Terminal input
helm upgrade --install tdp-crds \
oci://registry.tecnisys.com.br/tdp/charts/tdp-crds \
--namespace tdp --create-namespace

Quando nifikop.webhook.enabled=true, os controllers do cert-manager (cert-manager, cainjector e webhook) também precisam estar em execução no cluster.

Boas práticas

AspectoRecomendação
Ambiente de desenvolvimentoModo 1 (sem autenticação), acesso via port-forward
Ambiente compartilhado / produçãoModo 2 com LDAPS (porta 636) e HTTPS habilitado
CredenciaisNunca versionar managerPassword em valores públicos
CertificadosUsar cert-manager via tdp-crds em produção
Políticas centralizadasModo 3 com Ranger quando houver auditoria e controle centralizado de acesso

Soluçã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
Plugin Ranger não conectaadminIdentity incorreto ou Secret JKS ausenteVerificar nifiCluster.security.authorization.ranger.adminIdentity e Secret ranger-nifi-client-tls-password
NifiCluster preso em estado intermediárioWebhook do NiFiKop sem cert-managerVerificar nifikop.webhook.enabled e se os controllers do cert-manager estão prontos