Bài thực hành Bảo mật hệ thống thông tin số 9: Oracle Label Security (2) có nội dung trình bày về các thành phần của nhãn trong Oracle Label Security, nhãn dữ liệu (data label), cú pháp của nhãn dữ liệu,... Mời các bạn cùng tham khảo chi tiết nội dung tài liệu.
Trang 1Bà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, 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
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:ố ớ ỗ ầ ị ạ ố ạ ỗ
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 6sa_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 7sa_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;
/
Trang 8Đ 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 => 'ACCESS_LOCATIONS', short_name => '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 => 'ACCESS_LOCATIONS', long_name => 'CORPORATE',
short_name => 'CORP', 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');
Trang 9Đ 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 => 'ACCESS_LOCATIONS', group_num => 90,
new_short_name => 'RFR', new_long_name => 'REPUBLIC FRANCE');
END;
/
BEGIN
sa_components.alter_group (policy_name => 'ACCESS_LOCATIONS', short_name => '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 => 'ACCESS_LOCATIONS', short_name => 'RFR');
END;
/
Trang 10II 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:ộ ữ ệ ấ ỳ
Chu i ký t mô 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 là m t ví 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:ể ạ ữ ệ ủ ộ ổ ứ
Trang 11Khô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 và 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 là ọ 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ị
Trang 12“highly_sensivitve” (H) có tag b t đ u b ng s 4, “sensitive” (S) có tag b t đ uắ ầ ằ ố ắ ầ
b ng s 3,…ằ ố
Trang 13Label Tag Nhãn d li uữ ệ
10000 P
20000 C
21000 C:FNCL
21100 C:FNCL,OP
30000 S
31110 S:OP:WR
40000 HS
42000 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 => 'ACCESS_LOCATIONS', label_tag => 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');
Trang 14EXECUTE sa_label_admin.create_label
('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 có 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 => 'ACCESS_LOCATIONS', label_tag => 30000,
new_label_value => 'SENS:SM');