4
2

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ユーザのパスワードをGoogle Cloud Secret Managerで管理する

4
Last updated at Posted at 2026-04-23

はじめに

Autonomous AI Databaseで、シークレット・ベースのパスワード認証を使用したデータベース・ユーザーの作成が可能になったので検証してみました。

今回は、Google Cloud Secret Managerのシークレットを使用しました。

Google Cloud Secret Manager以外に、以下のようなボールトがサポートされます。
・Oracle Cloud Infrastructure Vault
・Azure Key Vault
・AWS Secrets Manager

注意
こちらの記事の内容はあくまで個人のメモ的な内容のため、こちらの内容を利用した場合のトラブルには一切責任を負いません。
また、こちらの記事の内容を元にしたOracleサポートへの問い合わせはご遠慮ください。

1. Google Cloud Secret Manager シークレットの作成

Google Cloudコンソールからシークレットを作成します。

スクリーンショット 2026-04-23 11.19.30.png

シークレット名:MySecret
シークレットの値:Demo#1Demo#1

シークレットの値がDBユーザのパスワードになります。
スクリーンショット 2026-04-23 11.21.10.png

シークレットMySecretが作成されました。
スクリーンショット 2026-04-23 11.21.40.png

2. Google Service Accountの有効化

Autonomous AI Databaseにadminユーザとして接続します。

user@mymac ~ % sqlplus admin@adb

SQL*Plus: Release 23.0.0.0.0 - Production on Thu Apr 23 11:37:24 2026
Version 23.3.0.23.09

Copyright (c) 1982, 2023, Oracle.  All rights reserved.

Enter password: 
Last Successful login time: Tue Apr 14 2026 14:54:01 +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プロシージャを使用して、Googleサービス・アカウントを有効化します。

BEGIN
    DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH( provider => 'gcp' );
END;
/
SQL> BEGIN
  2      DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH( provider => 'gcp' );
  3  END;
  4  /

PL/SQL procedure successfully completed.

SQL>

以下のSQLで、Autonomous AI DatabaseのGoogleサービス・アカウントを確認します。

SELECT * FROM cloud_integrations WHERE param_name = 'gcp_service_account';
SQL> set linesize 150
SQL> col param_name for a20
SQL> col param_value for a75
SQL> SELECT * FROM cloud_integrations WHERE param_name = 'gcp_service_account';

PARAM_NAME	         PARAM_VALUE
-------------------- ---------------------------------------------------------------------------
gcp_service_account  GCP-SA-42098-60526@gcp-pa-project1.iam.gserviceaccount.com

SQL>

PARAM_VALUEの値がAutonomous AI Databaseのサービス・アカウントです。

3. Autonomous AI Databaseに対するロールの割当て

Google Cloudコンソールのシークレットの詳細画面で「権限」タブに移動し、「アクセスを許可」をクリックします。

スクリーンショット 2026-04-23 11.51.02.png

「新しいプリンシパル」に2.で取得したAutonomous AI Databaseのサービス・アカウントを追加し、「Secret Managerのシークレット アクセサー」を割り当てます。

スクリーンショット 2026-04-23 11.58.41.png

Autonomous AI Databaseに、このシークレットに対する「Secret Managerのシークレット アクセサー」ロールが割り当てられました。

スクリーンショット 2026-04-23 11.59.15.png

4. Google Cloud Secret Managerを使用したVault Secretクレデンシャルの作成

DBMS_CLOUD.CREATE_CREDENTIALプロシージャを使用して、Vault Secretクレデンシャルを作成します。

BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name  => 'クレデンシャル名',
        params => JSON_OBJECT(
                   'username'       value 'DBユーザ名',
                   'secret_id'      value 'シークレット名',
                   'gcp_project_id' value 'Google CloudのプロジェクトID')
    );
END;
/

ここでは、「GOOGLECLOUD_SECRET_CREDENTIAL」という名前のクレデンシャルを作成します。

SQL> BEGIN
  2      DBMS_CLOUD.CREATE_CREDENTIAL(
  3          credential_name  => 'GOOGLECLOUD_SECRET_CREDENTIAL',
  4          params => JSON_OBJECT(
  5                     'username'       value 'dbuser',
  6                     'secret_id'      value 'MySecret',
  7                     'gcp_project_id' value 'xxxxx-xxxxx-xxxxxx')
  8      );
  9  END;
 10  /

PL/SQL procedure successfully completed.

SQL>

5. データベース・ユーザーの作成

4.で作成したVault Secretクレデンシャルを使用して、データベース・ユーザー「dbuser」を作成します。

CREATE USER database_username IDENTIFIED BY CREDENTIAL "credential_schema"."vault_credential_name";
SQL> CREATE USER dbuser IDENTIFIED BY CREDENTIAL ADMIN.GOOGLECLOUD_SECRET_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@mymac ~ %

6. 動作確認

1.で作成したシークレット「MySecret」の「シークレットの値」に入力した値(ここでは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 Thu Apr 23 12:22:30 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>

Google Cloud Secret Managerのシークレット「MySecret」のシークレットの値をパスワードに使用して、dbuserとしてAutonomous AI データベースに接続することができました。

なお、シークレットの新しいバージョンを作成してローテーションを行った場合は、以下のSQLを実行して、パスワードが新しいシークレットを参照するようにする必要があります。

ALTER USER database_username IDENTIFIED BY CREDENTIAL "credential_schema"."credential_name";

この例では、以下のSQLになります。

ALTER USER dbuser IDENTIFIED BY CREDENTIAL ADMIN.GOOGLECLOUD_SECRET_CREDENTIAL;

参考情報

Googleサービス・アカウントを使用したGoogle Cloud Platformリソースへのアクセス
Create Users with Secret-Based Password Authentication
Use Vault Secret Credential with GCP Secret Manager

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?