開始
用戶指南
管理指南
參考指南
資源
2022年10月7日更新
給我們反饋
一個服務主體是為使用自動化工具和係統(包括腳本、應用程序和CI/CD平台)而創建的標識。Beplay体育安卓版本
作為安全最佳實踐,Databricks建議使用Databricks服務主體及其Databricks訪問令牌,而不是您的Databricks用戶或您的Databricks個人訪問令牌用於您的工作空間用戶,以使自動化工具和係統訪問Databricks資源。這種方法的一些好處包括:
可以獨立於用戶為Databricks服務主體授予和限製對Databricks資源的訪問。例如,這允許您禁止Databricks服務主體在Databricks工作空間中充當管理員,同時仍然允許工作空間中的其他特定用戶繼續充當管理員。
用戶可以保護他們的訪問令牌不被自動化工具和係統訪問。
您可以暫時禁用或永久刪除Databricks服務主體,而不會影響其他用戶。例如,這允許您暫停或刪除對懷疑正在以惡意方式使用的Databricks服務主體的訪問。
如果用戶離開您的組織,您可以刪除該用戶而不影響Databricks服務主體。
要創建Databricks服務主體,您可以使用以下工具和api:
控件在工作區中創建Databricks服務主體工作空間的SCIM API 2.0 (ServicePrincipals).要調用此API,可以使用以下工具卷曲或郵差,或者你可以使用起程拓殖.無法使用“數據庫”用戶界麵。
屬性為Databricks服務主體創建Databricks訪問令牌令牌管理API 2.0.要調用此API,可以使用以下工具卷曲或郵差,或者你可以使用起程拓殖.無法使用“數據庫”用戶界麵。
本文描述了如何:
在Databricks工作區中創建Databricks服務主體。
為Databricks服務主體創建Databricks訪問令牌。
按照這些說明使用旋度或Postman在Databricks工作區中創建Databricks服務主體,然後為Databricks服務主體創建Databricks訪問令牌。
旋度
用Terraform代替旋度或郵差,跳到創建Databricks服務主體.
一個磚個人訪問令牌為您的Databricks工作區用戶。這使您能夠調用Databricks api。
旋度或郵遞員調用Databricks api。
如果您希望使用Postman調用Databricks api,請注意,而不是輸入Databricks工作空間實例名稱例如,dbc-a1b2345c-d6e7.cloud.www.eheci.com對於本文中的每個Postman示例,您可以為您的工作區用戶提供Databricks個人訪問令牌定義變量而且使用變量改為《郵差》。
dbc-a1b2345c-d6e7.cloud.www.eheci.com
如果你想調用Databricks api旋度,這篇文章的旋度示例使用兩個環境變量,DATABRICKS_HOST而且DATABRICKS_TOKEN,代表你的數據庫工作空間實例URL例如,https://dbc-a1b2345c-d6e7.cloud.www.eheci.com;和用於您的工作區用戶的Databricks個人訪問令牌。設置這些環境變量的操作步驟如下:
DATABRICKS_HOST
DATABRICKS_TOKEN
https://dbc-a1b2345c-d6e7.cloud.www.eheci.com
使用實例僅為當前終端會話設置環境變量。要為所有終端會話設置環境變量,請在shell的啟動文件中輸入以下命令,然後重新啟動終端。用您自己的值替換這裏的示例值。
出口DATABRICKS_HOST=“https://dbc-a1b2345c-d6e78.cloud.www.eheci.com”出口DATABRICKS_TOKEN=“dapi1234567890b2cd34ef5a67bc8de90fa12b”
使用實例僅為當前“命令提示符”會話設置環境變量。用您自己的值替換這裏的示例值。
集DATABRICKS_HOST=“https://dbc-a1b2345c-d6e78.cloud.www.eheci.com”集DATABRICKS_TOKEN=“dapi1234567890b2cd34ef5a67bc8de90fa12b”
要為所有命令提示符會話設置環境變量,請運行以下命令,然後重新啟動命令提示符。用您自己的值替換這裏的示例值。
對於setx DATABRICKS_HOST“https://dbc-a1b2345c-d6e78.cloud.www.eheci.com”對於setx DATABRICKS_TOKEN“dapi1234567890b2cd34ef5a67bc8de90fa12b”
如果你想調用Databricks api旋度,亦須注意以下事項:
本文的旋度示例使用shell命令格式化Unix、Linux和macOS。對於Windows命令shell,請替換\與^,並替換${…}與%…%.
\
^
${…}
%…%
您可以使用工具,如金橋的json格式輸出旋度便於閱讀和查詢。本文的旋度示例使用金橋格式化JSON輸出。
金橋
如果您使用多個Databricks工作區,而不是不斷更改DATABRICKS_HOST而且DATABRICKS_TOKEN變量,你可以使用. netrc文件。如果你使用. netrc文件,修改這篇文章的旋度例子如下:
. netrc
改變旋度- x來旋度——netrc- x
旋度- x
旋度——netrc- x
取代$ {DATABRICKS_HOST}用你的數據庫工作空間實例URL例如,https://dbc-a1b2345c-d6e7.cloud.www.eheci.com
$ {DATABRICKS_HOST}
刪除——頭“授權:持票人$ {DATABRICKS_TOKEN}”\
——頭“授權:持票人$ {DATABRICKS_TOKEN}”\
如果已經有可用的Databricks服務主體,請跳到下一節為Databricks服務主體創建Databricks訪問令牌。
您可以使用工具,如旋度和Postman將Databricks服務主體添加到Databricks工作區。在以下說明中,替換:
<顯示名稱>使用Databricks服務主體的顯示名稱。
<顯示名稱>
的權利數組。權利用於Databricks服務主體。這個示例授予Databricks服務主體創建集群的能力。默認情況下,Databricks服務主體被授予了工作區訪問權和Databricks SQL訪問權。
權利
<組id >使用Databricks工作區中希望Databricks服務主體所屬的任何組的組ID。(在組上設置訪問權限比在每個Databricks服務主體上單獨設置訪問權限更容易。)
<組id >
要添加其他組,請將每個組ID添加到組數組中。
組
要獲取群組ID,請呼叫獲得團體.
要創建一個組,管理組與用戶界麵或調用創建組API。
若要向組添加訪問權限,請參見管理組獲取用戶界麵選項或調用權限API 2.0.
若要將Databricks服務主體不添加到任何組,請刪除組數組中。
執行如下命令。確保create-service-principal.json文件在運行此命令的同一目錄下。
create-service-principal.json
在命令的輸出中,複製applicationId值,因為您將需要它為Databricks服務主體創建Databricks訪問令牌。
applicationId
curl -X POST\$ {DATABRICKS_HOST}/ api / 2.0 /預覽/ scim / v2 / ServicePrincipals\——頭“內容類型:應用程序/ scim + json”\——頭“授權:持票人$ {DATABRICKS_TOKEN}"\——數據@create-service-principal.json\|金橋。
create-service-principal.json:
{“displayName”:“<顯示名稱>”,“權利”:[{“價值”:“allow-cluster-create”}),“組織”:[{“價值”:“<組id >”}),“模式”:[“urn: ietf:參數:scim:模式:核心:2.0:ServicePrincipal”),“活躍”:真正的}
創建一個新的HTTP請求(File >新建> HTTP請求).
在“HTTP動詞”下拉列表中,選擇帖子.
為輸入請求URL,輸入https:// < databricks-instance-name > / api / 2.0 /預覽/ scim / v2 / ServicePrincipals,在那裏< databricks-instance-name >你的數據庫是什麼工作空間實例名稱例如,dbc-a1b2345c-d6e7.cloud.www.eheci.com.
https:// < databricks-instance-name > / api / 2.0 /預覽/ scim / v2 / ServicePrincipals
< databricks-instance-name >
在授權選項卡,在類型列表中,選擇不記名的令牌.
為令牌,為您的工作空間用戶輸入Databricks個人訪問令牌。
在頭選項卡,添加關鍵而且價值一雙內容類型而且應用程序/ scim + json
內容類型
應用程序/ scim + json
在身體選項卡上,選擇生而且JSON.
輸入以下身體負載:
點擊發送.
在響應有效負載中,複製applicationId值,因為您將需要它為Databricks服務主體創建Databricks訪問令牌。
如果您已經擁有Databricks服務主體的ID,請跳過第2步。
您可以使用工具,如旋度和Postman來獲取Databricks服務主體的ID。要獲取ID,請執行以下步驟:
執行如下命令。在命令的輸出中,複製applicationId值為Databricks服務主體設置。
curl -X GET\$ {DATABRICKS_HOST}/ api / 2.0 /預覽/ scim / v2 / ServicePrincipals\——頭“授權:持票人$ {DATABRICKS_TOKEN}"\|金橋。
在“HTTP動詞”下拉列表中,選擇得到.
在響應有效負載中,複製applicationId值。
使用旋度或Postman為Databricks服務主體創建Databricks訪問令牌。在以下說明中,替換:
<應用程序id >與applicationId值為Databricks服務主體設置。
<應用程序id >
< >的評論與Databricks訪問令牌相關聯的任何注釋。若要不添加注釋,請刪除評論對象。
< >的評論
評論
1209600這個Databricks訪問令牌有效的秒數。本例指定14天。
1209600
重要的
此Databricks訪問令牌在此時間段到期後將不再有效,並且依賴於此Databricks訪問令牌的任何CI/CD平台都可能停止工作。Beplay体育安卓版本為了防止這種情況,在此時間段到期之前,必須創建一個新的Databricks訪問令牌並將其提供給CI/CD平台。Beplay体育安卓版本
執行如下命令。確保create-service-principal-token.json文件在運行此命令的同一目錄下。
create-service-principal-token.json
在命令的輸出中,複製token_value值,因為您將需要它來設置CI/CD平台。Beplay体育安卓版本
token_value
請注意
如果收到“拒絕許可”消息,請參見使用管理控製台管理令牌權限授予Databricks服務主體可以使用允許使用Databricks訪問令牌。然後重新執行該命令。
curl -X POST\$ {DATABRICKS_HOST}/ api / 2.0 /令牌管理/代表/令牌\——頭“application / json內容類型:\——頭“授權:持票人$ {DATABRICKS_TOKEN}"\——數據@create-service-principal-token.json\|金橋。
create-service-principal-token.json:
{“application_id”:“<應用程序id >”,“評論”:“< >評論”,“lifetime_seconds”:1209600}
為輸入請求URL,輸入https:// < databricks-instance-name > / api / 2.0 /令牌管理/代表/令牌,在那裏< databricks-instance-name >你的數據庫是什麼工作空間實例名稱例如,dbc-a1b2345c-d6e7.cloud.www.eheci.com.
https:// < databricks-instance-name > / api / 2.0 /令牌管理/代表/令牌
在頭選項卡,添加關鍵而且價值一雙內容類型而且application / json
application / json
如果收到“拒絕許可”消息,請參見使用管理控製台管理令牌權限授予Databricks服務主體可以使用允許使用Databricks訪問令牌。然後單擊發送一次。
在響應有效負載中,複製token_value值,因為您需要將其添加到腳本、應用程序或係統中。
按照以下說明使用Terraform在Databricks工作空間中創建Databricks服務主體,然後為Databricks服務主體創建Databricks訪問令牌。
使用旋度或郵差而不是地球形態,跳轉到使用curl或Postman.
一個Databricks個人訪問令牌,允許Terraform在Databricks帳戶內調用Databricks api。詳細信息請參見使用Databricks個人訪問令牌進行身份驗證.
Databricks命令行界麵(CLI),通過運行Databricks個人訪問令牌來配置磚配置——令牌——簡介<概要名稱>命令為這個Databricks個人訪問令牌創建連接配置文件。有關詳細信息,請參見中“設置身份驗證”和“連接配置文件”部分磚CLI.
磚配置——令牌——簡介<概要名稱>
Terraform命令行。詳細信息請參見下載起程拓殖在Terraform網站上。
在終端中創建一個空目錄,然後切換到該目錄。每一組單獨的Terraform配置文件必須在其自己的目錄中。例如:mkdirterraform_service_principal_demo& &cdterraform_service_principal_demo.
mkdirterraform_service_principal_demo& &cdterraform_service_principal_demo
mkdir terraform__service_principal_demo& &cdterraform__service_principal_demo
在這個空目錄中,創建一個名為main.tf.將以下內容添加到該文件中,然後保存該文件。
main.tf
變量“databricks_account_id”{描述= "磚的磚帳戶ID的工作區。”類型= string}變量“databricks_connection_profile”={描述“磚連接配置文件的名稱使用。”類型= string}變量“service_principal_display_name”={描述“服務主體的顯示名稱。”類型= string}變量={描述“service_principal_access_token_lifetime服務主體的訪問令牌的生命周期在秒。”類型=違約數量= 3600}起程拓殖{required_providers{磚={源=“磚/磚"}}}提供者“磚”{主機= " https://accounts.cloud.www.eheci.com " account_id = var.databricks_account_id profile = var.databricks_connection_profile}資源”databricks_service_principal”“sp”{提供者=磚display_name = var.service_principal_display_name}資源”databricks_permissions token_usage”=“令牌”access_control{{授權Service_principal_name = databricks_service_principal.sp。application_id permission_level = "CAN_USE"}} resource "databricks_obo_token" "this" {depends_on = [databricks_permissions. permission . token]Token_usage] application_id = databricks_service_principal.sp。application_id comment = "代表${databricks_service_principal.sp的個人訪問令牌。Display_name}" lifetime_seconds = var.service_principal_access_token_lifetime}輸出"service_principal_name" {value = databricks_service_principal.sp。Display_name} output "service_principal_id" {value = databricks_service_principal.sp。Application_id} output "service_principal_access_token" {value = databricks_obo_token。Token_value sensitive = true}
若要將此服務主體添加到Databricks工作空間組,並將Databricks工作空間授權添加到此服務主體,請參見databricks_service_principal在Terraform網站上。
在同一目錄下,創建一個名為terraform.tfvars.將以下內容添加到該文件中,替換如下值,然後保存文件:
terraform.tfvars
取代databricks_account_id值,並使用工作區的Databricks帳戶ID。
databricks_account_id
提示
使用環境變量代替terraform.tfvars文件中,設置一個名為TF_VAR_DATABRICKS_ACCOUNT_ID到工作區的Databricks帳戶ID。同時移除databricks_account_id變量的main.tf以及參考account_id在磚供應商main.tf.
TF_VAR_DATABRICKS_ACCOUNT_ID
account_id
磚
取代databricks_connection_profile值,使用來自需求的連接配置文件的名稱。
databricks_connection_profile
使用環境變量代替terraform.tfvars文件中,設置一個名為TF_VAR_DATABRICKS_CONFIG_PROFILE連接配置文件的名稱。同時移除databricks_connection_profile變量的main.tf以及參考配置文件在磚供應商main.tf.
TF_VAR_DATABRICKS_CONFIG_PROFILE
配置文件
取代service_principal_display_name值,其中包含服務主體的顯示名稱。
service_principal_display_name
取代service_principal_access_token_lifetime值,該值為服務主體的訪問令牌的生命周期的秒數。
service_principal_access_token_lifetime
若要使用默認的3600秒生存期值,請刪除service_principal_access_token_lifetime從terraform.tfvars文件。
databricks_account_id = "<數據庫賬號ID,例如0000000-0000-0000-0000-000000000000>" databricks_connection_profile = "<數據庫連接配置文件名稱>" service_principal_display_name = "<服務主體顯示名稱>" service_principal_access_token_lifetime = 3600
初始化包含main.tf通過運行起程拓殖初始化命令。有關更多信息,請參見命令:初始化在Terraform網站上。
起程拓殖初始化
起程拓殖init
命令應用所需的更改,以達到所需的配置狀態起程拓殖應用命令。有關更多信息,請參見命令:在Terraform網站上。
起程拓殖應用
要獲取服務主體的訪問令牌,請參閱的值outputs.service_principal_access_token.value在terraform.tfstate文件,該文件位於包含main.tf文件。
outputs.service_principal_access_token.value
terraform.tfstate