共用方式為


使用 Unity 目錄中的 Azure 受控識別來存取記憶體

此頁面說明如何使用 Azure 受控識別來代表 Unity 目錄用戶連線到記憶體容器。

什麼是 Azure 受控識別?

Unity 目錄可以設定為使用 Azure 受控識別來代表 Unity 目錄使用者存取記憶體容器。 受控識別提供身分識別,讓應用程式在連線到支援Microsoft Entra ID 驗證的資源時使用。

您可以使用 Unity 目錄中的受控識別來支援兩個主要使用案例:

  • 身分識別,用來連線到中繼存放區的受控記憶體帳戶(其中儲存受控數據表)。
  • 身分識別,用來連線到其他外部記憶體帳戶(無論是檔案型存取,還是透過外部數據表存取現有數據集)。

使用受控識別設定 Unity 目錄具有下列優點:使用服務主體設定 Unity 目錄:

  • 受管理的身分識別不需要您維護認證或輪替密鑰。
  • 如果您的 Azure Databricks 工作區部署在您自己的 VNet 中(也稱為 VNet 插入式部署),而且您使用記憶體防火牆來保護 Azure Data Lake Storage 帳戶,您可以使用受控識別將工作區連線到該帳戶。 請參閱(建議用於 VNet 插入工作區)根據您的受控識別設定 Azure 儲存體 的受信任存取權。

設定 Unity 目錄的受控識別

若要將受控識別設定為與 Unity 目錄搭配使用,請先在 Azure 中建立 Azure Databricks 的存取連接器。 根據預設,存取連接器會使用系統指派的受控識別進行部署。 您可以選擇改為附加使用者指派的受控識別。 接著,您會將受控識別存取權授與 Azure Data Lake Storage 帳戶,並在建立 Unity 目錄中繼存放區或記憶體認證時使用存取連接器。

需求

建立存取連接器的 Azure 使用者或服務主體必須:

  • 成為 Azure 資源群組的 ContributorOwner

將受控識別授與記憶體帳戶的 Azure 使用者或服務主體必須:

  • 作為Owner或在儲存帳戶中具有User Access Administrator Azure RBAC 角色的使用者。

步驟 1:建立 Azure Databricks 的存取連接器

適用於 Azure Databricks 的 Access Connector 是第一方 Azure 資源,可讓您將受控識別連線到 Azure Databricks 帳戶。 Azure Databricks 的每個存取連接器都可以包含系統指派的受控識別、一或多個使用者指派的受控識別,或兩者。

  1. 以資源群組的參與者或擁有者身分登入 Azure 入口網站。

  2. 按兩下 [+ 建立 ] 或 [建立新的資源]。

  3. 搜尋 Azure Databricks 的 Access Connector,然後加以選取。

  4. 點擊 建立

  5. 在 [ 基本] 索引 標籤上,接受、選取或輸入下列欄位的值:

    • 用帳戶:這是將在其中建立存取連接器的 Azure 訂用帳戶。 預設值是您目前使用的 Azure 訂用帳戶。 它可以是租使用者中的任何訂用帳戶。
    • 資源群組:這是將建立存取連接器的 Azure 資源群組。
    • 名稱:輸入指出連接器用途的名稱。
    • 區域:這應該與您要連線的記憶體帳戶相同。
  6. 按下 下一步,輸入標籤,然後按下 下一步

  7. 在 [管理識別] 標籤頁上,建立管理識別,如下所示:

    • 若要使用系統指派的受控識別,請將 狀態 設定為 開啟
    • 若要新增使用者指派的受控識別,請按兩下 [+ 新增],然後選取一或多個使用者指派的受控識別。

    設定存取連接器的受控識別。

  8. 按下 [檢閱 + 建立]

  9. 當您看到 [ 驗證通過 ] 訊息時,按兩下 [ 建立]。

  10. 部署完成時,按兩下 [移至資源]。

  11. 記下 資源標識碼

    資源識別碼的格式如下:

    /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    

步驟 2:授與記憶體帳戶的受控識別存取權

若要授與此步驟中的許可權,您必須在記憶體帳戶上擁有 OwnerUser Access Administrator Azure RBAC 角色。

當您授與記憶體帳戶和容器的受控識別存取權時,您有下列選項:

  • 使用 Storage Blob Data Contributor 角色授予整個儲存帳戶讀取和寫入的許可權。
  • 使用 Storage Blob Delegator 角色賦予儲存帳戶較為限制的權限,並使用 Storage Blob Data Contributor 角色來讀取和寫入特定容器的存取權。

