使用穀歌ID令牌進行身份驗證

要驗證到Databricks REST api,您有兩個選項:

  • 個人訪問令牌。您隻能將它們用於工作空間級別的REST api。

  • OpenID連接(OIDC)令牌。您可以將這些用於所有Databricks REST api。

OpenID連接(OIDC)令牌是支持身份驗證的開放標準。OIDC 1.0是OAuth 2.0協議之上的一個簡單的身份層。它允許應用程序基於OAuth授權服務器執行的身份驗證來驗證用戶的身份。應用程序還可以從OIDC令牌獲得用戶的基本概要信息。OIDC令牌默認在一小時後過期。

重要的

Databricks REST api隻支持Google發布的OIDC令牌,這些令牌通常稱為穀歌ID令牌。為了減少混淆,本文其餘部分使用該術語穀歌ID令牌OIDC令牌

本文描述了使用Databricks REST api進行身份驗證的步驟,以及如何創建所需的穀歌雲服務帳戶並為這些帳戶生成令牌。

單個穀歌ID令牌可以用於帳戶級api或工作空間級api,但不能同時用於這兩個目的。為工作空間級和帳戶級api設置令牌的步驟基本相同。重要的區別已在說明中說明了。

對於生產環境,Databricks建議您使用兩個服務帳戶來使用Databricks REST api。

  • 創建一個服務帳戶(SA-1)來運行您的工作負載。

  • 創建另一個服務帳戶(SA-2)以擁有您的數據庫和穀歌雲資源的權限。

  • 授予SA-1權限模仿SA-2調用Databricks REST api。

使用此模擬模型,一個團隊可以管理工作負載安全性,而另一個團隊可以管理資源安全性。因為您隻在需要時授予模擬權限,所以這種方法為您的組織提供了安全性和靈活性。

本文詳細描述了如何在生產環境中執行這些步驟。您可以使用以下策略之一調整這些說明用於非生產使用和測試:

  • 用你的穀歌用戶帳號來模擬SA-2。用戶帳號必須具有該角色角色/ iam.serviceAccountTokenCreator

  • 使用一個穀歌雲服務帳號SA-1和SA-2都適用。

帳戶級api和工作空間級api

要理解使用Databricks REST api的身份驗證,必須理解REST api的類型及其與Databricks資源層次結構的關係。

您可能有一個或多個數據庫賬戶。一個Databricks帳戶包含0個、1個或多個Databricks工作區。您可以使用帳戶控製台創建工作空間並管理配置工作空間所必需的雲資源(例如憑證、存儲和網絡)。

一個磚工作空間擁有各種資源,例如作業和筆記本。工作空間管理員(有時僅稱為管理員)可以修改在工作空間級別定義的設置,包括管理設置頁麵

由於這種差異,有兩種類型的api:

要向Databricks REST API進行身份驗證,您需要傳遞一個帶有受眾的穀歌ID令牌(澳元),匹配API的基本URL,這在這兩種類型的API之間是不同的。要使用不同的基本url調用Databricks REST api,必須使用不同的穀歌ID令牌。

憑證透傳

需要一些Databricks REST API方法憑證透傳。要調用這些方法,除了穀歌ID外,還必須傳遞一個穀歌OAuth訪問令牌雲平台Beplay体育安卓版本範圍。Databricks服務器使用穀歌OAuth訪問令牌代表調用方調用穀歌Cloud api。

Databricks不驗證或保存訪問令牌。

重要的

要確定某個操作是否需要憑據傳遞,請參考每個API操作的API文檔。這些api需要X-Databricks-GCP-SA-Access-Token請求中的HTTP頭。

步驟1:創建兩個服務帳戶

  1. 創建兩個新的穀歌雲服務帳戶。按照穀歌文章中的說明操作創建服務帳戶。若要使用穀歌雲控製台,請轉到服務帳戶頁麵並選擇一個穀歌Cloud項目來創建它。您在其中創建這些服務帳戶的穀歌Cloud項目不需要與用於Databricks工作空間的項目相匹配,新的服務帳戶也不需要彼此使用相同的穀歌Cloud項目。

    • 令牌創建服務帳戶(SA-1):該服務帳戶自動為主服務帳戶創建令牌。這些令牌將用於調用Databricks REST api。穀歌文檔調用它SA-1

    • Databricks REST APIs (SA-2)服務主帳戶:此服務帳戶充當Databricks REST api和自動化工作流的主體(自動化用戶)。穀歌文檔調用它- 2

    保存兩個服務帳戶的電子郵件地址,以便在後麵的步驟中使用。

  2. 創建一個服務帳號密鑰您的令牌創建服務帳戶(SA-1),並將其保存到名為SA-1-key.json

    1. 從穀歌雲控製台服務帳戶頁,單擊SA-1的電子郵件地址。

    2. 單擊選項卡。

    3. 點擊添加關鍵

    4. 確保JSON(默認值)被選中。

    5. 點擊創建

    6. 該網頁將密鑰文件下載到您的瀏覽器。將該文件移動到您的本地工作目錄並重命名它SA-1-key.json

    有關其他說明,請參閱穀歌文章創建服務帳戶密鑰

  3. 在您的主服務帳戶(SA-2)上授予您的令牌創建服務帳戶(SA-1)服務帳戶令牌創建者角色。按照穀歌文章中的說明操作直接請求權限

    1. 從穀歌雲控製台服務帳戶頁,單擊SA-2的電子郵件地址。

    重要的

    在穀歌Cloud Console中,請確保編輯您的主SA (SA-2),而不是您的令牌創建SA (SA-1):

    1. 點擊權限

    2. 點擊授權訪問

    3. 新校長字段,粘貼您的令牌創建SA (SA-1)的電子郵件地址。

    4. 角色字段中,選擇服務帳戶令牌創建者角色

    5. 點擊保存

