sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLの監査ログ

    監査は、PCI-Payment Card Industryなどの多くのセキュリティ規制や標準の要件であり、データベースで何が起こっているかを把握してデータを可能な限り安全に保つための優れた方法です。

    >

    PostgreSQLデータベースでは、基本的なステートメントロギングは、log_statement=allを使用した標準のロギング機能によって提供できます。これは、監視やその他の基本的な使用法には受け入れられますが、監査に一般的に必要な詳細レベルは提供されません。

    このブログでは、pgAudit拡張機能とは何か、およびClusterControlを使用してPostgreSQLデータベースにインストールして使用する方法を説明します。

    pgAuditとは何ですか?

    PostgreSQL Audit Extension(pgAudit)は、標準のPostgreSQLログ機能を介して詳細なセッションおよびオブジェクト監査ログを提供します。

    データベースに対して実行されたすべての操作のリストを用意するだけでは不十分です。また、監査人が関心を持つ特定のステートメントを見つけることが可能でなければなりません。標準のロギング機能はユーザーが要求したものを示しますが、pgAuditはデータベースが要求を満たしている間に起こったことの詳細に焦点を合わせます。

    ClusterControlでpgAuditを有効にする

    この例では、ClusterControlがインストールされており、PostgreSQLデータベースを管理していると想定しています。それ以外の場合は、このブログ投稿をフォローして、ClusterControlを使用して簡単に稼働させることができます。

    ClusterControl UI

    最近ランチされたClusterControl1.8.2バージョンから、ClusterControlUIからpgAuditプラグインを簡単に有効にできます。有効にするには、ClusterControl->PostgreSQLクラスターの選択->セキュリティタブ->監査ログ->有効に移動します。

    PostgreSQLで監査するイベントを指定する必要があります集まる。 PgAuditはすべてのノードで有効になり、インストールするにはデータベースサービスを再起動する必要があります。

    イベントは次のようになります:

    • ROLE:役割と特権に関連するステートメント:GRANT、REVOKE、CREATE / ALTER /DROPROLE。

    • DDL:ROLEクラスに含まれていないすべてのDDL。

    • MISC:その他のコマンド(例: DISCARD、FETCH、CHECKPOINT、VACUUM、SET。

    • 読み取り:ソースがリレーションまたはクエリの場合は、SELECTとCOPYを実行します。

    • 書き込み:宛先がリレーションの場合、INSERT、UPDATE、DELETE、TRUNCATE、およびCOPY。

      >
    • 関数:関数呼び出しとDOブロック。

    • すべて:上記のすべてを含めます。

    ClusterControlアクティビティセクションでpgAuditのインストールを監視できます。

    終了したら、同じClusterControlUIでpgAuditログを確認できます。これを行うには、ClusterControl->PostgreSQLクラスターの選択->[ログ]タブ->[システムログ]に移動します。

    ここには、PostgreSQLデータベースを監査するために必要なすべての情報があります。

    ClusterControl CLI

    ClusterControl UIからpgAuditを有効にする代わりに、ClusterControlCLIを使用してジョブを実行することもできます。このために、ClusterControlサーバーから次のコマンドを実行できます。

    $ s9s cluster --setup-audit-logging --cluster-id=ID
    IDはPostgreSQLクラスターIDです。

    実行中に、ClusterControlジョブをチェックすることでステータスを監視できます。まず、ジョブリストから取得できるジョブIDが必要になります:

    $ s9s job --list
    1600  48 RUNNING  test_dba                     admins 18:49:36            90% Setup Audit Logging

    次に、仕事の詳細を確認します:

    $ s9s job --log --job-id=1600
    Using SSH credentials from cluster.
    Cluster ID is 48.
    The username is 'root'.]
    10.10.10.139:5432: Configuring audit logging.
    10.10.10.139:5432: Installing 'pgaudit15_13'.
    10.10.10.139: Installing pgaudit15_13.
    10.10.10.139:5432: Setting pgaudit.log to ROLE,DDL,MISC.
    Writing file '10.10.10.139:/var/lib/pgsql/13/data/postgresql.conf'.
    10.10.10.139:5432: Restarting PostgreSQL node.
    10.10.10.139: waiting for server to shut down.... done
    server stopped
    waiting for server to start....2021-03-24 18:49:43.468 UTC [16098] LOG:  pgaudit extension initialized
    2021-03-24 18:49:43.505 UTC [16098] LOG:  redirecting log output to logging collector process
    2021-03-24 18:49:43.505 UTC [16098] HINT:  Future log output will appear in directory "log".
     done
    server started
    10.10.10.139:5432: Waiting for node to be accessible.
    10.10.10.139:5432: pgaudit 1.5.0 is enabled.

    このアクションでは、同じタスクでClusterControlによって実行されるデータベースサービスの再起動が必要になります。再起動すると、pgAudit拡張機能が有効になり、使用できるようになります。

    postgres=# SELECT * FROM pg_available_extensions WHERE name LIKE '%audit%';
      name   | default_version | installed_version |             comment
    ---------+-----------------+-------------------+---------------------------------
     pgaudit | 1.5             | 1.5               | provides auditing functionality
    (1 row)
    結論

    多くのセキュリティ規制では、監査が必要です。これは、データベースに何が起こったのか、いつ起こったのか、誰がその責任を負っているのかを知るために使用されます。

    このブログでは、PostgreSQLデータベースを監査するための優れた方法としてpgAuditPostgreSQL拡張機能について説明しました。また、UIからClusterControlを使用し、ClusterControlCLIを使用してすばやく実装する方法も示しました。

    構成によっては、pgAuditが膨大な量のデータを生成する可能性があることに注意してください。したがって、監査する必要があるものとその期間を慎重に決定する必要があります。


    1. Postgresql:MacOSXを使用してpg_hba.confファイルを見つける方法

    2. MySQLでヒストグラムを作成する方法は?

    3. ''の近くの構文が正しくありません

    4. PSQLスクリプト(bashスクリプトから供給)の変数として外部XMLファイルにアクセスする