※ 本記事は、Chaitanya Koratamaddi, Roopesh Thokalaによる”Oracle APEX 26.2: Using DBMS_CLOUD Credentials with Resource Principal and DBTools Identity“を翻訳したものです。
2026年11月9日
OCI Object Storageから文書を読み込んだり、OCIのAIサービスを呼び出したりするOracle APEXアプリケーションを考えます。RESTエンドポイントに加え、そのサービスを使う権限を持つIDが必要です。Oracle Cloud Infrastructure(OCI)ユーザーのAPIキーをAPEX Web Credentialに設定する場合は、アプリケーションの運用の中で、その鍵も管理しなければなりません。
Oracle APEX 26.2では、OCI Native Authenticationで使うDBMS_CLOUDの認証情報への対応を追加しました。
Autonomous AI DatabaseのリソースプリンシパルとDatabase Tools Identityも利用できます。APEX Web Credentialから、データベースで管理する認証情報を参照し、RESTデータソースやAPEX_WEB_SERVICEの呼び出しに使えます。
本記事では、Database Tools Identityを使う設定を行い、OCIへのREST要求でテストします。続いて、Autonomous AI Databaseのリソースプリンシパルを使う方法を説明します。

図1:データベースで管理する認証情報を使い、APEXアプリケーションからOCIサービスへアクセスする
認証情報の構成を理解する
始める前に、設定の3つの部分を区別しておきます。
| 構成要素 | 役割 |
|---|---|
| OCIのIDとIAMポリシー | 誰が要求し、そのIDがどのOCIリソースにアクセスできるかを定めます。 |
| データベースの認証情報 | 管理された認証情報を、データベースから利用できるようにします。 |
| Oracle APEX Web Credential | データベースの認証情報を参照し、APEXコンポーネントやAPIで使う名前とStatic IDを提供します。 |
たとえば、アプリケーションでStatic IDがoci-managed-identityのWeb Credentialを使い、そこからAPEX_OCI_IDENTITYというデータベースの認証情報を参照するとします。その認証情報に対応するIDには、実行したい操作を許可するOCI IAMポリシーが必要です。
認証情報を作成するだけでは、OCIリソースへのアクセスは許可されません。アプリケーションで何をできるかは、引き続きIAMポリシーで決まります。

