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

时间:2018-03-14 01:49:29

标签: linux ssl-certificate apache-nifi

我已尽力遵循:https://pierrevillard.com/2016/11/29/apache-nifi-1-1-0-secured-cluster-setup/

我正在运行nifi-1.5.0,当我转到每个页面时,我看到如下错误:不受信任的代理CN = nifi- {1-3} .east.companyname.com,OU = NIFI

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

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

我也有 nifi.security.needClientAuth=truenifi.cluster.protocol.is.secure=true 在我所有节点上的nifi.properties文件中设置

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

<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 个答案:

答案 0 :(得分:1)

我建议您在authorizers.xml中配置授权人,以使用具有两个用户组提供商的CompositeConfigurableUserGroupProvider

  1. file-user-group-provider:这将用于存储群集节点的身份(证书DN)
  2. ldap-user-group-provider:对于最终用户,当群集正在复制请求时,代理将被代理
  3. 配置这两个UserGroupProviders,然后将CompositeConfigurableUserGroupProvider配置为使用file-user-group-provider作为&#34; Configurable Provider&#34;和ldap-user-group-provider为&#34;用户组提供商1&#34;。这是一个例子:

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

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

    希望这有帮助!

    参考:NiFi Admin Guide