サービスプリンシパル for CI/CD

この記事では、CI/CD で に サービスプリンシパルDatabricks を使用する方法について説明します。サービスプリンシパリは、次のような自動化ツールやアプリケーションで使用するために作成された ID です。

セキュリティのベスト プラクティスとして、Databricks では、CI/CD プラットフォームに Databricks リソースへのアクセス権を付与するために、Databricks ユーザーまたはワークスペース ユーザーの Databricks 個人用アクセストークンの代わりに、Databricks サービスプリンシパルとそのトークンを使用することをお勧めします。 このアプローチには、次のような利点があります。

  • Databricks サービスプリンシパルの Databricks リソースへのアクセスは、ユーザーとは別に許可および制限できます。 たとえば、これにより、Databricks サービスプリンシパルが Databricks ワークスペースで管理者として機能することを禁止しながら、ワークスペース内の他の特定のユーザーが引き続き管理者として機能できるようにすることができます。

  • ユーザーは、アクセストークンがCI/CDプラットフォームからアクセスされないように保護できます。

  • 他のユーザーに影響を与えることなく、Databricks サービスプリンシパルを一時的に無効にしたり、完全に削除したりできます。 たとえば、これにより、悪意のある方法で使用されていると思われる Databricks サービスプリンシパルからのアクセスを停止または削除することができます。

  • ユーザーが組織を離れる場合は、Databricks サービスプリンシパルに影響を与えることなく、そのユーザーを削除できます。

CI/CD プラットフォームに Databricks ワークスペースへのアクセスを許可するには、次の手順を実行します。

  1. ワークスペースに Databricks サービスプリンシパルを作成します。

  2. Databricks サービスプリンシパルの Databricks アクセストークンを生成します。

  3. この Databricks アクセストークンを CI/CD プラットフォームに渡します。

ステップ 1 と 2 を完了するには、 「サービスプリンシパルの管理」を参照してください。

ステップ 3 を完了するには、この記事の手順を完了します。

要件

  • DatabricksサービスプリンシパルのDatabricksアクセストークン。 DatabricksサービスプリンシパルとそのDatabricksアクセストークンを作成するには、 「サービスプリンシパルの管理」を参照してください。

  • Git プロバイダーのアカウント。

GitHub アクションをセットアップする

GitHub Actions はDatabricks ワークスペースにアクセスできる必要があります。 Databricks Git フォルダーを使用する場合は、ワークスペースが GitHub にアクセスできる必要もあります。

GitHub Actions が Databricks ワークスペースにアクセスできるようにするには、Databricks サービスプリンシパルの Databricks アクセストークンを GitHub Actions に登録する必要があります。

Databricks Git フォルダーを使用するときに Databricks ワークスペースが GitHub にアクセスできるようにする場合は、GitHub マシン ユーザーの GitHub 個人アクセス権をワークスペースに追加する必要があります。

Databricks サービスプリンシパルの Databricks アクセストークンを GitHub Actions に登録する

このセクションでは、GitHub アクションを有効にして Databricks ワークスペースにアクセスする方法について説明します。

セキュリティのベスト プラクティスとして、Databricks では、GitHub アクション ファイルの本文に Databricks アクセス トークンを直接入力しないことをお勧めします。 代わりに、GitHub で暗号化されたシークレット を使用して、Databricks アクセストークンを GitHub アクションに登録する必要があります。

GitHub Actions (GitHub Actions を使用した継続的インテグレーションと継続的デリバリー」に Databricks がリストしているファイルや、 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 値の値です。

GitHubに必要なGitHub Actions 暗号化シークレットの詳細については、 「サービス プリンシパルの管理」 およびそのGitHub Actions のドキュメントを参照してください。

これらの GitHub 暗号化シークレットを GitHub リポジトリに追加するには、GitHub ドキュメントの 「リポジトリの暗号化されたシークレットの作成 」を参照してください。 これらの GitHub リポジトリ シークレットを追加するその他の方法については、GitHub ドキュメントの 「暗号化されたシークレット 」を参照してください。

GitHub マシン ユーザーの GitHub 個人用アクセストークンを Databricks ワークスペースに追加する

このセクションでは、Databricks ワークスペースが Databricks Git フォルダーを使用して GitHub にアクセスできるようにする方法について説明します。 これは、CI/CD シナリオのオプションのタスクです。

セキュリティのベスト プラクティスとして、Databricks ユーザーではなく Databricks サービスプリンシパルを使用する必要があるのと同じ理由の多くのために、GitHub の個人アカウントではなく GitHub コンピューター ユーザーを使用することをお勧めします。 GitHub コンピューター ユーザーの GitHub 個人用アクセストークンを Databricks ワークスペースに追加するには、次の手順を実行します。

  1. GitHub マシン ユーザーを作成します (まだ使用できない場合)。 GitHub マシンユーザは 、GitHub でのアクティビティを自動化するために使用できる、自分の GitHub 個人アカウントとは別の GitHub 個人アカウントです。 GitHub マシンユーザーとして使用する新しい別の GitHub アカウントを作成します (まだ使用できない場合)。

    GitHub マシンユーザとして新しい別の GitHub アカウントを作成する場合、それを自分の GitHub 個人アカウントの Eメール アドレスに関連付けることはできません。 代わりに、GitHub マシンユーザーとしてこの新しい個別の GitHub アカウントに関連付けることができる別の Eメール アドレスの取得について、組織の Eメール 管理者に問い合わせてください。

    組織内の個別の Email アドレスとそれに関連付けられた GitHub マシンユーザー、およびその GitHub 個人用アクセストークンの管理については、組織のアカウント管理者に問い合わせてください。

  2. GitHub マシンのユーザーに GitHub リポジトリへのアクセス権を付与します。 GitHub ドキュメントの「 チームまたは個人の招待 」を参照してください。 招待を受け入れるには、まず GitHub 個人アカウントからサインアウトしてから、GitHub マシンユーザーとして再度サインインする必要がある場合があります。

  3. マシン ユーザーとして GitHub にサインインし、そのマシン ユーザーの GitHub 個人用アクセス トークンを作成します。 GitHub ドキュメントの「 個人用アクセストークンを作成する 」を参照してください。 必ず GitHub の個人用アクセストークン リポジトリ にアクセス権を付与してください。

  4. 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の基本 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フォルダーでサービスプリンシパルを使用する」を参照してください。