サービスプリンシパル for CI/CD
この記事では、 との にサービスプリンシパルを使用する方法について説明します。CI/CDDatabricksサービスプリンシパルは、次のような自動化されたツールやアプリケーションで使用するために作成されたIDです。
- CI/CDGitHub Actions、 Azure パイプライン、GitLab CI/CD などのプラットフォーム
- Airflowデータ パイプラインの
- Jenkins
セキュリティのベスト プラクティスとして、Databricks では、Databricks ユーザーやワークスペース ユーザーの Databricks 個人用アクセス トークンの代わりに Databricks サービスプリンシパルとそのトークンを使用して、CI/CD プラットフォームにDatabricksリソースへのアクセスを許可することをお勧めします。このアプローチには、次のような利点があります。
- Databricks サービスプリンシパルの Databricks リソースへのアクセスは、ユーザーとは無関係に許可および制限できます。たとえば、これにより、 Databricks サービスプリンシパルが Databricks ワークスペースで管理者として行動することを禁止しながら、ワークスペース内の他の特定のユーザーが引き続き管理者として行動できるようにすることができます。
- ユーザーは、CI/CDプラットフォームによるアクセスからアクセストークンを保護できます。
- Databricks サービスプリンシパルを一時的に無効にしたり、完全に削除したりしても、他のユーザーに影響を与えることはありません。たとえば、これにより、悪意のある方法で使用されている疑いのある Databricks サービスプリンシパルへのアクセスを停止したり、削除したりできます。
- ユーザーが組織を離れた場合でも、 Databricks サービスプリンシパルに影響を与えることなく、そのユーザーを削除できます。
CI/CD プラットフォームに Databricks ワークスペースへのアクセス権を付与するには、次の操作を行います。
- ワークスペースに Databricks サービスプリンシパルを作成します。
- Databricks サービスプリンシパルの Databricks アクセス トークンを生成します。
- この Databricks アクセス トークンを CI/CD プラットフォームに付与します。
ステップ 1 と 2 を完了するには、「 サービスプリンシパルの管理」を参照してください。
手順 3 を完了するには、この記事の手順を完了します。
必要条件
- Databricks サービスプリンシパルのDatabricksアクセストークン。Databricks サービスプリンシパルとそのDatabricksアクセストークンを作成するには、「サービスプリンシパルの管理」を参照してください。
- Git プロバイダーのアカウント。
GitHub Actions を設定する
GitHub Actions は、Databricks ワークスペースにアクセスできる必要があります。 Databricks Git フォルダーを使用する場合は、ワークスペースも GitHub にアクセスできる必要があります。
GitHub Actions がDatabricksワークスペースにアクセスできるようにするには、Databricks サービスプリンシパルの Databricks アクセス トークンを GitHub Actionsに登録する必要があります。
Databricks Git フォルダーを使用するときに Databricks ワークスペースが GitHub にアクセスできるようにする場合は、GitHub マシン ユーザーの GitHub 個人用アクセス トークンをワークスペースに追加する必要があります。
登録する the Databricks access token for your Databricks サービスプリンシパル with GitHub Actions
このセクションでは、GitHub Actions が Databricks ワークスペースにアクセスできるようにする方法について説明します。
セキュリティのベスト プラクティスとして、Databricks では、Databricks アクセス トークンを GitHub Actions ファイルの本文に直接入力しないことをお勧めします。 代わりに、GitHub で暗号化されたシークレット を使用して、Databricks アクセス トークンを GitHub Actions に登録する必要があります。
GitHub Actions は、Databricks が「GitHub Actions を使用した継続的インテグレーションとデリバリー」にリストされているものや、dbx
for GitHub Actions の基本 Python テンプレートの一部としての onpush.yml
ファイルと onrelease.yml
ファイルなど、次のような GitHub 暗号化シークレットに依存しています。
DATABRICKS_HOST
これは、https://
の後に ワークスペース インスタンス名が続く値です (例:dbc-a1b2345c-d6e7.cloud.databricks.com
)。DATABRICKS_TOKEN
これは、Databricks サービスプリンシパルの Databricks アクセストークンを作成した後にコピーしたtoken_value
値の値です。
GitHubGitHub Actionsに必要な暗号化シークレット の詳細については、「 サービスプリンシパルの管理 」およびそのGitHub Actions のドキュメントを参照してください。
これらの GitHub 暗号化シークレットを GitHub リポジトリに追加するには、GitHub ドキュメントの「 リポジトリの暗号化シークレットの作成 」を参照してください。 これらの GitHub リポジトリ シークレットを追加するその他の方法については、GitHub ドキュメントの 「暗号化されたシークレット 」を参照してください。
GitHub マシン ユーザーの GitHub 個人用アクセス トークンを Databricks ワークスペースに追加する
このセクションでは、Databricks Git フォルダーを使用して Databricks ワークスペースが GitHub にアクセスできるようにする方法について説明します。 これは、CI/CD シナリオのオプションのタスクです。
セキュリティのベストプラクティスとして、Databricks では、Databricks ユーザーの代わりに Databricks サービスプリンシパルを使用する必要があるのと同じ多くの理由から、GitHub の個人アカウントではなく GitHub マシンユーザーを使用することをお勧めします。 GitHub マシン ユーザーの GitHub 個人用アクセス トークンを Databricks ワークスペースに追加するには、次の操作を行います。
- GitHub マシン ユーザーを作成します (まだ利用できない場合は)。 GitHub マシン ユーザーは 、自分の GitHub 個人アカウントとは別の GitHub 個人アカウントであり、GitHub でのアクティビティを自動化するために使用できます。 GitHub マシン ユーザーとして使用する新しい別の GitHub アカウントを作成します (まだ使用できない場合は)。
GitHubマシンユーザーとして新しい別のGitHubアカウントを作成する場合、それを自分のアカウントGitHub個人アカウントのEメールアドレスに関連付けることはできません。代わりに、組織の Eメール 管理者に問い合わせて、この新しい別の GitHub アカウントに関連付けることができる別の Eメール アドレスを GitHub マシン ユーザーとして関連付けることができます。
組織内の個別のEメール アドレスとそれに関連付けられた GitHub マシン ユーザー、およびそれ GitHub 個人用アクセス トークンの管理については、組織のアカウント管理者に問い合わせてください。
-
GitHub マシン ユーザーに GitHub リポジトリへのアクセス権を付与します。 GitHub ドキュメントの「 チームまたは個人の招待 」を参照してください。 招待を受け入れるには、まず GitHub の個人アカウントからサインアウトしてから、GitHub マシン ユーザーとして再度サインインする必要があります。
-
マシン ユーザーとして GitHub にサインインし、そのマシン ユーザーの GitHub 個人用アクセス トークンを作成します。 GitHub ドキュメントの「 個人用アクセス トークンを作成する 」を参照してください。 GitHub 個人用アクセス トークン リポジトリ にアクセス権を必ず付与してください。
-
Databricks サービスプリンシパルの Databricks アクセス トークン、GitHub マシンのユーザー名を収集し、「Databricks Git フォルダーでサービスプリンシパルを使用する」を参照してください。
GitLab CI/CDの設定
GitLab CI/CD は、Databricks ワークスペースにアクセスできる必要があります。 Databricks Git フォルダーも使用する場合は、ワークスペースが GitLab CI/CD にアクセスできる必要があります。
Databricks ワークスペースにアクセスするために、GitLab CI/CD .gitlab-ci.yml
ファイル (dbx
の Basic Python テンプレートの一部としてあるファイルなど) は、次のようなカスタム CI/CD 変数に依存しています。
DATABRICKS_HOST
これは、https://
の後に ワークスペース インスタンス名が続く値です (例:dbc-a1b2345c-d6e7.cloud.databricks.com
)。DATABRICKS_TOKEN
これは、Databricks サービスプリンシパルの Databricks アクセストークンを作成した後にコピーしたtoken_value
値の値です。
これらのカスタム変数を GitLab CI/CD プロジェクトに追加するには、GitLab CI/CD ドキュメントの「 CI/CD 変数をプロジェクトに追加する 」を参照してください。
ワークスペースで Databricks Git フォルダーを使用していて、ワークスペースが GitLab CI/CD にアクセスできるようにする場合は、次の情報を収集します。
- Databricks サービスプリンシパルのDatabricksアクセストークン
- GitLab CI/CDのユーザー名
次に、「Databricks Gitフォルダーでサービスプリンシパルを使用する」を参照してください。