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

預覽

此功能已在私人預覽

要驗證和訪問Databricks REST api,您有兩個選項:

  • Databricks個人訪問令牌以訪問工作空間。看到使用Databricks個人訪問令牌進行身份驗證.您隻能將它們用於工作空間級別的REST api。

  • 打開ID連接(OIDC)令牌以訪問任何REST API。為賬戶API 2.0, OIDC令牌身份驗證是唯一支持的身份驗證類型。僅對於Account API 2.0,您還必須為每個請求創建並提供一種稱為穀歌Cloud OAuth訪問令牌的輔助類型。

OpenID Connect (OIDC)令牌是支持身份驗證的開放標準。OIDC 1.0是OAuth 2.0協議之上的一個簡單的標識層。它允許客戶端基於授權服務器執行的身份驗證來驗證用戶的身份。它還以一種可互操作和類似rest的方式獲取關於用戶的基本概要信息。OIDC令牌在默認情況下有一個小時的有效期。在穀歌Cloud上,Databricks REST api隻支持Google發布的OIDC令牌,通常稱為穀歌ID標記

對於帳戶級api,例如賬戶API 2.0,您需要兩個令牌來發出API請求:一個穀歌ID令牌和一個穀歌OAuth訪問令牌雲平台Beplay体育安卓版本範圍。穀歌OAuth訪問令牌是Google頒發的授權令牌,它允許Account API代表您訪問穀歌雲資源,例如創建一個GKE集群來運行您的工作區。

本文描述了使用穀歌ID令牌和穀歌OAuth訪問令牌對Databricks REST api進行身份驗證的步驟,以及如何創建所需的穀歌雲服務帳戶並為這些帳戶生成令牌。單個穀歌ID令牌可以用於帳戶級api或工作空間級api,但不能同時用於兩個目的。為工作空間級和帳戶級api設置令牌的步驟對於大多數步驟是相同的,重要的區別在說明中說明。

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

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

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

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

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

本文描述如何為生產使用執行這些步驟,但您也可以將這些指導用於非生產使用。對於非生產原型和測試,您可以使用您的穀歌用戶帳戶模擬SA-2,或者同時為SA-1和SA-2使用一個服務帳戶。

步驟1:創建並配置兩個業務帳戶

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

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

    • Databricks REST接口的業務主帳戶(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-1)授予主服務帳戶(SA-2)上的服務帳戶令牌創建者角色。按照穀歌文章中的說明操作直接請求的權限

    1. 從穀歌雲控製台服務帳戶單擊SA-2的郵箱地址。

    重要的

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

    1. 點擊權限

    2. 點擊授權訪問

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

    4. 角色字段中,選擇服務帳戶令牌創建者角色或者是這個角色的超集。

    5. 點擊保存

步驟2:為令牌創建服務帳戶(SA-1)創建JWT令牌

現在必須使用創建的關鍵JSON文件步驟1創建一個JWT令牌表示您的令牌創建服務帳戶(SA-1)。

這些指令使用本地係統上的Python程序生成JWT令牌。磚推薦使用Python 3.這個例子需要PIP工具

  1. 如果你還沒有PyJWT安裝完成後,執行以下命令:

    python -m pip install PyJWT
  2. 將以下Python代碼作為文件複製到您的本地工作目錄pythoncreate-jwt.py

    進口jwt進口時間進口json#配置#您的服務帳戶SA-1電子郵件地址my_SA' < SA-1-email-address >”# JSON的完整路徑,如果它不是'SA-1-key。Json '在當前目錄my_key_json_path“SA-1-key.json”# JWT在過期前的持續時間(以秒為單位)。因為我們使用它來調用穀歌API,所以限製是1小時(3600秒)。duration_seconds3600#實現sa_secretjson負載開放my_key_json_path))iat時間時間()經驗值iat+duration_seconds有效載荷“國際空間站”my_SA“子”my_SA“iat”iat“經驗”經驗值“範圍”“https://www.googleapis.com/auth/cloud-Beplay体育安卓版本platform”additional_headers“孩子”sa_secret“private_key_id”]}signed_jwtjwt編碼有效載荷sa_secret“private_key”),additional_headers算法“RS256”打印""#添加空行將任何警告或其他輸出與主輸出分開打印signed_jwt
  3. 為您的配置修改代碼:

    • 取代< SA-1-email-address >使用您的令牌創建服務帳戶電子郵件地址。

    • 如果SA-1密鑰JSON文件沒有命名SA-1-key.json在當前目錄下,修改my_key_json_path的完整路徑的賦值SA-1-key.json

  4. 運行程序:

    python create-jwt.py
  5. 將輸出中的長字符串保存到工作目錄中名為訪問令牌- sa 1. - txt.這是您的令牌創建服務帳戶(SA-1)的訪問令牌。

步驟3:為您的主服務帳戶(SA-2)創建OIDC令牌

使用SA-1的訪問令牌為您的主服務帳戶(SA-2)生成OIDC令牌。

