6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Oracle Databaseの外部認証 - Microsoft Entra IDとAutonomous AI Databaseの認証連携 -

6
Last updated at Posted at 2026-03-07

この記事の補足としてAutonomous AI DatabaseとEntra IDの認証連携の方法も紹介します。Entra ID側の設定は基本的には同じですが、今回はEntra ID v2のトークンの設定手順にしています。
また、データベース側のパラメータ設定はAutonomous AI Database独自のものになっているくらいが違いかと思います。

ドキュメントも併せて確認して下さい。

Entra IDにOracle Datatabase接続用のアプリを作成する

Entra IDの概要からテナントIDをメモしておく
image.png

アプリの登録 -> 新規登録
image.png

好きな名前で作成
image.png

作成後、アプリケーションIDをメモしておく
image.png

APIの公開 -> アプリケーションIDのURIの追加をクリック。デフォルト値のまま保存。アプリケーションIDのURIもメモしておく
image.png

すぐ下にあるScopeの追加をクリックし、スコープ名をsession:scope:connectに指定して、同意できるのを管理者とユーザーに指定して登録する
image.png

トークン構成 -> オプションの要求と追加、IDとupnをチェックして追加
image.png

所有者 -> 所有者の追加から任意の管理者ユーザーを選択する
image.png

マニフェスト -> requestedAccessTokenVersionを2に変更して保存
image.png

アプリロールの作成

登録したアプリにアプリロールを作成する。このアプリ・ロールは、EntraIDのユーザとデータベースのロールとの紐づけに使用する。EntraIDに以下のユーザーとグループを作成する

アプリロール -> アプリロールの作成をクリック。表示名と値は、db_users、許可されたメンバーは両方を選択し作成する。同様の手順でdb_admins, resource_role, pdb_dba_roleも作成する
image.png

以下のように作成できていればOK
image.png

次にAPIのアクセス許可からアクセス許可の追加をクリック
image.png

自分のAPI -> 作成したアプリをクリック
image.png

アプリケーションの許可を選択し、作成したすべてのアプリロールをチェックしてアクセス許可の追加をクリック
image.png

"xxxxに管理者の同意を与えます"をクリック。状態が"xxxxに付与されました"になればOK
image.png

Entra IDのユーザー・グループとアプリロールの紐づけ

Oracle Databaseに接続する実際にEntraIDのユーザーやグループとアプリロールをマッピングする

Entra IDに2つのユーザーを作成する(dbmgr, dbuser001)
image.png

Entra IDに2つのグループを作成する(resource_role, pdb_dba_role)
image.png

エンタープライズアプリから作成したアプリをクリックする
image.png

ユーザーとグループの割り当てをグループ
image.png

Add user/groupをクリック
image.png

ユーザーとグループをクリックし、ユーザーは、dbuser001を選択する
image.png

ロールをdb_usersに指定して作成する
image.png

同様の手順で、dbmgrユーザーにdb_adminsロール、pdb_dba_role, resource_roleグループにもそれぞれ同名のロールを割り当てる。※グループへの割り当ては、有償プランのEntraIDのみ可能。無償プランの場合は、赤枠のユーザーのみのマッピングだけしておく
image.png

Autonomous AI Databaseへの設定を追加

ADBは、すでに1522でTLS設定がされているので、以下の手順のみでテスト可能

#ADBから接続用のOracle Walletをダウンロードし、/home/opc/walletに解凍
[opc@ Wallet]$ ls
cwallet.sso  ewallet.pem   ojdbc.properties  sqlnet.ora    truststore.jks
ewallet.p12  keystore.jks  README            tnsnames.ora

#sqlnet.oraのWalletのパスを/home/opc/Walletに変更する
$ vi /home/opc/Wallet/sqlnet.ora
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/home/opc/Wallet"))) 
SSL_SERVER_DN_MATCH=yes

#TNS_ADMINを環境変数に設定
$ export TNS_ADMIN=/home/opc/Wallet

ADMINユーザーでADBに接続して以下を実行する

$ sqlplus admin/xxxxxxx@サービス名

-- Entra IDの情報を登録。テナントID,アプリケーション ID, アプリケーションURIはEntaraIDから
BEGIN
  DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
      type   =>'AZURE_AD',
      params => JSON_OBJECT('tenant_id' VALUE 'xxxxxxxx-xxxx-xxxx-9830-9e9daf45b567',
                            'application_id' VALUE 'xxxxxxxx-xxxx-xxxx-a208-4ad97566fa26',
                            'application_id_uri' VALUE 'api://xxxxxxxx-xxxx-xxxx-a208-4ad97566fa26'),
      force => TRUE
  );
END;
/

-- パラメータがAZURE_ADになっていることを確認
SQL> SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
NAME                    VALUE   
----------------------  -------- 
identity_provider_type  AZURE_AD

-- Entra IDとマッピングするユーザーとロールを作成する
-- DBユーザーとEntra IDのロールをマッピングする
-- db_users
SQL> CREATE USER azure_globalusr IDENTIFIED GLOBALLY AS 'AZURE_ROLE=db_users';
SQL> grant connect to azure_globalusr;

-- db_admins
SQL> CREATE USER azure_dbadmins IDENTIFIED GLOBALLY AS 'AZURE_ROLE=db_admins';
SQL> grant connect,dba to azure_dbadmins;

-- DBロールとEntra IDのロールをマッピングする
-- resource_role
SQL> CREATE ROLE azure_resource_role IDENTIFIED GLOBALLY AS 'AZURE_ROLE=resource_role';
SQL> grant resource to azure_resource_role;

-- pdb_dba_role
SQL> CREATE ROLE azure_pdb_dba_role IDENTIFIED GLOBALLY AS 'AZURE_ROLE=pdb_dba_role';
SQL> grant pdb_dba to azure_pdb_dba_role;

クライアントから接続テストを行う

tnsnames.oraには、トークン認証するための接続情報を追加

azure =
   (description= (retry_count=20)(retry_delay=3)
      (address=(protocol=tcps)(port=1522)(host=ADBホスト名))
      (connect_data=(service_name=ADBのサービス名))
      (security=(ssl_server_dn_match=yes)(TOKEN_AUTH=OAUTH)))
  )

以降はこの記事の接続テストと同じです

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?