托管身份是在 Microsoft Entra 注册的身份,其凭据由 Azure 管理。 使用托管标识时,无需在Microsoft Entra ID中注册服务主体。 或者维护证书等凭据。
托管标识用于需要时访问 Azure HDInsight 上的 Microsoft Entra 域服务或访问 Azure Data Lake Storage Gen2 中的文件。
有两种类型的托管标识:用户分配和系统分配。 Azure HDInsight仅支持用户分配的托管标识。 HDInsight 不支持系统分配的托管标识。 将用户分配的托管标识创建为独立的Azure资源,然后可以将其分配给一个或多个Azure服务实例。 相比之下,系统分配的托管标识是在Microsoft Entra ID中创建的,然后直接在特定的Azure服务实例上启用。 然后,系统分配的托管标识的生命周期与启用它的服务实例的生命周期相关联。
HDInsight 托管标识实现
在Azure HDInsight中,托管标识只能由 HDInsight 服务用于内部组件。 目前不支持使用 HDInsight 群集节点上安装的托管标识生成访问令牌,以访问外部服务。 对于某些 Azure 服务(如计算虚拟机),托管标识通过可用于获取访问令牌的终结点来实现。 此终结点当前在 HDInsight 节点中不可用。
如果需要启动应用程序以避免将机密/密码放入分析作业(例如 SCALA 作业),则可以使用脚本操作将自己的证书分发到群集节点,然后使用该证书获取访问令牌(例如访问 Azure KeyVault)。
创建管理标识
可以使用以下任一方法创建托管标识:
配置托管标识的剩余步骤取决于将使用托管标识的方案。
Azure HDInsight中的托管标识方案
在多个场景中,托管标识被用于 Azure HDInsight。 有关详细的设置和配置说明,请参阅相关文档:
HDInsight 将自动续订用于这些方案的托管标识的证书。 但是,当多个不同的托管标识用于长时间运行的群集时,证书续订可能无法按预期适用于所有托管标识。 由于此限制,我们建议对所有上述方案使用相同的托管标识。
如果您已经创建了一个长时间运行且具有多个不同托管标识的群集,并遇到以下问题之一:
- 在 ESP 群集中,群集服务开始失败或纵向扩展,其他操作开始失败并出现身份验证错误。
- 在 ESP 群集中,更改 Microsoft Entra Domain Services LDAPS 证书时,LDAPS 证书不会自动更新,因此 LDAP 同步和纵向扩展启动失败。
- MSI 对 ADLS Gen2 的访问开始失败。
- 无法在 CMK 方案中轮换加密密钥。
然后,应将上述方案所需的角色和权限分配给群集中使用的所有托管标识。 例如,如果对 ADLS Gen2 和 ESP 群集使用不同的托管标识,则这些托管标识都应分配“存储 Blob 数据所有者”和“HDInsight 域服务参与者”角色,以避免遇到这些问题。
FAQ
如果在创建群集后删除托管标识,会发生什么情况?
当需要使用托管标识时,您的群集将遇到一些问题。 创建群集后,目前无法更新或更改托管标识。 因此,建议确保在群集运行时期间不会删除托管标识。 或者可以重新创建群集并分配新的托管标识。