105: 拡張機能を管理する
OCI Database with PostgreSQLでは、PostgreSQLの構成を使用して、DBシステムで利用できる拡張機能を管理できます。
このチュートリアルでは、監査ログを出力する拡張機能 pgaudit を例に、OCIコンソールで構成内の拡張機能を有効化し、監査ログをOCI Loggingサービスで確認します。
所要時間 : 約15分 (構成変更の反映待ち時間を含む)
前提条件 :
- Oracle Cloud Infrastructure の環境(無料トライアルでも可) と、管理権限を持つユーザーアカウントがあること
- OCIコンソールにアクセスして基本を理解する - Oracle Cloud Infrastructureを使ってみよう(その1) を完了していること
- クラウドに仮想ネットワーク(VCN)を作る - Oracle Cloud Infrastructureを使ってみよう(その2) を完了していること
- インスタンスを作成する - Oracle Cloud Infrastructureを使ってみよう(その3) を完了していること
- 101: PostgreSQLを最小構成で作成し、データベースに接続する を完了していること
注意 : チュートリアル内の画面ショットについては Oracle Cloud Infrastructure の現在のコンソール画面と異なっている場合があります。
目次:
- 1. pgauditと拡張機能管理の概要
- 2. 現在の構成を確認する
- 3. pgauditを有効化した構成を作成する
- 4. 構成をDBシステムに反映する
- 5. pgaudit拡張機能を有効化する
- 6. OCI LoggingでPostgreSQLログを有効化する
- 7. 監査ログを生成するSQLを実行する
- 8. 監査ログを確認する
pgaudit は、PostgreSQLで実行されたSQL文を監査ログとして出力するための拡張機能です。監査対象を設定することで、DDL、読取り、書込みなどの操作をログに記録できます。
OCI Database with PostgreSQLでは、DBシステムに関連付けられた構成を使用して、データベースで利用できるPostgreSQL拡張機能を管理します。一部の拡張機能は、データベース内で CREATE EXTENSION を実行する前に、構成の 拡張機能の構成 セクションで有効化しておく必要があります。
このチュートリアルでは、以下の流れで pgaudit を設定します。
- 現在のDBシステム構成を確認する
- 構成をコピーし、拡張機能リストから
pgauditを選択する pgauditを有効化した構成をDBシステムに反映するCREATE EXTENSION pgaudit;を実行する- OCI LoggingサービスでPostgreSQLログを有効化する
- 監査対象のSQLを実行する
- Loggingサービスで監査ログを検索する
PostgreSQLログを有効化する前に実行したSQLの監査ログは確認できない場合があります。そのため、このチュートリアルではPostgreSQLログを有効化した後に、監査対象のSQLを実行します。
101で作成したDBシステムに関連付けられている構成を確認します。
-
コンソールメニューから データベース → PostgreSQL → DBシステム を選択します。
-
101で作成したDBシステムをクリックします。ここでは
TestPostgreSQLを選択します。 -
DBシステムの詳細画面で、構成 または 構成および拡張 に関連する項目を確認します。
-
DBシステムに関連付けられている構成名をクリックします。
-
構成の詳細画面で、構成の内容を確認します。

既存の構成を直接編集するのではなく、構成をコピーして pgaudit を有効化した新しい構成を作成します。その後、新しい構成をDBシステムに適用します。
既存の構成をコピーし、pgaudit を有効化した構成を作成します。
-
DBシステムに関連付けられている構成の詳細画面で、構成および拡張機能のコピー をクリックします。

-
構成のコピー パネルで、以下の項目を入力します。
- 名前 - 任意の名前を入力します。ここでは
TestPostgreSQL-pgaudit-configと入力します。 - 説明 - 構成の説明を入力します。ここでは
pgaudit設定用と入力します。(入力は任意です)

- 名前 - 任意の名前を入力します。ここでは
-
拡張機能の構成 セクションを確認します。

-
PostgreSQL拡張機能 リストから
pgauditを選択します。すでに他の拡張機能が選択されている場合は、既存の選択を残したうえで
pgauditを追加します。
-
構成パラメータで
pgaudit.logを設定します。ここでは例として、以下を設定します。read, write, ddlpgaudit.logは通常のPostgreSQL接続ユーザーでは変更できないため、psql接続後にSET pgaudit.log = ...を実行しても権限エラーになります。監査対象はDBシステムに適用する構成で設定します。 -
作成 をクリックします。
-
作成した構成の詳細画面で、
pgauditが拡張機能として含まれていること、pgaudit.logに指定した値が設定されていることを確認します。
監査対象を広く設定すると、出力されるログ量が増えます。学習環境では必要なSQLだけを実行し、確認後は不要なログ出力設定を戻すことを検討してください。
作成した構成をDBシステムに反映します。
-
コンソールメニューから データベース → PostgreSQL → DBシステム を選択します。
-
101で作成したDBシステムをクリックします。
-
DBシステムの詳細画面で、構成を変更する操作をクリックします。
-
pgaudit用に作成した構成を選択します。
-
変更の保存 をクリックします。
-
DBシステムの状態が更新中になる場合は、アクティブに戻るまで待ちます。

