メインコンテンツまでスキップ

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

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

注記

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

要件

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

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

認証方法

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

地域開発

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

  1. CLI でログインします。

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

    Databricks では、OAuth ユーザー対マシン (U2M) 認証の使用を推奨しています。

  2. アクセス許可を生成する:

Bash
databricks auth token --profile my-env

外部アプリケーション

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

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

  2. Databricks SDKを使用してアクセスウイルスを生成します。

    Python
    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アプリから別の Databricks アプリに接続すると、アプリは割り当てられたサービスプリンシパルを使用して認証を自動的に処理します。

Python
from databricks.sdk import WorkspaceClient
import requests

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

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

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

「編集」 > 「ユーザー認証」 で構成されたスコープがアクセスウイルスに含まれていることを確認してください。 トークンに必要なスコープがない場合、リクエストは 401 または 403 エラーで失敗する可能性があります。

たとえば、次のリクエストは、 sqlfile.files 、およびdashboards.genieスコープを使用してアクセス許可を明示的にリクエストします。

Bash
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 ヘッダーに Bearer トークンを含め、 <your-endpoint>アプリの実際の API パスに置き換えます。

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

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

ローカル環境からアプリに接続する場合は、次のセキュリティのベスト プラクティスに従ってください。

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

トラブルシューティング

ローカル マシンからアプリに接続するときに問題が発生した場合は、これらのソリューションを試してください。

認証失敗(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ドメインはネットワークからアクセス可能です

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

追加リソース

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