監査は、PCI-Payment Card Industryなどの多くのセキュリティ規制や標準の要件であり、データベースで何が起こっているかを把握してデータを可能な限り安全に保つための優れた方法です。
>PostgreSQLデータベースでは、基本的なステートメントロギングは、log_statement=allを使用した標準のロギング機能によって提供できます。これは、監視やその他の基本的な使用法には受け入れられますが、監査に一般的に必要な詳細レベルは提供されません。
このブログでは、pgAudit拡張機能とは何か、およびClusterControlを使用してPostgreSQLデータベースにインストールして使用する方法を説明します。
pgAuditとは何ですか?
PostgreSQL Audit Extension(pgAudit)は、標準のPostgreSQLログ機能を介して詳細なセッションおよびオブジェクト監査ログを提供します。
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
実行中に、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が膨大な量のデータを生成する可能性があることに注意してください。したがって、監査する必要があるものとその期間を慎重に決定する必要があります。