図2:ID、データベースの認証情報、それを使うアプリケーションの関係
リソースプリンシパル
Autonomous AI Databaseでは、リソースプリンシパルを使い、データベース自体のリソースIDでOCIサービスへ認証できます。基になる認証情報と、そのローテーションはOCIで管理します。許可するアクセスは、IAMの動的グループとポリシーで定義します。
有効にすると、データベースからOCI$RESOURCE_PRINCIPALという認証情報を利用できます。Autonomous AI Databaseでリソースプリンシパルを使うを参照してください。
DBTools Identity
Database Tools Identityは、OCI Database Toolsの接続に関連付けるIDです。IDを作成すると、その接続に設定したデータベーススキーマに、Database Toolsで管理する認証情報を作成します。基になる認証情報とローテーションはOCIで管理します。Database Tools Identityでは独自のリソースプリンシパルを作り、ほかのOCIリソースプリンシパルと同じ管理・ローテーションの仕組みを使います。
認証情報の名前は、Credential Key欄で指定します。この例ではAPEX_OCI_IDENTITYにします。Database Toolsで認証情報を維持・管理し、APEXからはWeb Credentialを通じて参照します。Identityを利用するための手順を参照してください。
どちらの方法でも、APEX Web CredentialにOCIユーザーのAPI秘密鍵を入力する必要はありません。
APEX 26.2で変わること
APEXは以前から、一部の認証方式で、データベースの認証情報を使うWeb Credentialに対応しています。APEX 26.2では、この設定をOCI Native Authenticationにも拡張しました。
OCI用Web Credentialの作成時に、Use Database Credentialを選び、データベースの認証情報名を入力できます。
実行時には、APEXでWeb Credentialの参照先を解決し、そのデータベース認証情報を要求に使います。データベースの認証情報を使う場合、HTTP要求は、APEXエンジンスキーマではなく、アプリケーションの解析スキーマの権限コンテキストで実行します。そのため、解析スキーマに、対象OCIエンドポイントへのネットワークACLとHTTPSアクセスを設定する必要があります。なお、データベース認証情報を使うWeb Credentialでは、Valid for URLsの制限は適用されません。
対応するOCI Web Credentialを設定することで、OCIのAIサービスを呼ぶ際にも、リソースプリンシパルとDBTools Identityで認証できます。
例:DBTools IdentityでOCI REST APIを呼び出す
設定をテストするため、コンパートメント一覧を取得するOCI APIを呼び出します。次の名前を使うか、環境に合わせて置き換えてください。
| 項目 | 値の例 |
|---|---|
| アプリケーションの解析スキーマ | APP_SCHEMA |
| データベース認証情報/Credential Key | APEX_OCI_IDENTITY |
| APEX Web Credentialの名前 | OCI Managed Identity |
| APEX Web CredentialのStatic ID | oci-managed-identity |
前提条件
必要なデータベース認証情報の機能に対応する、APEX 26.2環境を使います。OCI Database Toolsにアクセスでき、接続、Vaultのシークレット、ID、IAMポリシーを設定する権限も必要です。
この例で必要な、2方向の接続を確認します。Database ToolsからAPEXのデータベースへ接続できることと、データベースからOCI APIエンドポイントへHTTPS要求を送れることです。
接続に設定するデータベースユーザーには、CREATE CREDENTIAL権限とDBMS_CLOUDへのアクセスが必要です。データベースでDBMS_CLOUDを未設定の場合は、必要なインストール、HTTPS、ウォレットの設定を先に完了してください。これらの前提条件は、Identityの作成を参照してください。
手順1:IAMの前提条件を設定する
Resource Principalを使うDatabase Tools接続を作成・利用する前に、接続とDatabase Tools Identityに必要な動的グループとポリシーを設定します。
– Database Tools接続のリソースプリンシパルでは、Database Toolsからデータベースへ接続するため、OCI Vaultからデータベースのパスワードを取得します。必要な場合は、ウォレットやキーストアのシークレットも取得します。
– Database Tools Identityのリソースプリンシパルでは、対象のOCIサービスへ認証し、アクセスします。リソースプリンシパルの認証情報はDatabase Toolsで作成・保護し、DBMS_CLOUDとOracle APEXが使うデータベース認証情報を通じて利用できるようにします。
IAM管理者が動的グループとポリシーを作成するか、作成に必要な権限を取得する必要があります。各動的グループの一致ルールには、コンパートメントのOCIDを使います。
手順2:Database Tools接続の動的グループを作る
接続を作成するコンパートメントで、Database Tools接続を対象にした動的グループを作成します。
例は次のとおりです。
ALL {
resource.type = 'databasetoolsconnection',
resource.compartment.id = '<connection_compartment_ocid>'
}

図3:OCIで動的グループを作成する
次に、その接続で使うVaultシークレットを読み取る権限を、動的グループに付与します。ポリシーの範囲は、シークレットを格納するコンパートメントに限定します。
Allow dynamic-group apex-dbtools-connections to read secret-family in compartment <vault_secret_compartment_name>
このポリシーは、一致するDatabase Tools接続に対して、コンパートメント内のシークレットを対象に適用します。特定のシークレットのOCIDだけに限定するものではありません。接続に必要なパスワードやウォレットのシークレットを、すべて読めることを確認してください。

図4:データベース接続用のポリシーを作成する
手順3:Database Tools Identityの動的グループを作り、アクセスを許可する
OCIサービスを呼ぶDatabase Tools Identityを対象にした動的グループを作成します。コンパートメント内のすべてのIdentityを含める場合は、次のルールを使います。
ALL {
resource.type = 'databasetoolsidentity',
resource.compartment.id = '<identity_compartment_ocid>'
}

図5:DBTools Identity用の動的グループを作成する
Identityと接続が同じコンパートメントにある場合は、同じOCIDを使います。1つのIdentityだけを含める場合は、代わりに、そのOCIDを指定したresource.id条件を追加します。
対象サービスで必要な権限を、動的グループに付与します。
コンパートメント一覧の例では、次を使います。
Allow dynamic-group apex-dbtools-identities to inspect compartments in tenancy

図6:OCIでコンパートメントの参照用ポリシーを作成する
Object Storageを使う例では、次のようなポリシーを追加します。
Allow dynamic-group apex-dbtools-identities to read object-family in compartment <bucket_compartment_name>
アプリケーションが呼ぶOCIサービスで必要な、最小権限のポリシーに置き換えてください。
手順4:Database Toolsの接続を作成する
OCI Database Toolsから、APEXをインストールしたデータベースへの接続を作成します。Database Toolsでは、この接続を使って、Identityのデータベース認証情報を作成・管理します。そのため、選択したOCIネットワークの設定で、データベースへ到達できる必要があります。
OCIコンソールでDeveloper Services → Database Tools → Connectionsへ進み、Create Connectionをクリックします。

