移轉至叢集設定中以角色為基礎的細微存取

我們將推出一些重要的變更,以支援更精細的角色型存取來取得敏感性資訊。 作為這些變更的一部分,如果您使用下列其中一個受影響的實體/案例自 2019 年 9 月 3 日起就需要採取一些動作。

變更內容為何?

之前,處理擁有者、參與者或讀者 Azure 角色的叢集使用者可以透過 HDInsight API 取得秘密,因為他們可供具有 */read 權限的任何人使用。 秘密定義為值,可用來取得較使用者角色所允許更高的存取權。 其中包括叢集閘道 HTTP 認證、儲存體帳戶金鑰和資料庫認證等值。

從 2019 年 9 月 3 日開始,存取這些秘密將需要 Microsoft.HDInsight/clusters/configurations/action 權限,使用者無法使用讀者角色存取秘密。 具有此權限的角色為參與者、擁有者和新的 HDInsight 叢集操作員角色。

我們也引進了新的 HDInsight 叢集操作員角色,其將能夠擷取秘密,而不會獲授與參與者或擁有者的系統管理權限。 總括來說:

角色 之前為 未來
讀取者 - 讀取存取權,包括秘密。 - 讀取存取權,排除秘密
HDInsight 叢集操作員
(新角色)
N/A - 讀取/寫入存取權,包括秘密
參與者 - 讀取/寫入存取權,包括秘密。
- 建立和管理所有類型的 Azure 資源。
- 執行指令碼動作。
沒有變化
負責人 - 讀取/寫入存取權,包括秘密。
- 所有資源的完整存取權
- 委派存取權給其他人。
- 執行指令碼動作。
沒有變化

如需如何將 HDInsight 叢集操作員角色指派新增給使用者,以授與其對叢集秘密讀取/寫入權的詳細資訊,請參閱下一節:將 HDInsight 叢集操作員角色指派新增給使用者

我是否受到這些變更的影響?

下列實體和案例會受到影響:

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:

Azure HDInsight Tools for Visual Studio Code

如果您使用版本 1.1.1 或更早版本,請更新至最新版本的 Azure HDInsight Tools for Visual Studio Code,以避免中斷。

Azure Toolkit for IntelliJ

如果您使用版本 3.20.0 或更早版本,請更新至最新版本的 Azure Toolkit for IntelliJ 外掛程式,以避免中斷。

Azure Data Lake and Stream Analytics Tools for Visual Studio

更新至版本 2.3.9000.1 或更新版本的 Azure Data Lake and Stream Analytics Tools for Visual Studio,以避免中斷。 如需更新的說明,請參閱我們的文件:更新 Data Lake Tools for Visual Studio

Azure Toolkit for Eclipse

如果您使用版本 3.15.0 或更早版本,請更新至最新版本的 Azure Toolkit for Eclipse 外掛程式,以避免中斷。

適用於 .NET 的 SDK

版本 1.x 和 2.x

更新至 HDInsight SDK for .NET 的版本 2.1.0。 如果您使用受這些變更影響的方法,可能需要少量的程式碼修改:

  • ClusterOperationsExtensions.GetClusterConfigurations不再傳回敏感性參數,如儲存體金鑰 (核心站台) 或 HTTP 認證 (閘道)。

    • 若要擷取所有設定,包括敏感性參數,請繼續使用 ClusterOperationsExtensions.ListConfigurations。 具有「讀者」角色的使用者無法使用此方法。 這可讓您更細微地控制哪些使用者可以存取叢集的敏感性資訊。
    • 若要只擷取 HTTP 閘道認證,請使用 ClusterOperationsExtensions.GetGatewaySettings
  • ClusterOperationsExtensions.GetConnectivitySettings 現在已被取代,且已由 ClusterOperationsExtensions.GetGatewaySettings 取代。

  • ClusterOperationsExtensions.ConfigureHttpSettings 現在已被取代,且已由 ClusterOperationsExtensions.UpdateGatewaySettings 取代。

  • ConfigurationsOperationsExtensions.EnableHttpDisableHttp 現在已被取代。 HTTP 現在一律會啟用,因此不再需要這些方法。

版本 3.x 和更新版本

更新至 HDInsight SDK for .NET 的版本 5.0.0 或更新版本。 如果您使用受這些變更影響的方法,可能需要少量的程式碼修改:

適用於 Python 的 SDK

更新至適用於 Python 的 HDInsight SDK 版本 1.0.0 或更新版本。 如果您使用受這些變更影響的方法,可能需要少量的程式碼修改:

SDK For Java

更新至適用於 Java 的 HDInsight SDK 版本 1.0.0 或更新版本。 如果您使用受這些變更影響的方法,可能需要少量的程式碼修改:

  • ConfigurationsInner.get不再傳回敏感性參數,如儲存體金鑰 (核心站台) 或 HTTP 認證 (閘道)。
  • ConfigurationsInner.update 現已被取代。

SDK For Go

更新至 HDInsight SDK for Go 版本 27.1.0 或更新版本。 如果您使用受這些變更影響的方法,可能需要少量的程式碼修改:

Az.HDInsight PowerShell

更新至 Az PowerShell 版本 2.0.0 或更新版本,以避免中斷。 如果您使用受這些變更影響的方法,可能需要少量的程式碼修改。

  • Grant-AzHDInsightHttpServicesAccess 現在已被取代,且已由新的 Set-AzHDInsightGatewayCredential Cmdlet 取代。
  • 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 角色

常見問題集

我在更新 API 要求和/或工具之後,為何會看到 403 (禁止) 回應?

叢集設定現在支援細微的角色型存取控制,而且需要有 Microsoft.HDInsight/clusters/configurations/* 權限才能加以存取。 若要取得此權限,請將 HDInsight 叢集操作員、參與者或擁有者角色指派給嘗試存取設定的使用者或服務主體。

為何我在執行 Azure CLI 命令以將 HDInsight 叢集操作員角色指派給其他使用者或服務主體時,看到「權限不足,無法完成此作業」?

除了擁有擁有者角色之外,執行命令的使用者或服務主體還需要有足夠的 Microsoft Entra 權限,才能查閱獲指派者的物件識別碼。 此訊息表示 Microsoft Entra 權限不足。 請嘗試將 -–assignee 引數取代為 –assignee-object-id,並提供被指派者的物件識別碼作為參數 (而不是名稱) (或在受控識別的情況下為主體識別碼)。 如需詳細資訊,請參閱 az role assignment create 文件的選擇性參數一節。

如果仍然無法運作,請連絡您的 Microsoft Entra 管理員以取得正確的權限。

如果我未採取動作,會發生什麼情況?

從 2019 年 9 月 3 日開始,GET /configurationsPOST /configurations/gateway 呼叫將不再傳回任何資訊,而且 GET /configurations/{configurationName} 呼叫將不再傳回敏感性參數,例如儲存體帳戶金鑰或叢集密碼。 對應的 SDK 方法和 PowerShell Cmdlet 也是如此。

如果您使用所提及的其中一個適用於 Visual Studio、VSCode、IntelliJ 或 Eclipse 的舊版工具,其在您更新之前不再能運作。

如需詳細資訊,請參閱本文件適合您案例的對應章節。