MS Entra ID トークン認証
MS Entra ID トークン認証とは
Section titled “MS Entra ID トークン認証とは”Microsoft Entra ID(旧 Azure Active Directory)が発行する OAuth 2.0 アクセストークンを使って Oracle Database に接続する機能です。
従来のパスワード認証では、DB 側でユーザーのパスワードを管理する必要がありました。 Entra ID と連携することで、認証を外部の ID プロバイダに委ねることができ、既存の Entra ID ユーザー管理・ロール管理をそのまま DB アクセス制御に活かせます。
仕組みの概要
Section titled “仕組みの概要”[ クライアント ] [ Entra ID ] [ Oracle Database ] | | | |── 1. トークン取得 ───▶| | |◀── アクセストークン ──| | | | | |─────────── 2. 接続 (OAUTH + TLS) ─────────▶| | | | | | 3. トークン検証 | | (IDENTITY_PROVIDER_CONFIG) | | | | | 4. ユーザー/ロールマッピング | | (AZURE_USER / AZURE_ROLE) | | |- クライアントが Entra ID からアクセストークン(JWT)を取得する
tnsnames.oraにTOKEN_AUTH=OAUTHを指定し、TCPS(TLS)で DB に接続する- DB が
IDENTITY_PROVIDER_CONFIGに設定されたテナント情報を元にトークンを検証する - トークンの
upnクレームまたはアプリロールに対応する DB ユーザーでセッションが確立される
なお、この接続には TLS(TCPS)が必須です。
2つの認証フロー
Section titled “2つの認証フロー”このサイトでは、以下の2つのフローを扱います。
| 委任されたアクセス許可(認可コードフロー) | クライアント・クレデンシャルフロー | |
|---|---|---|
| ユーザーの関与 | あり(対話的ログイン) | なし(アプリ自身の権限) |
| 用途 | ユーザーが直接 DB にアクセスする場面 | バッチ・デーモン・サーバー間連携 |
| Scope 指定 | api://<App ID>/<scope名> | api://<App ID>/.default |
| DBユーザーのマッピング | AZURE_USER=<upn> | AZURE_ROLE=<アプリロール名> |
| トークンのクレーム | upn が必要 | 不要 |
主要な設定項目
Section titled “主要な設定項目”DB パラメータ
Section titled “DB パラメータ”| パラメータ | 説明 |
|---|---|
IDENTITY_PROVIDER_TYPE | AZURE_AD を指定 |
IDENTITY_PROVIDER_CONFIG | テナント ID・アプリケーション ID・App ID URI を JSON で設定 |
DB ユーザー/ロールの作成構文
Section titled “DB ユーザー/ロールの作成構文”-- Entra ID ユーザーにマッピング(認可コードフロー)CREATE USER <DB ユーザー> IDENTIFIED GLOBALLY AS 'AZURE_USER=<upn>';
-- Entra ID アプリロールにマッピング(クライアントクレデンシャルフロー)CREATE USER <DB ユーザー> IDENTIFIED GLOBALLY AS 'AZURE_ROLE=<ロール名>';CREATE ROLE <DB ロール> IDENTIFIED GLOBALLY AS 'AZURE_ROLE=<ロール名>';tnsnames.ora の接続記述子
Section titled “tnsnames.ora の接続記述子”<接続名> = ( DESCRIPTION= (ADDRESS=(PROTOCOL=TCPS)(HOST=<ホスト>)(PORT=<ポート>)) (SECURITY= (TOKEN_AUTH=OAUTH) (TOKEN_LOCATION=<トークンファイルのパス>) (WALLET_LOCATION=<クライアントウォレットのパス>)) (CONNECT_DATA=(SERVICE_NAME=<サービス名>)))チュートリアル
Section titled “チュートリアル”-
Oracle Database 用の API アプリケーションを Entra ID に登録し、スコープの公開・トークンバージョン(v2)・
upnクレームの設定を行います。あわせて OAuth クライアントを作成し、API へのアクセス許可を設定します。 -
IDENTITY_PROVIDER_TYPE/IDENTITY_PROVIDER_CONFIGを設定し、Entra ID ユーザーに対応する DB ユーザーを作成します。 -
Azure CLI または Postman でアクセストークンを取得し、SQLcl から TCPS 接続で DB にログインできることを確認します。接続コンテキスト(
AUTH_METHOD・AUTHENTICATED_IDENTITYなど)も検証します。
クライアントクレデンシャルによる接続 ユーザーの対話的ログインを介さず、アプリケーション自身の権限でトークンを取得して DB に接続するフローを扱います。バッチ・サーバー間連携などの非対話型接続に対応します。