【问题标题】:Right Keytab for Nifi ProcessorNifi 处理器的 Right Keytab
【发布时间】:2017-06-08 20:01:46
【问题描述】:

我在 Kerborized 环境中有 Nifi 3 节点集群(通过 Hortonworks Data Flow - HDF 安装)。作为安装的一部分,Ambari 创建了 nifi service keytab 。 嗨

我可以使用这个 nifi.service.keytab 来配置像 PutHDFS 这样与 Hadoop 服务通信的处理器吗?

nifi.service.keytab 是特定于机器的,并且总是期望带有机器信息的主体名称。 ex nifi/HOSTNAME@REALM

如果我使用 nfii/NODE1_Hostname@REALM 信息配置我的处理器,那么我会在其他两个节点中看到 kerberos 身份验证异常。

如何动态解析主机名以使用 nifi 服务密钥表?

【问题讨论】:

  • NiFi 服务使用service/host.fqdn@REALM 形式的“服务主体名称”。客户端使用someone@REALM 形式的基本“主要名称”;身份验证过程分两步完成,首先客户端获取 TGT (ticket-granting ticket) 作为身份证明,然后使用 TGT 获取服务票据以访问特定主机。 IE。在故障转移到另一台主机的情况下,它必须获得另一个服务票证;解析由 NiFi 客户端库自动完成。
  • @SamsonScharfrichter 问题是如果我在 Nifi 处理器中配置服务密钥表,它不会动态解析主机名。因为在主体与机器名称不匹配的情况下,哪个处理器开始失败。
  • 是的,这就是为什么您需要在 Kerberos 目录中 三个 不同的条目,以及 3 个不同的密钥表,每个节点一个...除非您使用 Microsoft AD 作为 Kerberos KDC -- 它工作方式略有不同(对于 AD,SPN 不是 ID,而是标准帐户的属性)
  • 请记住,Kerberos 是在分布式处理(甚至负载平衡器)流行之前 几十年 定义的。它对主机身份验证(包括反向 DNS 扫描)以及其他 thibgs 非常谨慎。

标签: apache-nifi hortonworks-dataflow


【解决方案1】:

keytab 主体名称字段支持Apache NiFi Expression Language,因此您可以使用如下表达式:nifi/${hostname()}@REALM,每个节点都会(独立)将该表达式解析为nifi/host1.nifi.com@REALMnifi/host2.nifi.com@REALM 等。

如果不希望它是显式主机名,也可以在每个节点上设置一个环境变量(export NIFI_KEYTAB_HOSTNAME="modified_host_format_1" 等),并以同样的方式在 EL 表达式中引用环境变量:nifi/${NIFI_KEYTAB_HOSTNAME}@REALM

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 2016-09-21
    • 2023-04-11
    相关资源
    最近更新 更多