2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Autonomous AI Database:DBユーザのパスワードをAWS Secrets Managerで管理する

2
Posted at

はじめに

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の「シークレット」にアクセスし、「新しいシークレットを保存する」をクリックします。

スクリーンショット 2026-04-24 13.30.29.png

シークレットのタイプは「その他のシークレットのタイプ」を選択し、キー/値のペアはプレーンテキストをクリックして、データベース・ユーザーのパスワードに設定する文字列を入力します。
ここでは、「Demo#1Demo#1」という文字列を入力しました。

入力が完了したら「次」をクリックします。

スクリーンショット 2026-04-24 13.26.32.png

シークレットの名前を入力します。
ここでは、シークレットの名前を「AWSSecret4ADB」としました。

スクリーンショット 2026-04-24 13.27.12.png

今回、ローテーションは何も設定しませんでした。
スクリーンショット 2026-04-24 11.53.24.png

設定内容を確認し、問題がなければ「保存」をクリックします。

スクリーンショット 2026-04-24 13.27.37.png

スクリーンショット 2026-04-24 13.27.51.png

シークレット「AWSSecret4ADB」が作成できました。

スクリーンショット 2026-04-24 13.28.13.png

シークレット名のリンクをクリックします。

スクリーンショット 2026-04-24 13.28.13.png

シークレットのARNを確認して、メモしておきます。
また、シークレットの値が正しく設定されているかを確認します。

スクリーンショット 2026-04-24 13.28.54.png

4. AWS IAMロールの作成

Autonomous AI Databaseに対して、AWS Secrets Managerのシークレットへのアクセスを許可するためのIAMロールを作成します。

AWSコンソールでIAMの「ロール」にアクセスし、「ロールの作成」をクリックします。

スクリーンショット 2026-04-24 11.01.33.png

外部IDに1.で取得したAutonomous AI DatabaseのOCIDを入力して、「次へ」をクリックします。

スクリーンショット 2026-04-24 11.22.00.png

許可ポリシーに「AWSSecretsManagerClientReadOnlyAccess」を追加して、「次へ」をクリックします。
スクリーンショット 2026-04-24 11.15.14.png

ロール名を入力します。
ここでは、ロール名を「ADB_Secret_Access_Role」としました。

スクリーンショット 2026-04-24 11.22.24.png

許可ポリシーが正しく設定されているかを確認し、問題がなければ「ロールを作成」をクリックします。

スクリーンショット 2026-04-24 11.22.48.png

ロールが作成されました。

ロール名のリンクをクリックします。
スクリーンショット 2026-04-24 11.23.02.png

ロールのARNを確認し、メモしておきます。

スクリーンショット 2026-04-24 11.35.19.png

5. AWS IAMロールの信頼関係の編集

「信頼関係」のタブに移動します。
スクリーンショット 2026-04-24 11.35.19のコピー2.png

「信頼ポリシーの編集」をクリックします。

スクリーンショット 2026-04-24 11.35.36.png

PrincipalのパラメータAWSの値を、2.で取得したAutonomous AI DatabaseのARNに書き換え、「ポリシーを更新」をクリックします。

スクリーンショット 2026-04-24 11.40.17.png

ロールの信頼ポリシーが更新されました。
スクリーンショット 2026-04-24 11.42.22.png

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

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?