Bài th c hành s 10ự ố ORACLE LABEL SECURITY (3) Tóm t t n i dung ắ ộ � Các lo i nhãn ng i dùngạ ườ � Các quy n đ c bi t trên chính sáchề ặ ệ � Các đi u ki n áp d ng chính sáchề ệ ụ � Áp d ng chính s[.]
Trang 1Bài th c hành s 10 ự ố
ORACLE LABEL SECURITY (3)
Tóm t t n i dung: ắ ộ
Các lo i nhãn ngạ ười dùng Các quy n đ c bi t trên chính sáchề ặ ệ Các đi u ki n áp d ng chính sáchề ệ ụ
Áp d ng chính sách cho b ngụ ả
I Các lo i nhãn ng ạ ườ i dùng
A. Lý thuy t ế
Trong bài Lab 8 Oracle Label Security (1), ph n ở ầ I.A.4, chúng ta đã nh c đ nắ ế quy trình c b n đ xây d ng m t chính sách OLS. Theo đó:ơ ả ể ự ộ
B4: Gán chính sách trên cho các table ho c schema mà b n mu n b oặ ạ ố ả
v ệ
B5: Gán các gi i h n quy n, các nhãn ngớ ạ ề ười dùng ho c các quy n truyặ ề
xu t đ c bi t cho nh ng ngấ ặ ệ ữ ười dùng liên quan
Th t c a 2 bứ ự ủ ước trên nh v y là h p lý, vì trong OLS, khi m t chính sáchư ậ ợ ộ
được ch đ nh b o v cho m t b ng/schema, k t th i đi m đó b t k ngỉ ị ả ệ ộ ả ể ừ ờ ể ấ ỳ ười dùng nào cũng không th truy xu t vào b ng/schema đó tr khi để ấ ả ừ ược gán cho các nhãn
ng ườ i dùng (user label) thích h p ho c đợ ặ ược c p nh ng quy n đ c bi t đ i v iấ ữ ề ặ ệ ố ớ chính sách đó
Tuy nhiên, đ hi u để ể ược tác d ng c a các tùy ch n áp d ng chính sách bụ ủ ọ ụ ở ướ c
4, ta c n ph i hi u v các ràng bu c đ i v i ngầ ả ể ề ộ ố ớ ười dùng khi truy xu t các b ng vàấ ả schema được b o v Do v y, đ vi c tìm hi u v OLS đả ệ ậ ể ệ ể ề ược d dàng h n, trong bàiễ ơ lab này s t m hoán đ i th t tìm hi u và th c hi n c a bẽ ạ ổ ứ ự ể ự ệ ủ ước 4 và bước 5. Khi đã
Trang 2hi u và bi t cách hi n th c m t chính sách OLS, các b n hãy th c hi n các bể ế ệ ự ộ ạ ự ệ ướ c theo đúng th t c a nó đ đ m b o tính b o m t và toàn v n cho d li u .ứ ự ủ ể ả ả ả ậ ẹ ữ ệ
Trang 31 Nhãn người dùng (user label)
T i m i th i đi m, m i ngạ ỗ ờ ể ỗ ười dùng đ u có m t nhãn g i là ề ộ ọ nhãn ng ườ i dùng
(user lable). Nhãn này có tác d ng cho bi t m c đ tin c y c a ng i dùng đ iụ ế ứ ộ ậ ủ ườ ố
v i nh ng d li u đớ ữ ữ ệ ược chính sách đó b o v Nhãn ngả ệ ười dùng cũng g m cácồ thành ph n gi ng nh nhãn d li u. Khi m t ngầ ố ư ữ ệ ộ ười dùng truy xu t trên b ngấ ả
được b o v , nhãn ngả ệ ười dùng s đẽ ược so sánh v i nhãn d li u c a m i dòngớ ữ ệ ủ ỗ trong b ng đ quy t đ nh nh ng dòng nào ngả ể ế ị ữ ười dùng đó có th truy xu t để ấ ượ c Hình bên dưới minh h a m i quan h tọ ố ệ ương ng c a ứ ủ user label và data label.
Các nhãn th hi n các quy n truy xu t (user authorization) đ ể ệ ề ấ ượ c gán cho các user. Các nhãn th hi n m c đ nh y c m c a d li u (data sensitivity) đ ể ệ ứ ộ ạ ả ủ ữ ệ ượ c gán cho d li u. Đ có th truy xu t đ ữ ệ ể ể ấ ượ c d li u, 2 lo i nhãn này ph i t ữ ệ ạ ả ươ ng
thích v i nhau (access mediation) ớ
OLS cung c p cho chúng ta 2 cách th c đ qu n lý các ấ ứ ể ả user label: gán c thụ ể
t ng thành ph n c a nhãn cho user ho c gán nguyên nhãn cho user. Trong cácừ ầ ủ ặ
ph n sau s trình bày k h n v 2 cách qu n lý này.ầ ẽ ỹ ơ ề ả
Dù s d ng hình th c qu n lý nào, m i ngử ụ ứ ả ỗ ười dùng cũng có m t ộ t p xác th c ậ ự quy n ề ( set of authorizations) đ l u gi thông tin v quy n h n truy xu t đ iể ư ữ ề ề ạ ấ ố
v i nh ng d li u đớ ữ ữ ệ ược chính sách đó b o v T p xác th c quy n g m có:ả ệ ậ ự ề ồ
Level cao nh t ấ ( User Max Level) c a ng i dùng trong các tác v readủ ườ ụ
và write
Level th p nh t ấ ấ ( User Min Level) c a ng i dùng trong các tác vủ ườ ụ write. User Min Level ph i th p h n ho c b ng User Max Level.ả ấ ơ ặ ằ
Trang 4 T p các compartment ậ được truy xu t.ấ
T p các group ậ được truy xu t.ấ (Đ i v i m i compartment và group có l u kèm thông tin quy n truy xu tố ớ ỗ ư ề ấ
được phép là quy n “ề ch đ cỉ ọ ” (readonly) hay quy n “ề đ cvi tọ ế ” (read write))
V i t p xác th c quy n, ta có th hình thành nên nhi u t h p các thành ph nớ ậ ự ề ể ề ổ ợ ầ
c a nhãn. Do v y m i ngủ ậ ỗ ười dùng có th có nhi u user label khác nhau nh ngể ề ư
v n n m trong gi i h n c a t p xác th c quy n. ẫ ằ ớ ạ ủ ậ ự ề
Session label:
Session label là m t user label mà ngộ ười dùng s d ng đ truy xu t dử ụ ể ấ ữ
li u trong m t session làm vi c. Session label có th là m t t h p b t k cácệ ộ ệ ể ộ ổ ợ ấ ỳ thành ph n n m trong gi i h n t p xác th c quy n c a user đó.ầ ằ ớ ạ ậ ự ề ủ
Người qu n tr có th mô t session label m c đ nh cho ngả ị ể ả ặ ị ười dùng khi thi t l p t p xác th c quy n cho ngế ậ ậ ự ề ười dùng đó
B n thân ngả ười dùng có th thay đ i session label c a mình thành m tể ổ ủ ộ nhãn b t k v i đi u ki n là nhãn m i n m trong gi i h n xác th c quy nấ ỳ ớ ề ệ ớ ằ ớ ạ ự ề
c a h ủ ọ
Row label:
Khi m t hàng m i độ ớ ược insert vào m t b ng đang độ ả ược b o v , c n cóả ệ ầ
m t nhãn d li u (data label) độ ữ ệ ược ch đ nh cho hàng d li u m i đó. Ho cỉ ị ữ ệ ớ ặ khi m t hàng độ ược update, nhãn d li u c a hàng đó cũng có th b thay đ i.ữ ệ ủ ể ị ổ
Nh ng nhãn d li u trong các trữ ữ ệ ường h p v a nói trên có th đợ ừ ở ể ượ c gán cho dòng d li u tữ ệ ương ng theo m t trong nh ng cách sau:ứ ộ ữ
Người update/insert hàng d li u ch đ nh m t cách tữ ệ ỉ ị ộ ường mình ngay khi
th c hi n tác v update/insert đó.ự ệ ụ
Hàm gán nhãn (labeling function) c a b ng đó t sinh nhãn theo nh ngủ ả ự ữ
đi u ki n đề ệ ược hi n th c trong function tệ ự ương ng.ứ
B ng giá tr m c đ nh do ngằ ị ặ ị ười qu n tr quy đ nh khi gán quy n h nả ị ị ề ạ truy xu t cho ngấ ười dùng đó
B ng giá tr c a session label c a ngằ ị ủ ủ ười dùng đó
Trang 5 Tùy ng c nh và trữ ả ường h p mà giá tr nhãn m i thêm vào s r i vàoợ ị ớ ẽ ơ
trường h p nào trong các trợ ường h p k trên.ợ ể
Row label là t dùng đ ch nh ng nhãn đ c áp d ng cho các hàng dừ ể ỉ ữ ượ ụ ữ
li u khi hàng đó đệ ược update ho c insert.ặ
Khi insert/update, người dùng có th mô t tể ả ường minh row label cho dòng d li u m i đữ ệ ớ ược update/insert, v i đi u ki n row label ph i th a ớ ề ệ ả ỏ đ ngồ
th iờ các đi u ki n sau: ề ệ
Level th p h n ho c b ng max level c a ngấ ơ ặ ằ ủ ười dùng đó
Level cao h n ho c b ng min level c a ngơ ặ ằ ủ ười dùng đó
Ch đỉ ược ch a các compartment xu t hi n trong session label hi n t iứ ấ ệ ệ ạ
c a ngủ ười dùng đó và người dùng có quy n ề vi t (write) ế trên các compartment đó
Ch đỉ ược ch a các group xu t hi n trong session label hi n t i c aứ ấ ệ ệ ạ ủ
người dùng đó và người dùng có quy n ề vi t (write) ế trên các group đó
2 Qu n lý ngả ười dùng theo t ng lo i thành ph n c a nhãn ừ ạ ầ ủ
Đ gán quy n theo cách này ta c n ch đ nh ra c th các ể ề ầ ỉ ị ụ ể level, compartment, group mà m t user có th truy xu t.ộ ể ấ
Đ d hi u ph n này, ngể ễ ể ầ ườ ọi h c c n nh l i quy t c qu n lý truy xu t c aầ ớ ạ ắ ả ấ ủ
OLS mà ta đã nêu lên trong bài Lab 8 – Oracle Label Security (1): “no read up
no write up limited write down”
Qu n lý các level ả : g m có 4 thông s :ồ ố
max_level: level cao nh t mà ngấ ười dùng có quy n đ c và vi t. Vì quyề ọ ế
t c qu n lý đòi h i “ắ ả ỏ no read up – no write up” (không được đ c và vi t lênọ ế
nh ng d li u có đ b o m t cao h n đ tin c y c a user) nên ữ ữ ệ ộ ả ậ ơ ộ ậ ủ max level
chính là “gi i h n trên” cho vi c truy xu t (đ c và vi t) c a ngớ ạ ệ ấ ọ ế ủ ười dùng
min_level: level th p nh t mà ngấ ấ ười dùng có quy n write. Vì quy t cề ắ
qu n lý yêu c u “limited write down” (ch vi t lên nh ng d li u có đ b oả ầ ỉ ế ữ ữ ệ ộ ả
m t th p h n đ tin c y c a ngậ ấ ơ ộ ậ ủ ười dùng m t m c gi i h n nào đó) nênở ộ ứ ớ ạ
min level chính là “gi i h n dớ ạ ưới” cho tác v vi t c a ngụ ế ủ ười dùng. “Gi i h nớ ạ
dưới” cho tác v đ c chính là level th p nh t mà chính sách đó quy đ nh.ụ ọ ấ ấ ị
Trang 6 def_level: level cho session label m c đ nh c a ngặ ị ủ ười dùng (ph i th aả ỏ
min level <= default level <= max level). N u ngế ười qu n tr b o m t khôngả ị ả ậ
mô t thông s này thì ả ố default level s là ẽ max level.
row_level: level cho row label m c đ nh c a ngặ ị ủ ười dùng, dùng đ gánể nhãn cho d li u mà user đó t o khi truy xu t b ng đữ ệ ạ ấ ả ược b o v b i chínhả ệ ở sách (ph i th a ả ỏ min level <= row level <= max level). N u ngế ười qu n trả ị
b o m t không mô ta thông s này thì ả ậ ố default row level s là ẽ default level.
Compartment : G m có 4 thông s chính:ồ ố
read_comps: danh sách các compartment mà người dùng được quy nề
đ c.ọ
write_comps: danh sách các compartment mà người dùng được quy nề
vi t (danh sách này ph i là t p con c a danh sách ế ả ậ ủ read_comps).
def_comps: danh sách các compartment cho session label m c đ nh c aặ ị ủ
người dùng đó (danh sách này ph i là t p con c a danh sách read_comps).ả ậ ủ
row_comps: danh sách các compartment cho row label m c đ nh c aặ ị ủ
người dùng, dùng đ gán nhãn cho d li u mà ngể ữ ệ ười dùng đó t o khi truyạ
xu t b ng đấ ả ược b o v b i chính sách (danh sách này ph i là t p con c aả ệ ở ả ậ ủ danh sách read_comps và write_comps)
Group : G m có 4 thông s chính:ồ ố
read_groups: danh sách các groups mà người dùng được quy n đ c.ề ọ
write_ groups: danh sách các groups mà người dùng được quy n vi tề ế (danh sách này ph i là t p con c a danh sách read_ groups).ả ậ ủ
def_ groups: danh sách các groups cho session label m c đ nh c a ngặ ị ủ ườ i dùng đó (danh sách này ph i là t p con c a danh sách read_ groups).ả ậ ủ
row_ groups: danh sách các groups cho row label m c đ nh c a ngặ ị ủ ườ i dùng đó, dùng đ gán nhãn cho d li u mà ngể ữ ệ ười dùng đó t o ra khi truy xu tạ ấ
b ng đả ược b o v b i chính sách (danh sách này ph i là t p con c a danhả ệ ở ả ậ ủ sách read_ groups và write_ groups)
L u ýư : n u ngế ười dùng có quy n đ c trên m t group thì đ ng th i cũng cóề ọ ộ ồ ờ quy n đ c trên t t c các group con (tr c ti p và gián ti p) c a group đó. Tề ọ ấ ả ự ế ế ủ ươ ng
Trang 7t đ i v i quy n vi t cũng v y. Hình bên dự ố ớ ề ế ậ ưới minh h a cho vi c th a k quy nọ ệ ừ ế ề
đ c và vi t trên các group. Trong hình, ngọ ế ười dùng có quy n đ c trên groupề ọ WESTERN_REGION nên cũng có quy n đ c trên t t c các group con còn l i.ề ọ ấ ả ạ Bên c nh đó, ngạ ười dùng ch đỉ ượ ấc c p quy n vi t trên group WR_FINANCE nênề ế
ch có quy n vi t trên group này và 2 group con c a nó ch không có quy n vi tỉ ề ế ủ ứ ề ế trên các group WR_SALES, WR_HUMAN_RESOURCES, WESTERN_REGION
3 Qu n lý ngả ười dùng thông qua các nhãn
Đ ti n l i h n, OLS cũng cho phép ngể ệ ợ ơ ười qu n tr thi t l p t p xác th cả ị ế ậ ậ ự quy n cho ngề ười dùng thông qua vi c gán các nhãn thay vì ph i ch đ nh t ngệ ả ỉ ị ừ thành ph n riêng.ầ
Các lo i nhãn c n mô t :ạ ầ ả
max_read_label: nhãn th hi n m c truy xu t cao nh t đ i v i tác v đ c.ể ệ ứ ấ ấ ố ớ ụ ọ
Nó bao g m level cao nh t (ồ ấ max_level) cho tác v đ c, t t c cácụ ọ ấ ả compartment và group mà người dùng được phép đ c (ọ read_comps và read_groups). Đây là nhãn mà người qu n tr ả ị b t bu cắ ộ ph i gán cho ngả ườ i dùng n u ch n cách qu n lý quy n truy xu t c a ngế ọ ả ề ấ ủ ười dùng thông qua nhãn
max_write_label: nhãn th hi n m c truy xu t cao nh t đ i v i quy n vi t.ể ệ ứ ấ ấ ố ớ ề ế
Nó bao g m level cao nh t (ồ ấ max_level) cho tác v vi t, t t c cácụ ế ấ ả compartment và group mà người dùng được phép vi t (ế write_comps và write_groups). N u ngế ười qu n tr không thi t l p giá tr cho lo i nhãn này,ả ị ế ậ ị ạ
nó s l y giá tr b ng giá tr c a ẽ ấ ị ằ ị ủ max_read_label.
Trang 8 min_write_label: nhãn th hi n m c truy xu t th p nh t đ i v i tác v đ c.ể ệ ứ ấ ấ ấ ố ớ ụ ọ Nhãn này ch ch a level th p nh t (ỉ ứ ấ ấ min_level) c a ngủ ười dùng đó, không ch aứ
b t k compartment và group nào.ấ ỳ
def_read_label: là session label m c đ nh cho các tác v đ c c a ngặ ị ụ ọ ủ ười dùng.
Nó là t p con c a ậ ủ max_read_label. N u ngế ười qu n tr không thi t l p giá trả ị ế ậ ị cho lo i nhãn này, nó s l y giá tr b ng giá tr c a ạ ẽ ấ ị ằ ị ủ max_read_label.
def_write_label: là session label m c đ nh cho tác v write c a ngặ ị ụ ủ ười dùng.
Nó là t p con c a ậ ủ def_read_label (có level b ng level c a ằ ủ def_read_label;
ch a t t c các compartment và group mà ngứ ấ ả ười dùng có quy n vi t trongề ế
def_read_label). Giá tr c a nhãn này s đị ủ ẽ ược tính m t cáchộ t đ ng ự ộ b iở OLS t giá tr c a ừ ị ủ def_read_label. Nói cách khác, người qu n tr s không môả ị ẽ
t giá tr cho nhãn này.ả ị
row_label: nhãn m c đ nh dùng đ gán nhãn cho các dòng d li u mà user t oặ ị ể ữ ệ ạ
ra trong b ng đả ược chính sách b o v Nhãn này là t p con c aả ệ ậ ủ
max_write_label và def_read_label. N u ngế ười qu n tr không thi t l p giá trả ị ế ậ ị cho lo i nhãn này, nó s l y giá tr b ng giá tr c a ạ ẽ ấ ị ằ ị ủ def_write_label.
L u ý ư : do def_write_label là nhãn đ c tính t đ ng t ượ ự ộ ừ def_read_label, ngườ i
qu n tr không c n ph i thao tác trên nó nên trong các tài li u hả ị ầ ả ệ ướng d n c aẫ ủ
Oracle def_read_label thường được g i là ọ def_label. K t các ph n sau, bài th cể ừ ầ ự hành c a chúng ta cũng s áp d ng cách g i nh v y.ủ ẽ ụ ọ ư ậ
4 Gi i thu t b o m t c a OLS đ i v i tác v đ cả ậ ả ậ ủ ố ớ ụ ọ
Trang 9Hình trên mô t m t cách rõ ràng cách th c mà OLS so sánh nhãn d li u vàả ộ ứ ữ ệ nhãn người dùng t i th i đi m đó (session label) đ quy t đ nh xem ngạ ờ ể ể ế ị ười dùng
có quy n đ c dòng d li u đó hay không.ề ọ ữ ệ
Trong OLS, tác v đ c tụ ọ ương đương v i l nh SELECT.ớ ệ
Nói m t cách ng n g n, ngộ ắ ọ ười dùng ch có th đ c đỉ ể ọ ược d li u khi th a đ ngữ ệ ỏ ồ
th i các đi u ki n sau:ờ ề ệ
Level c a session label cao h n ho c b ng level c a d li u.ủ ơ ặ ằ ủ ữ ệ
Session label có ch a ít nh t m t group n m trong các group c a dataứ ấ ộ ằ ủ label ho c có ch a group cha c a ít nh t m t group n m trong data label.ặ ứ ủ ấ ộ ằ
Session label có ch a t t c các compartment xu t hi n trong data label.ứ ấ ả ấ ệ
5 Gi i thu t b o m t c a OLS đ i v i tác v vi tả ậ ả ậ ủ ố ớ ụ ế
Hình trên mô t m t cách rõ ràng cách th c mà OLS so sánh nhãn d li u vàả ộ ứ ữ ệ nhãn người dùng đ quy t đ nh xem ngể ế ị ười dùng có quy n vi t dòng d li u đóề ế ữ ệ hay không
Trong OLS, tác v vi t tụ ế ương đương v i m t trong các l nh: UPDATE,ớ ộ ệ INSERT, DELETE
Nói m t cách ng n g n, ngộ ắ ọ ười dùng ch có th vi t đỉ ể ế ược d li u khi đ ng th iữ ệ ồ ờ
th a 2 đi u ki n sau:ỏ ề ệ
Trang 10 Đi u ki n v level: Level c a data label ph i th p h n ho c b ng levelề ệ ề ủ ả ấ ơ ặ ằ
c a session label hi n t i c a user và cao h n ho c b ng min_level c aủ ệ ạ ủ ơ ặ ằ ủ
người dùng
Đi u ki n v group và compartment: ph i th a m t trong 2 đi u ki nề ệ ề ả ỏ ộ ề ệ sau:
N u data label không có group: session label c a ngế ủ ười dùng ph i cóả quy n vi t đ i v i t t c các compartment mà data label đó có.ề ế ố ớ ấ ả
N u data label có ch a group: session label ph i có quy n vi t trên ít nh tế ứ ả ề ế ấ
m t group trong data label ho c có quy n vi t trên group cha c a ít nh tộ ặ ề ế ủ ấ
m t group trong data label. Bên c nh đó, session label cũng ph i ch a t tộ ạ ả ứ ấ
c các compartment xu t hi n trong data label (t c là có quy n đ c trênả ấ ệ ứ ề ọ
t t c các compartment c a data label, còn quy n write có ho c không cóấ ả ủ ề ặ cũng được)
6 Các quy n đ c bi t trong OLSề ặ ệ
Vì m t s lý do đ c bi t, m t ngộ ố ặ ệ ộ ười dùng có th để ược c p nh ng quy n đ cấ ữ ề ặ
bi t trong OLS đ th c hi n m t s tác v chuyên bi t ho c truy xu t đ n dệ ể ự ệ ộ ố ụ ệ ặ ấ ế ữ
li u n m ngoài gi i h n truy xu t đệ ằ ớ ạ ấ ược quy đ nh trong t p xác th c quy n c aị ậ ự ề ủ
người dùng đó
Các quy n đ c bi t đề ặ ệ ược OLS đ nh nghĩa g m có 2 nhóm: quy n truy xu t đ cị ồ ề ấ ặ
bi t (Special Access Privilege), quy n đ c bi t trên row label (Special Row Labelệ ề ặ ệ Privilege)
Quy n truy xu t đ c bi t ề ấ ặ ệ :
READ: cho phép người có quy n xem (SELECT) t t c các d li u do chínhề ấ ả ữ ệ sách này b o v , ngay c khi ngả ệ ả ười này không được gán b t c t p xác th cấ ứ ậ ự quy n nào. ề
FULL: cho phép người có quy n vi t và xem t t c các d li u do chính sáchề ế ấ ả ữ ệ này b o v ả ệ
COMPACCESS: quy n COMPACCESS cho phép ngề ười dùng truy xu t dấ ữ
li u d a trên các compartment c a nhãn d li u, không quan tâm đ n cácệ ự ủ ữ ệ ế