次の方法で共有


トークン認証を使用して API Databricks アプリに接続する

OAuth 2.0 ベアラー トークン認証を使用して、HTTP API (FastAPI や Gradio アプリなど) を公開する Databricks アプリを呼び出すことができます。 この方法は、ローカル開発環境、外部アプリケーション、およびその他の Azure Databricks アプリから機能します。

このメソッドは、API またはエンドポイント ( /api/ ルートを使用してアクセス可能) を公開するアプリにのみ適用されます。 ユーザー インターフェイスまたはバックグラウンド処理のみを提供するアプリの場合、トークン認証を使用して接続することはできません。

Requirements

トークン認証を使用して Databricks アプリに接続するには、次の要件を満たす必要があります。

  • アプリは、 /api/ ルートを使用してアクセスできる少なくとも 1 つの API エンドポイントを公開する必要があります。
  • アプリに対する CAN USE アクセス許可が必要です。 Databricks アプリのアクセス許可の構成を参照してください。
  • サポートされている認証方法のいずれかを使用して、Azure Databricks アクセス トークンを生成できる必要があります。

認証方法

Azure Entra ID トークンを使用して Databricks アプリを直接呼び出すことはできません。 トークンフェデレーションには、Azure Databricks がサーバー側を実行しないクライアント側のトークン交換手順が必要です。 認証に Azure Entra ID トークンを使用するには、最初に OAuth トークンと交換する必要があります。 ID プロバイダー トークンを使用した認証を参照してください。

接続シナリオに一致する認証方法を選択します。

ローカル開発

ローカル開発環境から接続するには、ユーザー資格情報を使用して Azure Databricks CLI または SDK を使用します。

  1. CLI を使用してログインします。

    databricks auth login --host https://<workspace-url> --profile my-env
    

    Azure Databricks では、 OAuth ユーザーからマシンへの (U2M) 認証を使用することをお勧めします。

  2. アクセス トークンを生成します。

    CLI

    databricks auth token --profile my-env
    

    Python

    from databricks.sdk.core import Config
    config = Config(profile="my-env")
    token = config.oauth_token().access_token
    

外部アプリケーション

外部アプリケーションからプログラムでアクセスするには、マシン間 (M2M) 資格情報を使用してサービス プリンシパル認証を使用します。 OAuth を使用した Azure Databricks へのサービス プリンシパル アクセスの承認に関するページを参照してください。

  1. サービス プリンシパルを作成し、クライアント ID とシークレットを取得します。 サービス プリンシパルを参照してください。

  2. Azure Databricks SDK を使用してアクセス トークンを生成します。

    from databricks.sdk import WorkspaceClient
    import requests
    
    # Option 1: Explicit credentials
    wc = WorkspaceClient(
        host="https://<workspace-url>",
        client_id="<service-principal-client-id>",
        client_secret="<service-principal-client-secret>"
    )
    
    # Option 2: Environment variables
    # Set DATABRICKS_HOST, DATABRICKS_CLIENT_ID, DATABRICKS_CLIENT_SECRET
    wc = WorkspaceClient()
    
    # Generate Bearer token
    headers = wc.config.authenticate()
    

他の Databricks アプリから

Databricks アプリ間で接続すると、割り当てられたサービス プリンシパルを使用して認証が自動的に処理されます。

from databricks.sdk import WorkspaceClient
import requests

# No explicit credentials needed, uses app's service principal
wc = WorkspaceClient()
headers = wc.config.authenticate()

ユーザー承認の OAuth スコープを指定する

前のセクションに示すように、統合認証で Azure Databricks CLI または SDK を使用すると、ツールは基本的な all-apis スコープを自動的に要求します。 ただし、アプリで ユーザー承認を使用する場合は、カスタム OAuth フローを使用して、追加のスコープを持つアクセス トークンを手動で要求する必要があります。

アクセス トークンに 、Edit>User 承認で構成されたスコープが含まれていることを確認します。 トークンに必要なスコープがない場合、要求は 401 エラーまたは 403 エラーで失敗する可能性があります。

たとえば、次の要求は、 sqlfile.files、および dashboards.genie スコープを持つアクセス トークンを明示的に要求します。

curl --request POST \
https://<databricks-instance>/oidc/v1/token \
--data "client_id=databricks-cli" \
--data "grant_type=authorization_code" \
--data "redirect_uri=<redirect-url>" \
--data "code_verifier=<code-verifier>" \
--data "code=<authorization-code>" \
--data "scope=sql+file.files+dashboards.genie"

完全な手順については、「 OAuth U2M アクセス トークンを手動で生成する」を参照してください。

アプリに要求を送信する

アプリの API エンドポイントを呼び出すときは、Authorization ヘッダーにベアラー トークンを含め、 <your-endpoint> をアプリの実際の API パスに置き換えます。

カール

curl "https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>" \
     -H "Authorization: Bearer <YOUR_TOKEN>"

Python とリクエスト

import requests

response = requests.get(
    "https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>",
    headers={"Authorization": f"Bearer {token}"}
)

SDK を使用した Python

from databricks.sdk import WorkspaceClient
import requests

wc = WorkspaceClient()
headers = wc.config.authenticate()

response = requests.get(
    "https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>",
    headers=headers
)

セキュリティに関する考慮事項

ローカル環境からアプリに接続するときは、次のセキュリティのベスト プラクティスに従います。

  • ソース コードでアクセス トークンをハードコーディングしないでください。 環境変数またはセキュリティで保護された資格情報ストアを使用します。
  • セキュリティリスクが侵害された場合に最小限に抑えるために、トークンを定期的に更新します。
  • アプリケーション ログにアクセス トークンや機密データをログに記録しないようにします。

トラブルシューティング

ローカル コンピューターからアプリに接続するときに問題が発生した場合は、次の解決策を試してください。

認証エラー (401 エラー)

次の点を確認します。

  • トークンが有効です ( databricks auth token --profile my-env実行)
  • あなたのプロファイルが正しく構成されています databricks auth login
  • トークンの有効期限が切れていない
  • トークンには、必要な OAuth スコープが含まれています。 CLI および SDK ツールでは、 all-apisなどの基本的なスコープのみが提供されるため、ユーザーの承認には不十分な場合があります。

アクセス許可が拒否されました (403 エラー)

次の点を確認します。

  • アプリに CAN USE アクセス許可がある
  • トークンには、必要な OAuth スコープが含まれています。 スコープが不十分な場合、有効なアクセス許可を持つ場合でも 403 エラーが発生する可能性があります。

アプリが見つかりません (404 エラー)

次の点を確認します。

  • ID とワークスペースの URL が正しい
  • アプリがデプロイされ、実行されている
  • エンドポイント パスがアプリに存在する

ネットワーク接続の問題

次の点を確認します。

  • ネットワークはアウトバウンドのHTTPS接続を許可します。
  • *.databricksapps.com ドメインにはネットワークからアクセスできます

さらに、組織が構成を必要とするプロキシを使用しているかどうかを確認します。

その他のリソース

詳細については、次のリソースを参照してください。