首页 > 解决方案 > Apache NiFi:使用基于文件的提供程序引导用户组和策略

问题描述

是否可以使用基于文件的提供程序引导用户组和策略?
目前我们在设置 NiFi 实例时使用org.apache.nifi.authorization.FileUserGroupProvider引导Initial User Identityorg.apache.nifi.authorization.FileAccessPolicyProvider引导。 我检查了管理指南中的Authorizers.xml 设置的代码,但我找不到任何关于引导用户组的信息。我想使用. 我知道使用 LDAP 是可能的,但我们现在不使用它。我已经在StackOverflow 上找到了她的类似问题Initial Admin Identity
FileUserGroupProviderFileAccessPolicyProvider
但解决方案并不令人满意,因为我们不想使用 nifi-api 来完成该任务,如果不是绝对必要的话。所以我要做的是编写一个基于 UserGroupProvider 和 AccessPolicyProvider 的新文件来完成该任务。
这是唯一的可能吗?
我会使用 theCompositeUserGroupProvider还是 the CompositeConfigurableUserGroupProvider,所以我可以使用它来组合功能,而不是重新实现 the 的功能FileUserGroupProvider并添加我的自定义实现?
意思是这样的:

<userGroupProvider>
  <identifier>composite-user-group-provider</identifier>
  <class>org.apache.nifi.authorization.CompositeUserGroupProvider</class>
  <property name="User Group Provider 1">org.apache.nifi.authorization.FileUserGroupProvider</property>
  <property name="User Group Provider 2">MyFileUserGroupProvider</property>
</userGroupProvider>

文件中的配置如何authorizers.xml

如果我关于如何使用 a 的假设CompositeProvider是正确的,那么引导策略是否有类似的东西?

标签: authorizationapache-nifi

解决方案


如果我理解正确,您希望自动将用户、组和策略设置为固定的预定义值。

我建议使用FileUserGroupProviderFileAccessPolicyProvider,因为它们都使您能够直接在 NiFi 本身中配置用户、组和策略。您不必创建 UserGroupProvider 或 AccessPolicyProvider 的自定义实现,除非您需要自定义超出所包含的基于字段的提供程序可以提供的功能。

您说您不想使用 nifi-api,我假设您的意思是 HTTP REST API。(我并不是想学究气,实际上有一个名为 nifi-api 的库,它是供 nifi 开发人员在编写扩展时使用的 Java 接口的集合。)我通常会推荐 REST APi,因为有保证 NiFI 1.x 的向后兼容性,但这并不是实现您想要做的事情的唯一方法。

您可以在 NiFi 之外手动(或编写脚本)创建 users.xml 和 authorizations.xml 文件,您只需配置 FileUserGroupProvider 和 AccessUserGroupProvider 以使用这些文件(或将它们复制到 conf 目录中这些文件的默认位置)。在启动时,NiFi 将这些文件的内容读入内存以创建用户、组和访问策略。Initial User 和 Initial Admin 属性仅用于在这些文件不存在或为空时自动填充这些文件,因此如果您提供这些文件的自己的副本,它们将被使用。

这些 XML 文件的结构很容易创建。您可以使用 NiFi 实例通过 UI 创建用户、组和策略,并查看写入这些文件的内容。然后,您可以随心所欲地创建它们:NiFi UI、手动或从另一个源文件编写脚本。创建文件后,您可以通过将它们放在 NiFi conf 目录中并(重新)启动它来执行“引导”部分。NiFi 不会重新生成或修改这些文件,除非在 UI 中修改了用户、组和策略。

这些方法的唯一缺点是不能保证这些文件具有稳定的模式。因此,可以随着时间的推移添加或更改新字段。也就是说,它们在 NiFi 的最后几个版本中一直很稳定。


推荐阅读