Bài thực hành Bảo mật hệ thống thông tin - Bài thực hành số 9: Oracle Label Security (2)

Bảo Mật Hệ Thống Thông Tin  
Lab 9  
1
Bài thực hành số 9  
ORACLE LABEL SECURITY (2)  
Tóm tắt nội dung:  
Các thành phần của nhãn trong Oracle Label Security  
Nhãn dữ liệu (data label)  
I. Các thành phần của nhãn dữ liệu  
A. Lý thuyết  
1. Nhãn dữ liệu (data label)  
Như đã biết, mô hình MAC bảo vệ dữ liệu bằng cách quy định một hệ thống biểu  
diễn mức độ quan trọng, mật cho các đối tượng dữ liệu theo cấp bậc từ cao xuống  
thấp. dụ, một công ty có thể phân loại mức độ mật thành 4 cấp với mức độ  
bảo mật giảm dần: TOP SECRET (tối mật), SECRET (bí mật), CONFIDENTIAL  
(chỉ lưu hành nội bộ), PUBLIC (công khai).  
Trong OLS, Oracle sử dụng các nhãn dữ liệu (data label) để phân lớp dữ liệu theo  
mức độ nhạy cảm của nó và một số tiêu chí khác. Nói cách khác, mỗi nhãn dữ liệu  
sẽ chứa thông tin về mức độ nhạy cảm của dữ liệu một số tiêu chí cộng thêm mà  
người dùng phải đáp ứng để thể truy xuất đến dữ liệu đó.  
Nhãn dữ liệu là 1 thuộc tính đơn gồm 3 loại thành phần: level, compartment, group.  
Nếu một chính sách được áp dụng cho một bảng, thì mỗi hàng trong bảng đó sẽ  
được gán một nhãn dữ liệu (data label) để biểu diễn mức độ bảo mật của hàng dữ  
liệu đó. Giá trị của nhãn được lưu trong cột chứa thông tin của chính sách (cột được  
tự động tạo thêm khi chính sách được áp dụng cho bảng).  
2. Các thành phần của nhãn  
a. Level  
Mỗi nhãn có đúng 1 level biểu thị độ nhạy cảm của dữ liệu. OLS cho phép tối  
đa 10,000 level trong 1 chính sách.  
Đối với mỗi level, ta cần định nghĩa 1 dạng số và 2 dạng chuỗi cho nó. VD:  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 9  
2
Dạng số  
Dạng chuỗi dài  
HIGHLY_SENSITIVE  
SENSITIVE  
Dạng chuỗi ngắn  
40  
30  
20  
10  
HS  
S
CONFIDENTIAL  
PUBLIC  
C
P
Dạng số (numeric form): dạng số của level có thể giả trị trong khoảng 0-  
9999. Level có giá trị càng cao thì độ nhạy cảm càng tăng. Trong VD trên,  
Highly_sensitive độ nhạy cảm cao nhất. User nên tránh sử dụng một chuỗi  
tuần tự liên tiếp các giá trị để biểu diễn cho 1 bộ level của nhãn để tránh tình  
trạng khi có level mới thêm vào thì phải định nghĩa lại toàn bộ các level.  
Dạng chuỗi dài (long form): chứa tối đa 80 ký tự, cho biết tên đầy đủ của level.  
Dạng chuỗi ngắn (short form): chứa tối đa 30 ký tự, dạng rút gọn của tên  
level. Mỗi khi cần tham khảo đến level ta sử dụng tên rút gọn này.  
b. Compartment  
Mỗi nhãn có thể có 1 hoặc nhiều hoặc không có compartment nào. OLS cho  
phép tối đa 10,000 compartment trong 1 chính sách.  
Compartment giúp cho việc phân loại dữ liệu theo lĩnh vực, chuyên ngành, dự  
án,…chứ không thể hiện sự phân cấp mức độ nhạy cảm của dữ liệu đó. Nghĩa là  
nếu ta có 2 dữ liệu thuộc 2 compartment C1 và C2, thì có nghĩa là 2 dữ liệu đó  
thuộc 2 lĩnh vực khác nhau là C1 và C2 chứ không có nghĩa dữ liệu thuộc C1  
nhạy cảm hơn dữ liệu thuộc C2 (hay ngược lại).  
Đối với mỗi compartment, ta cần định nghĩa 1 dạng số và 2 dạng chuỗi. VD:  
Dạng số  
Dạng chuỗi dài  
FINANCIAL  
Dạng chuỗi ngắn  
FINCL  
85  
65  
45  
CHEMICAL  
CHEM  
OPERATIONAL  
OP  
Dạng số (numeric form): dạng số của compartment có thể giả trị trong  
khoảng 0-9999. Nó không liên quan gì đến con số của level. Giá trị của nó dùng  
để quy định thứ tự hiển thị của các compartment trong một label. Đối với VD  
trên, ta sẽ có các nhãn dạng như sau:  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 9  
3
S:OP,CHEM,FINCL(do OP có giá trị nhỏ nhất nên nó được hiển thị trước nhất)  
Dạng chuỗi dài (long form): tối đa 80 ký tự, là tên đầy đủ của compartment.  
Dạng chuỗi ngắn (short form): tối đa 30 ký tự, dạng rút gọn của tên  
compartmet. Khi cần tham khảo đến compartment ta sử dụng tên rút gọn này.  
c. Group  
Mỗi nhãn có thể có 1 hoặc nhiều hoặc không có group nào. OLS cho phép tối  
đa 10,000 group trong 1 chính sách.  
Group giúp xác định những tổ chức, cơ quan, bộ phận nào sở hữu hoặc quản lý  
dữ liệu (thông thường thể hiện cơ cấu của công ty). Do vậy group có cấu trúc  
cây phân cấp. Một group có thể thuộc một group cha và có nhiều group con. Dữ  
liệu thuộc một group con thì được xem như cũng thuộc group cha. VD:  
Dạng số  
1000  
Dạng chuỗi dài  
WESTERN_REGION  
Dạng chuỗi ngắn Group cha  
WR  
1100  
WR_SALES  
WR_SAL  
WR_HR  
WR_FIN  
WR_AP  
WR_AR  
WR  
WR  
1200  
WR_HUMAN_RESOURCES  
WR_FINANCE  
1300  
WR  
1310  
WR_ACCOUNTS_PAYABLE  
WR_ACCOUNTS_RECEIVABLE  
WR_FIN  
WR_FIN  
1320  
Dạng số (numeric form): dạng số của group có thể giả trị trong khoảng 0-  
9999. Nó không liên quan gì đến con số của level. Giá trị của nó dùng để quy  
định thứ tự hiển thị của các group trong một label. Đối với VD trên, ta sẽ có các  
nhãn dạng như sau:  
S:CHEM:WR,WR_HR(WR có giá trị nhỏ hơn WR_HR nên được hiển thị trước)  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 9  
4
Dạng chuỗi dài (long form): chứa tối đa 80 ký tự, cho biết tên của group.  
Dạng chuỗi ngắn (short form): chứa tối đa 30 ký tự, dạng rút gọn của tên  
group. Mỗi khi cần tham khảo đến group ta sử dụng tên rút gọn này.  
B. Thực hành  
1. Tạo level  
Ở phần này ta sẽ tạo các thành phần level cho chính sách ACCESS_LOCATIONS  
mà ta đã tạo trong bài lab “Oracle Label Security (1)”.  
Ta quy định chính sách ACCESS_LOCATIONS của ta có 3 level (theo thứ tự mức  
độ bảo mật giảm dần): SENSITIVE, CONFIDENTIAL, PUBLIC. Ta dùng  
procedure SA_COMPONENTS.CREATE_LEVEL để tạo ra các level:  
CONN sec_admin/secadmin;  
BEGIN  
sa_components.create_level  
(policy_name  
long_name  
=> 'ACCESS_LOCATIONS',  
=> 'PUBLIC',  
short_name  
level_num  
=> 'PUB',  
=> 1000);  
END;  
/
EXECUTE sa_components.create_level  
('ACCESS_LOCATIONS',2000,'CONF','CONFIDENTIAL');  
EXECUTE sa_components.create_level  
('ACCESS_LOCATIONS',3000,'SENS','SENSITIVE');  
Đoạn code trên cho ta thấy 2 cách khác nhau để thực thi procedure. Người đọc cũng  
cần chú ý cách chọn số cho các level.  
Để thay đổi đầy đủ và tên rút gọn của level, ta dùng thủ tục  
SA_COMPONENTS.ALTER_LEVEL. Nếu level đang được dùng bởi ít nhất một  
nhãn dữ liệu nào đó, ta có thể thay đổi tên đầy đủ của nhưng không thể thay đổi  
tên rút gọn. Trong mọi trường hợp, ta đều không thể thay đổi số đại diện của level.  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
CONN sec_admin/secadmin;  
Lab 9  
5
EXECUTE sa_components.create_level  
('ACCESS_LOCATIONS',4000,'HS','HIGHLY SECRET');  
BEGIN  
sa_components.alter_level  
(policy_name  
level_num  
=> 'ACCESS_LOCATIONS',  
=> 4000,  
new_short_name => 'TS',  
new_long_name => 'TOP SECRET');  
END;  
/
BEGIN  
sa_components.alter_level  
(policy_name  
short_name  
=> 'ACCESS_LOCATIONS',  
=> 'TS',  
new_long_name => 'TOP SENSITIVE');  
END;  
/
Để xóa một level ta dùng thủ tục SA_COMPONENTS.DROP_LEVEL. Nếu level  
đang được sử dụng bởi bất kỳ nhãn dữ liệu nào, ta không thể xóa nó.  
CONN sec_admin/secadmin;  
BEGIN  
sa_components.drop_level  
(policy_name  
short_name  
=> 'ACCESS_LOCATIONS',  
=> 'TS');  
END;  
/
2. Tạo compartment  
Giả sử chúng ta có 3 compartment là: Finance, Sales & Marketing, Human  
Resources. Để tạo compartment chúng ta dùng procedure  
SA_COMPONENTS.CREATE_COMPARTMENT:  
CONN sec_admin/secadmin;  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 9  
6
BEGIN  
sa_components.create_compartment  
(policy_name  
long_name  
short_name  
comp_num  
=> 'ACCESS_LOCATIONS',  
=> 'SALES_MARKETING',  
=> 'SM',  
=> 2000);  
END;  
/
EXECUTE sa_components.create_compartment  
('ACCESS_LOCATIONS',3000,'FIN','FINANCE');  
EXECUTE sa_components.create_compartment  
('ACCESS_LOCATIONS',1000,'HR','HUMAN RESOURCES');  
Để thay đổi đầy đủ và tên rút gọn của compartment, ta dùng thủ tục  
SA_COMPONENTS.ALTER_COMPARTMENT. Các điều kiện của việc thay đổi  
thuộc tính của compartment giống như đối với level.  
CONN sec_admin/secadmin;  
EXECUTE sa_components.create_compartment  
('ACCESS_LOCATIONS',4000,'PR','PUBLIC RELATIONS');  
BEGIN  
sa_components.alter_compartment  
(policy_name  
comp_num  
=> 'ACCESS_LOCATIONS',  
=> 4000,  
new_short_name => 'PU',  
new_long_name => 'PURCHASING');  
END;  
/
BEGIN  
sa_components.alter_compartment  
(policy_name  
short_name  
=> 'ACCESS_LOCATIONS',  
=> 'PU',  
new_long_name => 'PURCHASE');  
END;  
/
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 9  
7
Để xóa một compartment ta dùng thủ tục SA_COMPONENTS.DROP_  
COMPARTMENT. Nếu compartment đang được sử dụng bởi bất kỳ nhãn dữ liệu  
nào, ta không thể xóa nó.  
CONN sec_admin/secadmin;  
BEGIN  
sa_components.drop_compartment  
(policy_name  
short_name  
=> 'ACCESS_LOCATIONS',  
=> 'PU');  
END;  
/
3. Tạo group  
Chính sách của chúng ta sẽ có 1 group cấp cao nhất là Corporate (CORP) tương  
ứng với cấp độ toàn công ty. Công ty này có các chi nhánh hoạt động ở 3 nước: Mỹ  
(American United States), Anh (United Kingdom) và Canada. Ứng với mỗi khu vực  
đó ta tạo 1 group con cho group CORP.  
Ta dùng procedure SA_COMPONENTS.CREATE_GROUP để tạo ra các group:  
CONN sec_admin/secadmin;  
BEGIN  
sa_components.create_group  
(policy_name  
long_name  
=> 'ACCESS_LOCATIONS',  
=> 'CORPORATE',  
=> 'CORP',  
short_name  
group_num  
=> 10,  
parent_name  
=> NULL);  
END;  
/
EXECUTE SA_COMPONENTS.CREATE_GROUP  
('ACCESS_LOCATIONS',30,'US','UNITED STATES','CORP');  
EXECUTE SA_COMPONENTS.CREATE_GROUP  
('ACCESS_LOCATIONS',50,'UK','UNITED KINGDOM','CORP');  
EXECUTE SA_COMPONENTS.CREATE_GROUP  
('ACCESS_LOCATIONS',70,'CA','CANADA','CORP');  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 9  
8
Để thay đổi đầy đủ và tên rút gọn của group, ta dùng thủ tục  
SA_COMPONENTS.ALTER_GROUP. Các điều kiện của việc thay đổi thuộc tính  
của group giống như đối với level.  
CONN sec_admin/secadmin;  
EXECUTE sa_components.create_group  
('ACCESS_LOCATIONS',90,'FR','FRANCE','CORP');  
BEGIN  
sa_components.alter_group  
(policy_name  
group_num  
=> 'ACCESS_LOCATIONS',  
=> 90,  
new_short_name => 'RFR',  
new_long_name => 'REPUBLIC FRANCE');  
END;  
/
BEGIN  
sa_components.alter_group  
(policy_name  
short_name  
=> 'ACCESS_LOCATIONS',  
=> 'RFR',  
new_long_name => 'PURCHASE');  
END;  
/
Để xóa một group ta dùng thủ tục SA_COMPONENTS.DROP_GROUP. Nếu  
group đang được sử dụng bởi bất kỳ nhãn dữ liệu nào, ta không thể xóa nó.  
CONN sec_admin/secadmin;  
BEGIN  
sa_components.drop_group  
(policy_name  
short_name  
=> 'ACCESS_LOCATIONS',  
=> 'RFR');  
END;  
/
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 9  
9
II. Chi tiết về nhãn dữ liệu  
A. Lý thuyết  
1. Cú pháp của nhãn dữ liệu  
Hình sau minh họa quan hệ của các thành phần trong 1 nhãn:  
Một nhãn dữ liệu bất kỳ có cú pháp sau:  
LEVEL : COMPARTMENT1, ..., COMPARTMENTn : GROUP1, ..., GROUPn  
Chuỗi tự tả một nhãn có thể chứa tối đa 4000 ký tự, bao gồm các ký tự số, ký  
tự chữ, khoảng trắng, dấu gạch dưới (_).  
Các nhãn không phân biệt chữ hoa, chữ thường. Tuy nhiên chuỗi được lưu trữ trong  
data dictionary sẽ hiển thị dưới dạng chữ hoa.  
Dấu hai chấm (“:”) dùng để phân cách giữa các loại thành phần. VD:  
SENSITIVE  
HIGHLY_SENSITIVE:FINANCIAL  
SENSITIVE::WESTERN_REGION  
CONFIDENTIAL:FINANCIAL:VP_GRP  
SENSITIVE:FINANCIAL,CHEMICAL:EASTERN_REGION,WESTERN_REGION  
Hình sau đây một dụ minh họa cho việc kết hợp level, compartment, group để  
phân loại dữ liệu của một tổ chức:  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 9 10  
Không phải mọi tổ hợp của các thành phần đều hình thành nên một nhãn hợp lệ. Ta  
chỉ định nghĩa những nhãn nào có tổ hợp thành phần mà ta có nhu cầu sử dụng thật  
sự trong thực tế.  
Sử dụng package SA_COMPONENTS để định nghĩa các thành phần của nhãn.  
Sử dụng package SA_LABEL_ADMIN để tạo quản lý nhãn.  
2. Label Tag  
Khi một nhãn dữ liệu mới được tạo, Oracle sẽ tự động tạo cho nhãn đó một con số  
đại diện được gọi label tag.  
Mỗi label tag xác định duy nhất 1 nhãn trong toàn bộ các nhãn của tất cả các chính  
sách có trong cơ sở dữ liệu đó. Nói cách khác, trong một cơ sở dữ liệu, không có bất  
kỳ 2 label tag nào (cùng 1 chính sách hoặc khác chính sách) có giá trị giống nhau.  
Giá trị của label tag không có tính chất so sánh như con số đại diện cho level.  
Đây là con số thật sự được lưu vào cột chứa thông tin nhãn của chính sách trong các  
bảng được bảo vệ.  
Ngoài hình thức tạo tự động, Oracle cũng cho phép ta tự định nghĩa giá trị tag cho  
các nhãn nhằm mục đích dễ quản lý, sắp xếp, so sánh và xử lý trong quá trình quản  
trị. Trong ví dụ bên dưới, ta quy định các nhãn có level “highly_sensivitve” (H) có  
tag bắt đầu bằng số 4, “sensitive” (S) có tag bắt đầu bằng số 3,…  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 9 11  
Label Tag  
10000  
20000  
21000  
21100  
30000  
31110  
40000  
42000  
Nhãn dữ liệu  
P
C
C:FNCL  
C:FNCL,OP  
S
S:OP:WR  
HS  
HS:OP  
B. Thực hành  
Các bước ta vừa làm ở phần I tương ứng với bước 2 trong quy trình hiện thực OLS. Ở  
phần này ta sẽ thực hiện bước 3: tạo các nhãn thật sự cần dùng từ các thành phần trên.  
Để tạo nhãn ta dùng thủ tục SA_LABEL_ADMIN.CREATE_LABEL. Khi sử dụng thủ  
tục này để tạo nhãn, ta phải tự định ra label tag (là một số nguyên có tối đa 8 chữ số)  
cho nhãn được tạo.  
CONN sec_admin/secadmin;  
BEGIN  
sa_label_admin.create_label  
(policy_name  
label_tag  
=> 'ACCESS_LOCATIONS',  
=> 10000,  
label_value  
=> 'PUB');  
END;  
/
EXECUTE sa_label_admin.create_label  
('ACCESS_LOCATIONS',20000,'CONF');  
EXECUTE sa_label_admin.create_label  
('ACCESS_LOCATIONS',20010,'CONF::US');  
EXECUTE sa_label_admin.create_label  
('ACCESS_LOCATIONS',20020,'CONF::UK');  
EXECUTE sa_label_admin.create_label  
('ACCESS_LOCATIONS',20030,'CONF::CA');  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
EXECUTE sa_label_admin.create_label  
Lab 9 12  
('ACCESS_LOCATIONS',21020,'CONF:HR:UK');  
EXECUTE sa_label_admin.create_label  
('ACCESS_LOCATIONS',22040,'CONF:SM:UK,CA');  
EXECUTE sa_label_admin.create_label  
('ACCESS_LOCATIONS',34000,'SENS:SM,FIN');  
EXECUTE sa_label_admin.create_label  
('ACCESS_LOCATIONS',39090,'SENS:HR,SM,FIN:CORP');  
Thông thường, khi xây dựng chính sách, ta cũng nên xây dựng hệ thống quy ước đặt  
label tag để tiện lợi trong việc quản lý. Trong đoạn code trên, ta quy ước chữ số đầu  
tiên biểu diễn level (1 là PUB, 2 là CONF, 3 là SENS), 2 chữ số kế tiếp biểu diễn các  
compartment (00 cho biết không có compartment), 2 chữ số cuối biểu diễn group (00  
cho biết không có group).  
(Lưu ý là trong phần thực hành này chỉ tạo một số nhãn để minh họa, chứ không tạo hết  
tất cả các nhãn cần thiết.)  
Để thay đổi nhãn, ta dùng thủ tục SA_LABEL_ADMIN.ALTER_LABEL. Ta có thể  
thay đổi giá trị của nhãn nhưng không thể thay đổi giá trị của label tag. Do vậy, độ  
nhạy cảm của dữ liệu thể thay đổi được mà không cần phải cập nhật lại bảng chứa  
dữ liệu đó, do trong bảng chỉ lưu label tag chứ không lưu giá trị của nhãn.  
CONN sec_admin/secadmin;  
EXECUTE sa_label_admin.create_label  
('ACCESS_LOCATIONS',30000,'SENS');  
EXECUTE sa_label_admin.create_label  
('ACCESS_LOCATIONS',30090,'SENS::CORP');  
BEGIN  
sa_label_admin.alter_label  
(policy_name  
label_tag  
=> 'ACCESS_LOCATIONS',  
=> 30000,  
new_label_value => 'SENS:SM');  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
sa_label_admin.alter_label  
Lab 9 13  
(policy_name  
label_value  
=> 'ACCESS_LOCATIONS',  
=> 'SENS:SM',  
new_label_value => 'SENS:HR');  
END;  
/
Ta có thể xóa nhãn bằng thủ tục SA_LABEL_ADMIN.DROP_LABEL:  
BEGIN  
sa_label_admin.drop_label  
(policy_name  
label_value  
=> 'ACCESS_LOCATIONS',  
=> 'SENS:HR');  
END;  
/
BEGIN  
sa_label_admin.drop_label  
(policy_name  
label_tag  
=> 'ACCESS_LOCATIONS',  
=> 30090);  
END;  
/
III. Bài tập  
1. Tạo các thành phần nhãn cho chính sách region_policy (trong bài tập của Lab 8):  
Level: level 1, level 2, level 3  
Compartment: MANAGEMENT, EMPLOYEE  
Group: REGION NORTH, REGION SOUTH, REGION EAST, REGION WEST  
2. Tạo bảng CUSTOMERS để áp dụng chính sách trên. Sau đó insert dữ liệu vào.  
customers (  
id  
NUMBER(10) NOT NULL,  
VARCHAR2(10),  
VARCHAR2(30),  
VARCHAR2(30),  
VARCHAR2(5),  
cust_type  
first_name  
last_name  
region  
credit  
NUMBER(10,2),  
CONSTRAINT customer_pk PRIMARY KEY (id));  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Vùng giá trị của một số cột:  
Lab 9 14  
cust_type : silver, gold, platinum  
region: north, west, east, south  
credit: học viên cần nhập dữ liệu đủ cho 3 trường hợp tương ứng với 3 khoảng giá trị  
>2000, từ 500 đến 2000, < 500.  
Bảng dữ liệu này sẽ được sử dụng cho bài lab 10.  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
docx 14 trang yennguyen 08/04/2022 6200
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ố 9: Oracle Label Security (2)", để 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_9.docx