設定及使用 Azure Databricks 自動化的 Azure 受控識別驗證
請遵循本文的步驟來驗證 Azure 資源的受控識別(先前稱為受控服務識別 (MSI)),以將 Azure Databricks 帳戶和工作區自動化。
Azure 會自動管理 Microsoft Entra ID 中的身分識別,以供應用程式在聯機到支援 Microsoft Entra ID 驗證的資源時使用。 這些資源包括 Azure Databricks 帳戶和工作區。 Azure Databricks 的 Azure 受控識別驗證會使用受控識別來取得Microsoft Entra ID 令牌,而不需要管理任何認證。
- 如需受控識別的詳細資訊,請參閱什麼是適用於 Azure 資源的受控識別?
- 如需 Azure Databricks 的 Azure 受控識別驗證詳細資訊,請參閱 Azure 受控識別驗證。
注意
Azure 資源受控識別與 Microsoft Entra ID 受控服務主體不同,Azure Databricks 也支援以其進行驗證。 若要瞭解如何使用 Microsoft Azure Databricks 驗證的 Entra ID 受控服務主體,而不是 Azure 資源的受控識別,請參閱:
本文示範如何設定及使用 Azure 受控識別驗證,如下所示:
- 建立使用者指派的受控識別。 Azure 支援 系統指派和使用者指派的受控識別。 Databricks 建議您使用使用者指派的受控識別搭配 Azure Databricks 進行 Azure 受控識別驗證。
- 將受控識別指派給 Azure Databricks 帳戶和該帳戶中的 Azure Databricks 工作區。
- 建立並登入 Azure 虛擬機(Azure VM)。 您必須使用支援受控識別的資源,例如 Azure VM,以及指派給該 Azure VM 的受控識別,以程式設計方式呼叫 Azure Databricks 帳戶和工作區作業。
- 將使用者指派的受控識別指派給 Azure VM。
- 在 Azure VM 上安裝 Databricks CLI,然後使用指派的受控識別來設定 Azure Databricks 的 Azure 受控識別驗證 Databricks CLI。
- 使用 Databricks CLI 執行命令,以使用 Azure Databricks 的 Azure 受控識別驗證搭配指派的受控識別,將 Azure Databricks 帳戶和工作區自動化。
需求
- 若要建立並指派使用者指派的受控識別,您必須在 Azure 訂用帳戶中具備最低所需的 Azure 角色型存取控制 (Azure RBAC) 許可權。 請參閱 資源上使用受控識別所需的 Azure RBAC 許可權?。
- 若要將受控識別指派給 Azure Databricks 帳戶,您必須是該帳戶的管理員。 請參閱 將帳戶管理員角色指派給使用者。
- 若要將受控識別指派給 Azure Databricks 工作區,您必須是該工作區的系統管理員。 請參閱 使用工作區管理員設定頁面將工作區管理員角色指派給使用者。
- 若要建立 Azure VM 並將使用者受控識別指派給它,您至少 必須在 Azure 訂用帳戶中擁有虛擬機參與者 和 受控識別操作員 角色指派。
步驟 1:建立使用者指派的受控識別
在此步驟中,您會為 Azure 資源建立使用者指派的受控識別。 Azure 支援 系統指派和使用者指派的受控識別。 Databricks 建議您使用使用者指派的受控識別搭配 Azure Databricks 進行 Azure 受控識別驗證。 另 請參閱管理使用者指派的受控識別。
登入 Azure 入口網站。
注意
要使用的入口網站會根據您使用 Azure 公用雲端或國家或主權雲端而有所不同。 如需詳細資訊,請參閱國家雲端。
如果您有多個租用戶、訂用帳戶或目錄的存取權,請按兩下頂端功能表中的齒輪(設定)圖示,切換至您要在其中建立受控識別的目錄。
在 [搜尋資源、服務和檔] 中,搜尋並選取名為 受控識別的 Azure 服務。
按一下 [+ 建立]。
在 [ 基本] 索引 標籤上,針對 [資源群組],選擇現有的資源群組來新增此受控識別,或按兩下 [ 新建 ] 以建立新的資源群組以新增此受控識別。 如需資源群組的相關信息,請參閱使用 Azure 入口網站 管理 Azure 資源群組。
針對 [ 區域],選擇要新增此受控識別的適當區域。 如需區域的相關信息,請參閱 為您選擇正確的 Azure 區域。
針對 [ 名稱],輸入此受控識別的一些唯一名稱,方便您記住。
在 [檢閱 + 建立] 索引標籤中,按一下 [建立]。
按一下 [前往資源]。
複製 [用戶端識別符] 字段的值,因為您稍後會需要執行步驟 2、3 和 8:
如果您忘記複製此值,您可以稍後返回受控識別的概觀頁面以取得此值。 若要返回受控識別的概觀頁面,請在 [搜尋資源、服務和檔] 中搜尋並選取受控識別的名稱。 然後,在受控識別的設定頁面上,按下 提要字段中的 [概觀 ]。
步驟 2:將受控識別指派給 Azure Databricks 帳戶
在此步驟中,您會將受控識別存取權授與 Azure Databricks 帳戶。 如果您不想將受控識別存取權授與 Azure Databricks 帳戶,請直接跳至步驟 3。
在 Azure Databricks 工作區中,按一下頂端列中的使用者名稱,然後按一下 [管理帳戶]。
或者,直接移至 Azure Databricks 帳戶主控台 (https://accounts.azuredatabricks.net)。
如果出現提示,請登入您的 Azure Databricks 帳戶。
在側邊欄上,按一下 [使用者管理]。
按一下 [服務主體] 索引標籤。
注意
雖然此索引標籤為 服務主體,但此索引標籤也適用於受控識別。 Azure Databricks 會將受控識別視為 Azure Databricks 帳戶中的服務主體。
按一下 [新增服務主體]。
輸入服務主體的一些唯 一名稱 ,方便您記住。
針對 UUID,輸入步驟 1 中受控識別的 用戶端 識別碼值。
按一下新增。 您的受控識別會新增為 Azure Databricks 帳戶中的服務主體。
指派您想要讓服務主體擁有的任何帳戶層級許可權:
- 在 [服務主體] 索引標籤上,按一下服務主體的名稱。
- 在 [角色] 索引標籤上,切換為啟用或停用您希望此服務主體擁有的每個目標角色。
- 在 [權限] 索引標籤上,授與您想要管理及使用此服務主體的任何 Azure Databricks 使用者、服務主體和帳戶群組角色的存取權。 請參閱管理服務主體上的角色。
步驟 3:將受控識別指派給 Azure Databricks 工作區
在此步驟中,您會將受控識別存取權授與 Azure Databricks 工作區。
如果您的工作區已啟用識別身分同盟:
在 Azure Databricks 工作區中,按一下頂端列中的使用者名稱,然後按一下 [設定]。
按兩下 [服務主體]。
注意
雖然此索引標籤為 服務主體,但此索引標籤也適用於受控識別。 Azure Databricks 會將受控識別視為 Azure Databricks 帳戶中的服務主體。
按一下 [新增服務主體]。
選取您在步驟 2 中的服務主體,然後按一下 [新增]。 您的服務主體會新增為 Azure Databricks 工作區中的服務主體。
指派您想要服務主體擁有的任何工作區層級許可權:
- 在 [服務主體] 索引標籤上,按一下服務主體的名稱。
- 在 [ 組態] 索引標籤上,選取或清除以授與或撤銷您想要此服務主體擁有的每個目標狀態或權利。
- 在 [權限] 索引標籤上,授與您想要管理及使用此服務主體的任何 Azure Databricks 使用者、服務主體和帳戶群組角色的存取權。 請參閱管理服務主體上的角色。
直接跳至步驟 4。
如果您的工作區未啟用識別身分同盟:
在 Azure Databricks 工作區中,按一下頂端列中的使用者名稱,然後按一下 [設定]。
按兩下 [服務主體]。
注意
雖然此索引標籤為 服務主體,但此索引標籤也適用於受控識別。 Azure Databricks 會將受控識別視為 Azure Databricks 工作區中的服務主體。
按一下 [新增服務主體]。
在 [ 服務主體 ] 清單中,選取 [ 新增服務主體]。
針對 ApplicationId,輸入 步驟 1 中受控識別的用戶端 識別碼。
輸入一些 方便您記住新服務主體的顯示名稱 ,然後按兩下 [ 新增]。 您的受控識別會新增為 Azure Databricks 工作區中的服務主體。
指派您想要服務主體擁有的任何工作區層級許可權:
- 在 [服務主體] 索引標籤上,按一下服務主體的名稱。
- 在 [ 組態] 索引標籤上,選取或清除以授與或撤銷您想要此服務主體擁有的每個目標狀態或權利。
- 在 [權限] 索引標籤上,授與您想要管理及使用此服務主體的任何 Azure Databricks 使用者、服務主體和帳戶群組角色的存取權。 請參閱管理服務主體上的角色。
步驟 4:取得 Azure Databricks 工作區的 Azure 資源識別碼
在此步驟中,您會取得 Azure 指派給 Azure Databricks 工作區的資源識別符。 您稍後將需要此 Azure 資源識別符,以協助 Azure 受控識別驗證判斷 Azure 與 Azure Databricks 工作區相關聯的特定 Azure 資源。
在 Azure Databricks 工作區中,按兩下頂端列中的使用者名稱,然後按兩下 [Azure 入口網站]。
在側邊窗格的 [設定] 區段中,按兩下 [屬性]。
在 [ 基本資訊] 區段中,複製 [ 標識符 ] 值,因為稍後會在步驟 8 中用到它。 看起來應類似下列範例:
/subscriptions/<subscription-id>/resourceGroups/<resource-group-id>/providers/Microsoft.Databricks/workspaces/<workspace-id>
步驟 5:建立並登入 Azure VM
在此步驟中,您會建立並登入 Azure 虛擬機 (Azure VM)。 Azure VM 是支援受控識別的其中一種資源類型。 另請參閱快速入門:在 Azure 入口網站 中建立Linux虛擬機。
此 Azure VM 僅供示範之用。 此 Azure VM 會使用不一定針對您進行中使用量需求的優化設定。 完成此 Azure VM 實驗之後,您應該刪除它,如後續步驟 11 所示。
在您在步驟 1 中登入的 Azure 入口網站 中,在 [搜尋資源]、[服務和檔] 中,搜尋並選取名為虛擬機的 Azure 服務。
按兩下 [ + 建立 > Azure 虛擬機]。
在 [ 基本] 索引 標籤上,針對 [資源群組] 選擇要新增此 Azure VM 的現有資源群組,或按兩下 [ 新建 ] 以建立新的資源群組以新增此 Azure VM。 如需資源群組的相關信息,請參閱使用 Azure 入口網站 管理 Azure 資源群組。
針對 [虛擬機名稱],輸入此 Azure VM 的一些唯一名稱,方便您記住。
針對 [ 區域],選擇要新增此 Azure VM 的適當區域。 如需區域的相關信息,請參閱 為您選擇正確的 Azure 區域。
針對 [ 映射],選擇 [Ubuntu Server 22.04 LTS - x64 Gen 2]。
針對 [ 驗證類型],選取 [ SSH 公鑰]。
針對[ 使用者名稱],輸入
azureuser
。針對 SSH 公鑰來源,保留 [產生新金鑰組] 的預設值。
針對 [ 金鑰群組名稱],輸入
myKey
。針對 [ 公用輸入埠],選取 [ 允許選取的埠]。
針對 [選取輸入埠],選取 [HTTP][80] 和 [SSH][22]。
保留其餘預設值。
在 [檢閱 + 建立] 索引標籤中,按一下 [建立]。
按兩下 [ 下載私鑰] 並建立資源。 您的金鑰檔案會下載到本機開發電腦作為
myKey.pem
。 記下下載此myKey.pem
檔案的位置,因為稍後在此步驟中,您將需要它登入 Azure VM。如果您遺失金鑰檔案,您可以稍後返回 Azure VM 的設定頁面,以取得取代金鑰檔案。 若要返回 Azure VM 的設定頁面,請在 [搜尋資源、服務和檔] 中搜尋並選取您的 Azure VM 名稱。 若要從 Azure VM 的 [設定] 頁面取得取代金鑰檔案,請執行下列動作:
- 在側邊窗格的 [說明] 區段中,按兩下 [重設密碼]。
- 選取 [ 新增 SSH 公鑰]。
- 針對 [ 金鑰組名稱],輸入一些唯一的名稱。
- 按一下更新。
- 按兩下 [ 下載 + 建立]。 您的金鑰檔案會以
.pem
擴展名下載。 記下下載此.pem
檔案的位置,因為稍後在此步驟中,您將需要它登入 Azure VM。
建立 Azure VM 之後,按兩下 [移至資源]。
複製 [公用 IP 位址] 字段的值,因為您將需要在此步驟稍後登入 Azure VM。
如果您忘記複製此值,您可以稍後返回 Azure VM 的概觀頁面以取得此值。 若要返回 Azure VM 的概觀頁面,請在 [搜尋資源、服務和檔] 中搜尋並選取您的 Azure VM 名稱。 然後,在 Azure VM 的設定頁面上,按下提要字段中的 [概觀],然後尋找 [公用 IP 位址] 字段。
如果您的本機開發計算機在 Windows 上執行 Linux、macOS 或 WSL,請檢查您是否具有您剛才下載之私鑰的唯讀存取權。 若要這樣做,請從本機開發計算機的終端機或命令提示字元執行下列命令。 在此命令中,取代下列值:
- 將取代
</path/to>
為您下載.pem
檔案的路徑。 myKey.pem
將取代為您下載.pem
之檔案的檔名。
chmod 400 </path/to>/myKey.pem
- 將取代
登入 Azure VM。 若要這樣做,請從本機開發計算機的終端機或命令提示字元執行下列命令。 在此命令中,取代下列值:
- 將取代
</path/to>
為您下載.pem
檔案的路徑。 myKey.pem
將取代為您下載.pem
之檔案的檔名。- 將 取代
<public-ip-address>
為您稍早在此步驟中複製的 [公用IP 位址] 字段的值。
ssh -i </path/to>/myKey.pem azureuser@<public-ip-address>
例如:
ssh -i ./myKey.pem azureuser@192.0.2.0
- 將取代
如果您之前從未連線到此 Azure VM,系統會提示您確認主機的指紋。 若要這樣做,請遵循螢幕上的提示。 Databricks 建議您一律驗證主機的指紋。
終端機或命令提示字元會變更為
azureuser@<your-azure-vm-name>:~$
。若要隨時結束 Azure VM,請執行 命令
logout
或exit
。 終端機或命令提示字元接著會變更回正常狀態。
步驟 6:將受控識別指派給 Azure VM
在此步驟中,您會將受控識別與您的 Azure VM 產生關聯。 這可讓 Azure 在 Azure VM 執行時視需要使用受控識別進行驗證。 另 請參閱將使用者指派的受控識別指派給現有的 VM。
在您在步驟 1 中登入的 Azure 入口網站 中,於 Azure VM 的 [設定] 頁面上,於側邊窗格的 [設定] 區段中,按兩下 [身分識別]。
如果您稍早關閉 Azure VM 概觀頁面,請在 [搜尋資源、服務和檔] 中搜尋並選取您的 Azure VM 名稱。
在 [ 使用者指派] 索引標籤 上,按兩下 [ + 新增]。
選取您在步驟 1 中建立的使用者指派受控識別,然後按兩下 [ 新增]。
步驟 7:在 Azure VM 上安裝 Databricks CLI
在此步驟中,您會安裝 Databricks CLI,以便用它來執行命令,將 Azure Databricks 帳戶和工作區自動化。
提示
您也可以使用 Databricks Terraform 提供者或 Databricks SDK for Go 搭配 Azure 受控識別驗證,藉由執行 HCL 或 Go 程式代碼,將 Azure Databricks 帳戶和工作區自動化。 請參閱 Databricks SDK for Go 和 Azure 受控識別驗證。
當終端機或命令提示字元仍從步驟 5 開啟並登入您的 Azure VM 時,請執行下列兩個命令來安裝 Databricks CLI:
sudo apt install unzip curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sudo sh
執行下列命令來確認已安裝 Databricks CLI,這會列印已安裝的 Databricks CLI 版本:
databricks -v
步驟 8:設定 Azure 受控識別驗證的 Databricks CLI
在此步驟中,您會將 Databricks CLI 設定為使用 Azure Databricks 的 Azure 受控識別驗證搭配受控識別的設定。 若要這樣做,您會在 Databricks CLI 預期找到所需的驗證設定的預設位置中,建立具有預設檔名的檔案。
在終端機或命令提示字元仍然開啟並登入步驟 5 中的 Azure VM 時,使用
vi
文本編輯器建立並開啟名為.databrickscfg
的檔案,以在登入使用者的主目錄中編輯,方法是執行下列命令:vi ~/.databrickscfg
按下編輯器按鍵組合
Esc
,後面接著i
,開始編輯.databrickscfg
檔案。 命令提示字元會消失,vi
編輯器會啟動,而且該字-- INSERT --
會出現在編輯器底部,以指出.databrickscfg
檔案處於編輯模式。輸入下列內容。 在此內容中,取代下列值:
- 將 取代
<account-console-url>
為您的 Azure Databricks 帳戶主控台 URL,例如 https://accounts.azuredatabricks.net。 - 將
<account-id>
取代為您的 Azure Databricks 帳戶識別碼。 請參閱尋找您的帳戶識別碼。 - 將取代
<azure-managed-identity-application-id>
為步驟 1 中受控識別的用戶端識別碼值。 - 以您的個別工作區 URL 取代
<workspace-url>
,例如https://adb-1234567890123456.7.azuredatabricks.net
。 - 將取代
<azure-workspace-resource-id>
為步驟 4 中的 Azure 資源識別碼。 - 您可以視需要以不同的組態設定檔名稱取代建議的組態設定檔名稱
AZURE_MI_ACCOUNT
AZURE_MI_WORKSPACE
。 不需要這些特定名稱。
如果您不想執行 帳戶層級作業,可以省略
[AZURE_MI_ACCOUNT]
下列內容中的 區段。[AZURE_MI_ACCOUNT] host = <account-console-url> account_id = <account-id> azure_client_id = <azure-managed-identity-application-id> azure_use_msi = true [AZURE_MI_WORKSPACE] host = <workspace-url> azure_workspace_resource_id = <azure-workspace-resource-id> azure_client_id = <azure-managed-identity-application-id> azure_use_msi = true
- 將 取代
按編輯器按鍵組合
Esc
將編輯儲存至.databrickscfg
檔案,然後輸入 ,後面接著 。:wq
Enter
編輯器vi
會關閉,命令提示字元會重新出現。
步驟 9:執行帳戶層級命令
在此步驟中,您會使用 Databricks CLI 來執行命令,以自動化步驟 8 中設定的 Azure Databricks 帳戶。
如果您不想執行帳戶層級命令,請直接跳至步驟 10。
當終端機或命令提示字元仍開啟並登入步驟 5 中的 Azure VM 時,請執行下列命令,以列出 Azure Databricks 帳戶中的所有可用使用者。 如果您在步驟 8 中重新 AZURE_MI_ACCOUNT
命名,請務必在這裡取代它。
databricks account users list -p AZURE_MI_ACCOUNT
步驟 10:執行工作區層級命令
在此步驟中,您會使用 Databricks CLI 來執行命令,以自動化步驟 8 中設定的 Azure Databricks 工作區。
當終端機或命令提示字元仍開啟並登入步驟 5 中的 Azure VM 時,執行下列命令以列出 Azure Databricks 工作區中的所有可用使用者。 如果您在步驟 8 中重新 AZURE_MI_WORKSPACE
命名,請務必在這裡取代它。
databricks users list -p AZURE_MI_WORKSPACE
步驟 11:清除
此為選用步驟。 它會刪除 Azure VM 以節省成本,如果您不想繼續使用,則會刪除受控識別。 此步驟也會從 Azure Databricks 帳戶和工作區中移除已刪除的受控識別,以取得完整性。
刪除 Azure VM
- 如果終端機或命令提示字元仍然開啟,並從步驟 5 登入您的 Azure VM,請執行 命令
logout
或exit
以結束 Azure VM。 終端機或命令提示字元接著會變更回正常狀態。 - 在您在步驟 1 中登入的 Azure 入口網站 中,如果您稍早關閉,請返回 Azure VM 的概觀頁面。 若要這樣做,請在 [搜尋資源]、[服務和檔] 中,搜尋並選取您的 Azure VM 名稱。
- 在 Azure VM 的概觀頁面功能表欄上,按兩下 [ 刪除]。
- 選取 [ 我已閱讀並瞭解] 複選框,然後按兩下 [ 刪除]。
從您的 Azure 訂用帳戶中刪除受控識別
- 在您在步驟 1 中登入的 Azure 入口網站 中,如果您稍早關閉,請返回受控識別的概觀頁面。 若要這樣做,請在 [搜尋資源]、[服務和檔] 中,搜尋並選取受控識別的名稱。
- 在受控識別的概觀頁面功能表欄上,單擊 [ 刪除]。
- 選取 [ 我已閱讀並瞭解] 複選框,然後按兩下 [ 刪除]。
從 Azure Databricks 帳戶移除受控識別
- 在 Azure Databricks 帳戶的提要字段中,按兩下 [ 使用者管理]。
- 按一下 [服務主體] 索引標籤。
- 按兩下您在步驟 2 中新增的服務主體名稱。 如果看不到服務主體的名稱,請使用 篩選服務主體 來尋找它。
- 按兩下省略號按鈕,然後按下 [ 刪除]。
- 按兩下 [ 確認刪除]。
從 Azure Databricks 工作區移除受控識別
- 在 Azure Databricks 工作區中,按一下頂端列中的使用者名稱,然後按一下 [設定]。
- 按一下 [服務主體] 索引標籤。
- 按兩下您在步驟 3 中新增的服務主體名稱。 如果看不到服務主體的名稱,請使用 篩選服務主體 來尋找它。
- 按一下刪除。
- 在確認對話框中,按兩下 [ 刪除]。