管理应用程序/中间件安全性
大型组织有很多来自不同业务组的用户,他们需要:
- 以安全的方式登录到群集
- 在访问基础数据时,强制执行最小特权原则 (PLOP)
- 记录具有安全意义的事件。
HDInsight 应用程序安全性的目的是提供多名用户向 HDInsight 安全地进行身份验证的方法,强制将用户对数据的访问权限限制为执行其工作所需的最低权限,并最终记录具有安全意义的事件(如登录、试图执行特权操作、对重要记录的修改)。
身份验证
身份验证是建立个人标识来验证用户是否是其所声称的本人的过程。 生产方案中的 HDInsight 群集通常需要允许大量来自不同业务组的用户验证到群集中,以运行诸如配置、提交、运行和监视工作负载之类的活动。 在 HDInsight 群集创建过程中启用“企业安全性套餐”(ESP) 功能可使群集加入域,并使域用户可使用其域凭据在群集中进行身份验证。 Active Directory 组可用于对表示组织中某一职能或部门的单独用户创建组,多个这种组可在创建时同步到群集。 群集必须有一个域群集管理员和一组或多组具有受限访问权限的用户。 下面是 HDInsight 身份验证过程中涉及的组件和各方的表示形式。
企业标识域中的以下组件参与 ESP 群集的设置和身份验证过程。
- Windows Server Active Directory:本地域控制器,用于存储用户主体名称(又称 UPN,例如 John.Doe@Contoso.com)及其各自的域密码。
- Active Directory Connect (AD Connect):旨在完成混合标识设置的 Microsoft 工具。 在 HDInsight 上设置 ESP 时,密码哈希同步等功能非常关键。
- Azure Active Directory (Microsoft Entra ID):基于 Microsoft Azure 的标识和访问管理服务。
- Microsoft Entra 域服务(Microsoft Entra 域服务):提供了托管域服务,例如域加入、组策略、轻型目录访问协议 (LDAP),以及与 Windows Server AD 域服务完全兼容的 Kerberos 或 NTLM 身份验证。 无需在云中部署、管理和修补域控制器即可使用这些域服务。 Microsoft Entra 域服务与现有 Microsoft Entra 租户集成,因此用户可使用其现有凭据登录。 此外,也可使用现有的组和用户帐户安全访问资源,确保更顺畅地将本地资源直接迁移到 Azure。
HDInsight 支持两种身份验证方案
- 当密码哈希同步到 Microsoft Entra ID 时。
- 当密码哈希保留在本地域控制器上时。 请注意,用户可选择使用 Windows Azure Storage Blob (WASB) 或 ADLS Gen2 存储创建 HDInsight 群集,其中每种群集的身份验证过程略有不同。 虽然身份验证过程中的所有步骤都自动完成且脱离用户,但它有助于大致了解对用户进行身份验证所执行的事件的顺序。
身份验证:当密码哈希与 Microsoft Entra ID 同步时
- 用户 John Doe 使用其域凭据 John.Doe@contoso.onmicrosoft.com(称为用户主体名称 (UPN))和密码向 HDInsight 服务(例如 Ambari、ssh、Zeppelin 等)进行身份验证。 网关保存用户名和密码。
- HDInsight 网关使用资源所有者密码凭据 (ROPC) 流将用户提供的 UPN 和密码发送到 Microsoft Entra ID,并请求 OAuth 访问请求。 Microsoft Entra ID 确认用户的身份并发出一个刷新令牌,该令牌保存到在头节点上运行的凭据服务。 在具有 ADLS Gen 2 存储帐户的群集中,存储驱动程序与凭据服务进行通信来检索 OAuth 令牌,以便对 ADLS 进行直通身份验证。
- 然后,网关使用 Microsoft Entra 域服务对用户进行身份验证,并获取 Kerberos 票证。 然后,网关将 Kerberos 票证传递给头节点,对用户进行身份验证并加入群集。
MFA 身份验证:当密码哈希不与 Microsoft Entra ID 同步时
注意
此设置也称为 HDInsight 标识代理 (HIB),支持多重身份验证 (MFA)。 在此设置中,如果密码哈希没有同步到 Microsoft Entra ID,用户仍可向网关进行身份验证。
- 用户 John Doe 启动一项基于 Web 的 HDInsight 服务,例如 Ambari 或 Zeppelin。 该页面将用户重定向到交互式登录屏幕。 客户端被重定向到 Microsoft Entra ID,以便用户使用其 UPN John.Doe@contoso.onmicrosoft.com 进行身份验证。
- 输入 UPN 时,客户端被重定向到本地 ADFS 服务器,用户在这里输入密码。 如果已启用 MFA 身份验证,则现在执行该验证。 身份验证成功后,向客户端颁发一个 OAuth 令牌。
- 客户端将 OAuth 令牌呈现给 HDInsight 网关。
- HDInsight 网关使用 OAuth 令牌从 HIB 节点获取 Kerberos 票证。
- 网关使用 Kerberos 票证,在头节点凭据服务上注册 OAuth 令牌,并向群集进行身份验证。
注意
如果密码哈希未同步到 Microsoft Entra ID,域用户无法通过 SSH 连接到头节点。 只有本地 SSH 用户才能执行 SSH 活动。 有关如何为这两种方案设置身份验证机制的指导,请查看使用 ID 代理进行凭据管理。
授权
HDInsight 中的授权涉及到确定和强制执行对基础数据集的用户权限。 Hive、HBase 和 Kafka 的 HDInsight 服务提供了对特定操作和/或操作的精细授权,该授权通过 Apache Ranger 进行管理。 Ranger 提供基于角色的访问控制、基于属性的访问控制,并集中审核用户访问和管理操作。 通常使用群集管理员的域凭据向 Apache Ranger 进行身份验证,然后为 Ranger 上的受限组或用户设置策略。 在下面的示例中,我们展示了如何创建 Ranger 策略来设置 Ranger 中示例 Hive 表的权限。
使用 URL
https://CLUSTERNAME.azurehdinsight.net/Ranger/
启动 Apache Ranger。 将“CLUSTERNAME”替换为群集的名称。 使用群集域管理员身份和相应的密码登录。单击“添加新策略”来添加新的 Ranger 策略。
使用以下信息填充策略的详细信息:
- 策略名称:策略的名称。
- 数据库:选择 Hive 数据库。
- 表:选择所选数据库中的 Hive 表。
- Hive 列:选择要应用策略的 Hive 列。
- 将审核日志设置为“是”来记录所有访问。
- 允许条件:
- 策略可在“允许条件”部分应用于 Active Directory (AD) 域用户或域组。 如果要将策略应用于 AD 组中的所有用户,请将该 AD 组添加到“选择组”部分。
- 如果希望将策略应用于来自不同 AD 组的单个用户或选定的用户集,可在“选择用户”字段中添加用户的所有单域 ID。
- 在“权限”复选框栏中,从一组权限中进行选择。
向下滚动并单击“添加”。
设置此项后,将对策略中包含的所有用户强制实施此规则。
若要了解如何为 HBase 和 Kafka 设置 Ranger 策略,请查看本部分中相应的超链接。
审核
从安全的角度来看,HDInsight 中的审核涉及到记录和监视在群集的操作生命周期内,甚至在删除群集之后发生的身份验证和授权请求。
HDInsight 中的审核是使用 Azure Monitor 日志启用的,可用于显示对群集安全至关重要的日志。 下面列出了一些包含对群集安全至关重要的信息的日志表。
日志表名称 | 目的 |
---|---|
ranger_audit_logs_CL | 针对 ESP 群集的 Apache Ranger 审核日志 |
log_gateway_audit_CL | 显示成功和失败的尝试的网关审核日志 |
log_ambari_audit_CL | Ambari 审核日志 |
log_auth_CL | 显示成功和失败的尝试的 SSH 日志 |
只需单击几下,即可从 Azure 门户启用 Azure Monitor。