开始
加载和管理数据
处理数据
政府
参考和资源
2023年1月13日更新
给我们反馈
一个服务主体是为使用自动化工具和系统(包括脚本、应用程序和CI/CD平台)而创建的标识。bob体育客户端下载
作为安全最佳实践,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.neidfyre.com对于本文中的每个Postman示例,您可以为您的工作区用户提供Databricks个人访问令牌定义变量而且使用变量改为《邮差》。
dbc-a1b2345c-d6e7.cloud.www.neidfyre.com
如果你想调用Databricks api旋度,这篇文章的旋度示例使用两个环境变量,DATABRICKS_HOST而且DATABRICKS_TOKEN,代表你的数据库工作空间实例URL例如,https://dbc-a1b2345c-d6e7.cloud.www.neidfyre.com;和用于您的工作区用户的Databricks个人访问令牌。设置这些环境变量的操作步骤如下:
DATABRICKS_HOST
DATABRICKS_TOKEN
https://dbc-a1b2345c-d6e7.cloud.www.neidfyre.com
使用实例仅为当前终端会话设置环境变量。要为所有终端会话设置环境变量,请在shell的启动文件中输入以下命令,然后重新启动终端。用您自己的值替换这里的示例值。
出口DATABRICKS_HOST=“https://dbc-a1b2345c-d6e78.cloud.www.neidfyre.com”出口DATABRICKS_TOKEN=“dapi1234567890b2cd34ef5a67bc8de90fa12b”
使用实例仅为当前“命令提示符”会话设置环境变量。用您自己的值替换这里的示例值。
集DATABRICKS_HOST=“https://dbc-a1b2345c-d6e78.cloud.www.neidfyre.com”集DATABRICKS_TOKEN=“dapi1234567890b2cd34ef5a67bc8de90fa12b”
要为所有命令提示符会话设置环境变量,请运行以下命令,然后重新启动命令提示符。用您自己的值替换这里的示例值。
对于setx DATABRICKS_HOST“https://dbc-a1b2345c-d6e78.cloud.www.neidfyre.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.neidfyre.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.neidfyre.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平台都可能停止工作。bob体育客户端下载为了防止这种情况,在此时间段到期之前,必须创建一个新的Databricks访问令牌并将其提供给CI/CD平台。bob体育客户端下载
执行如下命令。确保create-service-principal-token.json文件在运行此命令的同一目录下。
create-service-principal-token.json
在命令的输出中,复制token_value值,因为您将需要它来设置CI/CD平台。bob体育客户端下载
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.neidfyre.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命令行界面(CLI),通过运行Databricks个人访问令牌来配置砖配置——令牌——简介<概要名称>命令为这个Databricks个人访问令牌创建连接配置文件。有关详细信息,请参见中“设置身份验证”和“连接配置文件”部分数据库命令行设置和文档.
砖配置——令牌——简介<概要名称>
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工作空间,否则将有一个永久的配置漂移。在应用以下更改后,以前拥有任何一种更改的用户CAN_USE或CAN_MANAGE权限,但不再拥有任何权限,撤销其对基于令牌的身份验证的访问。它们的活动令牌将立即被删除(撤销)。
授权=“令牌”
CAN_USE
CAN_MANAGE
变量“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.neidfyre.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