CI/CD的服务主体
本文描述如何使用Databricks为CI/CD使用服务主体。一个服务主体是为使用自动化工具和应用程序而创建的标识,包括:
CI/CD平bob体育客户端下载台等GitHub的行为,Azure管道,GitLab CI / CD
气流在数据管道中
作为一种安全最佳实践,Databricks建议使用Databricks服务主体及其Databricks访问令牌,而不是您的Databricks用户或您的Databricks个人访问令牌用于您的工作区用户,以便CI/CD平台访问Databricks资源。bob体育客户端下载这种方法的一些好处包括:
可以独立于用户为Databricks服务主体授予和限制对Databricks资源的访问。例如,这允许您禁止Databricks服务主体在Databricks工作空间中充当管理员,同时仍然允许工作空间中的其他特定用户继续充当管理员。
用户可以保护他们的访问令牌不被CI/CD平台访问。bob体育客户端下载
您可以暂时禁用或永久删除Databricks服务主体,而不会影响其他用户。例如,这允许您暂停或删除对怀疑正在以恶意方式使用的Databricks服务主体的访问。
如果用户离开您的组织,您可以删除该用户而不影响Databricks服务主体。
要让CI/CD平台访问Databbob体育客户端下载ricks工作空间,请执行以下操作:
在工作空间中创建Databricks服务主体。
为Databricks服务主体生成Databricks访问令牌。
将这个Databricks访问令牌授予CI/CD平台。bob体育客户端下载
要完成步骤1和步骤2,请参见管理服务主体.
要完成第3步,请完成本文中的说明。
如果您还想将Databricks工作区与Databricks一起使用(可选)回购在CI/CD平台场景中bob体育客户端下载,请参见向Databricks工作区添加Git提供者凭据.例如,您可能希望Git提供程序访问您的工作空间,并且还希望在工作空间中与Git提供程序一起使用Databricks Repos。但是,为了使用CI/CD平台的工作区,您不需要使用Databricks Repos。bob体育客户端下载
需求
Databricks服务主体的Databricks访问令牌。若要创建Databricks服务主体及其Databricks访问令牌,请参见管理服务主体.
Git提供者的帐户。
设置GitHub动作
GitHub的行为必须能够访问您的Databricks工作区。如果你想使用数据库回购,你的工作空间也必须能够访问GitHub。
要使GitHub Actions能够访问您的Databricks工作区,您必须向GitHub Actions注册Databricks服务主体的Databricks访问令牌。
如果你也想让你的Databricks工作空间访问GitHub,当你使用Databricks回购,您必须将GitHub机器用户的GitHub个人访问令牌添加到您的工作区。
用GitHub Actions为Databricks服务主体注册Databricks访问令牌
本节介绍如何启用GitHub Actions来访问你的Databricks工作区。
作为安全最佳实践,Databricks建议不要直接在GitHub Actions文件的主体中输入Databricks访问令牌。您应该使用GitHub向GitHub Actions注册Databricks访问令牌加密机密代替。
GitHub动作,比如Databricks列出的那些使用GitHub Actions进行持续集成和交付,以及onpush.yml
而且onrelease.yml
文件的一部分Python基本模板在dbx
对于GitHub动作,依赖于GitHub加密的秘密,如:
DATABRICKS_HOST
,即值https://
其次是你的工作空间实例名称例如,dbc-a1b2345c-d6e7.cloud.www.neidfyre.com
.DATABRICKS_TOKEN
的值token_value
为Databricks服务主体创建Databricks访问令牌后复制的值。
有关GitHub操作需要哪些GitHub加密秘密的详细信息,请参见管理服务主体以及该GitHub动作的文档。
若要将这些GitHub加密秘密添加到GitHub存储库,请参见为存储库创建加密的秘密在GitHub文档中。有关添加这些GitHub存储库秘密的其他方法,请参见加密机密在GitHub文档中。
将GitHub机器用户的GitHub个人访问令牌添加到Databricks工作空间
本节介绍如何使你的Databricks工作区使用Databricks访问GitHub回购.这是CI/CD场景中的可选任务。
作为安全最佳实践,Databricks建议您使用GitHub机器用户而不是GitHub个人帐户,因为许多相同的原因,您应该使用Databricks服务主体而不是Databricks用户。要将GitHub机器用户的GitHub个人访问令牌添加到Databricks工作空间,请执行以下操作:
如果没有可用的GitHub机器用户,请创建一个。一个GitHub机用户是一个独立于您自己的GitHub个人帐户的GitHub个人帐户,您可以使用它来自动化GitHub上的活动。创建一个新的单独的GitHub帐户以GitHub机器用户的身份使用,如果您还没有可用的机器。
请注意
当您作为GitHub机器用户创建一个新的单独的GitHub帐户时,您不能将其与您自己的GitHub个人帐户的电子邮件地址关联。相反,请联系您组织的电子邮件管理员,以获得一个可以作为GitHub机器用户与这个新的单独GitHub帐户关联的单独电子邮件地址。
有关在组织内管理独立电子邮件地址及其关联的GitHub机器用户及其GitHub个人访问令牌的问题,请咨询您组织的帐户管理员。
允许GitHub机器用户访问你的GitHub存储库。看到邀请团队或个人在GitHub文档中。要接受邀请,您可能首先需要退出您的GitHub个人帐户,然后以GitHub机器用户的身份重新登录。
作为机器用户登录到GitHub,然后为该机器用户创建一个GitHub个人访问令牌。看到创建个人访问令牌在GitHub文档中。确保给GitHub个人访问令牌回购访问。
收集Databricks服务主体的Databricks访问令牌、GitHub机器用户名,然后向Databricks工作区添加Git提供者凭据.
建立Azure管道
Azure管道必须能够访问您的Databricks工作区。如果你也想使用Databricks回购,您的工作空间必须能够访问Azure管道。
Azure管道YAML管道文件依赖于环境变量来访问Databricks工作空间。这些环境变量包括:
DATABRICKS_HOST
,即值https://
其次是你的工作空间实例名称例如,dbc-a1b2345c-d6e7.cloud.www.neidfyre.com
.DATABRICKS_TOKEN
的值token_value
为Databricks服务主体创建Databricks访问令牌后复制的值。
若要将这些环境变量添加到Azure管道,请参见在Azure管道中使用Azure键值秘密而且设置秘密变量在Azure文档中。
请参见以下Databricks博客:
CI/CD场景可选:如果您的工作空间使用Databricks回购,你想让你的工作空间访问Azure管道,收集:
Databricks服务主体的Databricks访问令牌
您的Azure管线用户名
设置GitLab CI/CD
GitLab CI / CD必须能够访问您的Databricks工作区。如果你也想使用Databricks回购,您的工作空间必须能够访问GitLab CI/CD。
要访问Databricks工作空间,请使用GitLab CI/CD.gitlab-ci.yml
文件,如其中的一部分Python基本模板在dbx
,依赖自定义CI/CD变量,例如:
DATABRICKS_HOST
,即值https://
其次是你的工作空间实例名称例如,dbc-a1b2345c-d6e7.cloud.www.neidfyre.com
.DATABRICKS_TOKEN
的值token_value
为Databricks服务主体创建Databricks访问令牌后复制的值。
若要将这些自定义变量添加到GitLab CI/CD项目,请参见向项目中添加CI/CD变量在GitLab CI/CD文档中。
如果您的工作空间使用Databricks回购,并且你想让你的工作空间访问GitLab CI/CD,收集:
Databricks服务主体的Databricks访问令牌
您的GitLab CI/CD用户名
向Databricks工作区添加Git提供者凭据
本节描述如何使Databricks工作区能够访问Databricks的Git提供程序回购.这在CI/CD场景中是可选的。例如,您可能只希望Git提供程序访问Databricks工作区,而不希望在Git提供程序的工作区中使用Databricks Repos。如果是,则跳过本节。
在开始之前,收集以下信息和工具:
Databricks服务主体的Databricks访问令牌。
与Git提供程序相关联的用户名。
与Git提供者的用户相关联的访问令牌。
一个工具,例如
旋度
或邮差来叫创建一个Git凭证条目Git凭证API中的操作。无法使用“数据库”用户界面。
在下面的说明中,使用旋度
或邮递员,代替:
< service-principal-access-token >
使用Databricks服务主体的Databricks访问令牌。(做不为您的工作区用户使用Databricks个人访问令牌。)提示
为确认使用了正确的令牌,可以首先为Databricks服务主体使用Databricks访问令牌来调用工作空间的SCIM API 2.0 (Me)API,并检查调用的输出。
< git-provider-access-token >
使用与您的Git提供者的用户关联的访问令牌。< git-provider-user-name >
使用与Git提供者关联的用户名。< git-provider-short-name >
与你的Git提供者相关联的短名称:对于GitHub,使用
GitHub
.对于Azure管道,使用
AzureDevOpsServices
.对于GitLab CI/CD,使用
GitLab
.
执行如下命令。确保set-git-credentials.json
文件在运行此命令的同一目录下。该命令使用环境变量DATABRICKS_HOST
,代表你的数据库工作空间实例URL例如,https://dbc-a1b2345c-d6e7.cloud.www.neidfyre.com
.
curl -X POST\$ {DATABRICKS_HOST}/ api / 2.0 / git-credentials\——头'授权:承载' \——数据@set-git-credentials.json\|金桥。
set-git-credentials.json
:
{“personal_access_token”:“< git-provider-access-token >”,“git_username”:“< git-provider-user-name >”,“git_provider”:“< git-provider-short-name >”}
创建一个新的HTTP请求(File >新建> HTTP请求).
在“HTTP动词”下拉列表中,选择帖子.
为输入请求URL,输入
http:// < databricks-instance-name > / api / 2.0 / git-credentials
,在那里< databricks-instance-name >
你的数据库是什么工作空间实例名称例如,dbc-a1b2345c-d6e7.cloud.www.neidfyre.com
.在授权选项卡,在类型列表中,选择不记名的令牌.
为令牌,为Databricks服务主体(即Databricks服务主体)输入Databricks访问令牌
< service-principal-access-token >
).在头选项卡,添加关键而且价值一双
内容类型
而且应用程序/ scim + json
在身体选项卡上,选择生而且JSON.
输入以下身体负载:
{“personal_access_token”:“< git-provider-access-token >”,“git_username”:“< git-provider-user-name >”,“git_provider”:“< git-provider-short-name >”}
点击发送.
提示
要确认调用成功,可以为Databricks服务主体使用Databricks访问令牌来调用获取Git证书Git凭证API中的操作。,并检查输出。