システムのアカウントの払い出しをワークフローの承認付きで自動化したいというのはよくある要件だと思います。Databaseの場合も同様に開発やメンテナンスのために一時的に払い出したい要件に対応する方法として、Access Governanceを組み合わせて実現することが可能です。まずは、こちらのスライドをご覧ください。
Access Governanceは、IDの権限管理・プロビジョニングを実現するサービスで、データベースを対象にすることも可能です。上記のスライドのようにユーザー自身でDBユーザーをリクエストして、承認ワークフローを経由して、払い出してもらうという一般的なセルフ・サービスのシナリオを実現させるための設定手順について紹介します。
以降の手順は、OCIのAdministratorsグループ相当の権限を保持しているアカウントで操作することを前提にしています。
事前準備
OCIのDefault Domainsに下記二つのユーザー(DBEMP, DBMGR)を作成し、それぞれでログインできることを確認
下記のポリシーをin tenancyで作成する
allow resource agcsgovernanceinstance agcs-rp to inspect all-resources in tenancy
allow resource agcsgovernanceinstance agcs-rp to manage domains in tenancy
allow resource agcsgovernanceinstance agcs-rp to read audit-events in tenancy
allow resource agcsgovernanceinstance agcs-rp to read objectstorage-namespace in tenancy
allow resource agcsgovernanceinstance agcs-rp to manage policies in tenancy
コンピュート・インスタンスをパブリック・サブネットに作成する。最小シェイプでOK。
コンピュート・インスタンスは、エージェントをインストールして、Access GovernanceのエンドポイントとOracle Databaseに簡易接続でそれぞれアクセスできる必要がある。
BaseDBを最小シェイプで作成する。サブネットはどちらでもOK。(Autonomous Databaseでも良いが、Access Governanceに登録する際に必要なWalletの設定など注意が必要)
オンプレミスのOracle Databaseを対象にしたい場合は、インターネットと通信可能かつDatabaseにもアクセス可能なエージェントのホストを一つ用意する。
Access Governanceのインスタンス作成
Access Governanceは、ホームリージョンのみ作成可能
アイデンティティとセキュリティからクラウド・ガバナンスを選択し、サービス・インスタンスの作成をクリック

Oracleワークロードのアクセス・ガバナンスを選択してサービス・インスタンスの作成

まず最初にOCIのDefault Domainを追加する設定を行う。開始をクリック

①Oracle Cloud infrastructureを選択して次に

④予期せぬアカウントの削除防止のために、デフォルト削除から無効化に変更しておく

⑤テナンシーのOCIDとホームリージョンを入力し、DomainsはDefault Domainを選択する。必要なOCIポリシーは設定しなくてよい。※今回は、Default Domainがすぐ選択できるように準備段階でtenancyのポリシーを作成しているため
結合テストをチェックして、OKであれば追加をクリック

アクティブ化実行後、左上のアイコンからサービス管理 -> オーケストレート済みシステムをクリック。作成したOCIをクリックし、下記のようにValidateとFull Data Loadが成功していればOK


サービス管理 -> アイデンティティの管理を選択し、含められる名前付きアイデンティティをクリック。自身のアカウントと、DBEMP、DBMGRを選択して、保存をクリック。請求に関する確認メッセージが表示されるので、確認をクリック。

右上のユーザー・アイコンからサイン・アウトし、上記のとおりアイデンティティを追加してから10分程度待ってから、DBEMPおよびDBMGRそれぞれで Access Governanceにアクセスできるか確認する。※このページへのアクセス権がありません。システム管理者に連絡してください等のメッセージが出力する場合は、もうしばらく待つ。

これで、Access Governanceのインスタンスの準備は完了です。次にOracle Databaseを対象に追加していきます
Oracle Databaseをオーケストレート済みシステムに追加する
自分のアカウントでAccess Governanceにログインし直し、オーケストレート済みシステムの追加をクリック

データベース・ユーザ管理(Oracle Database)を選択して次に

