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?

承認ワークフローによるOracle Databaseユーザーの時限的払い出し

Last updated at Posted at 2025-11-27

システムのアカウントの払い出しをワークフローの承認付きで自動化したいというのはよくある要件だと思います。Databaseの場合も同様に開発やメンテナンスのために一時的に払い出したい要件に対応する方法として、Access Governanceを組み合わせて実現することが可能です。まずは、こちらのスライドをご覧ください。

image.png

Access Governanceは、IDの権限管理・プロビジョニングを実現するサービスで、データベースを対象にすることも可能です。上記のスライドのようにユーザー自身でDBユーザーをリクエストして、承認ワークフローを経由して、払い出してもらうという一般的なセルフ・サービスのシナリオを実現させるための設定手順について紹介します。
以降の手順は、OCIのAdministratorsグループ相当の権限を保持しているアカウントで操作することを前提にしています。

事前準備

OCIのDefault Domainsに下記二つのユーザー(DBEMP, DBMGR)を作成し、それぞれでログインできることを確認

する
image.png

下記のポリシーを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は、ホームリージョンのみ作成可能
アイデンティティとセキュリティからクラウド・ガバナンスを選択し、サービス・インスタンスの作成をクリック
image.png

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

インスタンス作成後に、アクセス情報のURLをクリックする
image.png

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

①Oracle Cloud infrastructureを選択して次に
image.png

②好きな名前を入力して次に
image.png

③そのままで次に
image.png

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

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

⑥終了をクリック
image.png

右上のアクティブ化をクリックして実行
image.png

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

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

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

これで、Access Governanceのインスタンスの準備は完了です。次にOracle Databaseを対象に追加していきます

Oracle Databaseをオーケストレート済みシステムに追加する

自分のアカウントでAccess Governanceにログインし直し、オーケストレート済みシステムの追加をクリック
image.png

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

お好みの名前で
image.png

プライマリ所有者はデフォルトのままで
image.png

アカウントの処理方法はデフォルトのままで
image.png

接続するデータベースの情報を記入する。
データベースの簡易接続URL: jdbc:oracle:thin:@[host]:[port]:[sid]
ユーザー名: sys as sysdba
パスワード: sysのパスワード

image.png

※Autonomous Databaseの場合

Autonomous Databaseは、mTLS接続なのでOracle Walletが必要。まず、Autonomous DatabaseのWallet.zipをエージェントのディレクトリに解凍する。
簡易接続のURLの記述方法は下記。TNS_ADMINの/appの部分はコンテナのポインタになっているので、変えずに解凍したWalletのディレクトリ名を追記する

jdbc:oracle:thin:@ADBのサービス名?TNS_ADMIN=/app/{Walletのディレクトリ名}

最後にエージェントが生成されるので、ダウンロードする
image.png

エージェント(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を選択して、アクティブ化する
image.png

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

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

承認ワークフローの作成

ユーザー自身が権限のリクエスト・承認させるためのワークフローの定義を設定する

アクセス制御 -> 承認ワークフローの作成
image.png

+をクリックし、赤枠と同じ設定にして追加。DBMGRを承認者としている。単一承認者として作成されるので、そのまま次に
image.png

ワークフローの名前をつけて次に
image.png

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

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

赤枠の通りに選択して次に
image.png

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

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

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

これでひと通りの準備完了です

動作確認

DBEMPでログインし、メニューからアクセスのリクエストを選択し、アクセス・バンドルのリクエストを開始
image.png

デフォルトのまま次に
image.png

OracleResourceを選択して次に
image.png

リクエストする期間を指定して次に
image.png

適当な理由をいれて次に、最終レビューでリクエストを送信
image.png

リクエストが完了するとDBMGR(管理者)の承認待ちになる
image.png

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

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

DBEMPのメールアドレスに承認メールが届く
image.png

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

BaseDBリソースにあるDBEMPのパスワードを変更する
image.png

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のアイデンティティの詳細を表示させる。赤枠のアクセス・レビューの作成クリック
image.png

レビュー先を自分またはDBMGRにして作成
image.png

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

以上がAccess GovernanceでDatabaseのユーザー管理する基本的な設定です。今回紹介したのは、Access Governanceの一部の機能なので、実際に操作して慣れていきながら使用範囲を広げていくと良いかと思います。

また、Access Governance自体は、OCI IAM自体のユーザー・グループ管理をしたり、EBS, SAP, PeopleSoftといったアプリケーションを対象にした権限管理など幅広く使用することが可能です。

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?