構成の変更により、DBシステムが一時的に更新中になる場合があります。コンソールで再起動や適用待ちの表示が出た場合は、表示内容に従って構成変更を反映してください。
コンピュート・インスタンスからDBシステムに接続し、pgaudit 拡張機能を有効化します。
-
101で使用したコンピュート・インスタンスにSSHで接続します。
-
101で使用した接続コマンドを実行し、DBシステムに接続します。
psql "sslmode=verify-full sslrootcert=$HOME/dbsystem.pub host=<DBシステムのFQDN> dbname=postgres user=postgres" -
pgauditが利用可能な拡張機能として表示されることを確認します。SELECT name, default_version, installed_version FROM pg_available_extensions WHERE name = 'pgaudit'; -
pgaudit拡張機能を作成します。CREATE EXTENSION IF NOT EXISTS pgaudit; -
拡張機能が作成されたことを確認します。
SELECT extname, extversion FROM pg_extension WHERE extname = 'pgaudit'; -
pgaudit.logの設定値を確認します。SHOW pgaudit.log;OCIコンソールの構成で設定した以下の値が出力されることを確認します。
read, write, ddl
OCI Loggingサービスで、DBシステムのPostgreSQLログを有効化します。
OCI Database with PostgreSQLのサービス・ログは、Loggingサービスのログ・ページから有効化します。ログを有効化する際は、サービスとして PostgreSQL、ログ・カテゴリとして PostgreSQLデータベース・ログ を選択します。
-
コンソールメニューから オブザーバビリティおよび管理 → ロギング → ログ を選択します。
-
アクション メニューから サービス・ログの有効化 を選択します。
リソース・ログの有効化 パネルが開きます。
-
リソースの指定で、以下の項目を選択します。
- リソース・コンパートメント - DBシステムを作成したコンパートメントを選択します。
- サービス -
PostgreSQLを選択します。 - リソース - 101で作成したDBシステムを選択します。ここでは
TestPostgreSQLを選択します。

-
ログの構成で、以下の項目を選択または入力します。
- ログ・カテゴリ -
PostgreSQLデータベース・ログを選択します。 - ログ名 - 任意の名前を入力します。ここでは
postgresql-db-logとします。 - コンパートメント - ログを作成するコンパートメントを選択します。
- ログ・カテゴリ -
-
拡張オプション を開き、ログ・グループ を指定します。
既存のログ・グループがある場合は選択します。ログ・グループの候補が表示されず、
一致する文字列が見つかりませんでした。と表示される場合は、対象コンパートメントにログ・グループがまだ作成されていません。この場合は、ログ・グループ のページで、対象のコンパートメントを選択の上で、 新規ログ・グループの作成 を選択し、ログ・グループ名を入力します。ここではpostgresql-log-groupとします。 -
有効化 をクリックします。
-
作成したPostgreSQLログが有効になったことを確認します。
ログの有効化後、Loggingサービスにログが表示されるまで数分かかる場合があります。
pgaudit の監査対象になるSQLを実行します。
-
テスト用の表を作成します。
CREATE TABLE IF NOT EXISTS audit_test ( id integer PRIMARY KEY, message text NOT NULL ); -
データを登録します。
INSERT INTO audit_test (id, message) VALUES (1, 'pgaudit test') ON CONFLICT (id) DO UPDATE SET message = EXCLUDED.message; -
データを検索します。
SELECT * FROM audit_test; -
psqlを終了します。\q
Loggingサービスで、7章で実行したSQLが監査ログとして出力されていることを確認します。
-
コンソールメニューから オブザーバビリティおよび管理 → ロギング → ログ を選択します。
-
6章でログを作成したコンパートメントを選択します。
DBシステムのコンパートメントとログ・グループのコンパートメントが異なる場合は、ログ・グループを作成したコンパートメントを選択します。
-
6章で作成したPostgreSQLログをクリックします。ここでは
postgresql-db-logを選択します。 -
ログの探索 を開きます。
-
検索期間を、7章でSQLを実行した時間帯を含むように設定します。
-
検索条件に
CREATEを指定して検索します。 -
CREATE TABLEに対応する監査ログが表示されることを確認します。
監査ログが表示されない場合は、以下を確認してください。
pgauditの構成変更がDBシステムに反映されていることCREATE EXTENSION pgaudit;が実行済みであることSHOW pgaudit.log;でread, write, ddlが表示されること- PostgreSQLログを有効化した後に監査ログ生成用SQLを実行していること
- 検索期間がSQLを実行した時刻を含んでいること
これで、この章の作業は終了です。
この章では、OCI Database with PostgreSQLで pgaudit を有効化し、監査ログをOCI Loggingサービスで確認しました。