NGƯỜI QUẢN TRỊ CẤU HÌNH, QUẢN LÝ CÁC QUY TẮC GIÁM SÁT TRÊN ORACLE DATABASE VÀ MICROSOFT SQL SERVER
1. Mục tiêu và phạm vi
Tổng hợp cách người quản trị cấu hình và quản lý vòng đời quy tắc giám sát (rule) trên IBM Guardium Data Protection 12.0: loại rule, hành động, group, thứ tự đánh giá, policy mẫu và các thao tác tạo, cài đặt, sửa, sao lưu, phân quyền, truy vết. Minh chứng lấy từ các policy đang chạy trong lab giám sát Oracle (oracledb01) và SQL Server (SQLDB01).
2. Tổng quan về policy và rule
Policy là danh sách rule có thứ tự. S-TAP sao chép lưu lượng CSDL về Collector; Collector chỉ áp dụng các policy đã cài, theo thứ tự cài đặt, và đánh giá rule trong mỗi policy từ trên xuống.
Hình 1: Vòng đời quản lý và cơ chế thực thi quy tắc giám sát
Mỗi rule gồm điều kiện, Severity, Category, ô Continue to next rule và một hoặc nhiều hành động. Điều kiện chia ba nhóm: Session level (Client IP, DB User, Source Program, Server IP), SQL (lệnh, đối tượng, mẫu SQL) và Other (thời gian, số bản ghi…).
Hình 2: Điều kiện của rule RT_DBA_UNAPPROVED_HOST: Client IP Not In Group GRP_ADMIN_HOSTS và Database user In Group GRP_DBA_ACCOUNTS
2.1. Loại rule
Loại rule | Dữ liệu được đánh giá | Ví dụ trong lab |
| Access rule | Câu lệnh client gửi tới CSDL | Cảnh báo tài khoản quản trị đăng nhập từ máy lạ; chặn UPDATE, DELETE trên bảng nhạy cảm |
| Exception rule | Lỗi CSDL trả về: đăng nhập sai (ORA-01017, SQL Server 18456), lỗi SQL | Cảnh báo SYS, sa đăng nhập sai |
| Extrusion rule | Dữ liệu trả về cho client theo mẫu regex; cần bật Inspect Returned Data, Log Records Affected | REDACT che CCCD, số thẻ trong kết quả trả về |
Hình 3: Access rule và exception rule trong cùng policy POL_RT_ACCESS_ALERT
Hình 4: Extrusion rule REDACT che CCCD, số thẻ trong kết quả trả về, chỉ giữ vài chữ số cuối
2.2. Hành động của rule
Nhóm | Hành động | Ý nghĩa |
| Cảnh báo | ALERT PER MATCH, ALERT ONCE PER SESSION, ALERT DAILY | Gửi thông báo (Syslog, SNMP, email) mỗi lần khớp, một lần mỗi phiên, một lần mỗi ngày |
| Ghi log | LOG ONLY, LOG FULL DETAILS, LOG MASKED DETAILS | Chỉ ghi vi phạm; ghi nguyên câu SQL kèm thời điểm; ghi câu SQL với giá trị thay bằng dấu ? |
| Bỏ qua | ALLOW, SKIP LOGGING, IGNORE SESSION, IGNORE S-TAP SESSION | Không ghi vi phạm hoặc bỏ qua phần còn lại của phiên, dùng cho lưu lượng đã tin cậy |
| Chặn | S-TAP TERMINATE, S-GATE ATTACH, S-GATE TERMINATE | S-TAP TERMINATE ngắt phiên sau câu kích hoạt; S-GATE giữ câu lệnh chờ phán quyết và hủy trước khi tới CSDL |
| Che dữ liệu | QUERY REWRITE, REDACT | Viết lại câu lệnh trước khi tới CSDL; che dữ liệu trả về theo mẫu |
Hình 5: Thông báo Syslog: exception rule RT_DBA_FAILED_LOGIN mỗi lần đăng nhập sai, RT_DBA_UNAPPROVED_HOST một lần cho phiên SYSTEM (ALERT ONCE PER SESSION)
Cùng câu UPDATE retail.customers của OPS_TEST trên Oracle, sau đó RETAIL kiểm tra lại email:
Hình 6: S-TAP TERMINATE (trên): câu UPDATE đã chạy, phiên bị ngắt từ câu sau; S-GATE TERMINATE (dưới): câu UPDATE bị hủy
Đánh giá: S-TAP TERMINATE không chặn câu kích hoạt: UPDATE báo 1 row updated, phiên chỉ bị ngắt ở câu sau (ORA-03113); giao dịch chưa commit nên email vẫn giữ nguyên. S-GATE TERMINATE hủy câu UPDATE ngay, trước khi tới CSDL.
2.3. Group và tuple
- Group là tập giá trị cùng loại (Users, Client IP, Objects, Commands, Source Program…) dùng trong điều kiện In Group, Not In Group. Đổi người dùng, máy, bảng chỉ cần sửa thành viên group, không sửa từng rule, nhưng vẫn phải cài lại policy thì thay đổi mới có hiệu lực.
- Group có thể được điền tự động: action của classification thêm cột nhạy cảm vào GRP_SENSITIVE_COLUMNS và bảng nhạy cảm vào GRP_SENSITIVE_OBJECTS. Một group thường được nhiều rule dùng chung, nên phải tra các rule liên quan trước khi sửa.
- Tuple là group nhiều thuộc tính, mỗi thành viên ghép nhiều trường (Client IP/Src App/DB User/Server IP/Svc. Name) để quy định chính xác tổ hợp được phép, ví dụ tài khoản ứng dụng chỉ hợp lệ khi đi từ máy chủ ứng dụng.
Hình 7: Group thuộc nhiều loại trong Group Builder (trên); GRP_SENSITIVE_COLUMNS có 18 cột, GRP_SENSITIVE_OBJECTS có 2 bảng (dưới)
2.4. Thứ tự đánh giá và Continue to next rule
Khi câu lệnh khớp một rule không tích Continue to next rule, Guardium thực hiện hành động rồi dừng; các rule phía sau, kể cả của policy cài sau, không được xét. Thứ tự nên là: rule gắn trạng thái phiên (S-GATE ATTACH, QUERY REWRITE ATTACH) → rule phát hiện, cảnh báo (tích Continue) → rule chặn → rule ghi log.
Hình 8: Thứ tự access rule trong POL_PROTECT_SENSITIVE_DATA
Hình 9: Một câu SELECT trên retail.customers của SYSTEM khớp ba rule thuộc hai policy
Đánh giá: Rule ATTACH (1–4) và rule phát hiện (5–9) đều tích Continue, đứng trước rule chặn (10–11) và rule ghi log (13). Nhờ Continue, một câu SELECT sinh đồng thời RT_DBA_UNAPPROVED_HOST, ALERT_UNAUTHORIZED_SENSITIVE_ACCESS và DET_OFF_HOURS_EVENING. Rule 5–9 chưa có dấu Installed nên cần cài lại policy.
2.5. Policy mẫu
Guardium có sẵn policy mẫu (template) như Basic Data Security Policy và các policy theo PCI, SOX, HIPAA (tùy phiên bản). Template không sửa, không cài trực tiếp mà phải clone rồi chỉnh. POL_BASIC_DATA_SECURITY trong lab clone từ Basic Data Security Policy, gồm 11 rule phát hiện XSS, SQL injection, OS command injection bằng mẫu regex, gắn tag NIST SP 800-53, 23 NYCRR 500, CIS, ISO 27002.
Hình 10: Rule có sẵn trong POL_BASIC_DATA_SECURITY, clone từ policy mẫu
3. Quản lý vòng đời rule
3.1. Tạo
Tạo group trong Group Builder, sau đó vào Policy Builder for Data → New (hoặc Clone), thêm access, exception, extrusion rule và đặt Category riêng để lọc báo cáo. Lưu xong policy chưa có hiệu lực: cột Installed còn trống.
Hình 11: POL_NET_LOCAL_CONTROL vừa lưu, cả ba rule chưa có dấu Installed
3.2. Cài đặt
Trong Policy Installation, chọn policy ở Policy Installer: Install and override cho policy đầu, Install last cho các policy sau. Policy chỉ ghi nhận (mọi rule tích Continue) phải đứng trước policy có rule chặn. Mỗi lần thêm policy, cả danh sách được cài lại liên tiếp nên Date installed của các policy gần như trùng nhau.
Hình 12: Policy Installation ngày 09/10: ba policy đang cài và các policy có thể chọn trong Policy Installer
Hình 13: Ngày 16/10: năm policy đang cài, tổng 49 rule
3.3. Sửa
Sửa rule hoặc group xong phải cài lại cả danh sách đúng thứ tự (hoặc một lệnh grdapi policy_install). Ví dụ đổi rule chặn của POL_NET_LOCAL_CONTROL từ S-TAP TERMINATE sang S-GATE TERMINATE và thêm rule S-GATE ATTACH ở đầu:
Hình 14: POL_NET_LOCAL_CONTROL sau khi thêm rule S-GATE ATTACH và đổi sang S-GATE TERMINATE, trước khi cài lại
Đánh giá: Rule mới chưa có dấu Installed, còn rule vừa đổi hành động vẫn hiện dấu Installed của bản đang chạy. Cột Installed không cho biết sửa đổi đã được áp dụng, nên luôn cài lại và kiểm tra Date installed.
3.4. Sao lưu, tạm ngưng, gỡ
- Sao lưu: clone thành bản _Vn (không cài) hoặc Definitions Export kèm thành viên group; khôi phục rule bằng nút Import trong Policy Builder.
- Tạm ngưng: nút Uninstall, Reinstall cho từng rule đã cài. Gỡ cả policy: dấu trừ trên policy trong Currently Installed Policies.
3.5. Phân quyền
accessmgr cấp Policy Builder, Policy Install, Group Builder cho role của người phụ trách bảo mật; chủ sở hữu hoặc admin cấp từng policy cho role qua nút Roles. Người được cấp tự sửa và cài policy mà không cần admin.
Hình 15: POL_AUDIT_DB_CHANGES được cấp cho role_secofficer qua nút Roles
Hình 16: Ngày 20/10: sáu policy được cài lại lúc 21:01:46, POL_SOD_PRIVILEGED_ACTIVITY ở vị trí thứ tư
3.6. Truy vết
User Activity Audit Trail ghi tài khoản Guardium nào đã thao tác, loại thao tác (Administration, INSERT, UPDATE, DELETE, Api Call) và số đối tượng bị sửa; kiểm toán viên xem được report này bằng role riêng.
Hình 17: User Activity Audit Trail ngày 20/10, xem bằng role_auditor: thao tác của accessmgr, admin, sec_officer và các tài khoản khác
Đính kèm
Sửa lần cuối: