Azure Databricks リソースへのアクセスを認証する
Databricks CLI または REST API を使用して Azure Databricks リソースにアクセスするには、リソースへのアクセスに必要な承認を持つ Azure Databricks アカウントを使用してクライアントを認証することが必要です。 Databricks CLI コマンドを安全に実行するか、アカウントまたはワークスペースへの承認されたアクセスを必要とする Databricks API 要求を呼び出すには、有効な Azure Databricks アカウントの資格情報に基づいてアクセス トークンを指定することが必要です。 この記事では、Azure Databricksワークスペースまたはアカウントへのアクセスを認証し、認証情報を提供するための認証オプションについて説明します。
次の表に、Azure Databricks アカウントで使用できる認証方法を示します。
Azure Databricks 認証方法
この記事では、Azure Databricksワークスペースまたはアカウントへのアクセスを認証し、認証情報を提供するための認証オプションについて説明します。Azure DatabricksツールとSDKは、サポートされているAzure Databricks認証方法の1つまたは複数と連携して動作するため、ユースケースに最適な認証方法を選択できます。 詳細については、開発者ツールのツールまたは SDK のドキュメントを参照してください。
Method | 説明 | ユース ケース |
---|---|---|
サービス プリンシパルの OAuth (OAuth M2M) | サービス プリンシパルの有効期間が短い OAuth トークン。 | 完全に自動化された CI/CD ワークフローなどの無人認証シナリオ。 |
ユーザーの OAuth (OAuth U2M) | ユーザーの有効期間が短い OAuth トークン。 | 要求されたら、Web ブラウザーを使用して Azure Databricks でリアルタイムで認証する、参加済みの認証シナリオ。 |
個人用アクセス トークン (PAT) | ユーザーまたはサービス プリンシパルの有効期間が短いトークンまたは有効期間の長いトークン。 | ターゲット ツールが OAuth をサポートしていないシナリオ。 |
Azure マネージド ID 認証 | Azure マネージド ID 用の Microsoft Entra ID トークン。 | マネージド ID をサポートする Azure リソース (Azure 仮想マシンなど) でのみ使用します。 |
Microsoft Entra ID サービス プリンシパル認証 | Microsoft Entra ID サービス プリンシパル用の Microsoft Entra ID トークン。 | Azure DevOps などのマネージドIDをサポートせず、Microsoft Entra IDトークンをサポートするAzureリソースでのみ使用してください。 |
Azure CLI 認証 | ユーザーまたは Microsoft Entra ID サービス プリンシパル用の Microsoft Entra ID トークン。 | Azure CLI を使用して Azure リソースと Azure Databricks のアクセスに対する認証に使用します。 |
Microsoft Entra ID ユーザー認証 | ユーザー向けの Microsoft Entra ID トークン。 | Microsoft Entra ID トークンのみをサポートする Azure リソースでのみ使用します。 Databricks では、Azure Databricks ユーザー用の Microsoft Entra ID トークンを手動で作成することはお勧めしません。 |
どのような認証方法を選択する必要がありますか?
Azure Databricks リソースにアクセスするための Databricks CLI コマンドまたは API 呼び出しを認証するには、次の ふたつのオプションがあります。
- Azure Databricks ユーザー アカウント (「ユーザーからマシンへの」 認証、または U2M と呼ばれます) を使用します。 これは、ローカル クライアント環境から Azure Databricks CLI コマンドを実行している場合、または所有して排他的に実行するコードから Azure Databricks API 要求を呼び出す場合にのみ選択します。
- Azure Databricks サービスプリンシパルを使用します(「マシン間」認証、または M2M と呼ばれる)。 他のユーザーがコードを実行する場合 (特にアプリの場合)、または Azure Databricks CLI コマンドまたは API 要求を呼び出す自動化を構築する場合は、これを選択します。
- Azure Databricks を使用している場合は、MS Entra サービス プリンシパルを使用して、Azure Databricks アカウントまたはワークスペースへのアクセスを認証することもできます。 ただし、Databricks では、MICROSOFT が提供する MS Entra サービス プリンシパル認証を介した OAuth 認証で Databricks サービス プリンシパルを使用することをお勧めします。 なぜなら、認証には、Azure Databricks でのみ認証する場合により堅牢である OAuth アクセス トークンが使われるからです。
MS Entra サービス プリンシパルを使用して Databricks リソースにアクセスする方法の詳細については、「MS Entra サービス プリンシパル認証」を参照してください。
Databricks API の呼び出しに使用するアカウントにリンクされたアクセス トークンも必要です。 このトークンには、OAuth 2.0 アクセス トークンまたは個人用アクセス トークン (PAT) のいずれかを指定できます。 ただし、Azure Databricks では、OAuth トークンが既定で自動的に更新され、アクセス トークンを直接管理する必要が無く、トークンハイジャックや不要なアクセスに対するセキュリティが向上するので、承認には認証に対して OAuth over PAT を使用することを強くお勧めします。 OAuth によってアクセス トークンが作成および管理されるため、トークン文字列を自分で直接指定するのではなく、Azure Databricks ワークスペースから生成する OAuth トークン エンドポイント URL、クライアント ID、シークレットを指定します。 AT は、定期的に監査およびローテーションまたは取り消されていない場合、またはトークン文字列とパスワードが開発環境用に安全に管理されていない場合に、送信機会を提供する有効期間の長いトークンのリスクを公開します。
OAuth を使用して Azure Databricks で認証を行う操作方法
Azure Databricks では、特定の資格情報の値に設定できる既定の環境変数セットを使用して認証を支援するためにクライアント認証が提供されます。 これらの環境変数は、Azure Databricks CLI コマンドを実行する環境や Azure Databricks API を呼び出す環境に固有であるため、より簡単かつ安全に作業できます。
- ユーザー アカウント (ユーザーからマシンへの) 認証の場合、ツールと SDK で標準が実装されている限り、Azure Databricks OAuth は Databricks クライアント統合認証で自動的に処理されます。 そうでない場合は、OAuth コード検証ツールとチャレンジ ペアを手動で生成して、Azure Databricks CLI コマンドと API 要求で直接使用できます。 「手順 1: OAuth コード検証ツールとコード チャレンジのペアを生成する」を参照してください。
- サービス プリンシパル (マシン間) 認証の場合、Azure Databricks OAuth では、要求を承認できるトークン エンドポイント URL と共に、呼び出し元がクライアント資格情報を提供する必要があります。 (これは、Databricks 統合クライアント認証をサポートする Azure Databricks ツールと SDK を使用する場合に自動的に処理されます)。資格情報には、一意の client ID および client シークレットが含まれます。 コードを実行する Databricks サービス プリンシパルであるクライアントは、Databricks ワークスペースに 割り当てられている必要があります。 アクセスするワークスペースにサービス プリンシパルを割り当てると、特定の環境変数で設定するクライアント ID とクライアント シークレットが提供されます。
それらの環境変数を次に示します。
DATABRICKS_HOST
:この環境変数は、Azure Databricks アカウント コンソール (http://accounts.cloud.databricks.com
) または Azure Databricks ワークスペース URL (https://{workspace-id}.cloud.databricks.com
) の URL に設定されます。 コードで実行する操作の種類に基づいて、ホスト URL の種類を選択します。 具体的には、Azure Databricks アカウント レベルの CLI コマンドまたは REST API 要求を使用している場合この変数を Azure Databricks アカウントの URL に設定します。 Azure Databricks workspace レベルの CLI コマンドまたは REST API 要求を使用している場合、Azure Databricks ワークスペースの URL を使用します。DATABRICKS_ACCOUNT_ID
:Azure Databricks アカウント レベルの操作の場合 これがAzure Databricks アカウント ID です。 取得するには、「アカウント ID を特定する」を参照してください。DATABRICKS_CLIENT_ID
: (M2M OAuth のみ) サービス プリンシパルの作成時に割り当てられたクライアント ID 。DATABRICKS_CLIENT_SECRET
: (M2M OAuth のみ) サービス プリンシパルの作成時に生成したクライアント シークレット。
これらは直接設定することも、クライアント コンピューターで Databricks 構成プロファイル (.databrickscfg
) を使用して設定することもできます。
OAuth アクセス トークンを使用するには、Azure Databricks ワークスペースまたはアカウント管理者が、コードがアクセスするアカウントとワークスペース機能の CAN USE
特権をユーザー アカウントまたはサービス プリンシパルに付与している必要があります。
クライアントの OAuth 承認を構成する方法と、クラウド プロバイダー固有の承認オプションを確認する方法の詳細については、「 クライアント認証の解除」を参照してください。
サードパーティのサービスおよびツールの認証
サード パーティのサービス、ツール、または SDK にアクセスするコードを記述する場合は、サード パーティによって提供される認証と承認のメカニズムを使用する必要があります。 ただし、サードパーティのツール、SDK、またはサービスに Azure Databricks アカウントまたはワークスペース リソースへのアクセス権を付与する必要がある場合、Databricks では次のサポートが提供されます。
Databricks Terraform プロバイダー: このツールは、Azure Databricks ユーザー アカウントを使用して、ユーザーに代わって Terraform から Azure Databricks API にアクセスできます。 詳細は、「Terraform を使用してサービス プリンシパルをプロビジョニングする」を参照してください。
GitHub、GitLab、Bitbucket などの Git プロバイダーは、Databricks サービス プリンシパルを使用して Azure Databricks API にアクセスできます。 詳細については、「CI/CDのサービス プリンシパル名」を参照してください。
Jenkins は、Databricks サービス プリンシパルを使用して Azure Databricks API にアクセスできます。 詳細については、Azure Databricks Jenkins での CI/CDを参照してください。
Azure DevOps は、MS Entra サービス プリンシパルと ID を使用して Azure Databricks API にアクセスできます。 詳細については、「Authenticate with Azure DevOps on Databricks」を参照してください。
Azure Databricks 構成プロファイル
Azure Databricks 構成プロファイル には、Azure Databricks が認証するために必要な設定とその他の情報が含まれています。 Azure Databricks構成プロファイルは、使用するツール、Sdk、スクリプト、およびアプリのローカルクライアントファイルに格納されます。 標準構成プロファイル ファイルには、.databrickscfg
という名前が付けられています。 詳細については、「Azure Databricks 構成プロファイル」を参照してください。