Databricksへの自動化アクセス(CI/CDパイプライン、Airflowジョブ、外部アプリケーション)では、 人間のユーザーではなくプログラムが認証する必要があります。従来はPersonal Access Token(PAT)が広く使われていましたが、 2024年以降DatabricksはOAuth Machine-to-Machine(M2M)認証を推奨方式に位置づけています。
この記事では、OAuth M2Mの仕組み(Client Credentials Flow)、サービスプリンシパルの作成から OAuthアプリ登録・トークン取得までの具体的な手順、PATとの比較、そして試験で問われるポイントを解説します。
PATには以下の運用上の課題があります。
OAuth M2Mは、サービスプリンシパル(人間でないIDエンティティ)とOAuth 2.0 Client Credentials Flowを組み合わせることで、 これらの課題を構造的に解決します。
OAuth M2MはOAuth 2.0のClient Credentials Grantを使用します。 ユーザーの操作を一切介さず、クライアント(プログラム)がClient IDとClient Secretを使って直接トークンを取得するフローです。
Authorization Code Flowと異なり、ブラウザリダイレクトやユーザーの同意画面はありません。 完全に機械同士のやり取りで完結するため「Machine-to-Machine」と呼ばれます。
OAuth M2M認証を構成するステップは以下の3つです。
Account Consoleまたはdatabricks service-principals create CLIコマンドで サービスプリンシパルを作成します。
# Databricks CLIでサービスプリンシパルを作成
databricks service-principals create \
--application-id "<application-id>" \
--display-name "ci-cd-pipeline-sp"
# または Account SCIM API経由
curl -X POST \
"https://accounts.cloud.databricks.com/api/2.0/accounts/<account-id>/scim/v2/ServicePrincipals" \
-H "Authorization: Bearer <admin-token>" \
-H "Content-Type: application/json" \
-d '{
"displayName": "ci-cd-pipeline-sp",
"entitlements": [
{ "value": "workspace-access" }
]
}'サービスプリンシパルに対してOAuth Secretを生成します。
# サービスプリンシパルのOAuth Secretを生成
curl -X POST \
"https://accounts.cloud.databricks.com/api/2.0/accounts/<account-id>/servicePrincipals/<sp-id>/credentials/secrets" \
-H "Authorization: Bearer <admin-token>"
# レスポンス例
{
"id": "secret-id-xxxx",
"secret": "dose...xxxx", ← この値を安全に保管
"status": "ACTIVE",
"create_time": "2026-03-26T10:00:00.000Z"
}注意: Client Secretは作成時のレスポンスでのみ返却されます。 後から取得することはできないため、必ずシークレットマネージャー(AWS Secrets Manager, Azure Key Vault等)に保管してください。
Client IDとClient Secretを使ってアクセストークンを取得します。
# アクセストークンの取得
curl -X POST \
"https://<workspace-url>/oidc/v1/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id=<service-principal-client-id>" \
-d "client_secret=<client-secret>" \
-d "scope=all-apis"
# レスポンス例
{
"access_token": "eyJhbGciOiJSUzI1NiI...",
"token_type": "Bearer",
"expires_in": 3600
}取得したアクセストークンをAuthorizationヘッダに付与してDatabricks APIを呼び出します。
# トークンを使ってジョブ一覧を取得
curl -X GET \
"https://<workspace-url>/api/2.1/jobs/list" \
-H "Authorization: Bearer eyJhbGciOiJSUzI1NiI..."
| 観点 | Personal Access Token (PAT) | OAuth M2M (Client Credentials) |
|---|---|---|
| 紐づく主体 | 個人ユーザー | サービスプリンシパル |
| トークン寿命 | 設定可能(無期限も可) | 短寿命(デフォルト1時間) |
| 自動更新 | 不可(手動で再発行) | Client Credentialsで自動取得 |
| 権限スコープ | 発行ユーザーの全権限 | サービスプリンシパルに付与した権限のみ |
| 退職・異動への耐性 | 低(ユーザー削除でトークン無効化が必要) | 高(サービスプリンシパルは人に依存しない) |
| 監査のしやすさ | 低(どのPATがどのシステムで使用されているか不明確) | 高(サービスプリンシパル名で特定可能) |
| Databricksの推奨度 | レガシー(新規利用は最小限に) | 推奨(2024年以降の標準方式) |
OAuth M2MをCI/CDパイプラインに組み込む際の典型的なパターンを示します。
# GitHub Actions の例
name: Deploy Databricks Jobs
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Databricks CLI
run: pip install databricks-cli
- name: Get OAuth Token
id: token
run: |
TOKEN=$(curl -s -X POST \
"${{ secrets.DATABRICKS_HOST }}/oidc/v1/token" \
-d "grant_type=client_credentials" \
-d "client_id=${{ secrets.DATABRICKS_CLIENT_ID }}" \
-d "client_secret=${{ secrets.DATABRICKS_CLIENT_SECRET }}" \
-d "scope=all-apis" | jq -r '.access_token')
echo "::add-mask::$TOKEN"
echo "token=$TOKEN" >> $GITHUB_OUTPUT
- name: Deploy with Databricks CLI
run: databricks bundle deploy --target production
env:
DATABRICKS_HOST: ${{ secrets.DATABRICKS_HOST }}
DATABRICKS_TOKEN: ${{ steps.token.outputs.token }}Client IDとClient SecretはGitHub Secretsに格納し、コードにハードコードしない点が重要です。
Security & Governance
問題 1
データプラットフォームチームはAirflowからDatabricksジョブをトリガーするパイプラインを運用している。現在はチームリーダーのPATを使って認証しているが、チームリーダーの異動に伴い認証方式を見直すことになった。セキュリティ要件を満たしつつ運用負荷を最小化する方法はどれか。
正解: A
PATは個人に紐づくため異動・退職で認証が途切れるリスクがあります。サービスプリンシパル+OAuth M2Mに移行すれば、人的依存がなくなり、トークンも短寿命で自動更新されるため運用負荷も低くなります。別のメンバーのPATへの差し替えは同じ問題の先送りです。ユーザー名・パスワード認証はセキュリティ上不適切で、SSO限定では機械的なAPI呼び出しができません。
OAuth M2MトークンとPersonal Access Token(PAT)のどちらを使うべきですか?
自動化パイプライン(CI/CD・Airflow・Prefectなど)ではOAuth M2Mを推奨します。PATはユーザー個人に紐づくため、退職・異動時にトークンが放置されるリスクがあり、有効期限の管理も手動です。OAuth M2Mはサービスプリンシパルに紐づき、トークンは短寿命(デフォルト1時間)で自動更新されるため、セキュリティとライフサイクル管理の両面で優れています。Databricksも2024年以降、自動化用途にはOAuth M2Mを推奨し、PATの新規利用は最小限に抑える方針を示しています。
OAuth M2Mトークンの有効期限はどのくらいですか?
OAuth M2Mで発行されるアクセストークンのデフォルト有効期限は1時間(3600秒)です。トークンの更新はClient Credentials Flowを再度実行するだけで完了し、リフレッシュトークンは使用しません。CI/CDパイプラインでは、各ジョブ実行の開始時にトークンを取得し、そのジョブ内で使い回す設計が一般的です。長時間実行するバッチの場合は、トークン有効期限内にリクエストを完了するか、途中でトークンを再取得するロジックを組み込みます。
OAuth M2M認証はDatabricks認定試験でどう出題されますか?
Data Engineer Professional試験の「セキュリティとガバナンス」および「ワークロード管理」ドメインで出題されます。典型的な出題パターンは「CI/CDパイプラインからDatabricksに認証する最も安全な方法」「PATの代替として推奨される認証方式」「サービスプリンシパルの用途」です。OAuth 2.0のフロー名(Client Credentials Grant)を直接問う問題は少なく、PATとの比較やサービスプリンシパルの概念理解が重視されます。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Databricks資格一覧|全7試験・難易度・勉強法
Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...
Databricks試験の難易度ランキング|全7資格を徹底比較
Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...
Databricks資格の勉強方法|最短合格ルートと学習時間の目安
Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...
Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略
Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...
Databricks Data Engineer Professional完全解説|上級試験の攻略法
Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...