代码之家  ›  专栏  ›  技术社区  ›  Samuel Miller

群集上的Nifi 1.5不受信任代理

  •  2
  • Samuel Miller  · 技术社区  · 6 年前

    我已经尽了最大努力: https://pierrevillard.com/2016/11/29/apache-nifi-1-1-0-secured-cluster-setup/

    我正在运行nifi-1.5.0,当我转到每个页面时,都会看到一个错误,如:Untrusted proxy CN=nifi-{1-3}。东公司名称。com,OU=NIFI。

    我使用ldap身份验证,只接受“无效”证书。

    我使用了一个不相关的密钥服务器来根据上面的链接生成密钥库/信任库/证书。

    我还有 nifi.security.needClientAuth=true nifi.cluster.protocol.is.secure=true 在nifi中设置。所有节点上的属性文件

    我的授权人文件包括所有节点的条目,如:

    <property name="Node Identity 1">CN=nifi-1.east.companyname.com, OU=NIFI</property> <property name="Node Identity 2">CN=nifi-2.east.companyname.com, OU=NIFI</property> <property name="Node Identity 3">CN=nifi-3.east.companyname.com, OU=NIFI</property> 提前感谢!

    1 回复  |  直到 6 年前
        1
  •  1
  •   kevdoran    6 年前

    我建议在中配置您的授权人 authorizers.xml 使用 CompositeConfigurableUserGroupProvider 有两个用户组提供程序:

    1. file-user-group-provider :这将用于存储群集节点的标识(证书DNs)
    2. ldap-user-group-provider :对于您的最终用户,在群集复制请求时将代理

    配置这两个 UserGroupProviders ,然后配置 CompositeConfiguableUserGroupProvider 将文件用户组提供程序用作“可配置提供程序”,将ldap用户组提供程序用作“用户组提供程序1”。以下是一个示例:

    <authorizers>
    
        <userGroupProvider>
            <identifier>file-user-group-provider</identifier>
            <class>org.apache.nifi.authorization.FileUserGroupProvider</class>
            <property name="Users File">./conf/users.xml</property>
            <property name="Legacy Authorized Users File"></property>
    
            <property name="Initial User Identity 1">CN=nifi-1.east.companyname.com, OU=NIFI</property>
            <property name="Initial User Identity 1">CN=nifi-2.east.companyname.com, OU=NIFI</property>
            <property name="Initial User Identity 1">CN=nifi-3.east.companyname.com, OU=NIFI</property>
        </userGroupProvider>
    
        <userGroupProvider>
            <identifier>ldap-user-group-provider</identifier>
            <class>org.apache.nifi.ldap.tenants.LdapUserGroupProvider</class>
            <!-- ... configure this to match the settings in login-identity-providers.xml ... -->
        </userGroupProvider>
    
        <userGroupProvider>
            <identifier>composite-configurable-user-group-provider</identifier>
            <class>org.apache.nifi.authorization.CompositeConfigurableUserGroupProvider</class>
            <property name="Configurable User Group Provider">file-user-group-provider</property>
            <property name="User Group Provider 1">ldap-user-group-provider</property>
        </userGroupProvider>
    
        <accessPolicyProvider>
            <identifier>file-access-policy-provider</identifier>
            <class>org.apache.nifi.authorization.FileAccessPolicyProvider</class>
            <property name="User Group Provider">composite-configurable-user-group-provider</property>
            <property name="Authorizations File">./conf/authorizations.xml</property>
            <property name="Initial Admin Identity"></property>
            <property name="Legacy Authorized Users File"></property>
    
            <property name="Node Identity 1">CN=nifi-1.east.companyname.com, OU=NIFI</property>
            <property name="Node Identity 2">CN=nifi-2.east.companyname.com, OU=NIFI</property>
            <property name="Node Identity 3">CN=nifi-3.east.companyname.com, OU=NIFI</property>
        </accessPolicyProvider>
    
        <authorizer>
            <identifier>managed-authorizer</identifier>
            <class>org.apache.nifi.authorization.StandardManagedAuthorizer</class>
            <property name="Access Policy Provider">file-access-policy-provider</property>
        </authorizer>
    
    </authorizers>
    

    在每个节点上配置, 然后删除 users.xml authorizations.xml 并在每个节点上重新启动NiFi 。(这是使用节点标识设置创建users.xml和authorizations.xml以充当代理所必需的,如果users.xml和authorizations.xml与数据一起存在,则不会发生这种情况。)如果操作正确,每个节点都应该允许集群节点使用客户端证书(来自其keystore.jks)进行身份验证,并且每个节点都将被授权作为代理,这意味着当最终用户与一个集群通信时,该交互将复制到集群中的所有节点,这就是您想要的。

    您应该能够设置 nifi.security.needClientAuth=false 。基于证书的身份验证仍然有效,只是不需要它(即,对于从最终用户到节点的初始通信,LDAP凭据就足够了)。

    希望这有帮助!

    参考号: NiFi Admin Guide