はじめに
Autonomous AI Databaseで、シークレット・ベースのパスワード認証を使用したデータベース・ユーザーの作成が可能になったので検証してみました。
今回は、AWS Secrets Managerのシークレットを使用しました。
AWS Secrets Manager以外に、以下のようなボールトがサポートされます。
・Oracle Cloud Infrastructure Vault
・Azure Key Vault
・Google Cloud Secret Manager
注意
こちらの記事の内容はあくまで個人のメモ的な内容のため、こちらの内容を利用した場合のトラブルには一切責任を負いません。
また、こちらの記事の内容を元にしたOracleサポートへの問い合わせはご遠慮ください。
1. Autonomous AI DatabaseのOCIDの取得
Autonomous AI Databaseにadminユーザとして接続します。
user@mymac ~ % sqlplus admin@adb
SQL*Plus: Release 23.0.0.0.0 - Production on Fri Apr 24 10:08:19 2026
Version 23.3.0.23.09
Copyright (c) 1982, 2023, Oracle. All rights reserved.
Enter password:
Last Successful login time: Thu Apr 23 2026 12:14:42 +09:00
Connected to:
Oracle AI Database 26ai Enterprise Edition Release 23.26.2.1.0 - Production
Version 23.26.2.1.0
SQL>
以下のSQLを実行して、Autonomous AI DatabaseのOCIDを取得します。
SELECT JSON_VALUE(cloud_identity, '$.DATABASE_OCID') database_ocid FROM v$pdbs;
SQL> set linesize 100
SQL> SELECT JSON_VALUE(cloud_identity, '$.DATABASE_OCID') database_ocid FROM v$pdbs;
DATABASE_OCID
----------------------------------------------------------------------------------------------------
OCID1.AUTONOMOUSDATABASE.OC1.AP-TOKYO-1.ANXHILJRSSL65IQAUTFWPSNLBGBXSCLKWQ2HOQVAH2FBS6IFWWQQNHAS4I5A
SQL>
2. AWS ARNの有効化
DBMS_CLOUD_ADMIN.ENABLE_AWS_ARNプロシージャを使用して、Autonomous AI DatabaseのAWS ARNの有効化を有効化します。
BEGIN
DBMS_CLOUD_ADMIN.ENABLE_AWS_ARN(username => 'admin');
END;
/
SQL> BEGIN
2 DBMS_CLOUD_ADMIN.ENABLE_AWS_ARN(username => 'admin');
3 END;
4 /
PL/SQL procedure successfully completed.
SQL>
cloud_integrationsビューから、Autonomous AI DatabaseのAWS ARNに関する情報を取得します。
SELECT param_name, param_value FROM cloud_integrations
WHERE param_name LIKE 'aws%';
SQL> col param_name for a15
SQL> col param_value for a50
SQL> SELECT param_name, param_value FROM cloud_integrations
2 WHERE param_name LIKE 'aws%';
PARAM_NAME PARAM_VALUE
--------------- --------------------------------------------------
aws_user_arn arn:aws:iam::213420752344:user/oraclearn
SQL>
PARAM_VALUEの値が、Autonomous AI DatabaseのARNになります。
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@mymac ~ %
3. AWS Secrets Manager シークレットの作成
AWSコンソールでAWS Secrets Managerの「シークレット」にアクセスし、「新しいシークレットを保存する」をクリックします。
シークレットのタイプは「その他のシークレットのタイプ」を選択し、キー/値のペアはプレーンテキストをクリックして、データベース・ユーザーのパスワードに設定する文字列を入力します。
ここでは、「Demo#1Demo#1」という文字列を入力しました。
入力が完了したら「次」をクリックします。
シークレットの名前を入力します。
ここでは、シークレットの名前を「AWSSecret4ADB」としました。
設定内容を確認し、問題がなければ「保存」をクリックします。
シークレット「AWSSecret4ADB」が作成できました。
シークレット名のリンクをクリックします。
シークレットのARNを確認して、メモしておきます。
また、シークレットの値が正しく設定されているかを確認します。
4. AWS IAMロールの作成
Autonomous AI Databaseに対して、AWS Secrets Managerのシークレットへのアクセスを許可するためのIAMロールを作成します。
AWSコンソールでIAMの「ロール」にアクセスし、「ロールの作成」をクリックします。
外部IDに1.で取得したAutonomous AI DatabaseのOCIDを入力して、「次へ」をクリックします。
許可ポリシーに「AWSSecretsManagerClientReadOnlyAccess」を追加して、「次へ」をクリックします。