下列指示假設您授與 Storage Blob Data Contributor 角色於儲存體帳戶,但您可以視需要替換其他選項:

  1. 登入您的 Azure Data Lake Storage 帳戶。
  2. 移至 存取控制(IAM),按一下 + 新增,然後選取 新增角色指派
  3. 選取 [儲存體 Blob 資料參與者] 角色,然後按 [下一步]
  4. 在 [存取權指派對象] 下,選取 [受控識別]
  5. 按兩下 [ +選取成員],然後選取 Azure Databricks 的 Access 連接器或 使用者指派的受控識別
  6. 搜尋您的連接器名稱或使用者指派的身分識別、選取它,然後按兩下 [ 檢閱和指派]。

步驟 3:授與受控識別檔案事件的存取權

若要設定所需的 Azure 角色並啟用外部地點的檔案事件,請參見 (建議)啟用外部地點的檔案事件

使用受控識別來存取 Unity 目錄根記憶體帳戶

本節說明當您建立 Unity 目錄中繼存放區時,如何為受控識別提供根記憶體帳戶的存取權。

若要瞭解如何升級現有的 Unity 目錄中繼存放區以使用受控識別,請參閱 升級現有的 Unity 目錄中繼存放區以使用受控識別來存取其根記憶體

  1. 身為 Azure Databricks 帳戶管理員,登入 Azure Databricks 帳戶控制台

  2. 按兩下 [資料] 圖示。目錄

  3. 按兩下 [ 建立中繼存放區]。

  4. 輸入下列欄位的值:

    • 中繼存放區的名稱

    • 將部署中繼存放區的區域

      為了獲得最佳效能,請在相同的雲端區域中共置存取連接器、工作區、中繼存放區和雲端記憶體位置。

    • ADLS Gen 2 路徑:輸入要作為中繼存放區根記憶體的記憶體容器路徑。

      會自動新增前置 abfss:// 詞。

    • 存取連接器識別碼:以下列格式輸入 Azure Databricks 存取連接器的資源識別碼:

      /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
      
    • (選擇性) 受控識別標識碼:如果您使用使用者指派的受控識別建立存取連接器,請輸入受控識別的資源標識符。

  5. 點擊 建立

  6. 出現提示時,選擇要連結到中繼存放區的工作區。

使用受控識別來存取 Unity 目錄中受控的外部記憶體

Unity 目錄可讓您使用記憶體認證和外部位置存取記憶體帳戶中的現有數據。 記憶體認證會儲存受控識別,而外部位置會定義記憶體的路徑,以及記憶體認證的參考。 您可以使用此方法來授與和控制雲端記憶體中現有數據的存取權,以及在 Unity 目錄中註冊外部數據表。

記憶體認證可以保存受控識別或服務主體。 使用受管理的身分識別的優點是允許 Unity Catalog 存取受網路規則保護的儲存帳戶,這無法透過服務主體實現,而且消除了管理和輪替機密的需求。

若要使用受控識別建立記憶體認證,並將該記憶體認證指派給外部位置,請遵循 使用 Unity 目錄連線到雲端物件記憶體中的指示。

如果您的 Azure Databricks 工作區部署在您自己的 Azure 虛擬網路中,也稱為 「VNet 插入」,而且您使用記憶體防火牆來保護 Azure Data Lake Storage 帳戶,您必須:

  1. 讓您的 Azure Databricks 工作區能夠存取 Azure 儲存體。
  2. 讓您的受控識別能夠存取 Azure 儲存體。

步驟 1. 讓您的 Azure Databricks 工作區能夠存取 Azure 儲存體

您必須設定網路設定,以允許 Azure Databricks 工作區存取 Azure Data Lake Storage。 您可以設定私人端點,或從 Azure Data Lake Storage 上的虛擬網路存取,以允許從子網連線到 Azure Data Lake Storage 帳戶。

如需指示,請參閱 授與 Azure Databricks 工作區對 Azure Data Lake Storage 的存取權。

步驟 2:啟用受控識別以存取 Azure 儲存體

只有在針對您的 Azure 儲存體 帳戶停用[允許受信任服務列表上的 Azure 服務存取此儲存器帳戶] 時,才需要此步驟。 如果已啟用該組態:

  • 與記憶體帳戶相同租使用者中 Azure Databricks 的任何存取連接器都可以存取記憶體帳戶。
  • 任何 Azure 信任的服務都可以存取記憶體帳戶。 請參閱 授與受信任 Azure 服務的存取權。

下列指示包含停用此設定的步驟。 您可以使用 Azure 入口網站或 Azure CLI。