運行以下旋度命令並進行以下修改:

  • 取代< SA-2-email-address >SA-2郵箱地址。

  • 取代< SA-1-access-token >使用文件中的SA-1訪問令牌訪問令牌- sa 1. - txt

  • 取代<讀者>根據你打算調用的api,如下所示:

    • 在Databricks工作區api中使用OIDC令牌,在Databricks工作空間中使用完整的HTTPS URL,不包括任何子路徑。例如https://999999987652360.0.gcp.m.eheci.com

    • 將OIDC令牌與Databricks Account API一起使用,使用https://accounts.gcp.m.eheci.com

    重要的

    因為在觀眾字段,對於不同的用例,您不能對工作空間API和帳戶API使用相同的OIDC令牌。要對這兩種api使用OIDC,請創建兩個不同的OIDC令牌。

  • 設置includeEmail參數真正的

回聲curl——請求後“https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/ < SA-2-email-address >: generateIdToken——頭授權:無記名< SA-1-access-token >”——頭“application / json內容類型:——data-raw”{觀眾“觀眾”:“< >”,“includeEmail”:“真正的”} '

結果如下所示:

“令牌”“< oidc-token-sa-2 >”

將不帶引號的令牌字段(不是整個JSON)的內容保存到一個名為oidc——令牌- sa - 2. - txt

OIDC令牌在默認情況下有一個小時的有效期。

重要的

你必須在這個時間範圍內完成所有剩下的步驟。如果時間在您完成後麵的步驟(例如調用Databricks api)之前過期,則必須重複此步驟以生成新的穀歌OIDC令牌。

步驟4:(僅針對帳戶API)為您的主服務帳戶(SA-2)創建穀歌OAuth訪問令牌

請注意

的調用才需要此步驟賬戶API 2.0.要調用工作區api,請跳過此步驟。

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

重要的

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

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

  1. 運行以下旋度命令。取代< SA-2-email-address >填寫SA-2的服務帳戶電子郵件地址。取代< SA-1-access-token >SA-1的訪問令牌。

    回聲curl——location——請求POST“https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/ < SA-2-email-address >: generateAccessToken——頭授權:無記名< SA-1-access-token >”——頭“application / json內容類型:——data-raw”{“範圍”:[" https://www.googleapis.com/auth/cloud-plBeplay体育安卓版本atform ", " https://www.googleapis.com/auth/compute "),“一生”:“3600年代”} '

    輸出如下所示:

    “accessToken”“< access-token-sa-2 >”“expireTime”“2022 - 02 - 24 t20:55:16z”
  2. 的內容accessToken字段(而不是整個JSON)到一個名為訪問令牌- sa 2. - txt

步驟5:將您的主服務帳戶(SA-2)添加到帳戶或工作區

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

允許SA-2調用Account API

要使用OIDC令牌調用Account api,使用帳戶控製台將您的主服務帳戶(SA-2)添加為帳戶管理員,就像它是一個用戶一樣:

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

  2. 點擊添加用戶

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

  4. 在必需的名和姓字段中輸入一些數據,以反映此服務帳戶的用途。

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

允許SA-2調用工作區api

要使用OIDC令牌調用工作區api,將您的主服務帳戶(SA-2)添加到工作區,就像它是一個用戶一樣:

  1. 按照下麵的說明向工作區添加用戶當在管理控製台中提示您提供主服務帳戶的電子郵件地址時,請使用它。

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

  3. 根據需要,為該用戶添加可能需要的Databricks訪問控製設置。看到啟用訪問控製

步驟6:調用Databricks API

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

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

HTTP報頭名稱

描述

授權

將服務帳戶OIDC令牌作為承載令牌(身份驗證:持票人<標記>).Databricks根據OIDC令牌中的身份對請求進行身份驗證。

X-Databricks-GCP-SA-Access-Token

SA-2的穀歌OAuth訪問令牌。Databricks需要這個令牌來執行驗證和管理IAM角色。

不同的api可能需要不同的HTTP頭的組合。

用例

添加授權

添加X-Databricks-GCP-SA-Access-Token

賬戶API

是的

是的

工作空間層api

是的

沒有

賬戶API的例子

下麵的示例調用Account API來獲得一個工作區列表。取代< oidc-token >使用您保存在文件中的OIDC令牌oidc——令牌- sa - 2. - txt.將替換為文件中保存的SA-2訪問令牌訪問令牌- sa 2. - txt

回聲旋度- x得到——頭授權:無記名< oidc-token >”——頭“X-Databricks-GCP-SA-Access-Token: < access-token-sa-2 >”https://accounts.gcp.m.eheci.com/api/2.0/accounts/ <帳戶id > /工作區

工作空間層API的例子

下麵的示例將工作空間級API調用到集群列表.取代< oidc-token >使用您保存在文件中的OIDC令牌oidc——令牌- sa - 2. - txt

回聲旋度- x得到——頭授權:無記名< oidc-token >”https://1234567890123456.7.gcp.m.eheci.com/api/2.0/clusters/list