G PostgreSQL監査データ収集リファレンス

PostgreSQLから監査データを収集する方法を学習します。

G.1 PostgreSQL監査データ収集の概要

PostgreSQLから監査データを収集する方法を学習します。

PostgreSQLは、多くの機能と組み合せてSQL言語を使用および拡張するオープン・ソース・オブジェクト・リレーショナル・データベース・システムです。最も複雑なデータ・ワークロードを安全に格納およびスケーリングします。PostgreSQLの原点はカリフォルニア大学バークレー校のPOSTGRESプロジェクトの一部であった1986年にさかのぼり、コア・プラットフォームでのアクティブな開発は30年を超えています。

PostgreSQLは、CSV形式で監査データを生成するように構成する必要があります。PostgreSQL監査拡張機能(またはpgaudit)は、PostgreSQLが提供する標準ロギング機能を使用して、詳細なセッションおよびオブジェクト監査ロギングを提供します。

監査収集では、PostgreSQLデータベースにpgaudit拡張機能をインストールする必要があります。Audit Vault Agentは、pgaudit拡張機能がインストールされ、PostgreSQLがCSV形式で監査データを生成するように構成されている場合にのみ、PostgreSQL監査イベントの収集をサポートします。

G.2 PostgreSQLのインストール

PostgreSQLをインストールする方法を学習します。

  1. 次のリンクのドキュメントを参照してください。
  2. 関連するPostgreSQLバージョンをインストールします。

G.3 PostgreSQLインストール後のステップ

PostgreSQLインストール後のステップを実行します。

PostgreSQLスーパーユーザー・パスワードの更新

デフォルトのスーパーユーザーpostgresは、PostgreSQLのインストール時に作成されます。postgresユーザーのパスワードを変更するには、次のコマンドを実行します。

sudo passwd postgres

PostgreSQL非スーパーユーザーの作成

データベースの作成に必要な権限を持つ新規ユーザーを作成し、パスワードを設定します。新しいユーザーを作成するには、次のコマンドを実行します。

sudo -u postgres createuser <new user name> -d -P

PostgreSQLデータベースでのroot権限の作成

PostgreSQLデータベースにpgaudit拡張機能をインストールするには、ロールrootが必要です。次のステップを実行します。

  1. 次のコマンドを実行して、ユーザーpostgresとしてログインします。

    sudo -u postgres psql
  2. 次のコマンドをpostgresコマンド・プロンプトで実行します。

    create role root superuser;
    alter user root with password <new password>;
    alter role root with login;
  3. 次のコマンドを実行してPostgreSQL構成ファイルの場所を検索し、postgresコマンド・プロンプトを終了します。構成ファイルの詳細は、このトピックの後半で更新されるため、ノートにとります。

    show config_file;
    exit;

サンプル・データベースの作成

  1. 新しく作成されたPostgreSQL非スーパーユーザーを使用してログインします。

  2. 次のコマンドを実行して、サンプル・データベースを作成します。

    createdb <new database name>
  3. 次のコマンドを実行して、新規作成したPostgreSQL非スーパーユーザーで新規作成したデータベースにログインします。

    psql <new database name>
  4. exitまたは\qコマンドを実行して、データベース・プロンプトを終了します。

PostgreSQLデータベースへのpgaudit拡張機能のインストール

  1. rootユーザーとしてログインし、次のコマンドを実行してPostgreSQL開発者ライブラリをインストールします。この項で使用するコマンドは、例としてPostgreSQL 11開発者ライブラリをインストールするためのものです。

    yum install postgresql11-devel
  2. pgaudit拡張をインストールするには、次のリンクのコンパイルおよびインストールに関する項に示すステップに従います。

    https://github.com/pgaudit/pgaudit

  3. rootユーザーとしてログインします。PostgreSQL構成ファイルで、shared_preload_librariesパラメータを更新してpgauditを含め、ファイルを保存します。

    shared_preload_libraries = 'pgaudit'
  4. rootユーザーとしてログインします。次のコマンドを実行して、PostgreSQLサービスを再起動します。

    /sbin/service postgresql-11 stop
    /sbin/service postgresql-11 start

PostgreSQLデータベースでのpgaudit監査ロギングの有効化

ノート:

すべてのPGAUDIT設定の詳細は、それぞれのドキュメントを参照してください。
  1. postgresユーザーとしてログインします。

    sudo -u postgres psql
  2. 新しく作成したデータベースの監査を有効にするには、postgresコマンド・プロンプトで次のコマンドを実行します。

    CREATE EXTENSION pgaudit;
    alter database <database name> set pgaudit.log = 'all';
    SET pgaudit.log = 'ALL';
    SET pgaudit.log_level = 'notice';
    SET pgaudit.log_client = ON;
    SET pgaudit.log_relation = ON;
    SET pgaudit.log_parameter = ON;
    SET pgaudit.log_catalog = ON;
    alter system set log_connections=on;
    alter system set log_disconnections=on;
    alter system set log_statement='all';
    alter system set pgaudit.log_parameter TO 'on';
    SELECT pg_reload_conf();

PostgreSQL構成ファイルの監査ロギング・パラメータの更新

ノート:

すべてのPostgresSQLロギング関連パラメータの詳細は、それぞれのドキュメントを参照してください。

rootユーザーとしてログインします。PostgreSQL構成ファイルを編集し、次のパラメータを次のように更新します。

log_destination = 'csvlog'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_min_messages = info
log_checkpoints = on
log_connections = on
log_disconnections = on
log_duration = on
log_error_verbosity = verbose
log_hostname = on
log_statement = 'all'
log_directory = '<full path of directory where log files need to be stored>'
log_file_mode = 0640

rootユーザーとしてログインし、PostgreSQLサービスを再起動します。次のコマンド例は、PosgreSQL 11用です。

/sbin/service postgresql-11 stop
/sbin/service postgresql-11 start

監査ログの生成

  1. 新規作成したPostgreSQL非スーパーユーザーとしてログインします。次に、次のコマンドを使用して、新しく作成したデータベースにログインします。

    psql <database name>
  2. コマンドを実行して表を作成し、表にデータを挿入し、表からデータを問い合せます。

  3. Oracle Linux 6のPostgreSQL 11 (例)インストールの場合、ログは次の場所にあります。

    /var/lib/pgsql/11/data/log/