本文内容
HDInsight 企业安全性套餐 (ESP) 群集使用 Ranger 进行授权。 Apache Ambari 和 Ranger 都独立地同步用户和组,但其工作方式略有不同。 本文可帮助用户解决 Ranger 和 Ambari 中的 LDAP 同步问题。
- 始终使用一个或多个组部署群集。
- 如果要在群集中使用更多组,请检查是否有必要在 Microsoft Entra ID 中更新组成员身份。
- 如果要更改群集组,可以通过使用 Ambari 更改同步筛选器。
- Microsoft Entra ID 中的所有组成员身份更改都会在后续同步中反映到群集内。 更改需要先同步到 Microsoft Entra 域服务,然后同步到群集。
- HDInsight 群集使用 Samba/Winbind 将组成员身份投影到群集节点上。
- 系统会以可传递的方式将组成员(包括所有子组及其成员)同步到 Ambari 和 Ranger。
- Ambari 和 Ranger 不共享用户数据库,因为它们用于两种不同的用途。
- 如果用户需要使用 Ambari UI,则需要将用户同步到 Ambari。
- 如果用户未同步到 Ambari,则 Ambari UI/API 会拒绝该用户,但系统的其他部分将正常运行(这些部分受 Ranger 或资源管理器保护,而不是受 Ambari 保护)。
- 若要在 Ranger 策略中包括用户或组,主体需要显式同步到 Ranger 中。
在头节点中,cron 作业 /opt/startup_scripts/start_ambari_ldap_sync.py
每小时运行一次来调度用户同步。Cron 作业将调用 Ambari REST API 来执行同步。脚本将提交要同步的用户和组的列表(由于用户可能不属于指定的组,因此这两者是分别指定的)。 Ambari 以传递方式将 sAMAccountName 作为用户名和所有组成员进行同步。
日志应位于 /var/log/ambari-server/ambari-server.log
中。 有关详细信息,请参阅配置 Ambari 日志记录级别。
在 Data Lake 群集中,将使用创建用户后的挂钩为同步的用户创建主文件夹,并将这些用户设置为主文件夹的所有者。 如果用户未正确同步到 Ambari,则用户在运行作业时可能会遇到失败,因为主文件夹可能未正确设置。
Ranger 有一个内置的同步引擎,该引擎每小时运行一次来同步用户。 它不与 Ambari 共享用户数据库。 HDInsight 会对搜索筛选器进行配置,以便对管理员用户、监视用户以及在创建群集期间指定的组的成员进行同步。 组成员将以传递方式进行同步:
- 禁用增量同步。
- 启用用户组同步映射。
- 将搜索筛选器指定为包括可传递的组成员。
- 同步用户的 sAMAccountName 特性和组的 name 特性。
Ranger 支持组同步选项,但它是作为与用户筛选器的交集(而不是组成员身份与用户筛选器的并集)使用的。 Ranger 中组同步筛选器的典型用例是 - 组筛选器:(dn=clusteradmingroup)
,用户筛选器:(city=seattle)
。
增量同步仅适用于已首次同步的用户。 增量同步不会同步在初始同步后添加到组的任何新用户。
可以在 Ambari UI 中的“Ranger 用户-同步配置”部分找到 LDAP 筛选器。 现有筛选器的格式将为 (|(userPrincipalName=bob@contoso.com)(userPrincipalName=hdiwatchdog-core01@CONTOSO.ONMICROSOFT.COM)(memberOf:1.2.840.113556.1.4.1941:=CN=hadoopgroup,OU=AADDC Users,DC=contoso,DC=onmicrosoft,DC=com))
。 请确保在末尾添加谓词,并使用 net ads
搜索命令、ldp.exe 或类似的工具来测试筛选器。
Ranger 用户同步可以在任一头节点中进行。 日志位于 /var/log/ranger/usersync/usersync.log
中。 若要增大日志的详细级别,请执行以下步骤:
- 登录到 Ambari。
- 转到 Ranger 配置部分。
- 转到“高级 usersync-log4j”部分。
- 将
log4j.rootLogger
更改为DEBUG
级别。 (更改后,它应类似于log4j.rootLogger = DEBUG,logFile,FilterLog
)。 - 保存配置并重启 Ranger。
- 如果组名称包含 unicode 字符,则 Ranger 同步将无法同步该对象。 如果用户属于具有国际字符的组,则 Ranger 会同步部分组成员身份
- 用户名 (sAMAccountName) 和组名 (name) 的长度必须小于或等于 20 个字符。 如果组名过长,则在计算权限时,用户将被视为不属于该组。