図7:Developer ServicesからConnectionsを選択する

図8:Create Connectionをクリックする
データベースの情報を入力する
接続のNameとCompartmentを指定します。この手順では、Database DetailsのSelect databaseで接続情報を自動取得します。対象データベースがOCIテナンシ外にある場合などは、Enter database informationも使えます。Database Cloud ServiceにOracle Autonomous AI Databaseを選び、接続先データベースを指定します。この例ではAPEX_Gendevを使います。
接続のNameとCompartmentを指定します。Database DetailsでSelect databaseを選ぶと、接続情報を自動入力します。Database Cloud ServiceをOracle Autonomous AI Databaseにし、対象のデータベースを選びます。この手順では、APEX_Gendevを使います。
OCIテナンシ外のデータベースでは、Enter database informationを選び、接続情報を手入力します。

図9:接続の作成
データベースのUsernameにAPP_SCHEMAを入力し、Create password secretを選びます。

図10:ユーザー名を選び、Create password secretをクリックする
ここで指定したUsernameのユーザーが、次の手順で作る認証情報を所有します。続行する前に、CREATE CREDENTIAL権限を持つことを確認してください。
Enter database informationを選んだ場合は、データベースの接続文字列を入力します。
注: 選んだネットワーク経路でホスト名を解決できない場合は、到達可能なIPアドレスを使います。nslookup <database-hostname>でアドレスを調べ、ルーティングやファイアウォールで接続が許可されていることも確認してください。
パスワードのシークレットを作成する
接続には、データベースユーザーのパスワードを保存したVaultシークレットへの参照を設定します。Create password secretをクリックして、作成ダイアログを開きます。
シークレットのNameと、必要に応じてDescriptionを入力します。Vault compartment、Vault、Encryption Key compartment、Encryption Keyの選択を確認してください。環境に適していれば初期選択の値を使い、そうでなければ、この接続に使うVaultと鍵を選びます。
APP_SCHEMAのパスワードを入力し、確認用にも入力してCreateをクリックします。
接続フォームに戻ると、作成したパスワードのシークレットを使えます。
このシークレットは、Database ToolsがAPP_SCHEMAへログインするためのものです。OCIサービスを呼ぶための管理された認証情報は、手順5でIdentityとともに作成します。

図11:ウォレット内容のシークレットを作成する
データベースユーザーのパスワード用に、Vaultシークレットを作成する。
Vaultと暗号化鍵の選択を示す、パスワードシークレットの作成ダイアログ。パスワード値は非表示にしています。
プライベートエンドポイントを選ぶ
注: プライベート接続を使う場合は、Select private endpointを選択します。Private Endpoint compartmentを選び、対象データベースへの接続を提供するPrivate endpointを指定します。
TNS接続文字列のデータベースアドレスに、実際に到達できるエンドポイントを選んでください。テナンシ内の既存エンドポイントでも、別のネットワーク用で、そのデータベースへは接続できない場合があります。

図12:データベースへ到達できるプライベートエンドポイントを選択する
SSLの詳細を設定する
相互TLS(mTLS)認証が有効な場合、またはTLS認証を使い、データベースの証明書が信頼する認証局の署名ではない場合は、ウォレットが必要です。
プライベートエンドポイントを使わない場合は、SSL detailsのWallet formatに**Oracle auto-login wallet (cwallet.sso)**を選びます。
SSOウォレット内容のシークレットがなければ、Create wallet content secretをクリックし、作成します。
接続作成ページのSSO wallet content secretで、APEXGendevWalletを選択します。

図13:データベース接続のウォレットを設定する
接続のIAMポリシーで、データベースパスワードとウォレット内容の両方のシークレットを読めることを確認してください。
実行時サポートを有効にする
Advanced Optionsを展開し、Settingsを開いて、Enable Runtime Supportを有効にします。Runtime IdentityにはResource Principalを選びます。
この設定は、接続にDBTools Identityを作成するために必要です。ここで設定するのは、Database Tools接続の実行時IDです。Autonomous AI Databaseのリソースプリンシパルの設定は、後で別に説明します。

