你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

迁移到群集配置的基于角色的细化访问权限

我们将引入一些重要更改,以支持更精细的基于角色的访问以获取敏感信息。 作为这些更改的一部分,如果您是在 2019 年 9 月 3 日 前使用 受影响的实体/方案之一,可能需要采取某些措施。

有哪些改变?

以前,拥有“所有者”、“参与者”或“读取者” Azure 角色的群集用户可以通过 HDInsight API 获取机密,因为具有 */read 该权限的任何人都可以使用这些机密。 机密被定义为可用于获得超出用户角色允许的访问权限的值,例如群集网关 HTTP 凭据、存储账户密钥和数据库凭据。

从 2019 年 9 月 3 日开始,访问这些密钥将需要该 Microsoft.HDInsight/clusters/configurations/action 权限,用户无法使用 Reader 角色访问它。 具有此权限的角色是 Contributor、Owner 和新的 HDInsight 群集作员角色。

我们还引入了一个新的 HDInsight 群集操作员 角色,该角色能够在未被授予参与者或所有者的管理权限的情况下检索机密。 总结:

角色 以前 展望未来
读取者 - 读取访问权限,包括 secret。 - 读取访问权限, 不包括 密钥
HDInsight 群集作员
(新角色)
- 读/写访问权限,包括 secret
贡献者 - 读/写访问权限,包括 secret。
- 创建和管理所有类型的 Azure 资源。
- 执行脚本作。
无更改
所有者 - 读/写访问权限,包括 secret。
- 对所有资源的完全访问权限
- 将访问权限委托给其他人。
- 执行脚本作。
无更改

有关如何将 HDInsight 群集操作员角色分配添加到用户以向其授予对群集机密的读/写访问权限的信息,请参阅 向用户添加 HDInsight 群集操作员角色分配

了解实体或方案是否受到影响

以下实体和方案会受到影响:

API

以下 API 已更改或弃用:

  • GET /configurations/{configurationName} (已删除敏感信息)
    • 以前用于获取单个配置类型(包括密钥)。
    • 从 2019 年 9 月 3 日开始,此 API 调用现在返回省略机密的各个配置类型。 要获取所有配置(包括密钥),请使用新的 POST /configurations 调用。 要仅获取网关设置,请使用新的 POST /getGatewaySettings 调用。
  • GET /configurations (已弃用)
    • 以前用于获取所有配置(包括 secret)
    • 自 2019 年 9 月 3 日起,此 API 调用已弃用,不再受支持。 要获取以后的所有配置,请使用新的 POST /configurations 调用。 要获取省略敏感参数的配置,请使用 GET /configurations/{configurationName} 调用。
  • POST /configurations/{configurationName} (已弃用)
    • 以前用于更新网关凭证。
    • 自 2019 年 9 月 3 日起,此 API 调用已弃用,不再受支持。 请改用新的 POST /updateGatewaySettings。

添加了以下替换 API:

适用于 Visual Studio Code 的 Azure HDInsight 工具

如果使用版本 1.1.1 或更低版本,请更新到 最新版本的 Azure HDInsight Tools for Visual Studio Code ,以避免中断。

Azure Toolkit for IntelliJ

如果使用版本 3.20.0 或更低版本,请更新到 最新版本的 Azure Toolkit for IntelliJ 插件 ,以避免中断。

适用于 Visual Studio 的 Azure 数据湖和流分析工具

更新到适用于 Visual Studio 的 Azure Data Lake 和流分析工具 版本 2.3.9000.1 或更高版本,以避免中断。 有关更新的帮助,请参阅我们的文档 更新适用于 Visual Studio 的数据湖工具

Azure Toolkit for Eclipse

如果使用版本 3.15.0 或更低版本,请更新到 最新版本的 Azure Toolkit for Eclipse ,以避免中断。

用于 .NET 的 SDK

版本 1.x 和 2.x

更新到适用于 .NET 的 HDInsight SDK 版本 2.1.0 。 如果使用受这些更改影响的方法,可能需要进行最少的代码修改:

  • ClusterOperationsExtensions.GetClusterConfigurations 不再返回敏感参数 ,例如存储密钥(核心站点)或 HTTP 凭据(网关)。

    • 要检索所有配置(包括敏感参数),请使用 ClusterOperationsExtensions.ListConfigurations going forward。 具有“读者”角色的用户无法使用此方法。 它允许精细控制哪些用户可以访问集群的敏感信息。
    • 要仅检索 HTTP 网关凭证,请使用 ClusterOperationsExtensions.GetGatewaySettings.
  • ClusterOperationsExtensions.GetConnectivitySettings 已弃用并替换为 ClusterOperationsExtensions.GetGatewaySettings

  • ClusterOperationsExtensions.ConfigureHttpSettings 已弃用并替换为 ClusterOperationsExtensions.UpdateGatewaySettings

  • ConfigurationsOperationsExtensions.EnableHttpDisableHttp 已弃用。 始终启用 HTTP,因此不再需要这些方法。

