Linux系PostgreSQLの前提条件

    Linux系PostgreSQLの前提条件


    記事の要約

    Linux系OSで動作するPostgreSQLには、以下の前提条件があります。

    ※ID管理が〇になっている項目は、ID管理の機能の前提条件になります。ログが〇になっている項目は、アクセスログ管理のログ自動収集機能、または、ログ自動収集機能で収集したアクセスログ(ログインログ・ログアウトログ・suログ・ログイン失敗ログ)で出力するレポートの前提条件になります。

    No

    条件

    対象機能

    ID

    ログ

    1

    PostgreSQLの監査ログを収集する場合は、syslogを使用してPostgreSQLが動作しているOS上にテキストで出力されている事。
    詳細は以下を参照してください。
    PostgreSQL監査ログの出力設定
    PostgreSQL監査ログのsyslog設定
    ログローテートの設定

    -

    PostgreSQL監査ログの出力設定

    PostgreSQL監査ログを収集するためには下記の設定が必要です。
    設定は、データベースごとに必要です。

    1.PostgreSQL監査ログの出力設定を変更します。
    viなどのテキストファイル編集ツールでpostgresql.confを開き、以下の内容を設定してください。

    変更内容

    No

    変更が必要な設定項目

    変更内容

    1

    log_destination

    「'syslog'」固定です。

    2

    syslog_facility

    syslog出力時のfacilityを設定します。
    ※facilityはサーバ運用ポリシーに合わせて適切なものを設定してください。

    3

    log_min_messages

    メッセージ階層が「LOG」のログを出力するよう設定します。

    4

    log_connections

    「on」固定です。

    5

    log_disconnections

    「on」固定です。

    6

    log_line_prefix

    「'SessionID=<%c> '」固定です。

    7

    lc_messages

    「lc_messages = 'C'」または
    「lc_messages = 'en_US.UTF-8'」固定です。

    変更後例

    ・・・・・
    # - Where to Log -
    log_destination = 'syslog'
    ・・・・・
    # These are relevant when logging to syslog:
    syslog_facility = 'LOCAL1'
    ・・・・・
    # - When to Log -
    #client_min_messages = notice
    log_min_messages = info
    #log_min_error_statement = error
    ・・・・・
    log_connections = on
    log_disconnections = on
    #log_duration = off
    #log_error_verbosity = default    # terse, default, or verbose messages
    #log_hostname = off
    log_line_prefix = 'SessionID=<%c> '
    ・・・・・
    lc_messages = 'C'
    ・・・・・

    2.postgresql.confを保存後、PostgreSQLを再起動します。

    以上で、PostgreSQLの監査ログの出力設定は完了です。
    続いて、出力したPostgreSQLの監査ログのsyslog設定を行います。

    PostgreSQL監査ログのsyslog設定

    PostgreSQL監査ログをsyslogに出力するための設定方法について説明します。

    PostgreSQL監査ログの出力設定』の手順1で設定した[syslog_facility]と[log_min_messages]の内容をsyslog設定に反映します。以下にRed Hat Enterprise Linux 7 標準のrsyslogdを例に説明します。

    1.PostgreSQL監査ログをPostgreSQLがインストールされているサーバのsyslogへ出力する設定をします。
    viなどのテキストファイル編集ツールで/etc/rsyslog.confを開き、以下の内容を設定してください。

    /etc/rsyslog.confへ設定する内容

    [facility].[priority] <ログの出力先パス>

    ※[facility]は『PostgreSQL監査ログの出力設定』で「syslog_facility」に設定したものを入力してください。
    ※[priority]『PostgreSQL監査ログの出力設定』で「log_min_messages」に設定したものと紐づく値を入力してください。

    No

    PostgreSQL監査ログの出力設定』で設定したpriority

    紐づく値

    1

    DEBUG1..DEBUG5

    DEBUG

    2

    INFO

    INFO

    3

    NOTICE

    NOTICE

    4

    WARNING

    NOTICE

    5

    ERROR

    WARNING

    6

    LOG

    INFO

    ※<ログの出力先パス>はサーバ運用ポリシーに合わせて適切なものを設定してください。
    ※<ログの出力先パス>のパスの最大文字数は80文字です。
    ローテートファイルパスも最大文字数は80文字です。余裕を持って設定してください。
    ※<ログの出力先パス>はファイルが存在している必要があります。存在しない場合は、touchコマンドでファイルを作成してください。
    ※設定値の区切り文字は1つ以上の空白かタブです。空白を使用してsyslog出力が正常に行われない場合はタブを使用してください。

    記入例:

    LOCAL1.INFO /var/log/postgres_audit

    2.<ログの出力先パス>にファイルが存在しない場合は、以下のコマンドを実行しファイルを作成してください。

    実行コマンド

    # touch <ログの出力先パス>

    実行例:

    # touch /var/log/postgres_audit

    3.以下のコマンドを実行し、rsyslogdに設定を反映させてください。

    実行コマンド

    # systemctl restart rsyslog

    以上で、PostgreSQL監査ログのsyslog設定は完了です。

    ログローテートの設定

    ログローテートを設定する際は、以下の設定にしてください。

    No

    条件

    1

    一年に二度以上、ログローテートを実施する事。半年に一回以上実施する事。

    2

    ログローテートしたファイルを最低1世代格納する事。

    3

    ログローテートしたファイルは、同一のフォルダに格納する事。

    4

    ログローテートした第1世代のファイルは、圧縮しない事。