步驟2:創建穀歌ID令牌

Databricks推薦使用穀歌Cloud CLI (gcloud)生成ID令牌,以調用Databricks REST api。

重要的

生成的ID令牌將在1小時內過期。你必須在規定時間內完成所有剩餘步驟。如果令牌在完成後麵的步驟(例如調用Databricks api)之前過期,則必須重複此步驟以生成新的穀歌ID令牌。

  1. 在您的計算機上安裝穀歌Cloud CLI。看到穀歌關於安裝gcloud工具的文章

  2. 運行以下命令為您的主服務帳戶生成ID令牌。

    • 取代< SA-1-key-json >以JSON格式顯示SA-1密鑰文件的路徑。

    • 取代< SA-2-email >SA-2的電郵地址。

    • 取代<讀者>根據您的用例,如下所示:

      • 對於工作空間級api,替換為您的工作區URL的形式https:// <數字>。<數字> .gcp.www.eheci.com例如,https://999999999992360.0.gcp.www.eheci.com。每個工作區都有一個不同的惟一工作區URL。要在多個工作空間上調用api,需要創建多個穀歌ID令牌,每個令牌具有不同的觀眾值。

      • 用於帳戶級API,替換為https://accounts.gcp.www.eheci.com。不同的賬戶都有相同的賬戶觀眾價值。

    運行以下命令用於生產係統:

    Gcloud認證登錄——credit -file= gcloud auth print-identity-token——impersonat -service-account=“< SA-2-email-address >”(包括電子郵件)觀眾=“<讀者>”

    對於非生產用途,如果使用用戶帳戶模擬SA-2,請使用以下命令:

    Gcloud auth登錄Gcloud auth print-identity-token—impersonate-service-account=< SA-2-email-address >——觀眾=“<讀者>”——包括電子郵件

    對於非生產用途,如果您為SA-1和SA-2同時使用一個服務帳戶,請對服務帳戶的密鑰JSON文件使用以下命令:

    Gcloud認證登錄——credit -file= gcloud auth print-identity-token——audience=“<讀者>”
  3. 將輸出末尾的長行保存到一個名為穀歌- id標記- sa - 2. - txt

    它輸出的文本類似如下:

    警告:此命令正在使用服務帳戶模擬。所有API調用都將以[]的方式執行。eyJhba7s86dfa9s8f6a99das7fa68s7d6…N8s67f6saa78sa8s7dfiLlA

步驟3:創建穀歌OAuth訪問令牌(僅適用於需要憑據傳遞的api)

. .注意:此步驟僅用於調用需要憑據傳遞的api。要確定某個操作是否需要憑據傳遞,請參考每個API操作的API文檔。

生成訪問令牌的請求包括一生字段,該字段定義訪問令牌的有效期。如果您隻需要令牌激活5分鍾,則設置為300年代(300秒)。下麵的示例使用3600年代,代表一個小時。

