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[.]
Trang 1Bài th c hành s 9 ự ố
ORACLE LABEL SECURITY (2)
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, bí m t cho các đ i tể ễ ứ ộ ọ ậ ố ượng d li u theo c p b c tữ ệ ấ ậ ừ cao xu ng th p. Ví d , m t công ty có th phân lo i m c đ bí 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 và m t s tiêu chíữ ệ ẽ ứ ề ứ ộ ạ ả ủ ữ ệ ộ ố
c ng thêm mà ngộ ười dùng ph i đáp ng đ có 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).ụ ả
Trang 22 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:ố ớ ỗ ầ ị ạ ố ạ ỗ
D ngạ
số D ng chu i dàiạ ỗ D ng chu i ng nạ ỗ ắ
40 HIGHLY_SENSITIVE HS
30 SENSITIVE S
20 CONFIDENTIAL C
10 PUBLIC P
D ng s (numeric form) ạ ố : d ng s c a level có th có 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 có đ 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 , là 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ạ ỗ D ng chu iạ ỗ
Trang 3ng nắ
D ng s (numeric form) ạ ố : d ng s c a compartment có th có gi tr trongạ ố ủ ể ả ị kho ng 09999. 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: ớ ẽ ạ ư 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 , là 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 nó 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ố D ng chu i dàiạ ỗ D ng chu i
ng nắ Group cha
Trang 41000 WESTERN_REGION WR
1200 WR_HUMAN_RESOURCES WR_HR WR
1310 WR_ACCOUNTS_PAYABLE WR_AP WR_FIN
1320 WR_ACCOUNTS_RECEIVABLE WR_AR WR_FIN
D ng s (numeric form) ạ ố : d ng s c a group có th có 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)
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 , là 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 => ' ACCESS_LOCATIONS ', long_name => 'PUBLIC' ,
short_name => 'PUB' , level_num => 1000);
END;
/
Trang 5EXECUTE 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 nó 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.ủ CONN sec_admin/secadmin;
EXECUTE sa_components.create_level ('ACCESS_LOCATIONS',4000,'HS','HIGHLY SECRET');
BEGIN sa_components.alter_level (policy_name => 'ACCESS_LOCATIONS', level_num => 4000,
new_short_name => 'TS', new_long_name => 'TOP SECRET');
END;
/ BEGIN sa_components.alter_level (policy_name => 'ACCESS_LOCATIONS', short_name => '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;
Trang 6BEGIN sa_components.drop_level (policy_name => 'ACCESS_LOCATIONS', short_name => '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;
Trang 7BEGIN sa_components.create_compartment
(policy_name => 'ACCESS_LOCATIONS', long_name => 'SALES_MARKETING', short_name => 'SM',
comp_num => 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 => 'ACCESS_LOCATIONS', comp_num => 4000,
new_short_name => 'PU', new_long_name => 'PURCHASING');
END;
/ BEGIN sa_components.alter_compartment (policy_name => 'ACCESS_LOCATIONS', short_name => 'PU',
new_long_name => 'PURCHASE');
END;
/