Tags

, , , , , ,

AUDIT TRONG SQL SERVER 2012 (Phần 2)

Ở Phần 1, chúng ta đã nhắc lại 1 số tính năng Audit đã tồn tại từ những phiên bản SQL Server trước đây.

Vậy trong SQL Server 2012, sẽ có thêm những cải tiến gì trong việc Audit nói chung hay SQL Server Audit nói riêng? Câu hỏi này được rất nhiều người quản trị database quan tâm và sẽ được làm rõ thông qua các tính năng được đề cập trong Phần 2 này, bao gồm:

  • Khả năng tạo User-defined Audit
  • Khả năng lọc Audit (Audit Filtering)
  • Hỗ trợ tự động khôi phục log (Audit resilience)

Thêm vào đó, thay vì chỉ được cung cấp trong bản Enterprise như ở phiên bản SQL Server 2008 thì nay SQL Server Audit được tích hợp trong tất cả các bản edition của SQL Server 2012 với tốc độ được cải thiện 1 cách đáng kể cùng nhiều tính năng hơn.


1. User-Defined Audit

User-Defined Audit cho phép các ứng dụng tự tuỳ biến, tạo ra các sự kiện của riêng mình và ghi thông tin audit log 1 cách linh hoạt hơn, ví dụ như: ghi vào audit log tên của các user đăng nhập vào application thay cho tên login chung được khai báo trong connection string để ứng dụng kết nối đến database.

Chúng ta có thể add thêm các sự kiện (audit event) như vậy bằng việc sử dụng thủ tục (stored procedure) sp_audit_write. Khi đó tất cả các sự kiện sẽ được lưu trong group USER_DEFINED_AUDIT_GROUP. Lưu ý rằng để sử dụng được, trước đó USER_DEFINED_AUDIT_GROUP phải được enable.

Ví dụ sau sẽ ghi vào audit log 1 sự kiện với id = 141 cùng 1 số thông tin tuỳ thích.

EXEC sp_audit_write
  @user_defined_event_id =  141,
  @succeeded = 0,
  @user_defined_information = N'My information' ;

Một số cột mới (column) được thêm vào sys.server_auditssys.server_file_audits, và sys.fn_get_audit_file để theo dõi các user-defined audit event..

2. Audit Filtering

Trước đây, thật không dễ dàng để chỉ  lọc (theo 1 điều kiện cụ thể nào đó) những sự kiện mà người quản trị đang quan tâm. Điều này đã được khắc phục trong phiên bản SQL Server 2012 với tính năng Audit Filtering.

Giờ đây, SQL Server Audit hỗ trợ khả năng lọc những sự kiện cần audit trước khi chúng được ghi vào audit log thông qua mệnh đề WHERE  trong câu lệnh CREATE SERVER AUDIT và ALTER SERVER AUDIT.

Ví dụ sau sẽ tạo 1 Server Audit chỉ lưu vào audit log những sự kiện có id = 141

CREATE SERVER AUDIT [MyFilteredAuditEvent]
WHERE user_defined_event_id = 141;
GO

3. Audit Resilience

Audit Resilience cung cấp khả năng tuỳ biến sự phản hồi của SQL Server cũng như giảm thiểu mất dữ liệu audit khi việc ghi audit log bị lỗi do nhiều nguyên nhân khác nhau như lỗi ghi dữ liệu, lỗi mạng, …

Có 2 option mới để hỗ trợ tính năng này và sẽ được cấu hình mỗi khi tạo 1 Audit:

  • On Audit Log Failure: sẽ có 3 lựa chọn khác nhau quy định phản ứng của SQL Server khi không thể ghi Audit log: Continue, Shutdown Server, hoặc Fail operation. Tính năng mới hỗ trợ này rất quan trọng vì ở phiên bản trước chỉ có 1 lựa chọn duy nhất là shutdown server hay không mà thôi.
  • Maximum Rollover Files: Trước đây chỉ có 2 lựa chọn để quy định số file log được dùng để lưu audit log: không giới hạn số lượng log file hoặc giới hạn số luợng log file. Trong trường hợp có giới hạn, khi số lượng log file chạm ngưỡng tối đa, file log cũ nhất sẽ tự động xoá đi để có thể ghi thêm file log mới hơn (gọi là roll-over). SQL Server 2012 cung cấp thêm 1 lựa chọn nữa cho phép giữ lại 1 số lượng file log cố định mà không bị mất thông tin audit vì hiện tượng roll-over.

Trên đây là 1 số cải tiến trong SQL Server 2012 nhằm cung cấp khả năng Audit dữ liệu 1 cách linh hoạt và hữu ích cho những người quản trị.

Enjoy!!!
Nhat Phan