使用 Azure 入口網站

  1. 登入 Azure 入口網站,尋找並選取 Azure 儲存體 帳戶,然後移至 [網络] 索引標籤。

  2. 將 [公用網络存取] 設定[從選取的虛擬網络和IP 位址啟用]。

    您可以選擇將 [公用網络存取] 設定[已停用]。 受控識別可用來略過公用網路存取的檢查。

  3. 在 [資源實例] 下,選取 Microsoft.Databricks/accessConnectors 的資源類型,然後選取您的 Azure Databricks 存取連接器。

  4. [例外狀況] 底下,清除 [ 允許受信任服務清單上的 Azure 服務存取此儲存體帳戶 ] 複選框。

使用 Azure CLI

  1. 安裝 Azure CLI登入。 若要使用使用者帳戶或服務主體登入,請參閱 使用 Azure CLI 登入

  2. 將網路規則新增至記憶體帳戶:

    az storage account network-rule add \
    -–subscription <subscription id of the resource group> \
    -–resource-id <resource Id of the access connector for Azure Databricks> \
    -–tenant-id <tenant Id> \
    -g <name of the Azure Storage resource group> \
    -–account-name <name of the Azure Storage resource> \
    

    以下欄格式新增資源識別碼:

    /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    
  3. 建立網路規則之後,請移至 Azure 入口網站中的 Azure 儲存體 帳戶,然後在 [資源實例] 下的

  4. [例外狀況] 底下,清除 [ 允許受信任服務清單上的 Azure 服務存取此儲存體帳戶 ] 複選框。

  5. 選擇性地將 [公用網络存取] 設定[已停用]。 受控識別可用來略過公用網路存取的檢查。

    標準方法是將此值設定為 [從選取的虛擬網络和IP位址啟用]。

無伺服器 SQL 倉儲 是在 Azure Databricks 的 Azure 訂用帳戶中執行的計算資源,而不是您的 Azure 訂用帳戶。 如果您在 Azure Data Lake Storage 上設定防火牆,並打算使用無伺服器 SQL 倉儲,您必須設定防火牆以允許從無伺服器 SQL 倉儲存取。

如需指示,請參閱設定供無伺服器計算存取的防火牆

升級現有的 Unity 目錄中繼存放區,以使用受控識別來存取其根記憶體

如果您有使用服務主體建立的 Unity 目錄中繼存放區,而且您想要升級它以使用受控識別,您可以使用 API 呼叫來更新它。

  1. 使用設定 Unity 目錄受控識別中的指示,建立適用於 Azure Databricks 的 Access Connector,並將許可權指派給用於 Unity 目錄中繼存放區根記憶體的記憶體容器。

    您可以使用系統指派的受控識別或使用者指派的受控識別來建立存取連接器。

    記下存取連接器的資源標識碼。 如果您使用使用者指派的受控識別,也請記下其資源標識碼。

  2. 身為帳戶管理員,登入指派給中繼存放區的 Azure Databricks 工作區。

    您不需要是工作區管理員。

  3. 產生個人存取令牌

  4. 在您的本機環境中建立包含下列各項的 Azure Databricks 驗證組態設定檔:

    • 您產生個人存取令牌之工作區的工作區實例名稱和工作區識別碼。
    • 個人存取令牌值。

    請參閱個人存取權杖驗證 (已淘汰)。

  5. 使用 Databricks CLI 執行下列命令來重新建立記憶體認證。

    替換占位符值:

    • <credential-name>:記憶體認證的名稱。
    • <access-connector-id>:Azure Databricks 存取連接器的資源標識碼,格式為 /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    • <managed-identity-id>:如果您使用使用者指派的受控識別建立存取連接器,請指定受控識別的資源識別碼。
    • <profile-name>:Azure Databricks 驗證組態配置檔的名稱。
    databricks storage-credentials create --json '{
      "name\": "<credential-name>",
      "azure_managed_identity": {
        "access_connector_id": "<access-connector-id>",
        "managed_identity_id": "<managed-identity-id>"
      }
    }' --profile <profile-name>
    
  6. 記下回應中的記憶體認證標識碼。

  7. 執行下列 Databricks CLI 命令來擷 metastore_id取 。 將 取代 <profile-name> 為您的 Azure Databricks 驗證組態配置檔名稱。

    databricks metastores summary --profile <profile-name>
    
  8. 執行下列 Databricks CLI 命令,以新的根記憶體認證更新中繼存放區。

    替換占位符值:

    • <metastore-id>:您在上一個步驟中擷取的中繼存放區標識碼。
    • <storage-credential-id>:記憶體認證標識碼。
    • <profile-name>:Azure Databricks 驗證組態配置檔的名稱。
    databricks metastores update <metastore-id> \
    --storage-root-credential-id <storage-credential-id> \
    --profile <profile-name>