Bài thực hành Bảo mật hệ thống thông tin - Bài thực hành số 13: Fine-grained Auditing

Bo Mt HThng Thông Tin  
Lab 13  
1
Bài thực hành số 13  
FINE-GRAINED AUDITING  
Tóm tắt nội dung:  
Giới thiệu về Fine-grained Auditing  
Các chính sách Fine-grained Auditing  
Sử dụng gói DBMS_FGA trong Oracle  
I. Fine-grained Auditing  
1. Giới thiệu:  
Như đã được giới thiệu ở Lab 12, Standard Auditing của Oracle có tính cấu hình  
cao. Bản ghi dấu (audit trail) của nó cung cấp một tập cố định các sự kiện mà  
giám sát các quyền, các đối tượng hoặc có câu SQL được sử dụng bao gồm những  
thông tin về môi trường kết quả câu truy vấn. Tầm vực của standard auditing  
cũng thể được mở rộng bằng cách sử dụng trigger và cung cấp thêm những  
thông tin phụ. Tuy nhiên 2 tiêu chí của auditing không thể thực hiện bởi standard  
auditing: tối thiểu những giám sát không cần thiết, chỉ ra những truy cập gây  
hại.  
Fine-grained auditing (FGA) có thể thỏa mãn những nhu cầu đó. Với FGA, ta có  
thể đặt ra nhiều điều kiện giám sát chi tiết hơn. Ta không cần phải thiết lập thông  
số cho AUDIT_TRAIL để kích hoạt chức năng này, mà chỉ cần tạo ra các chính  
sách FGA rồi áp dụng chúng trên các hoạt động hay các đối tượng cụ thể mà ta  
muốn giám sát. Cơ chế này trong cơ sở dữ liệu ngăn chặn người dùng khỏi việc  
cố gắng tìm cách truy vấn vòng để không bị giám sát. Những bản ghi của FGA sẽ  
lưu trong bảng SYS.FGA_LOG$ và được truy cập thông qua view  
DBA_FGA_AUDIT_TRAIL.  
Chương Trình Đào To TXa  
KH & KT Máy Tính – Đi hc Bách Khoa TP.HCM  
Bo Mt HThng Thông Tin  
Lab 13  
2
2. Ưu thế của Fine-grained Auditing so với Trigger:  
Fine-grained auditing thỏa mãn những nhu cầu bằng cách cung cấp sự hiệu quả  
vượt lên trên phương pháp trigger. Trigger phải gánh chịu quá trình gọi hàm  
PL/SQL khi mỗi hàng được xử lí và tạo ra một bản ghi audit chỉ khi một cột thích  
hợp bị thay đổi bởi một câu lệnh DML.  
Mặt khác, một chính sách fine-grainned auditing không phải gánh chịu chi phí  
cho mỗi hàng. Nó chỉ giám sát một lần cho mỗi chính sách. Cụ thể, sẽ giám sát  
khi một cột thích hợp cụ thể bị tác động bởi một loại lệnh DML xác định, hoặc bị  
thay đổi bởi câu lệnh hoặc nằm trong tiêu chuẩn chọn lọc của nó  
3. Chính sách trong Fine-grained Auditing:  
Chính sách FGA có thể theo dõi việc truy xuất dữ liệu dựa trên nội dung của dữ  
liệu đó. Sử dụng chính sách, ta có thể chỉ cột nào và điều kiện khi nào ta mới  
cần phải ghi lại việc truy xuất đó. Ta cũng thể cung cấp thêm tên hàm mà ta  
muốn thực thi khi một sự kiện giám sát xảy ra. Hàm đó thể nhắc nhở hoặc báo  
động cho người quản trị hay xử lỗi và các bất thường.  
4. Hàm xử sự kiện:  
Trong chính sách FGA có thể xác định điều kiện khi nào ta truy xuất dữ liệu sẽ  
gây ra một trigger giám sát. Những chính sách đó thể sử dụng các xử sự kiện  
uyển chuyển để nhắc nhỏ nhà quản trị khi sự kiện trigger xảy ra. Ví dụ, một công  
ty có thể cho phép nhân viên HR truy cập thông tin về lương mà không bị giám  
sát, nhưng khi làm việc với số lương lớn hơn $500k thì sẽ bị giám sát. Khi đó việc  
đó xảy ra hệ thống sẽ cảnh báo cho nhà quản trị.  
Cơ chế thực hiện cảnh báo đó được thực hiện nhờ vào một hàm:  
PROCEDURE fname(  
object_schema VARCHAR2,  
object_name VARCHAR2,  
policy_name VARCHAR2)  
AS ...  
Chương Trình Đào To TXa  
KH & KT Máy Tính – Đi hc Bách Khoa TP.HCM  
Bo Mt HThng Thông Tin  
Trong đó:  
Lab 13  
3
fname: tên của thủ tục  
object_schema: tên của schema chứa bảng bị giám sát.  
object_name: tên của bảng bị giám sát.  
policy_name: tên của chính sách  
5. Hàm và các cột liên quan trong Fine-grained Auditng:  
Để hiện thực thêm uyển chuyển, ta có thể thêm vào các hàm tự định nghĩa để đưa  
ra điều kiện cho chính sách và xác định cột nào cần được giám sát (cột liên quan)  
để tinh lọc chính sách giám sát. Ví dụ, hàm đó thể tạo ra một bản ghi giám sát  
chỉ khi mức lương lớn hơn $250k bị truy cập.  
Chỉ cột liên quan có thể giúp giảm các trường hợp sai cũng như là các bản ghi  
không cần thiết, bởi việc giám sát chỉ cần được thực hiện khi một cột cụ thể  
được tham khảo đến trong câu truy vấn. dụ, một công ty có thể chỉ mong muốn  
ghi lại sự truy cập thông tin về lương khi tên của nhân viên cũng bị truy cập, bởi  
nếu chỉ xem thông tin về lương không mà không biết tên người sở hửu số  
lương đó cũng nghĩa. Ta cũng thể chỉ rằng việc giám sát chỉ xảy ra khi  
tất cả các cột liên quan điều được tham khảo đến, hoặc chỉ một trong các cột liên  
quan được tham khảo.  
Trong trường hợp nhiều hơn một cột liên quan được chỉ định, Oracle Database sẽ  
sinh ra một bản ghi giám sát nếu câu lênh SQL tham khảo đến bất cột nào trong  
những cột được giám sát đó.  
6. Điều kiện giám sát NULL:  
Để đảm báo việc giám sát các hành động cụ thể (statement_types) ảnh hưởng tới  
những cột được chỉ định rõ (audit_column), đặc tả điều kiện giám sát  
(audit_condition) là NULL, điều đó được hiểu như một điều kiện đúng. Dạng  
điều kiện cũ “1=1” không còn được sử dụng như trong Oracle 9i vì nó không có  
được kết quả mong muốn một cách đáng tin cậy. NULL sẽ vẫn tạo ra được sự  
giám sát kể cả khi không có dòng nào được xử lí, do đó tất cả mọi hoạt động trên  
cột liên quan (audit_column) với chính sách đó đều được ghi lại.  
Chương Trình Đào To TXa  
KH & KT Máy Tính – Đi hc Bách Khoa TP.HCM  
Bo Mt HThng Thông Tin  
Lab 13  
4
Lưu ý:  
Sử dụng chuỗi rỗng không tương đương với giá trị NULL và sẽ dẫn đến sự  
giám sát đáng tin cậy.  
Nếu NULL hoặc không có điều kiện giám sát nào được đặc tả, thì bất kì hành  
động nào tác động lên một bảng thỏa chính sách đó đều khiến cho một bản ghi  
giám sát được tạo ra, dù cho có không có dòng nào được trả về từ câu truy  
vấn.  
II. Gói DBMS_FGA trong Oracle  
Gói DBMS_FGA cung cấp chức năng bảo mật FGA. Để thể quản lý các chính sách  
giám sát, ta cần phải quyền thực thi trên DBMS_FGA (EXCUTE ON DBMS_FGA)  
1. Thủ tục ADD_POLICY  
Thủ tục này dùng để tạo ra các chính sách giám sát. Số chính sách giám sát tối đa  
trên một bảng hoặc view là 256.  
Cú pháp  
DBMS_FGA.ADD_POLICY(  
object_schema  
object_name  
policy_name  
VARCHAR2,  
VARCHAR2,  
VARCHAR2,  
audit_condition VARCHAR2,  
audit_column VARCHAR2,  
handler_schema VARCHAR2,  
handler_module VARCHAR2,  
enable  
BOOLEAN,  
statement_types VARCHAR2,  
audit_trail  
BINARY_INTEGER IN DEFAULT,  
audit_column_opts BINARY_INTEGER IN DEFAULT);  
Tham số  
Chương Trình Đào To TXa  
KH & KT Máy Tính – Đi hc Bách Khoa TP.HCM  
Bo Mt HThng Thông Tin  
Lab 13  
5
Tên  
tả  
Mặc định  
object_schema  
Tên của schema chứa đối tượng bị giám sát (Nếu NULL thì NULL  
hệ thống sẽ lấy schema của user hiện tại)  
object_name  
policy_name  
audit_condition  
Tên của object bị giám sát.  
-
-
Tên của chính sách, tên này phải duy nhất  
Điều kiện để hàm đó được giám sát. NULL có nghĩa là NULL  
hàng nào cũng sẽ bị giám  
audit_column  
Những cột liên quan sẽ được kiểm tra mỗi khi truy cập. NULL  
Chúng bao gồm những cột ẩn. Giá trị mặc định NULL  
nghĩa là giám sát sẽ xảy ra nếu bất cột nào trong những  
cột liên quan đó bị truy cập hoặc ảnh hưởng.  
handler_schema Schema chứa hàm xử sự kiên. Mặc định NULL sẽ lấy NULL  
schema của user hiện tại.  
handler_module Tên hàm xử sự kiện. Hàm này được gọi chỉ sau khi hàng NULL  
đầu tiên mà thỏa điều kiện giám sát trong câu truy vấn được  
xử lí. Nếu hàm này bị lỗi với một ngoại lệ nào đó thì câu  
lệnh SQL bị giám sát sẽ cũng không thể thực thi được.  
enable  
Giá trị này bằng TRUE có nghĩa là chính sách này được TRUE  
kích hoạt.  
statement_types Kiểu câu lệnh SQL mà chính sách này áp dụng vào: SELECT  
INSERT, UPDATE, DELETE, hay chỉ là SELECT.  
audit_trail  
DB+EXTENDE  
Nơi ghi lại các bản ghi giám sát  
D
audit_column_opt Câu lệnh bị giám sát khi câu truy vấn tham khảo tới một ANY_COLUM  
s
trong những cột được chỉ ra trong tham số audit_column NS  
hay phải tham khảo tới tất cả các cột được chỉ ra trong đó.  
Chương Trình Đào To TXa  
KH & KT Máy Tính – Đi hc Bách Khoa TP.HCM  
Bo Mt HThng Thông Tin  
Lab 13  
6
Chú ý về tham số audit_trail:  
audit_trail => DBMS_FGA.DB : bản ghi giám sát sẽ được ghi vào bảng  
SYS.FGA_LOG$ của cơ sở dữ liệu loại bỏ cột SQL Text và SQL Bind.  
audit_trail => DBMS_FGA.DB+EXTENDED : bản ghi giám sát sẽ được ghi  
vào bảng SYS.FGA_LOG$ của cơ sở dữ liệu và có thêm hai SQL Text và  
SQL Bind.  
audit_trail => DBMS_FGA.XML: bản ghi giám sát sẽ được ghi vào file  
XML, file này được lưu trong hệ điều hành và không chứa hai cột SQL Text  
và SQL Bind.  
audit_trail => DBMS_FGA.XML+EXTENDED: bản ghi giám sát sẽ được ghi  
vào file XML, file này được lưu trong hệ điều hành và chứa hai cột SQL Text  
và SQL Bind.  
Các thông số của audit_trail nằm trong view ALL_AUDIT_POLICIES.  
2. Thủ tục DISABLE_POLICY  
Thủ tục này để bất hoạt một chính sách giám sát.  
Cú pháp  
DBMS_FGA.DISABLE_POLICY(  
object_schema VARCHAR2,  
object_name  
policy_name  
VARCHAR2,  
VARCHAR2 );  
Tham số  
Tên  
tả  
object_schema  
object_name  
policy_name  
Tên của schema chứa đối tượng bị giám sát  
Tên của đối tượng bị giám sát  
Tên của chính sách.  
3. Thủ tục ENABLE_POLICY  
Thủ tục này cho phép kích hoạt một chính sách giám sát.  
Cú pháp  
Chương Trình Đào To TXa  
KH & KT Máy Tính – Đi hc Bách Khoa TP.HCM  
Bo Mt HThng Thông Tin  
Lab 13  
7
DBMS_FGA.ENABLE_POLICY(  
object_schema VARCHAR2,  
object_name  
policy_name  
enable  
VARCHAR2,  
VARCHAR2,  
BOOLEAN);  
Tham số  
Tên  
tả  
object_schema  
object_name  
policy_name  
enable  
Tên của schema chứa đối tượng bị giám sát.  
Tên của đối tượng bị giám sát.  
Tên của chính sách  
TRUE là giá trị mặc định.  
4. Thủ tục DROP_POLICY  
Thủ tục này để loại bỏ một chính sách giám sát.  
Cú pháp  
DBMS_FGA.DROP_POLICY(  
object_schema VARCHAR2,  
object_name  
policy_name  
VARCHAR2,  
VARCHAR2 );  
Tham số  
Tên  
tả  
object_schema  
object_name  
policy_name  
Tên của schema chứa đối tượng bị giám sát.  
Tên của đối tượng bị giám sát.  
Tên của chính sách.  
III. Thực hành  
Giám sát tất cả các câu lệnh (INSERT , UPDATE, DELETE, SELECT) trên bảng  
hr.emp để theo dõi những câu truy vấn mà truy cập đến cột lương của nhân viên thuộc  
Chương Trình Đào To TXa  
KH & KT Máy Tính – Đi hc Bách Khoa TP.HCM  
Bo Mt HThng Thông Tin  
Lab 13  
8
phòng SALES.  
BEGIN  
DBMS_FGA.ADD_POLICY(  
object_schema => 'hr',  
object_name  
policy_name  
=> 'emp',  
=> 'chk_hr_emp',  
audit_condition => 'dept = ''SALES'' ',  
audit_column => 'salary'  
statement_types=>'insert,update,delete,select');  
END;  
Những câu lệnh sau sẽ gây ra giám sát:  
SELECT count(*)  
FROM hr.emp  
WHERE dept = 'SALES' and salary > 10000000;  
SELECT salary  
FROM hr.emp  
WHERE dept = 'SALES';  
DELETE  
FROM hr.emp  
WHERE salary >1000000;  
Hủy bỏ chính sách này ta có thể dùng thủ tục DROP_POLICY  
BEGIN  
DBMS_FGA.DROP_POLICY(  
object_schema => 'hr',  
object_name  
policy_name  
END;  
=> 'emp',  
=> 'chk_hr_emp');  
Chương Trình Đào To TXa  
KH & KT Máy Tính – Đi hc Bách Khoa TP.HCM  
Bo Mt HThng Thông Tin  
Lab 13  
9
Ta bổ sung thêm vào chính sách yêu cầu, mỗi khi điều kiện trên xảy ra thì hệ thống sẽ  
cảnh báo cho nhà quản trị. Với yêu cầu đó, ta cần một hàm xử sự kiện như dưới đây  
/* create audit event handler */  
CREATE PROCEDURE sec.log_id (schema1 varchar2, table1  
varchar2, policy1 varchar2) AS  
BEGIN  
-- send an alert note to my pager  
UTIL_ALERT_PAGER(schema1, table1, policy1);  
END;  
Tạo chính sách  
DBMS_FGA.ADD_POLICY(  
object_schema  
object_name  
policy_name  
=> 'hr',  
=> 'emp',  
=> 'chk_hr_emp',  
audit_condition => 'dept = ''SALES'' ',  
audit_column  
handler_schema  
handler_module  
enable  
=> 'salary',  
=> 'sec',  
=> 'log_id',  
=> FALSE  
statement_types =>'INSERT, UPDATE, SELECT, DELETE',  
audit_trail => DBMS_FGA.DB+DBMS_FGA.EXTENDED,  
audit_column_opts => DBMS_FGA.ALL_COLUMNS);  
Bởi vì lúc tạo chính sách ta đã bất hoạt chính sách đó bằng tham số:  
enable => FALSE  
vậy sau này khi nào ta muốn kích hoạt chính sách đó ta có thể dùng thủ tục  
ENABLE _POLICY  
BEGIN  
DBMS_FGA.ENABLE_POLICY(  
Chương Trình Đào To TXa  
KH & KT Máy Tính – Đi hc Bách Khoa TP.HCM  
Bo Mt HThng Thông Tin  
Lab 13 10  
object_schema  
=> 'hr',  
object_name  
policy_name  
enable  
=> 'emp',  
=> 'chk_hr_emp',  
=> TRUE);  
END;  
IV. BÀI TẬP  
1. Tạo bảng ACCOUNTS thuộc schema của user ACCMASTER  
ACCNO ACCNAME BAL  
---------- -------------------- ----------  
1
2
3
4
Alex  
10000  
15000  
20000  
25000  
Bill  
Charlie  
David  
2. Hiện thực chính sách: giám sát khi một user nào đó truy xuất vào bảng ACCOUNTS và  
xem số dư lớn hơn hoặc bằng 20000.  
3. Giả sử ta có chính sách:  
1 begin  
2
dbms_fga.add_policy (  
3
object_schema => 'ACCMASTER',  
4
object_name  
policy_name  
audit_column  
=> 'ACCOUNTS',  
=> 'ACC_MAXBAL',  
=> 'ACCNO, BAL',  
5
6
7
audit_condition => 'BAL >= 20000',  
handler_schema => 'ACCMASTER',  
8
9
handler_module => 'FGA_SEND_MAIL'  
audit_column_opts => dbms_fga.all_columns  
10  
11  
);  
12 end;  
Câu lệnh nào sau đây gây ra giám sát:  
Chương Trình Đào To TXa  
KH & KT Máy Tính – Đi hc Bách Khoa TP.HCM  
Bo Mt HThng Thông Tin  
Lab 13 11  
select * from accounts;  
select accname  
from accounts  
where bal > 20000 ;  
select accname  
from accounts  
where bal > 20000 and accno >=3;  
select accname  
from accounts  
where bal > 20000 and accno < 3;  
Chương Trình Đào To TXa  
KH & KT Máy Tính – Đi hc Bách Khoa TP.HCM  
docx 11 trang yennguyen 08/04/2022 4080
Bạn đang xem tài liệu "Bài thực hành Bảo mật hệ thống thông tin - Bài thực hành số 13: Fine-grained Auditing", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • docxbai_thuc_hanh_bao_mat_he_thong_thong_tin_bai_thuc_hanh_so_13.docx