我建议在中配置您的授权人
authorizers.xml
使用
CompositeConfigurableUserGroupProvider
有两个用户组提供程序:
-
file-user-group-provider
:这将用于存储群集节点的标识(证书DNs)
-
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