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

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

必要に応じて、CI/CD プラットフォーム シナリオで Databricks Git フォルダーとともに Databricks ワークスペースを使用する場合は、 「Databricks ワークスペースに Git プロバイダーの資格情報を追加する」を参照してください。 たとえば、Git プロバイダーがワークスペースにアクセスできるようにしたり、Git プロバイダーを使用してワークスペース内の Databricks Git フォルダーを使用したりすることもできます。 ただし、CI/CD プラットフォームでワークスペースを使用するために Databricks Git フォルダーを使用する必要はありません。

要件

  • 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 暗号化シークレットの詳細については、「 マネージド サービス プリンシパル 」とその GitHub アクションのドキュメントを参照してください。

これらの 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 マシンのユーザー名を収集してから、 Git プロバイダーの資格情報を Databricks ワークスペースに追加します

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 ユーザー名

次に 、Git プロバイダーの資格情報を Databricks ワークスペースに追加します

Git プロバイダーの資格情報を Databricks ワークスペース に追加する

このセクションでは、Databricks ワークスペースが Databricks Git フォルダーの Git プロバイダーにアクセスできるようにする方法について説明します。 これは、CI/CD シナリオではオプションです。 たとえば、Git プロバイダーに Databricks ワークスペースのみにアクセスさせたいが、Git プロバイダーでワークスペース内の Databricks Git フォルダーを使用したくない場合があります。 その場合は、このセクションをスキップしてください。

開始する前に、次の情報とツールを収集します。

  • Databricks の Databricks アクセストークン サービスプリンシパル.

  • Git プロバイダーに関連付けられているユーザー名。

  • Git プロバイダーのユーザーに関連付けられているアクセストークン。

  • Databricks CLI バージョン 0.205 以降。 「Databricks CLI とは」を参照してください。Databricks ユーザー インターフェイスは使用できません。

  • .databrickscfg ファイル内の Databricks 構成プロファイルで、Databricks ワークスペース インスタンスの URL を表す関連hostに対してプロファイルのフィールドが正しく設定され (例: https://dbc-a1b2345c-d6e7.cloud.databricks.com)、token は Databricks サービスプリンシパルの Databricks アクセストークンを表します。(ワークスペース ユーザーに Databricks 個人用アクセストークンを使用し ないでください )。 「Databricks 個人用アクセストークン認証」を参照してください。

Databricks CLI を使用して、次のコマンドを実行します。

databricks git-credentials create <git-provider-short-name> --git-username <git-provider-user-name> --personal-access-token <git-provider-access-token> -p <profile-name>
  • <git-provider-short-name>には、次のいずれかを使用します。

    • GitHub の場合は、 GitHubを使用してください。

    • Azure パイプラインの場合は、 AzureDevOpsServicesを使用します。

    • GitLab CI/CD の場合は、 GitLabを使用します。

  • <git-provider-user-name> を Git プロバイダーに関連付けられているユーザー名に置き換えます。

  • <git-provider-access-token> を、Git プロバイダーのユーザーに関連付けられているアクセストークンに置き換えます。

  • <profile-name>.databrickscfg ファイル内の Databricks 構成プロファイルの名前に置き換えます。

ヒント

呼び出しが成功したことを確認するには、次のいずれかの Databricks CLI コマンドを実行し、出力を確認します。

databricks git-credentials list -p <profile-name>
databricks git-credentials get <credential-id> -p <profile-name>