トークン認証を使用して API Databricks アプリに接続する
OAuth 2.0 ベアラー トークン認証を使用して、HTTP API を公開する Databricks アプリ (FastAPI アプリや Gradio アプリなど) を呼び出すことができます。この方法は、ローカル開発環境、外部アプリケーション、その他の Databricks アプリから機能します。
このメソッドは、 APIsまたはエンドポイントを公開するアプリ( /api/
ルートを使用してアクセス可能)にのみ適用されます。 ユーザー インターフェースまたはバックグラウンド処理のみを提供するアプリの場合、トークン認証を使用して接続することはできません。
要件
トークン認証を使用して Databricks アプリに接続するには、次の要件を満たす必要があります。
- アプリは、
/api/
ルートを使用してアクセス可能な API エンドポイントを少なくとも 1 つ公開する必要があります。 - アプリに対する
CAN USE
権限が必要です。「Databricks アプリのアクセス許可を構成する」を参照してください。 - サポートされている認証方法のいずれかを使用してDatabricksアクセスを生成できる必要があります。
認証方法
接続シナリオに一致する認証方法を選択します。
地域開発
ローカル開発環境から接続するには、ユーザー資格情報を使用して Databricks CLI または SDK を使用します。
-
CLI でログインします。
Bashdatabricks auth login --host https://<workspace-url> --profile my-env
Databricks では、OAuth ユーザー対マシン (U2M) 認証の使用を推奨しています。
-
アクセス許可を生成する:
- CLI
- Python
databricks auth token --profile my-env
from databricks.sdk.core import Config
config = Config(profile="my-env")
token = config.oauth_token().access_token
外部アプリケーション
外部アプリケーションからプログラムによるアクセスの場合は、マシン間 (M2M) 資格情報を使用したサービスプリンパルシ認証を使用します。 OAuthを使用したDatabricksへのサービスプリンシパル アクセスの承認」を参照してください。
-
サービスプリンシパルを作成し、クライアントIDとシークレットを取得します。 「サービスシプリンパル」を参照してください。
-
Databricks SDKを使用してアクセスウイルスを生成します。
Pythonfrom 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 アプリに接続すると、アプリは割り当てられたサービスプリンシパルを使用して認証を自動的に処理します。
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 エラーで失敗する可能性があります。
たとえば、次のリクエストは、 sql
、 file.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 ヘッダーに Bearer トークンを含め、 <your-endpoint>
アプリの実際の API パスに置き換えます。
- CURL
- Python with requests
- Python with SDK
curl "https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>" \
-H "Authorization: Bearer <YOUR_TOKEN>"
import requests
response = requests.get(
"https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>",
headers={"Authorization": f"Bearer {token}"}
)
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
ドメインはネットワークからアクセス可能です
さらに、組織が構成を必要とするプロキシを使用しているかどうかを確認します。
追加リソース
詳細については、次のリソースを参照してください。