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

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

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

  • ユーザーとは別に、サービス プリンシパルの Azure Databricks リソースへのアクセスを許可および制限できます。 たとえば、これにより、サービス プリンシパルが Azure Databricks ワークスペースの管理者として機能することを禁止しながら、ワークスペース内の他の特定のユーザーが管理者として機能することを引き続き許可できます。
  • ユーザーは、アクセス トークンが CI/CD プラットフォームによってアクセスされないように保護できます。
  • 他のユーザーに影響を与えることなく、サービス プリンシパルを一時的に無効にしたり、完全に削除したりできます。 たとえば、これにより、悪意のある方法で使用されていると思われるサービス プリンシパルからのアクセスを一時停止または削除できます。
  • ユーザーが組織を離れる場合は、サービス プリンシパルに影響を与えることなく、そのユーザーを削除できます。

CI/CD プラットフォームに Azure Databricks ワークスペースへのアクセス権を付与するには、次の操作を行います。

  1. Azure Databricks マネージド サービス プリンシパルまたは Microsoft Entra ID マネージド サービス プリンシパルを作成します。
  2. CI/CD プラットフォームがサポートするアクセス トークンの種類に応じて、Azure Databricks マネージド サービス プリンシパルまたは Microsoft Entra ID マネージド サービス プリンシパルに、Azure Databricks OAuth トークンまたは Microsoft Entra ID トークンを生成します。 詳細については、ご利用の CI/CD プラットフォームのドキュメントを参照してください。
  3. この Microsoft Entra ID トークンまたは Azure Databricks OAuth トークンを、CI/CD プラットフォームに付与します。

手順 1 から 2 を実行するには、「サービス プリンシパルを管理する」をご参照ください。

手順 3 を実行するには、この記事の中の手順を実行してください。

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

要件

  • Azure Databricks マネージド サービス プリンシパルまたは Microsoft Entra ID マネージド サービス プリンシパルの Azure Databricks OAuth トークンまたは Microsoft Entra ID トークン。 Azure Databricks マネージド サービス プリンシパル、または Microsoft Entra ID マネージド サービス プリンシパルと、その Azure Databricks OAuth トークンまたは Microsoft Entra ID トークンを作成するには、「サービス プリンシパルを管理する」をご覧ください。
  • Git プロバイダーを持つアカウント。

GitHub Actions を設定する

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

GitHub Actions が Azure Databricks ワークスペースにアクセスできるようにするには、Azure Databricks マネージド サービス プリンシパルまたは Microsoft Entra ID マネージド サービス プリンシパルに関する情報を、GitHub Actions に提供する必要があります。 これには、GitHub Action の要件に応じてアプリケーション (クライアント) ID、Microsoft Entra ID マネージド サービス プリンシパルのディレクトリ (テナント) ID、Azure Databricks マネージド サービス プリンシパルまたは Microsoft Entra ID マネージド サービス プリンシパルのクライアント シークレット、または Azure Databricks マネージド サービス プリンシパルの access_token 値などの情報を含めることができます。 詳細については、「サービス プリンシパルを管理する」と GitHub Actions のドキュメントを参照してください。

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

サービス プリンシパルに関する情報を GitHub Actions に提供する

このセクションでは、GitHub Actions が Azure Databricks ワークスペースにアクセスできるようにする方法について説明します。

セキュリティのベスト プラクティスとして、Databricks では、サービス プリンシパルに関する情報を GitHub Actions ファイルの本文に直接入力しないことをお勧めします。 代わりに、GitHub 暗号化シークレットを使用して、この情報を GitHub Actions に提供する必要があります。

GitHub Actions (GitHub Actions を使用した継続的インテグレーションとデリバリーで Databricks によって一覧表示されるものなど) は、次のようなさまざまな GitHub 暗号化シークレットに依存します。

  • DATABRICKS_HOST。これは adb-1234567890123456.7.azuredatabricks.net などのワークスペース インスタンス名が後に続く値 https:// です。
  • AZURE_CREDENTIALS。これは、Microsoft Entra ID マネージド サービス プリンシパルに関する情報を取得するために実行した Azure CLI の出力を表す JSON ドキュメントです。 詳細については、GitHub Actions のドキュメントを参照してください。
  • AZURE_SP_APPLICATION_ID。これは、Microsoft Entra ID マネージド サービス プリンシパルのアプリケーション (クライアント) ID の値です。
  • AZURE_SP_TENANT_ID。これは、Microsoft Entra ID マネージド サービス プリンシパルのディレクトリ (テナント) ID の値です。
  • AZURE_SP_CLIENT_SECRET。これは、Microsoft Entra ID マネージド サービス プリンシパルのクライアント シークレットのの値です。

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

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

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

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

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

  1. GitHub マシン ユーザーがまだ存在しない場合は、作成します。 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 個人用アクセス トークンに必ず repo アクセス権を付与してください。

  4. サービス プリンシパルの Microsoft Entra ID トークン、GitHub マシン ユーザー名を収集した後、Git プロバイダー資格情報を Azure Databricks ワークスペースに追加します