重要的

  • 您必須在限定時間內完成所有剩餘步驟。如果時間在您完成後麵的步驟(例如調用Databricks api)之前過期,則必須重複此步驟以生成新的穀歌OAuth訪問令牌。

  • 默認情況下,一個小時(3600年代的最大持續時間一生字段。若要擴展此限製,請聯係穀歌客戶支持並請求例外。

  1. 執行如下命令。取代< SA-2-email-address >SA-2的服務帳戶電子郵件地址。對於非生產使用或測試,如果使用單個服務帳戶或使用用戶帳戶模擬服務帳戶,請將替換為服務帳戶的電子郵件地址。

    Gcloud auth print-access-token—impersonate-service-account=< SA-2-email-address >
  2. 將輸出末尾的長行保存到一個名為訪問令牌- sa 2. - txt

    它輸出的文本類似如下:

    警告:此命令正在使用服務帳戶模擬。所有API調用都將以[]的方式執行。eyJhba7s86dfa9s8f6a99das7fa68s7d6…N8s67f6saa78sa8s7dfiLlA

步驟4:將服務帳戶添加為工作區或帳戶用戶

您可以使用穀歌ID令牌調用Databricks帳戶級api,例如帳戶API工作空間層api。根據用例的不同,指令也不同。請注意,您不能使用一個穀歌ID令牌來訪問這兩種類型的api,因為觀眾場的時候創建穀歌ID令牌

工作區api

要使用穀歌ID令牌對工作區api進行身份驗證,請使用工作區管理設置頁麵添加您的主服務帳戶(SA-2),就像它是用戶電子郵件地址一樣。

  1. 作為工作空間管理員,轉到管理設置頁麵

  2. 請按照向工作區添加用戶並使用您的主服務帳戶的電子郵件地址時,提示提供它在管理設置頁麵。

  3. 根據計劃調用的Databricks REST api和想要使用的數據對象,可選地添加新服務帳戶可能需要的組成員關係。看到管理組

  4. 可選地為該用戶添加Databricks訪問控製設置。看到訪問控製

帳戶級別api

要使用穀歌ID令牌對帳戶級API(例如帳戶API)進行身份驗證,請使用帳戶控製台將您的主要服務帳戶(SA-2)添加為帳戶admin。使用服務帳戶的電子郵件地址添加服務帳戶,就像添加用戶一樣。

  1. 作為帳戶所有者或帳戶管理員,轉到帳戶控製台中的Users選項卡

  2. 點擊添加用戶

    請注意

    不要點擊添加服務主體。不能使用服務帳戶創建數據服務負責人

  3. 電子郵件地址字段,輸入您的主要服務帳戶(SA-2)電子郵件地址。

  4. 設置姓和名的必需字段,以反映服務帳戶的用途。

  5. 點擊發送邀請。由於您使用的是服務帳戶而不是真正的用戶電子郵件,因此沒有人收到邀請電子郵件。服務帳戶立即被授權為帳戶admin,無需額外確認。

步驟5:調用Databricks API

在REST API身份驗證期間需要提供的令牌根據您計劃的使用情況而有所不同賬戶API工作空間層api。請注意,您不能使用一個穀歌ID令牌來訪問這兩種類型的api,因為觀眾場的時候創建穀歌ID令牌

下麵的HTTP頭用於穀歌id的Databricks身份驗證。

HTTP報頭名稱

描述

哪些類型的api需要它?

授權

穀歌SA-2作為不記名令牌的ID令牌。語法是身份驗證:持票人<標記>

所有的api

X-Databricks-GCP-SA-Access-Token

穀歌SA-2的OAuth訪問令牌。

僅帳戶級api

示例工作空間級API請求

要為工作空間調用Databricks REST API,在授權HTTP頭,語法如下:

授權持票人<穀歌-id-令牌>

您提供的令牌必須具有以下屬性:

  • 您訪問的工作區必須與您在創建令牌時提供的工作區URL匹配。看到步驟2:創建穀歌ID令牌

  • 被模擬的服務帳戶(SA-2)必須是工作區的用戶。看到工作區api

下麵的示例調用工作空間級API集群列表

  • 取代< google-id-token >使用您保存在文件中的穀歌ID令牌穀歌- id標記- sa - 2. - txt

  • 替換為基本工作區URL,其形式類似於https://1234567890123456.7.gcp.www.eheci.com

旋度\- x得到\——頭'授權:持有者'\< workspace-URL > / api / 2.0 /集群/列表

示例帳戶級API請求,用於不使用憑據傳遞的API

下麵的示例調用Account API來獲得一個工作區列表。

  • 取代< google-id-token >使用您保存在文件中的穀歌ID令牌穀歌- id標記- sa - 2. - txt

  • 取代<帳戶id >您的帳戶ID。要查找您的帳戶ID:

    1. 作為帳戶admin,轉到Databricks帳戶控製台

    2. 點擊右上角用戶名旁邊的向下箭頭。

    3. 在下拉菜單中,您可以複製您的帳戶ID

旋度\- x得到\——頭'授權:持有者'\https://accounts.gcp.www.eheci.com/api/2.0/example/ <帳戶id > /操作名稱

帶有憑據傳遞的帳戶級API請求示例

下麵的示例調用Account API來獲得一個工作區列表。

  • 取代< google-id-token >使用您保存在文件中的穀歌ID令牌穀歌- id標記- sa - 2. - txt

  • 取代< access-token-sa-2 >使用您保存在文件中的SA-2訪問令牌訪問令牌- sa 2. - txt

  • 取代<帳戶id >您的帳戶ID。要查找您的帳戶ID:

    1. 作為帳戶admin,轉到Databricks帳戶控製台

    2. 在左側菜單的底部(您可能需要滾動),單擊User按鈕(人員圖標)。

    3. 在出現的彈出窗口中,通過單擊ID右側的圖標複製帳戶ID。

    找到您的帳戶ID。
旋度\- x刪除\——頭'授權:持有者'\——頭“X-Databricks-GCP-SA-Access-Token: < access-token-sa-2 >”\https://accounts.gcp.www.eheci.com/api/2.0/accounts/ <帳戶id > /工作區/ < workspace-id >