図14:Resource Principalの実行時サポートを有効にする
操作箇所: Advanced Options → Settingsで、Enable Runtime SupportとResource Principalを指定します。
Createをクリックします。Connectionsページに接続が表示されたら開き、接続できることを検証します。エラーがある場合は、Identityを作る前に解決してください。
手順5:Identityを作成して確認する
接続を開き、IdentitiesタブでCreate Identityをクリックします。

図15:Identityを作成する
分かりやすいNameを入力し、Credential KeyをAPEX_OCI_IDENTITYにします。このキーがデータベース認証情報の名前になるため、APEXで設定できるよう控えておきます。

図16:DBTools Identityと、それに関連付けたデータベース認証情報
Createをクリックします。最初はCreatingと表示し、準備が整うとActiveになります。

図17:Identityの作成中
SQLクライアントからAPP_SCHEMAとして接続し、認証情報が存在することを確認します。
select credential_name, username, comments from user_credentials where credential_name = 'APEX_OCI_IDENTITY';

図18:確認用のSQLクエリ
Creatingのままの場合は、データベースへの接続、パスワードのシークレット、ユーザーの認証情報作成権限を確認します。
手順6:Database Tools Identityをリフレッシュして検証する
ここまでで、動的グループ、IAMポリシー、Database Tools接続を用意できました。接続に戻り、IdentitiesタブでIdentityを選び、Actions → Refreshを実行します。リフレッシュ後、Validateで、データベース認証情報とリソースプリンシパルを経由する認証が動作することを確認します。
失敗する場合は、接続からVaultシークレットへのアクセス、Identityの動的グループのルール、対象サービスのポリシー、データベースへの接続、データベースから外部へのHTTPS設定を確認します。IAMポリシーの変更には反映まで時間がかかる場合があるため、有効になってから再度リフレッシュと検証を行ってください。

図19:接続を検証する
手順7:APEX Web Credentialを作成する
APEXでは、Database Tools Identityを次の2通りで利用できます。
- インスタンス認証情報: APEXインスタンス内のワークスペースをまたいで利用できます。
- スキーマ認証情報: 解析スキーマから、そのデータベース認証情報にアクセスできるワークスペースだけで利用できます。
インスタンス認証情報を使う
最初に、インスタンスのデータベース認証情報を有効にします。
begin
apex_instance_admin.set_parameter('INSTANCE_DBMS_CREDENTIAL_ENABLED', 'Y');
end;
/
データベース認証情報は、APEXエンジンスキーマからローカルオブジェクトとして参照できる必要もあります。認証情報へのEXECUTEを付与し、エンジンスキーマにシノニムを作成します。
grant execute on APP_SCHEMA.APEX_OCI_IDENTITY to APEX_260200;
create synonym APEX_260200.APEX_OCI_IDENTITY
for APP_SCHEMA.APEX_OCI_IDENTITY;
環境に対応するAPEXエンジンスキーマを指定してください。
準備ができたら、Workspace Utilities → Web Credentialsへ進み、新しいWeb Credentialを作成します。名前を入力し、Authentication TypeをOCI Native Authenticationにして、Use Database Credentialを有効にします。認証情報のスコープにはInstanceを選びます。
データベース認証情報名は自動で入力されるはずです。入力されない場合は、APEX_OCI_IDENTITYを指定します。
| プロパティ | 値 |
|---|---|
| Name | OCI Database Credential |
| Static ID | oci-db-credential |
| Authentication Type | OCI Native Authentication |
| Use Database Credential | Enabled(有効) |
| Database Credential scope | Instance |
| Database Credential Name | APEX_OCI_IDENTITY |
Createをクリックします。インスタンス認証情報なので、同じAPEXインスタンスのほかのワークスペースでも、この操作を繰り返せます。

