はじめに
Autonomous AI Databaseで、シークレット・ベースのパスワード認証を使用したデータベース・ユーザーの作成が可能になったので検証してみました。
今回は、Azure Key Vault(キーコンテナー)内のシークレットを使用しました。
Azure Key Vault以外に、以下のようなボールトがサポートされます。
・Oracle Cloud Infrastructure Vault
・AWS Secrets Manager
・Google Cloud Secret Manager
注意
こちらの記事の内容はあくまで個人のメモ的な内容のため、こちらの内容を利用した場合のトラブルには一切責任を負いません。
また、こちらの記事の内容を元にしたOracleサポートへの問い合わせはご遠慮ください。
1. Azure Key Vaultのキーコンテナーの作成
Azure Key Vaultのキーコンテナーを作成します。
ここでは、「AzureKeyContainer4ADB」という名前のキーコンテナーを作成しました。
2. シークレットの作成
作成したキーコンテナー「AzureKeyContainer4ADB」内に、シークレットを作成します。
ここでは、「AzureSecret4ADB」という名前のシークレットを作成しました。

また、シークレッ値にDemo#1Demo#1を入力しました。
このシークレット値に入力した値が、データベース・ユーザーのパスワードになります。
3. Azureサービス・プリンシパルの有効化
Autonomous AI Databaseにadminユーザとして接続します。
user@cloudshell:~ (ap-tokyo-1)$ sqlplus admin@ADB
SQL*Plus: Release 21.0.0.0.0 - Production on Wed Apr 22 06:43:57 2026
Version 21.21.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Enter password:
Last Successful login time: Wed Apr 22 2026 05:44:51 +00:00
Connected to:
Oracle AI Database 26ai Enterprise Edition Release 23.26.2.1.0 - Production
Version 23.26.2.1.0
SQL>
DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTHプロシージャを使用して、Azureサービス・プリンシパルを有効化します。
BEGIN
DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
provider => 'AZURE',
username => 'admin',
params => JSON_OBJECT('azure_tenantid' value 'AzureのテナントID')
);
END;
/
SQL> BEGIN
2 DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
3 provider => 'AZURE',
4 username => 'admin',
5 params => JSON_OBJECT('azure_tenantid' value 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
6 );
7 END;
8 /
PL/SQL procedure successfully completed.
SQL>
cloud_integrationsビューから、Azureサービス・プリンシパルに関する情報を取得します。
SELECT param_name, param_value FROM cloud_integrations
WHERE param_name LIKE 'azure%';
SQL> set linesize 200
SQL> col param_name for a20
SQL> col param_value for a175
SQL> SELECT param_name, param_value FROM cloud_integrations
2 WHERE param_name LIKE 'azure%';
PARAM_NAME PARAM_VALUE
-------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
azure_app_name ADBS_APP_OCID1.AUTONOMOUSDATABASE.OC1.AP-TOKYO-1.ANXHILJROLWNN3YAKJMEZIWTQ4M3Q6ZJWG3UD3QEKIFS7OLGSQFCNZQU5NOA
azure_consent_url https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/oauth2/v2.0/authorize?client_id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&response_type=code&scope=User.read
azure_tenantid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
SQL*Plusを終了して、接続を切断します。
SQL> exit
Disconnected from Oracle AI Database 26ai Enterprise Edition Release 23.26.2.1.0 - Production
Version 23.26.2.1.0
user@cloudshell:~ (ap-tokyo-1)$
4. Azureアプリケーション同意の提供
3.で取得したazure_consent_urlのURLにブラウザからアクセスし、「Accept」をクリックします。
Entra IDのエンタープライズ・アプリケーションにAutonomous AI Databaseが登録されていることを確認します。
5. Autonomous AI Databaseに対するロールの割当て
キーコンテナーの「アクセス制御(IAM)」に移動し、「+追加」→「ロールの割り当ての追加」をクリックします。
ロールのタブで「キー コンテナー シークレットユーザー」を選択します。
メンバーにAutonomous AI Databaseを追加します。
「次へ」をクリックします。
「レビューと割り当て」をクリックして、ロールの割り当てを追加します。
「アクセスの確認」をクリックして、Autonomous AI Databaseに「キー コンテナー シークレットユーザー」が割り当てられていることを確認します。

