我已尽力遵循: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=true
和
nifi.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>
提前谢谢!
答案 0 :(得分:1)
我建议您在authorizers.xml
中配置授权人,以使用具有两个用户组提供商的CompositeConfigurableUserGroupProvider
:
file-user-group-provider
:这将用于存储群集节点的身份(证书DN)ldap-user-group-provider
:对于最终用户,当群集正在复制请求时,代理将被代理配置这两个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.xml
和authorizations.xml
并在每个节点上重新启动NiFi 。 (这有必要创建带有节点标识设置的users.xml和authorizations.xml以充当代理,如果users.xml和authorizations.xml存在数据,则不会发生这种情况。)如果正确完成,每个节点应允许群集节点使用客户端证书(来自其keystore.jks)进行身份验证,并且每个节点将被授权充当代理,这意味着当最终用户与一个群集通信时,该交互将被复制到群集中的所有节点,这就是你想要的。
您应该可以设置nifi.security.needClientAuth=false
。基于证书的身份验证仍然有效,它只是不需要(即,对于从最终用户到节点的初始通信,LDAP凭证就足够了)。
希望这有帮助!