CI/CD的服务主体

本文描述如何使用Databricks为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工作空间,请执行以下操作:

  1. 在工作空间中创建Databricks服务主体。

  2. 为Databricks服务主体生成Databricks访问令牌。

  3. 将这个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工作空间,请执行以下操作:

  1. 如果没有可用的GitHub机器用户,请创建一个。一个GitHub机用户是一个独立于您自己的GitHub个人帐户的GitHub个人帐户,您可以使用它来自动化GitHub上的活动。创建一个新的单独的GitHub帐户以GitHub机器用户的身份使用,如果您还没有可用的机器。

    请注意

    当您作为GitHub机器用户创建一个新的单独的GitHub帐户时,您不能将其与您自己的GitHub个人帐户的电子邮件地址关联。相反,请联系您组织的电子邮件管理员,以获得一个可以作为GitHub机器用户与这个新的单独GitHub帐户关联的单独电子邮件地址。

    有关在组织内管理独立电子邮件地址及其关联的GitHub机器用户及其GitHub个人访问令牌的问题,请咨询您组织的帐户管理员。

  2. 允许GitHub机器用户访问你的GitHub存储库。看到邀请团队或个人在GitHub文档中。要接受邀请,您可能首先需要退出您的GitHub个人帐户,然后以GitHub机器用户的身份重新登录。

  3. 作为机器用户登录到GitHub,然后为该机器用户创建一个GitHub个人访问令牌。看到创建个人访问令牌在GitHub文档中。确保给GitHub个人访问令牌回购访问。

  4. 收集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管线用户名

然后,向Databricks工作区添加Git提供者凭据

设置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工作区添加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 >”
  1. 创建一个新的HTTP请求(File >新建> HTTP请求).

  2. 在“HTTP动词”下拉列表中,选择帖子

  3. 输入请求URL,输入http:// < databricks-instance-name > / api / 2.0 / git-credentials,在那里< databricks-instance-name >你的数据库是什么工作空间实例名称例如,dbc-a1b2345c-d6e7.cloud.www.neidfyre.com

  4. 授权选项卡,在类型列表中,选择不记名的令牌

  5. 令牌,为Databricks服务主体(即Databricks服务主体)输入Databricks访问令牌< service-principal-access-token >).

  6. 选项卡,添加关键而且价值一双内容类型而且应用程序/ scim + json

  7. 身体选项卡上,选择而且JSON

  8. 输入以下身体负载:

    “personal_access_token”“< git-provider-access-token >”“git_username”“< git-provider-user-name >”“git_provider”“< git-provider-short-name >”
  9. 点击发送

提示

要确认调用成功,可以为Databricks服务主体使用Databricks访问令牌来调用获取Git证书Git凭证API中的操作。,并检查输出。