Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
我们将引入一些重要更改,以支持更精细的基于角色的访问以获取敏感信息。 作为这些更改的一部分,如果您是在 2019 年 9 月 3 日 前使用 受影响的实体/方案之一,可能需要采取某些措施。
有什么变化?
以前,拥有所有者、参与者或读者Azure角色的群集用户可以通过 HDInsight API 获取机密,因为拥有 */read 权限的任何人都可以使用机密。 机密被定义为可用于获得超出用户角色允许的访问权限的值,例如群集网关 HTTP 凭据、存储账户密钥和数据库凭据。
从 2019 年 9 月 3 日开始,访问这些机密需要 Microsoft.HDInsight/clusters/configurations/action 权限,用户无法使用“读取者”角色访问它。 拥有此权限的角色为“参与者”、“所有者”和新的“HDInsight 群集操作员”角色。
我们还引入了一个新的 HDInsight 群集操作员 角色,该角色能够在未被授予参与者或所有者的管理权限的情况下检索机密。 总结:
| 角色 | 以前 | 向前发展 |
|---|---|---|
| 读取器 | - 读取访问权限,包括机密。 | - 读取访问权限,不包括机密 |
| HDInsight 群集操作员 (新角色) |
空值 | - 读/写访问权限,包括机密 |
| 参与者 | - 读/写访问权限,包括机密。 - 创建和管理所有类型的Azure资源。 - 执行脚本操作。 |
没有变化 |
| 所有者 | - 读写访问权限,包括机密数据。 - 对所有资源的完全访问权限 - 将访问权限委托给其他人。 - 执行脚本操作。 |
没有变化 |
有关如何将 HDInsight 群集操作员角色分配添加到用户以向其授予对群集机密的读/写访问权限的信息,请参阅 向用户添加 HDInsight 群集操作员角色分配。
了解实体或方案是否受到影响
以下实体和方案将受到影响:
-
API:使用
/configurations或/configurations/{configurationName}终结点的用户。 - Azure HDInsight Tools for Visual Studio Code 版本 1.1.1 或以下。
- Azure Toolkit for IntelliJ 3.20.0 或更高版本。
- 适用于Visual Studio的Azure Data Lake和Stream Analytics工具版本2.3.9000.1。
- Azure Toolkit for Eclipse 3.15.0 或更高版本。
- 适用于 .NET 的 SDK
-
版本 1.x 或 2.x:从 ConfigurationsOperationsExtensions 类使用
GetClusterConfigurations、GetConnectivitySettings、ConfigureHttpSettings、EnableHttp或DisableHttp方法的用户。 -
版本 3.x 和以上:从
Get类使用Update、EnableHttp、DisableHttp或ConfigurationsOperationsExtensions方法的用户。
-
版本 1.x 或 2.x:从 ConfigurationsOperationsExtensions 类使用
-
sDK for Python:使用
get类中的update或ConfigurationsOperations方法的用户。 -
sDK for Java:使用
update类中的get或ConfigurationsInner方法的用户。 -
SDK for Go:从
Get构造使用Update或ConfigurationsClient方法的用户。 - Az.HDInsight PowerShell 版本 2.0.0。 请参阅以下部分(或使用上述链接),查看方案的迁移步骤。
API
以下 API 已更改或弃用:
-
GET /configurations/{configurationName}(已删除敏感信息)
- 以前用于获取单个配置类型(包括机密)。
- 从 2019 年 9 月 3 日开始,此 API 调用现在返回省略机密的各个配置类型。 若要获取所有配置(包括机密),请使用新的 POST /configurations 调用。 要仅仅获取网关设置,请使用新的 POST /getGatewaySettings 调用。
-
GET /configurations(已弃用)
- 以前用于获取所有配置(包括机密)
- 自 2019 年 9 月 3 日起,此 API 调用已弃用,不再受支持。 今后若要获取所有配置,请使用新的 POST /configurations 调用。 若要获取省略敏感参数的配置,请使用 GET /configurations/{configurationName} 调用。
-
POST /configurations/{configurationName}(已弃用)
- 以前用于更新网关凭据。
- 自 2019 年 9 月 3 日起,此 API 调用已弃用,不再受支持。 请改用新的 POST /updateGatewaySettings。
已添加以下替换用的 API:
-
POST /configurations
- 使用此 API 可以获取所有配置(包括机密)。
-
POST /getGatewaySettings
- 使用此 API 可以获取网关设置。
-
POST /updateGatewaySettings
- 使用此 API 可以更新网关设置(用户名和/或密码)。
用于Visual Studio Code的 Azure HDInsight 工具
如果使用版本 1.1.1 或更低版本,请更新到 latest version of Azure HDInsight Tools for Visual Studio Code以避免中断。
Azure Toolkit for IntelliJ
如果使用版本 3.20.0 或更低版本,请更新到 Azure Toolkit for IntelliJ 插件的第二个版本以避免中断。
适用于Visual Studio的Azure Data Lake和流分析工具
更新到版本 2.3.9000.1 或更高的 Azure Data Lake 和 Stream Analytics Tools for Visual Studio 来避免中断。 有关更新的帮助,请参阅我们的文档,Update Data Lake Tools for Visual Studio。
Azure Toolkit for Eclipse
如果使用版本 3.15.0 或更低版本,请更新到最新版本的 Azure Toolkit for Eclipse 以避免中断。
SDK for .NET
版本 1.x 和 2.x
更新到适用于 .NET 的 HDInsight SDK 的 version 2.1.0。 如果使用受这些更改影响的方法,可能需要进行最少的代码修改:
ClusterOperationsExtensions.GetClusterConfigurations不再返回敏感参数 ,例如存储密钥(核心站点)或 HTTP 凭据(网关)。- 今后若要检索所有配置(包括敏感参数),请使用
ClusterOperationsExtensions.ListConfigurations。 具有“读者”角色的用户无法使用此方法。 这样便可以精细控制哪些用户可以访问群集的敏感信息。 - 如果只要检索 HTTP 网关凭据,请使用
ClusterOperationsExtensions.GetGatewaySettings。
- 今后若要检索所有配置(包括敏感参数),请使用
ClusterOperationsExtensions.GetConnectivitySettings已弃用并替换为ClusterOperationsExtensions.GetGatewaySettings。ClusterOperationsExtensions.ConfigureHttpSettings已弃用并替换为ClusterOperationsExtensions.UpdateGatewaySettings。ConfigurationsOperationsExtensions.EnableHttp和DisableHttp已弃用。 始终启用 HTTP,因此不再需要这些方法。
版本 3.x 和以上
更新为 version 5.0.0 或更高版本的 HDInsight SDK for .NET。 如果使用受这些更改影响的方法,可能需要进行最少的代码修改:
-
ConfigurationOperationsExtensions.Get将不再返回敏感参数,例如存储密钥(核心站点)或 HTTP 凭据(网关)。- 今后若要检索所有配置(包括敏感参数),请使用
ConfigurationOperationsExtensions.List。 具有“读者”角色的用户无法使用此方法。 这样便可以精细控制哪些用户可以访问群集的敏感信息。 - 如果只要检索 HTTP 网关凭据,请使用
ClusterOperationsExtensions.GetGatewaySettings。
- 今后若要检索所有配置(包括敏感参数),请使用
-
ConfigurationsOperationsExtensions.Update已弃用并替换为ClusterOperationsExtensions.UpdateGatewaySettings。 -
ConfigurationsOperationsExtensions.EnableHttp和DisableHttp已弃用。 始终启用 HTTP,因此不再需要这些方法。
SDK for Python
更新为 version 1.0.0 或更高版本的 HDInsight SDK for Python。 如果使用受这些更改影响的方法,可能需要进行最少的代码修改:
-
ConfigurationsOperations.get不再返回敏感参数 ,例如存储密钥(核心站点)或 HTTP 凭据(网关)。- 今后若要检索所有配置(包括敏感参数),请使用
ConfigurationsOperations.list。 具有“读者”角色的用户无法使用此方法。 这样便可以精细控制哪些用户可以访问群集的敏感信息。 - 如果只要检索 HTTP 网关凭据,请使用
ClusterOperations.get_gateway_settings。
- 今后若要检索所有配置(包括敏感参数),请使用
-
ConfigurationsOperations.update已弃用并替换为ClusterOperations.update_gateway_settings。
SDK for Java
更新为 version 1.0.0 或更高版本的 HDInsight SDK for Java。 如果使用受这些更改影响的方法,可能需要进行最少的代码修改:
-
ConfigurationsInner.get不再返回敏感参数 ,例如存储密钥(核心站点)或 HTTP 凭据(网关)。 -
ConfigurationsInner.update已弃用。
SDK For Go
更新到 version 27.1.0 或更高版本的 HDInsight SDK for Go。 如果使用受这些更改影响的方法,可能需要进行最少的代码修改:
-
ConfigurationsClient.get不再返回敏感参数,例如存储密钥(核心站点)或 HTTP 凭据(网关)。- 若要检索所有配置(包括敏感参数),请使用
ConfigurationsClient.list。 具有“读者”角色的用户无法使用此方法。 这样便可以精细控制哪些用户可以访问群集的敏感信息。 - 若要仅检索 HTTP 网关凭据,请使用
ClustersClient.get_gateway_settings。
- 若要检索所有配置(包括敏感参数),请使用
-
ConfigurationsClient.update已弃用,由ClustersClient.update_gateway_settings替换。
Az.HDInsight PowerShell
更新到 Az PowerShell 版本 2.0.0 或更高版本以避免中断。 如果使用受这些更改影响的方法,可能需要进行最少的代码修改。
-
Grant-AzHDInsightHttpServicesAccess已弃用并替换为新的Set-AzHDInsightGatewayCredentialcmdlet。 -
Get-AzHDInsightJobOutput在更新后支持对存储密钥进行细化的基于角色的访问。- 具有 HDInsight 群集操作员、参与者或所有者角色的用户不会受到影响。
- 只具有“读者”角色的用户需要显式指定
DefaultStorageAccountKey参数。
-
Revoke-AzHDInsightHttpServicesAccess已弃用。 始终启用 HTTP,因此不再需要此 cmdlet。 请参阅 az.HDInsight 迁移指南 以了解更多详细信息。
为用户添加 HDInsight 群集操作员角色分配
具有所有者角色的用户可以将 HDInsight 群集操作员角色分配给你希望对敏感 HDInsight 群集配置值(如群集网关凭据和存储帐户密钥)具有读/写访问权限的用户。
使用Azure CLI
添加此角色分配的最简单方法是在 Azure CLI 中使用 az role assignment create 命令。
注意
此命令必须由具有“所有者”角色的用户运行,因为只有他们才能授予这些权限。
--assignee 是要将“HDInsight 群集操作员”角色分配给用户的服务主体名称或电子邮件地址。 如果收到权限不足错误,请参阅常见问题解答。
在资源(群集)级别授予角色
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(禁止)响应?
群集配置现在落后于精细的基于角色的访问控制,需要 Microsoft.HDInsight/clusters/configurations/* 权限才能访问它们。 若要获取此权限,请将“HDInsight 群集操作员”、“参与者”或“所有者”角色分配到尝试访问配置的用户或服务主体。
为什么在执行 Azure CLI 命令以将 HDInsight 集群操作员角色分配给其他用户或服务主体时,会看到“特权不足以完成操作”?
除了具有“所有者”角色之外,执行命令的用户或服务主体还需要有足够的Microsoft Entra权限来查找被授权者的对象 ID。 此消息指示Microsoft Entra权限不足。 尝试将 --assignee 参数替换为 -assignee-object-id,并提供被分配者的对象 ID 作为参数,而不要提供名称(如果使用托管标识,则提供主体 ID)。 有关详细信息,请参阅 Azure 角色分配创建文档的“可选参数”部分。
如果仍然不起作用,请联系Microsoft Entra管理员获取正确的权限。
如果我没有采取任何行动,会发生什么情况?
从 2019 年 9 月 3 日开始,调用不再返回任何信息GET /configurations, POST /configurations/gatewayGET /configurations/{configurationName}调用不再返回敏感参数,例如存储帐户密钥或群集密码。 对于相应的 SDK 方法和 PowerShell cmdlet,也是如此。
如果您使用的是Visual Studio、VS Code、IntelliJ或Eclipse工具中的旧版本,它们在您更新之前将无法正常工作。
有关更多详细信息,请参阅本文档中适用于你的方案的相应部分。