Apache NiFi:使用基于文件的提供程序引导用户组和策略

问题描述 投票:0回答:1

是否可以使用基于文件的提供程序引导UserGroups和策略? 目前我们使用org.apache.nifi.authorization.FileUserGroupProvider来引导Initial User Identityorg.apache.nifi.authorization.FileAccessPolicyProvider来设置NiFi实例时引导Initial Admin Identity。 我在管理指南中检查了FileUserGroupProvider的代码以及Authorizers.xml Setup,我找不到任何有关引导UserGroups的信息。我想使用FileAccessPolicyProvider引导AccessPolicies也是如此。我知道可以使用LDAP,但我们现在不使用它。 我已经在StackOverflow上找到了类似的问题,但解决方案并不令人满意,因为我们不想使用nifi-api来完成这项任务,如果不是绝对必要的话。所以我要做的是编写一个基于UserGroupProvider和AccessPolicyProvider的新文件来完成该任务。 这是唯一的可能性吗? 我会使用CompositeUserGroupProviderCompositeConfigurableUserGroupProvider,所以我可以使用它来结合功能,而不是重新实现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文件中的配置如何?

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

authorization apache-nifi
1个回答
2
投票

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

我建议使用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会将这些文件的内容读入内存,以创建用户,组和访问策略。初始用户和初始管理员属性仅用于在这些文件不存在或为空时自动填充这些文件,因此,如果您提供这些文件的副本,则将使用这些文件。

这些XML文件的结构非常简单。您可以使用NiFi实例通过UI创建用户,组和策略,并查看写入这些文件的内容。然后,您可以随意创建它们:NiFi UI,手动或从其他源文件编写脚本。创建文件后,可以通过将它们放入NiFi配置文件并(重新)启动它来执行“引导”部分。除非在UI中修改了用户,组和策略,否则NiFi不会重新生成或修改这些文件。

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

© www.soinside.com 2019 - 2024. All rights reserved.