接続するデータベースの情報を記入する。
データベースの簡易接続URL: jdbc:oracle:thin:@[host]:[port]:[sid]
ユーザー名: sys as sysdba
パスワード: sysのパスワード
※Autonomous Databaseの場合
Autonomous Databaseは、mTLS接続なのでOracle Walletが必要。まず、Autonomous DatabaseのWallet.zipをエージェントのディレクトリに解凍する。
簡易接続のURLの記述方法は下記。TNS_ADMINの/appの部分はコンテナのポインタになっているので、変えずに解凍したWalletのディレクトリ名を追記する
jdbc:oracle:thin:@ADBのサービス名?TNS_ADMIN=/app/{Walletのディレクトリ名}
エージェント(BaseDB1.zip)をコンピュート・インスタンスにインストールする
#SELinux&Firewall無効化
sudo setenforce 0
sudo vi /etc/selinux/config --> SELINUX=disabled
sudo systemctl stop firewalld
sudo systemctl disable firewalld
#JDK11のインストール
sudo rpm -ivh jdk-11.0.28_linux-x64_bin.rpm
#podmanのインストール
sudo yum install podman
#Agentのセッションを永続化させる
sudo loginctl enable-linger opc
#Agentディレクトリ作成し、エージェント(BaseDB1.zip)をディレクトリ下に配置する
mkdir /home/opc/agagent
cd /home/opc/agagent
#エージェント・インストール
curl https://raw.githubusercontent.com/oracle/docker-images/main/OracleIdentityGovernance/samples/scripts/agentManagement.sh -o agentManagement.sh ; sh agentManagement.sh --volume /home/opc/agagent --agentpackage /home/opc/agagent/BaseDB1.zip --agentid BaseDB1 --install
#エージェント起動
sh agentManagement.sh --volume /home/opc/agagent --start
INFO: Using /home/opc/agagent for Volume.
INFO: Starting Agent
cat: /home/opc/agagent/data/conf/config.properties: No such file or directory
INFO: Starting new container.
812a8e74a03c0604a44b48dfab1ac83326e98669468d727d67b33945ed7d9922
####### # ##### #
# # # # # # # # #### ###### # # #####
# # # # # # # # # # ## # #
# # # # # #### # # # ##### # # # #
# # ####### # # ####### # ### # # # # #
# # # # # # # # # # # # ## #
####### # # ##### # # #### ###### # # #
Validating AGCS Agent configuration.
Agent Configuration
------------------------------
Agent ID......................BaseDB1
Agent Hosted on...............812a8e74a03c
Agent Wallet Directory......../app/data/wallet
Agent Host Current time.......2025-11-26 08:30:06 UTC
Successfully completed validation of AGCS Agent configuration.
Agent Id : BaseDB1
Container Runtime : podman version 4.9.4-rhel
Install Location : /home/opc/agagent
Agent Package used : /home/opc/agagent/BaseDB1.zip
Agent Version : 0.1.342
Logs directory : /home/opc/agagent/data/logs
INFO: Logs directory: /home/opc/agagent/data/logs
INFO: You can monitor the agent BaseDB1 from the Access Governance Console.
エージェントのインストール完了後、オーケストレート済みシステムからBaseDB1を選択して、アクティブ化する

ValidateからData Loadまで完了していればOK

接続エラーで失敗している場合は、オーケストレート済みシステムからBaseDB1の統合管理を選択し、統合設定の管理で接続を見直す


承認ワークフローの作成
ユーザー自身が権限のリクエスト・承認させるためのワークフローの定義を設定する
+をクリックし、赤枠と同じ設定にして追加。DBMGRを承認者としている。単一承認者として作成されるので、そのまま次に

プライマリ所有者はデフォルトのままで、最終レビューで公開をクリック

アクセス制御 -> アクセス・バンドルを選択し、アクセス・バンドルの作成をクリック

CREATES SESSIONとRESOURCEロールを選択して次に

プライマリ所有者はDBMGRを指定し、時間制限は好きな期間で設定

アクセスバンドルの名前はOracleResource、Authentication typeは、PASSWORDを指定する。以下は作成されるDBユーザーの基本情報、権限とロールのadmin optionはお好みで。最終レビューで作成する

これでひと通りの準備完了です
動作確認
DBEMPでログインし、メニューからアクセスのリクエストを選択し、アクセス・バンドルのリクエストを開始

Access GovernanceからDBMGRのEメールアドレスに承認リクエストのメールが送信されているので、DBEMPをサインアウトしてからリンクをクリックする

DBMGRでログインし、DBEMPのリクエスト内容を確認。時間設定の変更や理由を確認して、承認をクリック。

承認メールから5分程度でDBアカウントが作成されたメールが届く。再度、リンクをクリックしてDBEMPでAccess Governanceにログインする

BaseDBにDBEMPでログインし、RESOURCEロールが付与されていればOK
$ sqlplus DBEMP/xxxx@xxxx:1521/xxxx
Connected to:
Oracle AI Database 26ai EE High Perf Release 23.26.0.0.0 - for Oracle Cloud and Engineered Systems
Version 23.26.0.0.0
SQL> SELECT GRANTED_ROLE FROM USER_ROLE_PRIVS;
GRANTED_ROLE
--------------------------------------------------------------------------------
RESOURCE
これで期限までDBEMPのユーザーは使用できる。また、期限切れが近づくとメールが通知され、延長申請もリクエストすることが可能。期限が過ぎれは自動的に削除される
強制的に権限を取り消したい場合は、Access Governanceの管理者アカウントでログインし、企業規模ブラウザからDBEMPのアイデンティティの詳細を表示させる。赤枠のアクセス・レビューの作成クリック

アクセス・レビューから自分のアクセス・レビューを選択し、×(取り消し)をクリックで権限の取り消し

以上がAccess GovernanceでDatabaseのユーザー管理する基本的な設定です。今回紹介したのは、Access Governanceの一部の機能なので、実際に操作して慣れていきながら使用範囲を広げていくと良いかと思います。
また、Access Governance自体は、OCI IAM自体のユーザー・グループ管理をしたり、EBS, SAP, PeopleSoftといったアプリケーションを対象にした権限管理など幅広く使用することが可能です。






















