PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Ghi nhật ký kiểm tra cho PostgreSQL

Kiểm toán là một yêu cầu đối với nhiều quy định hoặc tiêu chuẩn bảo mật, như PCI - Ngành thẻ thanh toán và thậm chí là một cách tốt để giữ cho dữ liệu của bạn an toàn nhất có thể khi biết điều gì đang xảy ra trong cơ sở dữ liệu của bạn.

Trong cơ sở dữ liệu PostgreSQL, cơ sở ghi nhật ký tiêu chuẩn có thể cung cấp ghi nhật ký câu lệnh cơ bản với log_statement =all. Điều này được chấp nhận cho việc giám sát và các cách sử dụng cơ bản khác nhưng không cung cấp mức độ chi tiết thường được yêu cầu để đánh giá.

Trong blog này, chúng ta sẽ xem tiện ích mở rộng pgAudit là gì và cách cài đặt và sử dụng nó trong cơ sở dữ liệu PostgreSQL của bạn bằng ClusterControl.

pgAudit là gì?

Phần mở rộng Kiểm tra PostgreSQL (pgAudit) cung cấp ghi nhật ký kiểm tra phiên và đối tượng chi tiết thông qua cơ sở ghi nhật ký PostgreSQL tiêu chuẩn.

Không đủ để có danh sách tất cả các thao tác được thực hiện đối với cơ sở dữ liệu. Cũng phải có khả năng tìm thấy các báo cáo cụ thể mà kiểm toán viên quan tâm. Cơ sở ghi nhật ký tiêu chuẩn hiển thị những gì người dùng yêu cầu, trong khi pgAudit tập trung vào chi tiết về những gì đã xảy ra trong khi cơ sở dữ liệu đáp ứng yêu cầu.

Bật pgAudit với ClusterControl

Đối với ví dụ này, chúng tôi sẽ giả sử bạn đã cài đặt ClusterControl và nó đang quản lý cơ sở dữ liệu PostgreSQL của bạn. Nếu không, bạn có thể theo dõi bài đăng trên blog này để thiết lập và chạy nó một cách dễ dàng, sử dụng ClusterControl.

Giao diện người dùng ClusterControl

Từ phiên bản ClusterControl 1.8.2, được giới thiệu gần đây, bạn có thể dễ dàng kích hoạt plugin pgAudit từ giao diện người dùng ClusterControl. Để kích hoạt nó, hãy đi tới ClusterControl -> Chọn Cụm PostgreSQL của bạn -> Tab Bảo mật -> Nhật ký Kiểm tra -> Bật.

Bạn sẽ cần chỉ định các sự kiện mà bạn muốn kiểm tra trong PostgreSQL của mình cụm. PgAudit sẽ được bật trên tất cả các nút và nó sẽ yêu cầu khởi động lại dịch vụ cơ sở dữ liệu để cài đặt nó.

Các sự kiện có thể là:

  • VAI TRÒ:Các câu lệnh liên quan đến vai trò và đặc quyền:GRANT, REVOKE, CREATE / ALTER / DROP ROLE.

  • DDL:Tất cả DDL không có trong lớp ROLE.

  • MISC:Các lệnh khác, ví dụ:TIẾT KIỆM, TÌM KIẾM, KIỂM TRA, VACUUM, BỘ.

  • ĐỌC:CHỌN và SAO CHÉP khi nguồn là một quan hệ hoặc một truy vấn.

  • VIẾT:CHÈN, CẬP NHẬT, XÓA, TRUNCATE và SAO CHÉP khi đích là một quan hệ.

  • FUNCTION:Các lệnh gọi hàm và khối DO.

  • TẤT CẢ:Bao gồm tất cả những điều trên.

Bạn có thể theo dõi quá trình cài đặt pgAudit của mình trong phần Hoạt động ClusterControl.

Khi hoàn tất, bạn có thể kiểm tra nhật ký pgAudit của mình trong cùng một giao diện người dùng ClusterControl. Đối với điều này, hãy đi tới ClusterControl -> Chọn Cụm PostgreSQL của bạn -> Tab Nhật ký -> Nhật ký Hệ thống.

Tại đây, bạn sẽ tìm thấy tất cả thông tin cần thiết để kiểm tra cơ sở dữ liệu PostgreSQL của mình.

ClusterControl CLI

Thay vì bật pgAudit từ Giao diện người dùng ClusterControl, một tùy chọn khác là sử dụng ClusterControl CLI để thực hiện công việc. Đối với điều này, bạn có thể chạy lệnh sau từ máy chủ ClusterControl của mình:

$ s9s cluster --setup-audit-logging --cluster-id=ID

Trong đó ID là id cụm PostgreSQL.

Trong khi nó đang chạy, bạn có thể theo dõi trạng thái bằng cách kiểm tra công việc ClusterControl. Đầu tiên, bạn sẽ cần id công việc mà bạn có thể lấy từ danh sách công việc:

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

Bây giờ, hãy kiểm tra chi tiết công việc:

$ 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.

Hành động này sẽ yêu cầu khởi động lại dịch vụ cơ sở dữ liệu sẽ được thực hiện bởi ClusterControl trong cùng một tác vụ. Sau khi khởi động lại, tiện ích mở rộng pgAudit được bật và sẵn sàng sử dụng:

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)

Kết luận

Kiểm toán là bắt buộc đối với nhiều quy định bảo mật. Nó được sử dụng để biết điều gì đã xảy ra với cơ sở dữ liệu của bạn, khi nào nó xảy ra và ai chịu trách nhiệm về điều đó.

Trong blog này, chúng tôi đã nói về phần mở rộng pgAudit PostgreSQL như một cách tốt để kiểm tra cơ sở dữ liệu PostgreSQL của bạn. Chúng tôi cũng đã chỉ cho bạn cách triển khai nó một cách nhanh chóng với ClusterControl từ giao diện người dùng và sử dụng ClusterControl CLI.

Hãy nhớ rằng, tùy thuộc vào cấu hình, pgAudit có thể tạo ra một lượng lớn dữ liệu. Vì vậy, bạn nên cẩn thận xác định những gì bạn cần kiểm tra và trong thời gian bao lâu.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Song song đến với VACUUM

  2. Trả về các hàng SETOF từ hàm PostgreSQL

  3. Lấy tên bảng nguồn của hàng khi truy vấn giá trị gốc mà hàng đó kế thừa

  4. Nối nhiều hàng kết quả của một cột thành một, nhóm theo cột khác

  5. Làm cách nào để gửi email từ trình kích hoạt PostgreSQL?