我們將引入一些重要的更改,以支援更精細的基於角色的訪問來獲取敏感資訊。 作為這些更改的一部分,如果您使用的是受影響的實體/場景之一,則可能需要在 2019 年 9 月 3 日之前執行一些作。
正在變更什麼?
以前,擁有“擁有者”、“參與者”或“讀取者” Azure 角色的群集使用者可以通過 HDInsight API 獲取機密,因為具有 */read
該許可權的任何人都可以使用這些機密。 金鑰被定義為可用於獲得比使用者角色應允許的更高的訪問許可權的值。 這些值包括集群閘道 HTTP 憑證、存儲帳戶密鑰和資料庫憑證等值。
從 2019 年 9 月 3 日開始,訪問這些密鑰將需要該 Microsoft.HDInsight/clusters/configurations/action
許可權,用戶無法使用 Reader 角色訪問它。 具有此許可權的角色是 Contributor、Owner 和新的 HDInsight 群集作員角色。
我們還引入了一個新的 HDInsight 群集作員 角色,該角色能夠在不被授予參與者或擁有者管理許可權的情況下檢索機密。 總結:
角色 | 以前 | 展望未來 |
---|---|---|
讀者 | - 讀取訪問許可權,包括 secret。 | - 讀取訪問許可權, 不包括 密鑰 |
HDInsight 叢集操作員 (新角色) |
N/A | - 讀/寫訪問許可權,包括 secret |
撰稿人 | - 讀/寫訪問許可權,包括 secret。 - 創建和管理所有類型的 Azure 資源。 - 執行腳本作。 |
沒有變化 |
所有者 | - 讀/寫訪問許可權,包括 secret。 - 對所有資源的完全訪問許可權 - 將訪問許可權委託給其他人。 - 執行腳本作。 |
沒有變化 |
有關如何向使用者添加 HDInsight 群集作員角色分配以授予其對群集機密的讀/寫存取權限的資訊,請參閱以下部分: 向使用者添加 HDInsight 群集作員角色分配。
我是否會受到這些更改的影響?
以下實體和方案會受到影響:
-
API:使用
/configurations
或/configurations/{configurationName}
端點的使用者。 - 適用於 Visual Studio Code 版本 1.1.1 或更低版本的 Azure HDInsight 工具。
- Azure Toolkit for IntelliJ 版本 3.20.0 或更低版本。
- 適用於 Visual Studio 版本 2.3.9000.1 的 Azure Data Lake 和流分析工具。
- Azure Toolkit for Eclipse 版本 3.15.0 或更低版本。
-
適用於 .NET 的 SDK
-
版本 1.x 或 2.x:使用
GetClusterConfigurations
ConfigurationsOperationsExtensions 類中的 、 、ConfigureHttpSettings
EnableHttp
GetConnectivitySettings
或DisableHttp
方法的使用者。 -
版本 3.x 及更高版本:使用
Get
類中的ConfigurationsOperationsExtensions
、、Update
EnableHttp
、 或DisableHttp
方法的使用者。
-
版本 1.x 或 2.x:使用
-
適用於 Python 的 SDK:使用
get
類中的ConfigurationsOperations
orupdate
方法的使用者。 -
SDK for Java:使用
update
類中的ConfigurationsInner
orget
方法的使用者。 -
SDK for Go:使用
Get
Update
struct.ConfigurationsClient
- Az.HDInsight PowerShell 版本 2.0.0。 請參閱以下部分(或使用上述連結)以查看適用於您的方案的遷移步驟。
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:
-
POST /配置
- 使用此 API 獲取所有配置,包括 secret。
-
POST /getGatewaySettings
- 使用此 API 獲取閘道設置。
-
POST /updateGatewaySettings
- 使用此 API 更新閘道設定(使用者名稱和/或密碼)。
適用於 Visual Studio Code 的 Azure HDInsight 工具
如果使用的是版本 1.1.1 或更低版本,請更新到 適用於 Visual Studio Code 的 Azure HDInsight 工具的最新版本 ,以避免中斷。
適用於 IntelliJ 的 Azure 工具組
如果您使用的是版本 3.20.0 或更低版本,請更新到 最新版本的 Azure Toolkit for IntelliJ 外掛程式 以避免中斷。
適用於 Visual Studio 的 Azure 數據湖和流分析工具
更新到適用於 Visual Studio 的 Azure Data Lake 和流分析工具 版本 2.3.9000.1 或更高版本,以避免中斷。 有關更新的説明,請參閱我們的文檔 更新適用於Visual Studio的數據湖工具。
適用於 Eclipse 的 Azure 工具組
如果您使用的是版本 3.15.0 或更低版本,請更新到 最新版本的 Azure Toolkit for Eclipse 以避免中斷。
適用於 .NET 的 SDK
版本 1.x 和 2.x
更新到適用於 .NET 的 HDInsight SDK 版本 2.1.0 。 如果您使用的是受這些更改影響的方法,則可能需要進行最少的代碼修改:
ClusterOperationsExtensions.GetClusterConfigurations
將不再返回敏感參數,如存儲密鑰 (core-site) 或 HTTP 憑證 (gateway)。- 要檢索所有配置(包括敏感參數),請使用
ClusterOperationsExtensions.ListConfigurations
going forward。 具有「讀取者」角色的用戶無法使用此方法。 它允許精細控制哪些用戶可以訪問集群的敏感資訊。 - 要僅檢索 HTTP 閘道憑證,請使用
ClusterOperationsExtensions.GetGatewaySettings
.
- 要檢索所有配置(包括敏感參數),請使用
ClusterOperationsExtensions.GetConnectivitySettings
現已棄用,並已替換為ClusterOperationsExtensions.GetGatewaySettings
.ClusterOperationsExtensions.ConfigureHttpSettings
現已棄用,並已替換為ClusterOperationsExtensions.UpdateGatewaySettings
.ConfigurationsOperationsExtensions.EnableHttp
,DisableHttp
現已棄用。 HTTP 現在始終處於啟用狀態,因此不再需要這些方法。
版本3.x及更高版本
更新到適用於 .NET 的 HDInsight SDK 版本 5.0.0 或更高版本。 如果您使用的是受這些更改影響的方法,則可能需要進行最少的代碼修改:
-
ConfigurationOperationsExtensions.Get
將不再返回敏感參數,如存儲密鑰 (core-site) 或 HTTP 憑證 (gateway)。- 要檢索所有配置(包括敏感參數),請使用
ConfigurationOperationsExtensions.List
going forward。 具有「讀取者」角色的用戶無法使用此方法。 它允許精細控制哪些用戶可以訪問集群的敏感資訊。 - 要僅檢索 HTTP 閘道憑證,請使用
ClusterOperationsExtensions.GetGatewaySettings
.
- 要檢索所有配置(包括敏感參數),請使用
-
ConfigurationsOperationsExtensions.Update
現已棄用,並已替換為ClusterOperationsExtensions.UpdateGatewaySettings
. -
ConfigurationsOperationsExtensions.EnableHttp
,DisableHttp
現已棄用。 HTTP 現在始終處於啟用狀態,因此不再需要這些方法。
適用於 Python 的 SDK
更新到適用於 Python 的 HDInsight SDK 版本 1.0.0 或更高版本。 如果您使用的是受這些更改影響的方法,則可能需要進行最少的代碼修改:
-
ConfigurationsOperations.get
將不再返回敏感參數,如存儲密鑰 (core-site) 或 HTTP 憑證 (gateway)。- 要檢索所有配置(包括敏感參數),請使用
ConfigurationsOperations.list
going forward。 具有「讀取者」角色的用戶無法使用此方法。 它允許精細控制哪些用戶可以訪問集群的敏感資訊。 - 要僅檢索 HTTP 閘道憑證,請使用
ClusterOperations.get_gateway_settings
.
- 要檢索所有配置(包括敏感參數),請使用
-
ConfigurationsOperations.update
現已棄用,並已替換為ClusterOperations.update_gateway_settings
.
適用於 Java 的 SDK
更新到適用於 Java 的 HDInsight SDK 版本 1.0.0 或更高版本。 如果您使用的是受這些更改影響的方法,則可能需要進行最少的代碼修改:
-
ConfigurationsInner.get
將不再返回敏感參數,如存儲密鑰 (core-site) 或 HTTP 憑證 (gateway)。 -
ConfigurationsInner.update
現已棄用。
適用於 Go 的 SDK
更新到 HDInsight SDK for Go 版本 27.1.0 或更高版本。 如果您使用的是受這些更改影響的方法,則可能需要進行最少的代碼修改:
-
ConfigurationsClient.get
將不再返回敏感參數,如存儲密鑰 (core-site) 或 HTTP 憑證 (gateway)。- 要檢索所有配置(包括敏感參數),請使用
ConfigurationsClient.list
going forward。 具有「讀取者」角色的用戶無法使用此方法。 它允許精細控制哪些用戶可以訪問集群的敏感資訊。 - 要僅檢索 HTTP 閘道憑證,請使用
ClustersClient.get_gateway_settings
.
- 要檢索所有配置(包括敏感參數),請使用
-
ConfigurationsClient.update
現已棄用,並已替換為ClustersClient.update_gateway_settings
.
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 角色。
常見問題
為什麼我在更新 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 /configurations
POST /configurations/gateway
呼叫將不再返回任何資訊, GET /configurations/{configurationName}
並且調用將不再返回敏感參數,例如存儲帳戶密鑰或群集密碼。 相應的 SDK 方法和 PowerShell cmdlet 也是如此。
如果您使用的是上述 Visual Studio、VS Code、IntelliJ 或 Eclipse 工具之一的舊版本,則在您更新之前,它不再起作用。
有關更多詳細資訊,請參閱本文檔中適用於您的方案的相應部分。