6. Azure Key Vaultを使用したVault Secretクレデンシャルの作成
Autonomous AI Databaseにadminユーザとして接続します。
user@cloudshell:~ (ap-tokyo-1)$ sqlplus admin@ADB
SQL*Plus: Release 21.0.0.0.0 - Production on Wed Apr 22 06:43:57 2026
Version 21.21.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Enter password:
Last Successful login time: Wed Apr 22 2026 05:44:51 +00:00
Connected to:
Oracle AI Database 26ai Enterprise Edition Release 23.26.2.1.0 - Production
Version 23.26.2.1.0
SQL>
DBMS_CLOUD.CREATE_CREDENTIALプロシージャを使用して、Vault Secretクレデンシャルを作成します。
ここでは、データベース・ユーザー「dbuser」の作成に使用する「AZURE_KEYVAULT_CREDENTIAL」という名前のVault Secretクレデンシャルを作成しました。
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'vault_credential_name',
params => JSON_OBJECT(
'username' value 'DBユーザ名',
'secret_id' value 'シークレット名',
'azure_vault_name' value 'キーコンテナ名' )
);
END;
/
SQL> BEGIN
2 DBMS_CLOUD.CREATE_CREDENTIAL(
3 credential_name => 'AZURE_KEYVAULT_CREDENTIAL',
4 params => JSON_OBJECT(
5 'username' value 'dbuser',
6 'secret_id' value 'AzureSecret4ADB',
7 'azure_vault_name' value 'AzureKeyContainer4ADB' )
8 );
9 END;
10 /
PL/SQL procedure successfully completed.
SQL>
7. データベース・ユーザーの作成
6.で作成したVault Secretクレデンシャルを使用して、データベース・ユーザー「dbuser」を作成します。
CREATE USER database_username IDENTIFIED BY CREDENTIAL "credential_schema"."vault_credential_name";
SQL> CREATE USER dbuser IDENTIFIED BY CREDENTIAL ADMIN.AZURE_KEYVAULT_CREDENTIAL;
User created.
SQL>
データベース・ユーザー「dbuser」に、DWROLEロールを付与します。
GRANT DWROLE TO database_username;
SQL> GRANT DWROLE TO dbuser;
Grant succeeded.
SQL>
SQL*Plusを終了して、接続を切断します。
SQL> exit
Disconnected from Oracle AI Database 26ai Enterprise Edition Release 23.26.2.1.0 - Production
Version 23.26.2.1.0
user@cloudshell:~ (ap-tokyo-1)$
8. 動作確認
2.で作成したシークレット「AzureSecret4ADB」のシークレット値に入力した値(ここではDemo#1Demo#1)をパスワードに指定して、dbuserとしてAutonomous AI Databaseに接続してみます。
user@cloudshell:~ (ap-tokyo-1)$ sqlplus dbuser/Demo#1Demo#1@ADB
SQL*Plus: Release 21.0.0.0.0 - Production on Wed Apr 22 07:00:52 2026
Version 21.21.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Last Successful login time: Wed Apr 22 2026 07:00:19 +00:00
Connected to:
Oracle AI Database 26ai Enterprise Edition Release 23.26.2.1.0 - Production
Version 23.26.2.1.0
SQL>
キーコンテナー「AzureKeyContainer4ADB」内のシークレット「AzureSecret4ADB」のシークレット値を使用して、dbuserとしてAutonomous AI データベースに接続することができました。
なお、シークレットの新しいバージョンを作成してローテーションを行った場合は、以下のSQLを実行して、パスワードが新しいシークレットを参照するようにする必要があります。
ALTER USER database_username IDENTIFIED BY CREDENTIAL "credential_schema"."credential_name";
この例では、以下のSQLになります。
ALTER USER dbuser IDENTIFIED BY CREDENTIAL ADMIN.AZURE_KEYVAULT_CREDENTIAL;
参考情報
・Azureサービス・プリンシパルを使用したAzureリソースへのアクセス
・Create Users with Secret-Based Password Authentication
・Use Vault Secret Credential with Azure Key Vault