ロール名を入力します。
ここでは、ロール名を「ADB_Secret_Access_Role」としました。
許可ポリシーが正しく設定されているかを確認し、問題がなければ「ロールを作成」をクリックします。
ロールが作成されました。
ロールのARNを確認し、メモしておきます。
5. AWS IAMロールの信頼関係の編集
「信頼ポリシーの編集」をクリックします。
PrincipalのパラメータAWSの値を、2.で取得したAutonomous AI DatabaseのARNに書き換え、「ポリシーを更新」をクリックします。
6. AWSプリンシパル認証の有効化
Autonomous AI Databaseにadminユーザとして接続します。
user@mymac ~ % sqlplus admin@adb
SQL*Plus: Release 23.0.0.0.0 - Production on Fri Apr 24 10:08:19 2026
Version 23.3.0.23.09
Copyright (c) 1982, 2023, Oracle. All rights reserved.
Enter password:
Last Successful login time: Thu Apr 23 2026 12:14:42 +09: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プロシージャを使用して、AWSリソースにアクセスする際のプリンシパル認証を有効化します。
BEGIN
DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
provider => 'AWS',
params =>
JSON_OBJECT(
'aws_role_arn' value '3.で作成したAWS IAMロールのARN',
'external_id_type' value 'DATABASE_OCID'
)
);
END;
/
SQL> BEGIN
2 DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
3 provider => 'AWS',
4 params =>
5 JSON_OBJECT(
6 'aws_role_arn' value 'arn:aws:iam::************:role/ADB_Secret_Access_Role',
7 'external_id_type' value 'DATABASE_OCID'
8 )
9 );
10 END;
11 /
PL/SQL procedure successfully completed.
SQL>
7. AWS Secrets Managerを使用したVault Secretクレデンシャルの作成
DBMS_CLOUD.CREATE_CREDENTIALプロシージャを使用して、Vault Secretクレデンシャルを作成します。
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'AWS_SECRET_CREDENTIAL',
params => JSON_OBJECT(
'username' value 'DBユーザー名',
'secret_id' value 'シークレットのARN')
);
END;
/
ここでは、データベース・ユーザー「dbuser」の作成に使用する「AWS_SECRET_CREDENTIAL」という名前のVault Secretクレデンシャルを作成しました。
SQL> BEGIN
2 DBMS_CLOUD.CREATE_CREDENTIAL(
3 credential_name => 'AWS_SECRET_CREDENTIAL',
4 params => JSON_OBJECT(
5 'username' value 'dbuser',
6 'secret_id' value 'arn:aws:secretsmanager:ap-northeast-1:************:secret:Secret4ADB-H3rmIE')
7 );
8 END;
9 /
PL/SQL procedure successfully completed.
SQL>
Vault Secretクレデンシャル「AWS_SECRET_CREDENTIAL」が作成できました。
8. データベース・ユーザーの作成
7.で作成したVault Secretクレデンシャルを使用して、データベース・ユーザー「dbuser」を作成します。
CREATE USER database_username IDENTIFIED BY CREDENTIAL "credential_schema"."vault_credential_name";
SQL> CREATE USER dbuser IDENTIFIED BY CREDENTIAL ADMIN.AWS_SECRET_CREDENTIAL;
User created.
SQL>
データベース・ユーザー「dbuser」が作成できました。
作成したデータベース・ユーザー「dbuser」に、DWROLEロールを付与します。
GRANT DWROLE TO database_username;
SQL> GRANT DWROLE TO dbuser;
Grant succeeded.
SQL>
データベース・ユーザー「dbuser」にDWROLEロールが付与できました。
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@mymac ~ %
9. 動作確認
3.で作成したシークレット「AWSSecret4ADB」のシークレット値に入力した値(ここではDemo#1Demo#1)をパスワードに指定して、dbuserとしてAutonomous AI Databaseに接続してみます。
user@mymac ~ % sqlplus dbuser/Demo#1Demo#1@adb
SQL*Plus: Release 23.0.0.0.0 - Production on Fri Apr 24 12:35:52 2026
Version 23.3.0.23.09
Copyright (c) 1982, 2023, Oracle. All rights reserved.
Connected to:
Oracle AI Database 26ai Enterprise Edition Release 23.26.2.1.0 - Production
Version 23.26.2.1.0
SQL>
AWS Secret Managerのシークレット「AWSSecret4ADB」のシークレットの値をパスワードに使用して、dbuserとしてAutonomous AI データベースに接続することができました。
なお、シークレットの新しいバージョンを作成してローテーションを行った場合は、以下のSQLを実行して、パスワードが新しいシークレットを参照するようにする必要があります。
ALTER USER database_username IDENTIFIED BY CREDENTIAL "credential_schema"."credential_name";
この例では、以下のSQLになります。
ALTER USER dbuser IDENTIFIED BY CREDENTIAL ADMIN.AWS_SECRET_CREDENTIAL;
参考情報
・Amazonリソース・ネーム(ARN)を使用したAWSリソースへのアクセス
・Create Users with Secret-Based Password Authentication
・Use Vault Secret Credential with AWS Secrets Manager


















