2026年5月12日、データベースへの接続機能を提供するOCIサービス「データベース・ツール」にOCI IAM による認証を介しての接続がサポートされるようになりました 1
データベース・ツール接続では、Oracle DatabaseのIAMトークンベースの認証およびプロキシ認証がサポートされるようになりました。
もともと OCI にて提供される Oracle Database サービスでは OCI IAM での認証による接続ができたのですが、この新機能ではそれが DB Tools を介してできるようになったことになります。
この認証方式については以下の SpeakerDeck p53~ を参照ください。
本記事では、この OCI IAM を使用した DB接続を試してみます。
0. 前提条件
接続先の Database として、本記事では Autonomous AI Database(以下 ADB)を使用します。ADB は事前に作成済みであるものとします。
また、この接続方式においては Oracle Database へは TLSで接続することが必須となります。ADB では基本 TLS 接続を行うケースが多いので問題ないと思いますが、Base Database サービスなどを使用している場合はリスナーの設定を確認し、必要に応じて設定を行ってください。最近はデフォルトで 2484 番ポートで TLS の接続口が設定されていることがありますので、それを使用することも可能です。
また、アイデンティティ管理基盤として OCI IAM Identity Domains を使用します。デフォルトで作成される Default ドメインでも利用できますが、通常の OCI 操作に使うユーザーやグループと分離したい場合は、別のドメインを作成しておくと管理しやすくなります。ここでは、ドメイン名を domain-db として作成・使用しています。
本記事では、以下の IAM グループを使用します。手順を実行する前に、対象のドメイン内でグループを作成し、接続に使用する適当な IAM ユーザーを必要なグループへ所属させておきます。
-
iamgroup-connect- Database へログインできるユーザーのグループ
DB Tools の接続を作成する OCI ユーザーには、DB Tools 接続リソースを作成・管理する権限も必要です。以下のドキュメントを参考に、OCI IAM ポリシーもあわせて準備します。
1. Oracle Database の設定
1-1. 外部認証の有効化
IAM ユーザーによる接続を許可するために、Database の外部認証を OCI IAM と連携するように設定します。
有効化手順は DB プラットフォーム(ADB / 非 ADB)で異なるため、詳細は公式ドキュメントも参照してください。
Oracle Database において、クラウドプロバイダと連携した認証機能は正式には「グローバル認証」といいますが、ここでは説明をわかりやすくするために「外部認証」と表記します。
- ADB-S:
- 非 ADB:
Autonomous AI Database(ADB)の場合
ADB の場合、DBMS_CLOUD_ADMIN パッケージを使用して OCI IAM 認証を有効化します。
BEGIN
DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
type => 'OCI_IAM');
END;
/
非ADB の場合
非 ADB の場合は、IDENTITY_PROVIDER_TYPE パラメータを設定します。
ALTER SYSTEM SET IDENTITY_PROVIDER_TYPE=OCI_IAM SCOPE=BOTH;
設定が正しく反映されたか、状態を確認します。
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
-- または以下のコマンドでも可
SHOW PARAMETER identity_provider_type;
1-2. DBユーザーの作成
外部認証(グローバル認証)を使用する場合、Database 側では OCI IAM と対応付ける「グローバルユーザー」を作成します。
本手順では、IAM グループ domain-db/iamgroup-connect に属するすべてのユーザーが、Database 上では単一のユーザー DBUSER_IAM として接続するように設定します。そのため、作成するグローバルユーザーは以下の 1 ユーザーのみです。
DBUSER_IAM
管理者権限を持つユーザーで Database に接続し、グローバルユーザーを作成します。
create user DBUSER_IAM identified globally as 'IAM_GROUP_NAME=domain-db/iamgroup-connect';
これで、iamgroup-connect グループに属する IAM ユーザーは、Database では DBUSER_IAM ユーザーとして扱われます。接続自体に必要な権限として、DBUSER_IAM ユーザーへ CREATE SESSION を付与しておきます。
grant create session to DBUSER_IAM;
また、本記事では接続までの確認を行うため、ロールとしての権限設定は不要ですが、以下のようにIAMグループに紐づける形でロールを作成することができます。
create role GLROLE_HR_ADMIN identified globally as 'IAM_GROUP_NAME=domain-db/iamgroup-hr-admin';
grant all privileges on schema hr to GLROLE_HR_ADMIN;
2. 接続の作成
DB Tools で接続設定を作成します。OCI コンソールで「開発者サービス」→「データベース・ツール」→「接続」を開き、「接続の作成」から設定します。
DB ユーザー名は直接指定しないまま、画面下部の「拡張オプション」で「トークン・ベースの認証の使用」を有効化します。すると
、通常のユーザー名・パスワードではなく、OCI IAM の認証を利用する接続として作成されます。
「SSL 詳細」欄では、環境にあわせて TLS 接続に必要な証明書を設定します。ADB に接続する場合は、接続方式や証明書の要件に応じて適切な設定を選択してください。
3. 接続を試す
接続を作成したら、対象の IAM ユーザーで OCI コンソールにログインし、作成した DB Tools 接続から「SQL ワークシート」を開きます。
(該当する IAM ユーザーへは SQL ワークシートを使用できるようにポリシーを付与しておきます。)
ここで使用する IAM ユーザーは、少なくともDBユーザーに紐づいたiamgroup-connect に所属している必要があります。
DB ユーザーを確認すると、IAM ユーザーとのマッピング先として設定した DBUSER_IAM で接続していることがわかります。
また、以下のクエリを実行すると、セッション上のユーザー情報や認証方式を確認できます。
select
sys_context('USERENV', 'SESSION_USER') as session_user,
sys_context('USERENV', 'CURRENT_USER') as current_user,
sys_context('USERENV', 'AUTHENTICATION_METHOD') as auth_method,
sys_context('USERENV', 'IDENTIFICATION_TYPE') as identification_type,
sys_context('USERENV', 'ENTERPRISE_IDENTITY') as enterprise_identity
from dual;
SESSION_USER や CURRENT_USER には Database 上のユーザーである DBUSER_IAM が表示されます。一方で、AUTHENTICATION_METHOD や ENTERPRISE_IDENTITY を確認することで、OCI IAM を使用したグローバル認証で接続していることを確認できます。
4. まとめ
DB Tools のトークン・ベース認証を使用すると、Oracle Database のローカルユーザー名・パスワードを接続設定に保持せず、OCI IAM ユーザーの認証を使って Database に接続できます。
また、Database 側では、IAM グループに対応するグローバルユーザーやグローバルロールを作成しておくことで、接続可否やスキーマ権限を IAM グループ単位で管理できます。DB Tools を経由する場合でも、Database 側の外部認証設定、TLS 接続、IAM グループとのマッピングが必要になる点は押さえておく必要があります。