版本 3.x 及更高版本

更新到适用于 .NET 的 HDInsight SDK 版本 5.0.0 或更高版本。 如果使用受这些更改影响的方法,可能需要进行最少的代码修改:

用于 Python 的 SDK

更新到适用于 Python 的 HDInsight SDK 版本 1.0.0 或更高版本。 如果使用受这些更改影响的方法,可能需要进行最少的代码修改:

适用于 Java 的 SDK

更新到适用于 Java 的 HDInsight SDK 版本 1.0.0 或更高版本。 如果使用受这些更改影响的方法,可能需要进行最少的代码修改:

  • ConfigurationsInner.get 不再返回敏感参数 ,例如存储密钥(核心站点)或 HTTP 凭据(网关)。
  • ConfigurationsInner.update 已弃用。

适用于 Go 的 SDK

更新到 HDInsight SDK for Go 版本 27.1.0 或更高版本。 如果使用受这些更改影响的方法,可能需要进行最少的代码修改:

Az.HDInsight PowerShell

更新到 Az PowerShell 版本 2.0.0 或更高版本以避免中断。 如果使用受这些更改影响的方法,可能需要进行最少的代码修改。

  • Grant-AzHDInsightHttpServicesAccess 已弃用并替换为新的 Set-AzHDInsightGatewayCredential cmdlet。
  • Get-AzHDInsightJobOutput 已更新,以支持对存储密钥的基于角色的精细访问。
    • 具有 HDInsight 群集操作员、参与者或所有者角色的用户不会受到影响。
    • 仅具有 Reader 角色的用户需要显式指定 DefaultStorageAccountKey 参数。
  • Revoke-AzHDInsightHttpServicesAccess 已弃用。 始终启用 HTTP,因此不再需要此 cmdlet。 请参阅 az。HDInsight 迁移指南 ,了解更多详细信息。

将 HDInsight 群集作员角色分配添加到用户

具有 “所有者” 角色的用户可以将 “HDInsight 群集作员 ”角色分配给你希望对敏感的 HDInsight 群集配置值(例如群集网关凭据和存储帐户密钥)具有读/写访问权限的用户。

使用 Azure CLI

添加此角色分配的最简单方法是使用 az role assignment create Azure CLI 中的命令。

注释

此命令必须由具有 Owner 角色的用户运行,因为只有他们才能授予这些权限。 --assignee这是要向其分配 HDInsight 群集作员角色的用户的服务主体或电子邮件地址的名称。 如果您收到 insufficient permissions 错误,请参阅常见问题解答。

在资源 (群集) 级别授予角色

az role assignment create --role "HDInsight Cluster Operator" --assignee <user@domain.com> --scope /subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.HDInsight/clusters/<ClusterName>

在资源组级别授予角色

az role assignment create --role "HDInsight Cluster Operator" --assignee user@domain.com -g <ResourceGroupName>

在订阅级别授予角色

az role assignment create --role "HDInsight Cluster Operator" --assignee user@domain.com

使用 Azure 门户

或者,也可以使用 Azure 门户将 HDInsight 群集作员角色分配添加到用户。 请参阅文档 使用 Azure 门户分配 Azure 角色

FAQ

为什么我在更新 API 请求和/或工具后看到 403 (Forbidden) 响应?

集群配置现在位于基于角色的精细访问控制之后,需要访问 Microsoft.HDInsight/clusters/configurations/* 它们的权限。 若要获取此权限,请将 HDInsight 群集作员、参与者或所有者角色分配给尝试访问配置的用户或服务主体。

在运行 Azure CLI 命令以将 HDInsight 群集作员角色分配给其他用户或服务主体时,为什么会看到“权限不足,无法完成作”?

除了具有 Owner 角色外,执行命令的用户或服务主体还需要具有足够的 Microsoft Entra 权限来查找被分派对象的对象 ID。 此消息表示 Microsoft Entra 权限不足。 尝试将参数替换为-–assignee–assignee-object-id并提供被分派对象的对象 ID 作为参数,而不是名称(如果是托管身份,则为主体 ID)。 有关详细信息,请参阅 az role assignment create 文档 的可选参数部分。

如果仍然不起作用,请联系Microsoft Entra 管理员获取正确的权限。

如果我没有采取任何行动,会发生什么情况?

从 2019 年 9 月 3 日开始,调用不再返回任何信息GET /configurationsPOST /configurations/gatewayGET /configurations/{configurationName}调用不再返回敏感参数,例如存储帐户密钥或群集密码。 相应的 SDK 方法和 PowerShell cmdlet 也是如此。

如果使用的是 Visual Studio、VS Code、IntelliJ 或 Eclipse 的旧版工具之一,则在更新之前,它将不再正常运行。

有关更多详细信息,请参阅本文档中适用于您的方案的相应部分。