〜を使用したログ記録 pgaudit

PostgreSQL 監査拡張機能(pgaudit )は、 IBM Cloud® Databases for PostgreSQL の展開環境において、セッションログの記録機能を有効にします。 監査ログを表示するには、 ログ記録を 有効にし Cloud Databases、 ログ送信権限を付与 するための認証 S2S 作成手順を完了 IBM® Cloud Logs していることを確認してください。

セッション・ログ記録

デフォルトではセッション・ログ記録はオフです。 特定の監査イベントタイプのグループについて、すべてのアクティビティを記録するセッションログ設定を有効にすることができます。 セッション・ログ記録は、DB クラスター全体に対して有効になり、特定のイベント・タイプに対して on または off のいずれかになります。

イベント・タイプ

セッション・ログ記録はイベント・タイプごとに構成されます。 すべてのバージョンでサポートされるイベント・タイプは次のとおりです。

  • FUNCTION
  • ROLE
  • DDL
  • READ
  • 書き込み
  • MISC
  • MISC_SET
  • NONE(ロギングを無効にする)

細については、 pgauditを参照してください。

pgaudit のセッションログ記録を有効にする

pgaudit のセッションログ記録を有効にするには、管理者ユーザーとして接続し、適切なイベントパラメータを指定して set_pgaudit_session_logging 関数を呼び出してください。 セッション・ログ記録はデータベース内で直接有効になり、API アクセスも CLI アクセスも提供されません。

例えば、DDL および ROLE を有効にするには、以下を呼び出します。

SELECT public.set_pgaudit_session_logging(current_database(),'{ddl, role}');

current_database()関数の代わりに dbname

pgaudit のユーザーログ機能を有効にする

pgaudit のユーザーログ機能を有効にするには、管理者ユーザーとして接続し、適切なイベントパラメータを指定して set_pgaudit_user_logging 関数を呼び出してください。 ユーザーログは、データベース内のすべてのユーザーではなく、特定のユーザーに対して有効になります。

例えば、READとWRITEを有効にするには、以下のコマンドを使用する:

SELECT public.set_pgaudit_user_logging(<CREATED USER>,'{read, write}');

pgaudit のデータベースロギングを有効にする

pgaudit データベース固有のロギングを有効にするには、管理者ユーザーとして接続し、適切なイベントパラメータを指定して set_pgaudit_database_logging 関数を呼び出してください。 インスタンス内で複数のデータベースが利用可能な場合、データベース・ロギングは特定のデータベースに対して有効になります。

例えば、current_databaseでDDLとROLEを有効にするには、以下のコマンドを使用する:

SELECT public.set_pgaudit_database_logging(current_database(),'{ddl, role}');

または

SELECT public.set_pgaudit_database_logging('sampledatabase','{read, write, ddl}');

後続の呼び出しでは、既存の構成が置き換えられます。追加は行われません。 たとえば、その後 SELECT public.set_pgaudit_session_logging('{misc}'); を呼び出すと、 misc のみがログに記録され、 ddl および role は無効化されます。

無効化 pgaudit

監査ログの記録を無効にするには、 none を指定して同じ関数を呼び出してください。 以下に例を示します。

SELECT public.set_pgaudit_session_logging(current_database(),'{none}');

監査レベルの変更は、データベース・アクティビティーを中断せずに関数を呼び出すと、すぐに行われます。

監査ログ

監査イベントは、次の形式で IBM® Cloud Logs Routing に表示されます。

LOG: AUDIT: SESSION,1,1,DDL,CREATE TABLE,,,create table f2 (id int);,<not logged>

詳しくは、 pgaudit フォーマットを参照。

現在のログ・レベルを表示する場合は、次のコマンドを実行します。

show pgaudit.log;