次の方法で共有


Databricks で Azure DevOps を使用して認証する

Azure DevOps パイプラインを構成して、自動化で Databricks CLI コマンドと API 呼び出しの認証を提供する方法について説明します。

Azure DevOps 認証

Azure DevOps での認証 (ファースト パーティとサード パーティ) の管理は、 サービス接続で行われます。 Azure DevOps ポータルでは、 Project 設定の任意のプロジェクト ページでサービス接続にアクセスできます。

Azure DevOps の [プロジェクト設定] で [サービス接続] を選択します

Databricks CLI を認証するには、 Azure Resource Manager サービス接続の種類を使用します。 この種類の場合は、次のいずれかの認証方法を選択します。

  • Microsoft Entra ワークロード ID フェデレーション
    • OpenID Connect (OIDC) プロトコルを使用して、サービス プリンシパルに代わってトークンを取得します。
    • 使用する予定のサービス プリンシパルを使用して、Azure DevOps で生成された問題とサブジェクト識別子を構成する必要があります。
    • 適用可能な認証メカニズム: Azure CLI。
  • Microsoft Entra サービス プリンシパル
    • クライアント ID と MS Entra クライアント シークレットを使用して、有効期間の短い OAuth トークンを生成します。
    • サービス接続に使用するサービス プリンシパルのシークレットを生成する必要があります。
    • 適用可能な認証メカニズム: Azure CLI、Microsoft Entra クライアント シークレット。
  • Microsoft Entra ID マネージド ID
    • CLI が実行されるリソース (コンピューティングなど) に割り当てられた ID を使用します。 Azure DevOps のコンテキストでは、これはセルフホステッド ランナーを使用している場合にのみ関連します。 マネージド ID を使用する VM への Azure Resource Manager サービス接続の作成を参照してください。
    • 適用可能な認証メカニズム: Azure CLI、Microsoft Entra マネージド ID (旧称 "MSI")。

プロジェクトのニーズに最適な認証メカニズムを選択したら、Azure Databricks CLI を使用するように Azure DevOps パイプライン定義 (pipeline.yml) で構成する必要があります。

認証に Azure CLI を使用するように Azure DevOps パイプラインを構成する

既定では、Azure Databricks CLI は、Azure Databricks で認証するためのメカニズムとして Azure CLI を使用します。

認証に Azure CLI を使用するには、Azure Databricks CLI に対するすべての呼び出しを AzureCLI@2 taskで行う必要があります。つまり、後続のタスクで認証されたセッションを共有する方法はありません。 各タスクは個別に認証されるため、実行時に待機時間が発生します。

次の Azure Pipelines の構成例では、Azure CLI を使用して Azure Databricks CLI bundle deploy コマンドを認証して実行します。

- task: AzureCLI@2
  inputs:
    azureSubscription: {your-azure-subscription-id-here}
    useGlobalConfig: true
    scriptType: bash
    scriptLocation: inlineScript
    inlineScript: |
      export DATABRICKS_HOST=https://adb...
      databricks bundle deploy

Azure CLI を使用して Azure Databricks CLI コマンドを実行するように Azure DevOps パイプラインを構成する場合は、次の操作を行います。

  • azureSubscriptionを使用して、使用するサービス接続を構成します。
  • databricks bundle コマンドではサブプロセスの環境変数フィルター処理が使用されるため、既定のAZURE_CONFIG_FILEを使用するようにuseGlobalConfigを構成します。 これが設定されていない場合、これらのサブプロセスは認証されたセッションの詳細を見つけることができません。
  • まだエクスポートされていない場合 (前の手順やバンドル構成など)、 DATABRICKS_HOST 環境変数をエクスポートします。

Microsoft Entra クライアント シークレットを使用して信頼性を高めるために Azure DevOps パイプラインを構成する

待機時間が長すぎるため、または別のタスクの種類で Azure CLI を使用する必要があるために認証に Azure CLI を使用しない場合は、 Microsoft Entra クライアント シークレットを使用します。 認証の詳細はサービス接続から取得する必要があるため、パイプラインの宣言で AzureCLI@2 タスクを使用する必要があります。

AzureCLI@2 タスクを使用して、サービス接続からクライアント ID とクライアント シークレットを取得し、それらを環境変数としてエクスポートします。 後続のタスクでは、それらを直接使用できます。 例については、「 Microsoft Entra サービス プリンシパルを使用して Databricks Git フォルダーを管理するを参照してください。

次の Azure Pipelines の構成例では、Microsoft Entra クライアント シークレットを使用して Azure Databricks CLI bundle deploy コマンドを認証して実行します。

- task: AzureCLI@2
  inputs:
    azureSubscription: {your-azure-subscription-id-here}
    addSpnToEnvironment: true
    scriptType: bash
    scriptLocation: inlineScript
    inlineScript: |
      echo "##vso[task.setvariable variable=ARM_CLIENT_ID]${servicePrincipalId}"
      echo "##vso[task.setvariable variable=ARM_CLIENT_SECRET]${servicePrincipalKey}"
      echo "##vso[task.setvariable variable=ARM_TENANT_ID]${tenantId}"

- script: |
    export DATABRICKS_HOST=https://adb...
    databricks bundle deploy

Microsoft Entra クライアント シークレットを使用して Azure Databricks CLI コマンドを実行するように Azure DevOps パイプラインを構成する場合は、次の操作を行います。

  • 関連する環境変数をインライン スクリプトにエクスポートするように addSpnToEnvironment を構成します。
  • インライン スクリプトは、Azure Databricks CLI が自動的に取得する名前の下に、タスク スコープの環境変数をジョブ スコープの環境変数としてエクスポートします。
  • まだエクスポートされていない場合 (前の手順やバンドル構成など)、 DATABRICKS_HOST 環境変数をエクスポートします。
  • ARM_CLIENT_SECRET環境変数を issecret=true でマークする場合は、それを必要とする後続の各ステップに明示的に追加する必要があります。
    • これを行わない場合、 ARM_CLIENT_SECRET 環境変数は後続のすべてのステップからアクセスできます。
    • ARM_CLIENT_SECRET環境変数は、設定に関係なく出力でマスクされます。

認証に Microsoft Entra マネージド ID を使用するように Azure DevOps パイプラインを構成する

Azure マネージド ID 認証は仮想マシンまたはコンテナーの構成に依存して、Azure Databricks CLI が適切な ID で実行されることを保証するため、Azure DevOps パイプライン構成では、AzureCLI@2 タスクを指定する必要はありません。

次の Azure Pipelines の構成例では、Microsoft Entra マネージド ID を使用して Azure Databricks CLI bundle deploy コマンドを認証して実行します。

- script: |
    export DATABRICKS_AZURE_RESOURCE_ID=/subscriptions/<id>/resourceGroups/<name>/providers/Microsoft.Databricks/workspaces/<name>
    export ARM_CLIENT_ID=eda1f2c4-07cb-4c2c-a126-60b9bafee6d0
    export ARM_USE_MSI=true
    export DATABRICKS_HOST=https://adb...
    databricks current-user me --log-level trace

Microsoft Entra マネージド ID を使用して Azure Databricks CLI コマンドを実行するように Azure DevOps パイプラインを構成する場合は、次の操作を行います。

  • Microsoft Entra マネージド ID には、アクセスする Databricks ワークスペースに "共同作成者" ロールを割り当てる必要があります。
  • DATABRICKS_AZURE_RESOURCE_ID環境変数の値は、Azure portal の Azure Databricks インスタンスの Properties にあります。
  • ARM_CLIENT_ID環境変数の値は、マネージド ID のクライアント ID です。

Note

この構成で DATABRICKS_HOST 環境変数が指定されていない場合、値は DATABRICKS_AZURE_RESOURCE_IDから推論されます。

Azure Pipelines パイプラインから Azure Databricks CLI をインストールする

優先する認証メカニズムを構成したら、Azure Databricks CLI コマンドを実行するホストまたはエージェントに Azure Databricks CLI をインストールする必要があります。

# Install Databricks CLI
- script: |
    curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
  displayName: 'Install Databricks CLI'

ヒント

  • 最新バージョンの Azure Databricks CLI を自動的にインストールしない場合は、インストーラー URL の main を特定のバージョン ( v0.224.0 など) に置き換えます。

ベスト プラクティス

関連項目