Databricks で Azure DevOps を使用して認証する
Azure DevOps パイプラインを構成して、自動化で Databricks CLI コマンドと API 呼び出しの認証を提供する方法について説明します。
Azure DevOps 認証
Azure DevOps での認証 (ファースト パーティとサード パーティ) の管理は、 サービス接続で行われます。 Azure DevOps ポータルでは、 Project 設定の任意のプロジェクト ページでサービス接続にアクセスできます。
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
など) に置き換えます。
ベスト プラクティス
Databricks では、 Microsoft Entra ワークロード ID フェデレーション を選択した認証方法として使用することをお勧めします。 シークレットに依存せず、他の認証方法よりも安全です。 手動で構成しなくても、
AzureCLI@2
タスクで自動的に動作します。詳細については、「 ワークロード ID フェデレーションを使用する Azure Resource Manager サービス接続を作成するを参照してください。