Azure Pipelines を設定する

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

Azure Pipelines YAML パイプライン ファイルは、Azure Databricks ワークスペースにアクセスするために環境変数に依存します。 これらの環境変数としては、次のようなものがあります。

  • DATABRICKS_HOST。これは adb-1234567890123456.7.azuredatabricks.net などのワークスペース インスタンス名が後に続く値 https:// です。
  • DATABRICKS_TOKEN。これは、Microsoft Entra ID マネージド サービス プリンシパルの Microsoft Entra ID トークンを作成した後にコピーした token_value の値です。

これらの環境変数を Azure パイプラインに追加するには、Azure ドキュメントの「Azure Pipelines で Azure Key Value シークレットを使用する」および「シークレット変数を設定する」を参照してください。

また、次の Databricks ブログも参照してください。

CI/CD シナリオのオプション: ワークスペースで Azure Databricks Git フォルダーを使用し、ワークスペースが Azure Pipelines にアクセスできるようにするには、次のものを収集します。

  • サービス プリンシパルの Microsoft Entra ID トークン
  • Azure Pipelines ユーザー名

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

GitLab CI/CD を設定する

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

Azure Databricks ワークスペースにアクセスするには、GitLab CI/CD .gitlab-ci.yml ファイル (dbx 内の Basic Python Template の一部としてのファイルなど) は、次のようなカスタムの CI/CD 変数に依存します。

  • DATABRICKS_HOST。これは adb-1234567890123456.7.azuredatabricks.net などのワークスペース インスタンス名が後に続く値 https:// です。
  • DATABRICKS_TOKEN。これは、サービス プリンシパルの Microsoft Entra ID トークンを作成した後にコピーした token_value 値の値です。

これらのカスタム変数を GitLab CI/CD プロジェクトに追加するには、GitLab CI/CD ドキュメントの「CI/CD 変数をプロジェクトに追加する」を参照してください。

ワークスペースで Databricks Git フォルダーを使用し、ワークスペースが GitLab CI/CD にアクセスできるようにする場合は、次のものを収集します。

  • サービス プリンシパルの Microsoft Entra ID トークン
  • GitLab CI/CD ユーザー名

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

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

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

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

  • サービス プリンシパルの Microsoft Entra ID トークン。
  • Git プロバイダーに関連付けられているユーザー名。
  • Git プロバイダーのユーザーに関連付けられているアクセス トークン。

注意

Azure Pipelines については、Azure Web サイトの「個人用アクセス トークンを使用する」を参照してください。

  • Databricks CLI バージョン 0.205 以降。 「Databricks CLI とは」を参照してください。 Azure Databricks ユーザー インターフェイスを使用することはできません。
  • .databrickscfg ファイル内の Azure Databricks 構成プロファイル。プロファイルのフィールドは、host に対して正しく設定され、Azure Databricks ワークスペースごとの URL を表し (https://adb-1234567890123456.7.azuredatabricks.net など)、token はサービス プリンシパルの Microsoft Entra ID トークンを表します。 (ワークスペース ユーザーには Databricks 個人用アクセス トークンを使用 しないでください)。「Azure 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> に以下のうちのいずれか 1 つを使用します:
    • GitHub の場合、GitHub を使用します。
    • Azure Pipelines の場合、AzureDevOpsServices を使用します。
    • GitLab CI/CD の場合、GitLab を使用します。
  • <git-provider-user-name> を Git プロバイダーに関連付けられているユーザー名に置き換えます。
  • <git-provider-access-token> を Git プロバイダーのユーザーに関連付けられているアクセス トークンを置き換えます。
  • <profile-name> を、.databrickscfg ファイル内の Azure Databricks 構成プロファイルの名前に置き換えます。

ヒント

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

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