XÂY DỰNG VÀ TÙY CHỈNH BÁO CÁO LINH HOẠT BÊN CẠNH CÁC BÁO CÁO VÀ CHÍNH SÁCH CẤU HÌNH SẴN TRÊN ORACLE DATABASE VÀ MICROSOFT SQL SERVER
1. Mục tiêu
- Dùng report có sẵn của Guardium song song với report tự xây dựng: khi nào dùng thẳng, khi nào clone, khi nào tạo query mới.
- Xây dựng query, report, dashboard bằng Query-Report Builder; tùy chỉnh report có sẵn mà không sửa bản gốc.
- Tự động chạy, phân phối, ký duyệt báo cáo bằng Audit Process; phân quyền xem báo cáo theo vai trò và theo máy chủ CSDL.
Phạm vi: Guardium Data Protection 12.0 giám sát Oracle Database 19c trên oracledb01 và SQL Server trên SQLDB01 qua S-TAP. Dữ liệu báo cáo do các policy đang cài trong lab ghi nhận.
2. Nguyên lý hoạt động
S-TAP sao chép lưu lượng CSDL về Collector. Collector phân tích câu lệnh, đánh giá theo các policy đang cài rồi lưu vào CSDL nội bộ, chia thành các domain (miền dữ liệu). Mọi report, có sẵn hay tự tạo, đều là một query trên một domain kèm cách trình bày; report được gom vào dashboard, chạy theo lịch bằng Audit Process hoặc làm đầu vào cho cảnh báo.
Hình 1: Nguyên lý xây dựng, tùy chỉnh và tự động hóa báo cáo trên Guardium
Domain | Dữ liệu | Ví dụ report trong lab |
| Access | Phiên, câu lệnh, đối tượng, client, chương trình. Main entity Session cho mỗi dòng là một phiên; SQL, FULL SQL cho mỗi dòng là một câu lệnh | Q_RT_SESSIONS, Q_SOD_DBA_ACTIVITY, Q_NL_LOCAL_ACTIVITY |
| Exceptions | Lỗi CSDL trả về: đăng nhập sai (LOGIN_FAILED), lỗi SQL (SQL_ERROR) | Q_SRV_FAILED_LOGINS, Q_SRV_SQL_ERRORS |
| Policy Violations | Vi phạm do rule của policy và correlation alert ghi | Policy rule violations, Q_RT_ALERTS |
| Discovered Instances | Instance CSDL do S-TAP hoặc quét mạng phát hiện | Discovered Instances, Q_DB_BY_TYPE |
| Entitlement (custom domain) | Quyền, role, tài khoản đặc quyền nạp định kỳ từ CSDL qua datasource (Upload Data) | ORA Object privileges, Q_ENT_ORA_PUBLIC |
| Domain nội bộ của Guardium | Thao tác, đăng nhập của tài khoản Guardium; trạng thái S-TAP | User Activity Audit Trail, S-TAP Status Monitor |
- Query quyết định domain, main entity, cột, điều kiện, thứ tự; report quyết định dạng bảng hay biểu đồ và khoảng thời gian chạy. Main entity không đổi được sau khi tạo query.
- Cột Sql có mọi câu S-TAP gửi về ở dạng chuẩn hóa (giá trị thay bằng dấu ?); cột Full Sql chỉ có câu được rule LOG … DETAILS ghi. Report kiểm tra độ phủ đọc Sql, report cần nguyên văn câu lệnh đọc Full Sql.
- Report có sẵn ở chế độ chỉ đọc; muốn đổi cột, điều kiện thì clone rồi sửa bản sao. Report có sẵn và tự tạo dùng chung dashboard, Audit Process và phân quyền.
- Báo cáo phụ thuộc chính sách: vi phạm chỉ có khi rule khớp. Policy cấu hình sẵn (POL_BASIC_DATA_SECURITY clone từ Basic Data Security Policy) và policy tự xây dựng cùng ghi vào Policy Violations, phân biệt bằng Category Name và tên rule, nên mọi rule cần có Category.
3. Xây dựng và tùy chỉnh báo cáo
Giao diện Guardium ở https://<IP_GUARDIUM>:8443; các bước dùng tài khoản admin trừ khi ghi khác.
3.1. Tạo query và report
Bước 1: Truy cập Reports → Report Configuration Tools → Query-Report Builder, chọn domain ở ô Queries-Reports, nhấn +. Đặt tên theo quy ước Q_<nhóm>_<nội dung> và chọn Main entity.
Hình 2: Phần Query Name của Q_SRV_LOGIN_ALERT: Main entity, Query domain và các nút Save, Add to Dashboard, Add to My Custom Reports
Bước 2: Ở Selected Columns chọn entity, attribute, nhấn mũi tên để thêm cột và đặt Field Mode (Value, Count, Min, Max…). Tích Count để gom nhóm theo các cột Value và thêm cột đếm; tích Distinct để bỏ dòng trùng.
Hình 3: Selected Columns của Q_SOD_VIOLATIONS; danh sách bên trái gồm report có sẵn và query tự tạo cùng domain Policy Violations
Bước 3: Khai báo Sort Order, Conditions, Having Conditions (lọc trên cột Count), Display Options (bảng hoặc biểu đồ) rồi nhấn Save. Report mang cùng tên query; Add to My Custom Reports đưa report vào menu, Add to Dashboard gắn report vào dashboard. Các mẫu query đã dùng:
Mẫu | Cách cấu hình | Ví dụ |
| Nhật ký chi tiết | Các cột Value, sắp xếp theo thời gian giảm dần | Q_RT_ALERTS, Q_SRV_SQL_ERRORS |
| Thống kê, biểu đồ | Tích Count, sắp xếp theo Count; Display Options chọn biểu đồ cột hoặc tròn | Q_SRV_THREAT_SUMMARY, Q_DB_BY_TYPE, Q_RT_ALERT_SUMMARY |
| Lọc theo danh sách | IN GROUP với giá trị đúng; LIKE GROUP với thành viên dạng mẫu như %customers | Q_RT_DBA_ACTIVITY, Q_CHG_ADMIN_PROCS |
| Tham số khi chạy | Điều kiện nhận giá trị nhập lúc mở report | Q_CHG_COVERAGE (DB User Name) |
| Đầu vào cảnh báo | Có trường thời gian ở Field Mode Max hoặc Min và cột Count | Q_SRV_LOGIN_ALERT |
Đánh giá: Query tự tạo nằm cùng danh sách với report có sẵn của domain Policy Violations (Policy rule violations, GDPR - Policy Violations…) và chọn cột từ cùng các entity. Main entity không đổi được sau khi tạo, nên phải chọn đúng ngay từ đầu.
3.2. Tùy chỉnh report có sẵn
Bước 1: Truy cập My Dashboards → Create New Dashboard, đặt tên DB Entitlement Review. Trong Reports → Report Configuration Tools → Custom Query-Report Builder, gõ tên report entitlement vào ô Filter, chọn report, nhấn Add to Dashboard. Ở mỗi report mở Customize, đặt Start Date = NOW -7 DAY vì report lọc theo SqlGuard Timestamp, khoảng mặc định ngắn sẽ ẩn các snapshot cũ.
Hình 4: Report entitlement có sẵn của Oracle và SQL Server trong dashboard DB Entitlement Review
Bước 2: Chọn query của report, nhấn Clone, thêm điều kiện rồi lưu với tên mới:
Query clone | Clone từ | Điều kiện thêm |
| Q_ENT_OBJPRIV_OPS | ORA Object privileges | Grantee = OPS_TEST |
| Q_ENT_SYSPRIV_OPS | ORA Sys Priv Granted 8 | GRANTEE = OPS_TEST hoặc RETAIL_SUPPORT_ROLE |
| Q_ENT_ROLES_DBA | ORA Roles Granted | Granted Role = DBA |
| Q_ENT_ORA_PUBLIC | ORA Object Access By PUBLIC | Owner = RETAIL |
| Q_ENT_MSS_PUBLIC | Microsoft SQL Server Object Access By PUBLIC | Schema_Owner = retail |
- Query clone dùng cùng domain nên đọc chính dữ liệu đã upload, không cần cấu hình upload riêng. Chỉ clone query; clone custom table hoặc custom domain sẽ được bảng rỗng.
- Report có sẵn khác (Policy rule violations, Discovered Instances…) tùy chỉnh tương tự: đổi tham số ở Customize, chuyển Graphical View, Tabular View, hoặc clone trong Query-Report Builder.
Đánh giá: Dashboard dùng thẳng report entitlement có sẵn của cả hai CSDL mà không phải viết query; bản clone thêm điều kiện theo tài khoản, role, schema, bản gốc giữ nguyên.
3.3. Gom báo cáo thành dashboard
Bước 1: Truy cập My Dashboards → Create New Dashboard, đặt tên rồi tải lại trang. Mở từng report, nhấn Add to Dashboard; chọn Number of columns.
Bước 2: Ở mỗi report mở Customize, đặt khoảng thời gian. Nút Roles của dashboard cấp dashboard cho role khác. Các dashboard trong lab:
Bước 2: Ở mỗi report mở Customize, đặt khoảng thời gian. Nút Roles của dashboard cấp dashboard cho role khác. Các dashboard trong lab:
Dashboard | Report | Người dùng chính |
| DB Discovery Overview | Q_DB_BY_SERVER, Q_DB_BY_TYPE | Tuân thủ, kiểm toán |
| Server Threat Overview | Q_SRV_POLICY_VIOLATIONS, Q_SRV_FAILED_LOGINS, Q_SRV_SQL_ERRORS, Q_SRV_THREAT_SUMMARY | Giám sát an ninh |
| Real-time Access Audit | Q_RT_ALERTS, Q_RT_ALERT_SUMMARY, Q_RT_SESSIONS, Q_RT_DBA_ACTIVITY, Q_RT_FAILED_LOGINS, Q_SRV_FAILED_LOGINS | Giám sát an ninh |
| Network and Local Activity | Q_NL_CHANNELS, Q_NL_SESSIONS, Q_NL_VIOLATIONS, Q_NL_LOCAL_ACTIVITY; report có sẵn S-TAP Status Monitor, Inactive S-TAPs Since | Giám sát an ninh, vận hành |
| DB Entitlement Review | 11 report entitlement có sẵn và các bản clone | Kiểm toán |
| DB Change Audit | Q_CHG_USER_PRIV, Q_CHG_SCHEMA, Q_CHG_ADMIN_PROCS, Q_CHG_VIOLATIONS, Q_CHG_COVERAGE | Kiểm toán |
Hình 5: Dashboard Server Threat Overview: ba report dạng bảng và một biểu đồ cột
Đánh giá: Mỗi report trong dashboard có khoảng thời gian riêng (Start Date, End Date ở đầu khung) và chuyển được giữa bảng và biểu đồ. Q_SRV_THREAT_SUMMARY cho thấy số lỗi theo máy chủ, ba bảng còn lại cho chi tiết để điều tra.
4. Tự động hóa, phân phối và phân quyền
4.1. Chạy báo cáo theo lịch bằng Audit Process
Bước 1: Truy cập Comply → Tools and Views → Audit Process Builder, nhấn New và khai báo: Name and archive; Add tasks (task loại Report, QUERY_FROM_DATE lùi đúng một chu kỳ lịch như NOW -1 DAY, QUERY_TO_DATE = NOW, tích Export PDF hoặc CSV); Send results (người nhận là user hoặc role, Action = Sign off, To-Do List); Schedule audit process.
Audit process | Task (report) | Người nhận | Lịch, định dạng |
| AP_DB_CHANGE_AUDIT | Q_CHG_USER_PRIV, Q_CHG_SCHEMA, Q_CHG_ADMIN_PROCS, Q_CHG_VIOLATIONS | admin, Sign off | Mỗi 6 giờ từ 00:00; PDF, CSV |
| AP_RT_ALERT_REVIEW | Q_RT_ALERT_SUMMARY, Q_RT_ALERTS, Q_RT_DBA_ACTIVITY | Role admin, Sign off | 08:00 hằng ngày; PDF |
| AP_SOD_REVIEW | Q_SOD_VIOLATIONS, Q_SOD_DBA_ACTIVITY | Role role_auditor, Sign off | 08:00 hằng ngày |
Hình 6: Audit process AP_SOD_REVIEW: hai task Report (trên), người nhận role_auditor (giữa), lịch chạy 08:00 mỗi ngày (dưới)
Bước 2: Nhấn Save, Run Once Now để kiểm tra. Người nhận mở Audit Process To-Do List, nhấn View để xem kết quả, Download PDF, rồi Sign Results.
Hình 7: Kết quả chạy theo lịch của AP_RT_ALERT_REVIEW và AP_DB_CHANGE_AUDIT trong To-Do List của admin
Hình 8: Kết quả AP_SOD_REVIEW: Overall Value History, report Q_SOD_VIOLATIONS và các nút Sign Results, Escalate, Comment
- Khoảng thời gian của task bằng chu kỳ lịch chạy để mỗi sự kiện nằm trong đúng một kỳ báo cáo.
- Gửi email cần cấu hình SMTP tại Setup → Tools and Views → Alerter; lab chưa cấu hình nên nhận kết quả qua To-Do List. Muốn đưa file ra máy chủ khác (SIEM, lưu trữ dài hạn) dùng Results Export.
Đánh giá: AP_RT_ALERT_REVIEW chạy lúc 08:00 mỗi ngày từ 16/10 đến 20/10, AP_DB_CHANGE_AUDIT chạy theo chu kỳ 6 giờ (00:00, 06:00, 18:00); các kết quả chờ ký duyệt trong To-Do List. Trang kết quả lưu giá trị qua các lần chạy và so sánh được với lần trước.
4.2. Cảnh báo từ query
Query có trường thời gian và cột Count dùng được làm đầu vào cho correlation alert tại Protect → Database Intrusion Detection → Alert Builder. Guardium chạy query theo Run frequency, so ngưỡng trên từng dòng, ghi vi phạm vào Policy Violations và gửi thông báo nếu khai báo người nhận. ALR_SRV_LOGIN_FAILED cảnh báo máy chủ có từ 10 lần đăng nhập sai trong 10 phút; tiến trình Anomaly Detection phải đang chạy.
Hình 9: Correlation alert ALR_SRV_LOGIN_FAILED dùng query Q_SRV_LOGIN_ALERT
Cảnh báo của rule và correlation alert chuyển tới SIEM qua Syslog; lab chuyển tiếp tới rsyslog trên oracledb01.
4.3. Phân quyền xem báo cáo
Bước 1: Theo chức năng. Đăng nhập accessmgr, mở Role Browser, nhấn Manage Permissions ở role, chọn loại Reports và chuyển report cần dùng sang Accessible items. Query, dashboard tự tạo được cấp cho role bằng nút Roles của chính nó.
Hình 10: Report được cấp cho role_auditor trong Manage Permissions
Bước 2: Theo dữ liệu. accessmgr gán máy chủ cho từng kiểm toán viên trong Data Security → User-DB Association; admin bật Data level security filtering trong Global Profile. Report domain Access, Exception, Policy Violations tự lọc theo máy chủ được gán; tài khoản có role datasec-exempt tích Show all để xem toàn bộ.
Hình 11: Q_SOD_VIOLATIONS của auditor_ora chỉ có oracledb01 (trên); admin tích Show all thấy cả hai máy chủ (dưới)
Đánh giá: role_auditor chỉ được cấp 7 report, trong đó có hai query kiểm toán và các report nhật ký Guardium. Cùng report Q_SOD_VIOLATIONS, auditor_ora thấy 4 vi phạm trên oracledb01, admin thấy đủ 8 vi phạm của hai máy chủ, không cần tạo report riêng cho từng máy chủ.