図20:インスタンスレベルのWeb Credentialを作成する
注: 上の手順は、Oracle Database 23aiと26aiにのみ適用します。19cでは、必要なインスタンス認証情報をAPEXスキーマに直接作成してください。認証情報へのシノニムを作成する方法では動作しません。
APEXのスキーマ認証情報を使う
スキーマ認証情報では、ワークスペースの解析スキーマからアクセスできるデータベース認証情報だけを利用できます。ワークスペースのスキーマ自身が所有しているか、その認証情報へのEXECUTE権限を持ち、ローカルまたはパブリックのシノニムが存在している必要があります。
先ほどと同様に名前を入力し、Authentication TypeをOCI Native Authenticationにして、Use Database Credentialを有効にします。スコープはSchemaを選び、APEX_OCI_IDENTITYを入力します。
認証情報名の前にスキーマ名は付けられません。APP_SCHEMA.APEX_OCI_IDENTITYではなく、APEX_OCI_IDENTITYと指定してください。APEXでローカルのデータベースオブジェクトとして解決するため、必要なEXECUTE権限とシノニムを、あらかじめ用意しておく必要があります。
Createをクリックします。スキーマ認証情報は、割り当てられた解析スキーマから、そのデータベース認証情報にアクセスできるワークスペースだけで利用できます。

図21:APEXワークスペースから、Database Toolsのデータベース認証情報を参照する
手順8:REST要求をテストする
これで、RESTデータソースとAPEX_WEB_SERVICEの呼び出しにWeb Credentialを使えます。たとえば、SQL Workshop → SQL CommandsでAPP_SCHEMAを選び、テナンシ内のコンパートメント一覧を取得する、次のREST API呼び出しを実行します。
select apex_web_service.make_rest_request(
p_url =>
'https://identity.us-ashburn-1.oci.oraclecloud.com/20160918/'
|| 'compartments/?compartmentId=<tenancy_ocid>',
p_http_method => 'GET',
p_credential_static_id => 'oci-db-credential'
) as response
from dual;
<tenancy_ocid>を使用するテナンシのOCIDに置き換え、環境に適したOCI Identityエンドポイントを使ってください。
ここで指定するoci-db-credentialは、APEX Web CredentialのStatic IDです。このAPIにAPEX_OCI_IDENTITYを直接渡すわけではありません。APEXでWeb Credentialを基に、データベースの認証情報を探します。
正しく設定できていれば、コンパートメント情報を含むJSONが返ります。RESTデータソースでも、認証に同じWeb Credentialを選び、レスポンスの構造を検出して、作成したデータプロファイルをアプリケーションで使えます。

図22:Database Tools Identityを参照するAPEX Web Credentialで、OCIを呼び出す
Autonomous AI Databaseのリソースプリンシパルを使う
アプリケーションがAutonomous AI Databaseで動作する場合は、そのリソースプリンシパルを利用できます。Autonomous AI Databaseのリソースを含むIAM動的グループを作成し、対象サービスで必要な権限を付与します。
ADMINとして、データベースとアプリケーションの解析スキーマのリソースプリンシパルを有効にします。
begin
dbms_cloud_admin.enable_resource_principal;
dbms_cloud_admin.enable_resource_principal(
username => 'APP_SCHEMA'
);
end;
/
これらの呼び出しにより、OCI$RESOURCE_PRINCIPALを利用できるようになります。前提条件と検証は、Autonomous AI Databaseのリソースプリンシパルの設定に従ってください。
OCI Native Authenticationを使うAPEX Web Credentialを作成し、Use Database Credentialを有効にしてSchemaを選びます。データベース認証情報名にはOCI$RESOURCE_PRINCIPALを指定します。前述のアクセスルールに従い、解析スキーマからローカルオブジェクトとして解決できることを確認してください。
問題が起きたときの確認項目
| 症状 | 確認すること |
|---|---|
| Database Tools IdentityがCreatingのまま | 接続先へ到達できるか、データベースパスワードのシークレットが正しいか、CREATE CREDENTIAL権限があるか。 |
| APEXで認証情報を解決できない | 認証情報名、選んだスコープ、EXECUTE権限、必要なシノニム。 |
| OCIで要求を拒否される | Identityの状態、動的グループへの所属、IAMポリシー、対象リソースまたはテナンシ。 |
| サービスに到達できない | データベースから外部への接続、適用されるネットワークACL、TLS設定。 |
| 最近のIAM変更がアクセスに反映されない | Database Tools Identityをリフレッシュする。Autonomous AI Databaseでは、リソースプリンシパルのトークンキャッシュも考慮する。 |
データベースの認証情報とIAM権限を用意できれば、APEX側の設定は少なく済みます。OCI用Web Credentialを作成し、Use Database Credentialを有効にして、認証情報名を指定します。そのWeb CredentialをRESTデータソースやPL/SQLの呼び出しで使い、基になるIDはAutonomous AI DatabaseまたはDatabase Toolsで管理できます。
