3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【OCI】Database Tools を使用して OCI ユーザーで Database に接続する

3
Last updated at Posted at 2026-06-03

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 において、クラウドプロバイダと連携した認証機能は正式には「グローバル認証」といいますが、ここでは説明をわかりやすくするために「外部認証」と表記します。

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 に接続する場合は、接続方式や証明書の要件に応じて適切な設定を選択してください。

Pasted image 20260602231304.png

Pasted image 20260602231514.png

3. 接続を試す

接続を作成したら、対象の IAM ユーザーで OCI コンソールにログインし、作成した DB Tools 接続から「SQL ワークシート」を開きます。
(該当する IAM ユーザーへは SQL ワークシートを使用できるようにポリシーを付与しておきます。)

ここで使用する IAM ユーザーは、少なくともDBユーザーに紐づいたiamgroup-connect に所属している必要があります。

Pasted image 20260602231808.png

image.png

Pasted image 20260602232901.png

DB ユーザーを確認すると、IAM ユーザーとのマッピング先として設定した DBUSER_IAM で接続していることがわかります。

image.png

また、以下のクエリを実行すると、セッション上のユーザー情報や認証方式を確認できます。

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;

Pasted image 20260603100017.png

SESSION_USERCURRENT_USER には Database 上のユーザーである DBUSER_IAM が表示されます。一方で、AUTHENTICATION_METHODENTERPRISE_IDENTITY を確認することで、OCI IAM を使用したグローバル認証で接続していることを確認できます。

4. まとめ

DB Tools のトークン・ベース認証を使用すると、Oracle Database のローカルユーザー名・パスワードを接続設定に保持せず、OCI IAM ユーザーの認証を使って Database に接続できます。

また、Database 側では、IAM グループに対応するグローバルユーザーやグローバルロールを作成しておくことで、接続可否やスキーマ権限を IAM グループ単位で管理できます。DB Tools を経由する場合でも、Database 側の外部認証設定、TLS 接続、IAM グループとのマッピングが必要になる点は押さえておく必要があります。

  1. https://docs.oracle.com/ja-jp/iaas/releasenotes/database-tools/iam-authentication.htm

3
0
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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?