Bài th c hành s  10

ORACLE LABEL SECURITY (3)

ắ ộ

 Tóm t

t n i dung:

(cid:0) ạ ườ Các lo i nhãn ng i dùng

(cid:0) ặ ệ ề Các quy n đ c bi t trên chính sách

(cid:0) ụ ề ệ Các đi u ki n áp d ng chính sách

(cid:0) ụ ả Á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

ể ấ ả ừ ượ nhãn nào cũng không th  truy xu t vào b ng/schema đó tr khi đ c gán cho các

ườ ặ ợ ượ ữ ề ấ ặ 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 ở ướ   c b

ố ớ ể ề ầ ả ộ ườ ả ấ 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 đã

Chương Trình Đào Tạo Từ Xa

KH & KT Máy Tính – Đại học Bách Khoa TP.HCM

ể ế ự ự ệ ệ ạ ộ hi 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 .

Chương Trình Đào Tạo Từ Xa

KH & KT Máy Tính – Đại học Bách Khoa TP.HCM

1.

ườ 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

ụ ế ậ ủ ứ ộ ườ t m c đ  tin c y c a ng ố   i dùng đ i (user lable). Nhãn này có tác d ng cho bi

ữ ệ ữ ượ ệ ả ườ ồ ớ 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

ể ư ữ ề ề ạ ấ ố    thông tin v  quy n h n truy xu t đ i quy nề  (set of authorizations) đ  l u gi

ữ ệ ượ ữ ệ ậ ự ề ả ồ ớ 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

ấ ủ ườ i dùng trong các tác v ụ ấ   (User Min Level) c a ng

ặ ằ ả ấ ơ write. User Min Level ph i th p h n ho c b ng User Max Level.

Chương Trình Đào Tạo Từ Xa

KH & KT Máy Tính – Đại học Bách Khoa TP.HCM

 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   “ ỉ ọ ”   (read­only)   hay   quy n   “ề ế ”   (read­ ch   đ c ọ đ c­vi t

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

 Session label:

ằ ớ ạ ủ ậ ự ề ẫ v n n m trong gi i h n c a t p xác th c quy n.

 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

 Row label:

ủ ọ c a h .

ớ ượ ộ ả ượ ả ệ ầ ộ  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.

ằ ị ườ ề ả ị ị ạ   i qu n tr  quy đ nh khi gán quy n h n ị ặ ­ B ng giá tr  m c đ nh do ng

ườ ấ truy xu t cho ng i dùng đó.

­ B ng giá tr  c a session label c a ng

ị ủ ủ ằ ườ i dùng đó.

Chương Trình Đào Tạo Từ Xa

KH & KT Máy Tính – Đại học Bách Khoa TP.HCM

 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:

ủ ấ ơ ườ i dùng đó. ặ ằ ­ 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

­ Ch  đ

ỉ ượ ứ ệ ấ c ch a các compartment xu t hi n trong session label hi n t ệ ạ   i

ườ ườ ế ề vi t   (write) ủ c a   ng i   dùng   đó   và   ng i   dùng   có   quy n 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

ườ ườ ế ề vi t (write) ng i dùng đó và ng i dùng có quy n trên các group đó.

ườ ầ ủ ừ ạ i dùng theo t ng lo i thành ph n c a nhãn ả 2. Qu n lý ng

 Đ  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

ữ ệ ộ ả ữ ủ ậ ậ ơ ộ max level nh ng d  li u có đ  b o m t cao h n đ  tin c y c a user) nên

ớ ạ ệ ấ ọ ế ườ 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.

Chương Trình Đào Tạo Từ Xa

KH & KT Máy Tính – Đại học Bách Khoa TP.HCM

 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

Chương Trình Đào Tạo Từ Xa

KH & KT Máy Tính – Đại học Bách Khoa TP.HCM

ề ế ậ ướ ừ ế ọ ự ố ớ t đ 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.

ườ i dùng thông qua các nhãn ả 3. Qu n lý ng

 Đ  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 ộ  ph i gán cho ng ườ   i ị b t bu c

ấ ủ ề ế ả ọ ườ 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 ế write_comps  và t   (

ế ườ ả ế ậ ạ ị 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.

Chương Trình Đào Tạo Từ Xa

KH & KT Máy Tính – Đại học Bách Khoa TP.HCM

ấ ố ớ ể ệ ứ ấ ấ ụ ọ    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 b iở t đ ng

ừ ườ ả 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 ýư

ượ ự ộ c tính t đ ng t ừ def_read_label, ng iườ :   do def_write_label là nhãn đ

ệ ầ ả ả ị ướ 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

Chương Trình Đào Tạo Từ Xa

KH & KT Máy Tính – Đại học Bách Khoa TP.HCM

 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 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 ờ   c d  li u khi đ ng th i t đ

ệ ỏ ề th a 2 đi u ki n sau:

Chương Trình Đào Tạo Từ Xa

KH & KT Máy Tính – Đại học Bách Khoa TP.HCM

 Đ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

Chương Trình Đào Tạo Từ Xa

KH & KT Máy Tính – Đại học Bách Khoa TP.HCM

ữ ệ ữ ệ ế ứ   ứ group   mà   nhãn   d   li u   đó   đang   ch a.   N u   nhãn   d   li u   đó   không   ch a

ấ ượ ự ư ị ệ compartment,   vi c   truy   xu t   đ c   xác   đ nh   d a   trên   các   group   nh   bình

ườ ữ ệ ế ườ th ứ ng. N u d  li u đó có ch a các compartment và ng ề   i dùng có quy n

ẽ ượ ự ế ệ ấ ọ truy xu t (đ c/viêt) đ n chúng thì vi c xác th c các group s  đ ỏ c b  qua.

ụ ọ ự ọ Hai hình bên d ướ ầ ượ i l n l t minh h a cho quy trình xác th c tác v  đ c và tác

ườ ề ụ ế ố ớ v  vi t đ i v i ng i dùng có quy n COMPACCESS.

ự ụ ọ Quy trình xác th c tác v  đ c

ụ ế ự Quy trình xác th c tác v  vi t

Chương Trình Đào Tạo Từ Xa

KH & KT Máy Tính – Đại học Bách Khoa TP.HCM

 PROFILE_ACCESS: cho phép thay đ i các session label c a b n thân ng

ủ ả ổ ườ   i

ủ ườ ề ộ dùng đó và session privilege c a ng ấ   i dùng khác.  Đây là m t quy n r t

ạ ườ ể ề ầ ở ườ “m nh”,   vì   ng i   có   quy n   này   có   th   ng m   tr thành   ng ề   i   có   quy n

FULL.

ặ ệ ề  Quy n đ c bi : t trên row label

 WRITE_UP:  cho phép ng

ườ ữ ệ ủ ộ ư   i dùng nâng level c a m t hàng d  li u nh ng

ủ ổ ườ không làm thay đ i các compartment và group c a nó. Ng i dùng ch  đ ỉ ượ   c

ố ủ ế nâng t ọ i đa đ n max_level c a chính h .

 WRITE_DOWN: cho phép ng

ườ ữ ệ ủ ạ ư   ộ i dùng h  level c a m t hàng d  li u nh ng

ủ ổ ườ không làm thay đ i các compartment và group c a nó. Ng i dùng ch  đ ỉ ượ   c

ạ ố ủ ế ố ọ ượ ạ ấ ơ phép h  t i đa xu ng đ n min_level c a h , không đ ứ   c h  th p h n m c

này.

 WRITE_ACROSS:  cho phép ng

ườ ổ ủ   i dùng thay đ i compartment và group c a

ữ ệ ư ủ ộ ổ ườ ể m t hàng d  li u nh ng không thay đ i level c a nó. Ng i dùng có th  thay

ấ ứ ổ đ i các compartment và group đó thành b t c  compartment và group nào có

ị đ nh nghĩa trong chính sách.

B.

Th c hành

ố ủ ủ ụ ự ầ ượ ả (Ý nghĩa các tham s  c a các th  t c trong ph n th c hành đã đ c gi i thích trong

ắ ạ ẽ ế ầ ầ ph n lý thuy t nên s  không nh c l i trong ph n này).

1. Gán quy n ng

ề ườ ầ ủ i dùng theo các thành ph n c a nhãn

 Louise   Doran   là   nhân   viên   thu c   phòng   Sales   nên   ta   s

ộ ẽ gán   các   level,

ậ ủ ấ ợ ớ compartment và group phù h p v i phòng ban và c p b c c a Louise.

 Đ   gán

ể ườ ủ level cho   ng i dùng, ta   dùng th ụ   t c

CONN hr_sec/hrsec;

BEGIN

SA_USER_ADMIN.SET_LEVELS.

Chương Trình Đào Tạo Từ Xa

KH & KT Máy Tính – Đại học Bách Khoa TP.HCM

sa_user_admin.set_levels

(policy_name => 'ACCESS_LOCATIONS',

user_name => 'LDORAN',

max_level => 'CONF',

min_level => 'PUB',

def_level => 'CONF',

row_level => 'CONF');

END;

/

 Gán   compartment

ủ cho   ng ườ i dùng, ta   dùng th ụ   t c

CONN hr_sec/hrsec;

BEGIN

sa_user_admin.set_compartments

(policy_name => 'ACCESS_LOCATIONS',

user_name => 'LDORAN',

read_comps => 'SM,HR',

write_comps => 'SM',

def_comps => 'SM',

row_comps => 'SM');

END;

/

SA_USER_ADMIN.SET_COMPARTMENTS.

 Gán   compartment

ủ cho   ng ườ i dùng, ta   dùng th ụ   t c

SA_USER_ADMIN.SET_GROUPS.

Chương Trình Đào Tạo Từ Xa

KH & KT Máy Tính – Đại học Bách Khoa TP.HCM

CONN hr_sec/hrsec;

BEGIN

sa_user_admin.set_groups

(policy_name => 'ACCESS_LOCATIONS',

user_name => 'LDORAN',

read_groups => 'UK,CA',

write_groups => 'UK',

def_groups => 'UK',

row_groups => 'UK');

END;

/

2. Gán quy n ng

ề ườ i dùng theo các nhãn

 Karen Partner là tr

ưở ẽ ớ ợ ng phòng Sales. Ta s  gán các nhãn phù h p v i phòng ban

CONN hr_sec/hrsec;

BEGIN

sa_user_admin.set_user_labels

(policy_name

=> 'ACCESS_LOCATIONS',

user_name => 'KPARTNER',

max_read_label

=> 'SENS:SM,HR:UK,CA',

max_write_label => 'SENS:SM:UK',

min_write_label => 'CONF',

def_label

=> 'SENS:SM,HR:UK',

row_label

=> 'SENS:SM:UK');

END;

/

ấ ậ ủ và c p b c c a Karen.

3. Gán các quy n đ c bi

ề ặ ệ t

ơ ở ữ ệ ề ổ ố ấ    Steven King là t ng giám đ c có toàn quy n trên c  s  d  li u, nên ta c p

ề ườ quy n FULL cho ng i dùng này.

Chương Trình Đào Tạo Từ Xa

KH & KT Máy Tính – Đại học Bách Khoa TP.HCM

CONN hr_sec/hrsec;

BEGIN

sa_user_admin.set_user_privs

(policy_name => 'ACCESS_LOCATIONS',

user_name => 'SKING',

PRIVILEGES => 'FULL');

END;

/

 Neena Kochhar là giám đ c đi u hành   nên ta có th  c p quy n READ  đ

ể ấ ề ề ố ể

CONN hr_sec/hrsec;

BEGIN

sa_user_admin.set_user_privs

(policy_name => 'ACCESS_LOCATIONS',

user_name => 'NKOCHHAR',

PRIVILEGES => 'READ');

END;

/

ườ ộ ữ ệ ể ng i này có th  xem toàn b  d  li u.

 L u ý:ư

ừ ử ụ ố ở tham s  user_name trong các procedure v a s  d ng ph n ầ B – Th cự

ấ ế ả ộ ể   ậ ự ủ ệ ố t ph i là m t user th t s  c a h  th ng. Nó cũng có th  là hành không nh t thi

ụ ủ ứ role, tên c a  ng d ng,…

II. Áp d ng chính sách OLS

A.

Lý thuy tế

1.

ố ượ Đ i t ng đ ượ ả ệ c b o v

 OLS cho phép ta gán các chính sách cho các đ i t

ố ượ ượ ả ầ ng c n đ ệ c b o v  theo 2

ộ ấ ả ầ ả ượ ả ệ ở ấ ấ c p đ : c p schema và c p b ng. Khi 1 b ng c n đ c b o v  b i 1 chính sách

ụ ể ả ố ấ ả ế nào đó, ta gán chính sách đó cho c  th  b ng đó. N u mu n t ả   t c  các b ng

ề ộ ượ ệ ở ả thu c 1 schema đ u đ c b o v  b i 1 chính sách, ta gán chính sách đó cho

schema đó.

Chương Trình Đào Tạo Từ Xa

KH & KT Máy Tính – Đại học Bách Khoa TP.HCM

 L u ý: N u 1 chính sách đ

ư ế ượ ồ ờ ượ c gán cho 1 schema và đ ng th i cũng đ c gán

ả ọ ộ ở ấ ườ t ng minh cho 1 b ng thu c schema đó thì các tùy ch n, thao tác ộ ả    c p đ  b ng

ọ ở ấ ẽ s  override các tùy ch n, thao tác ộ  c p đ  schema.

2. Các thao tác qu n tr  vi c gán chính sách cho table/schema

ị ệ ả

ụ ể ộ ả ụ ầ    Áp d ng chính sách (Apply): ta gán chính sách cho c  th  m t b ng/schema c n

ượ ả đ ệ c b o v .

ỏ ự ả ệ ủ ạ ạ ỏ ỏ    Lo i   b   chính   sách   (Remove):   lo i   b   s   b o   v   c a   1   chính   sách   kh i

ạ ỏ ư ậ ứ ủ ư ộ ẫ   ả b ng/schema. L u ý là khi lo i b  nh  v y, c t ch a nhãn c a chính sách đó v n

ừ ộ ộ ườ còn trong table, tr  khi ta xóa c t đó m t cách t ng minh.

 Ta có th  Enable/Disable m t chính sách đang đ

ể ộ ượ ả c gán cho 1 schema/b ng nào

ả ộ ờ đó trong m t kho ng th i gian.

ữ ể ế ậ ố ớ ủ ả ọ ộ ổ  Đ  thay đ i nh ng thi t l p tùy ch n c a m t chính sách đ i v i 1 b ng thì

ướ ở ạ ớ ế ả ồ tr c h t ta ph i remove chính sách đó ra r i sau đó apply tr  l ữ i v i nh ng thay

ọ ổ đ i trong tùy ch n.

3. Các tùy ch n cho vi c áp d ng chính sách

ụ ọ ệ

 Các tùy ch n này cho phép ta quy đ nh m t s  ràng bu c trong vi c áp d ng các

ộ ố ụ ệ ọ ộ ị

chính sách:

ặ ị ủ ườ ử ụ  LABEL_DEFAULT : S  d ng row label m c đ nh c a ng ệ   i dùng hi n

ữ ệ ớ ượ ạ ể t i đ  làm nhãn cho hàng d  li u m i đ ừ c insert vào tr  khi row label đ ượ   c

ỉ ườ ở ườ ặ ị ch  đ nh t ng minh b i ng i insert ho c hàm gán nhãn.

 LABEL_UPDATE: bình th

ườ ườ ữ ệ ộ ng, m t ng i dùng khi update d  li u có

ữ ệ ế ể ố ổ ượ ậ th  thay đ i nhãn d  li u kèm theo. Tuy nhiên, n u tham s  này đ c b t lên,

ườ ữ ệ ổ ố ườ ả ấ ộ ộ m t ng i mu n thay đ i nhãn d  li u thì ng i đó ph i có ít nh t m t trong

ề các quy n sau: WRITEUP, WRITEDOWN, and WRITEACROSS.

 CHECK_CONTROL: n u tùy ch n này đ

ế ọ ượ ế ậ ỗ c thi ữ ệ   t l p, m i khi d  li u

ượ ẽ ể ữ ệ ổ ạ ớ ị đ c update/insert và nhãn d  li u b  thay đ i/t o m i, OLS s  ki m tra xem

ữ ệ ớ ượ ớ ạ ủ ườ nhãn d  li u m i có v t quá gi ề i h n quy n c a ng i update/insert hay

ể ạ ả ộ ườ ữ ệ không đ  tránh x y ra tình tr ng m t ng i sau khi update/insert d  li u đó

ấ ạ ữ ệ ể thì không th  truy xu t l i d  li u đó.

Chương Trình Đào Tạo Từ Xa

KH & KT Máy Tính – Đại học Bách Khoa TP.HCM

 READ_CONTROL:   áp   d ng   chính   sách   cho   m i   câu   truy   v n.   Ch

ụ ấ ọ ỉ

ữ ề ể ậ ấ ở ớ   nh ng   hàng   có   xác   nh n   quy n   m i   có   th   truy   xu t   b i     các   thao   tác

SELECT, UPDATE và DELETE.

 WRITE_CONTROL:   xác   đ nh   kh   năng   INSERT,   UPDATE,   và

ả ị

ữ ệ ạ ế ọ ượ ạ ườ DELETE d  li u t i 1 hàng. N u tùy ch n này đ c kích ho t, ng i dùng

ả ượ ủ ướ ự ề ầ ự ệ ệ ph i đ c xác th c quy n đ y đ  tr c khi th c hi n các l nh INSERT,

UPDATE, DELETE.

 INSERT_CONTROL: có tác d ng gi ng tùy ch n WRITE_CONTROL

ụ ố ọ

ỉ ố ớ ư ệ ạ nh ng ch  đ i v i lo i câu l nh INSERT.

 DELETE_CONTROL: có tác d ng gi ng tùy ch n WRITE_CONTROL

ụ ố ọ

ỉ ố ớ ư ệ ạ nh ng ch  đ i v i lo i câu l nh DELETE.

 UPDATE_CONTROL: có tác d ng gi ng tùy ch n WRITE_CONTROL

ụ ố ọ

ỉ ố ớ ư ệ ạ nh ng ch  đ i v i lo i câu l nh UPDATE.

ọ ộ ọ ụ  ALL_CONTROL: áp d ng m i ràng bu c tùy ch n.

 NO_CONTROL: không áp d ng b t c  ràng bu c nào c a chính sách.

ấ ứ ụ ủ ộ

4. Gán nhãn cho d  li u

ữ ệ

 Có 3 cách đ  m t hàng d  li u đ

ữ ệ ượ ể ộ c gán nhãn chính sách:

 Gán   t

ườ ữ ệ ừ ệ   ng   minh   nhãn   cho   t ng   dòng   d   li u   thông   qua   các   l nh

ữ ệ ữ ệ ồ ạ ớ INSERT (cho d  li u m i) và UPDATE (cho d  li u đang t n t i).

 Thi

ế ậ ọ t l p tùy ch n LABEL_DEFAULT.

 Vi

ế ữ ệ ủ ệ ộ t m t function dùng cho vi c gán nhãn cho các hàng d  li u c a 1

ữ ệ ẽ ự ộ ủ ộ ượ ả b ng tùy theo n i dung c a d  li u. Function này s  t đ ng đ ọ c g i cho

ộ ậ ọ ệ ệ ề ậ ớ ủ   m i l nh INSERT và UPDATE và nó đ c l p v i vi c xác nh n quy n c a

ọ m i user.

 Tuy nhiên trong ph m vi bài th c hành này chúng ta s  ch  dùng cách 1 đ  gán

ự ể ẽ ạ ỉ

ữ ệ nhãn d  li u cho chính sách.

Chương Trình Đào Tạo Từ Xa

KH & KT Máy Tính – Đại học Bách Khoa TP.HCM

B.

Th c hành

1.

ụ ả Áp d ng chính sách cho b ng

 Đ   gán   chính   sách   cho   các

ể ủ table ta   dùng th ụ   t c

CONN sec_admin/secadmin;

BEGIN

sa_policy_admin.apply_table_policy

(policy_name => 'ACCESS_LOCATIONS',

schema_name => 'HR',

table_name => 'LOCATIONS',

table_options => 'NO_CONTROL');

END;

/

SA_POLICY_ADMIN.APPLY_TABLE_POLICY

 C n nh  m t đi u quan tr ng là khi m t table đ

ớ ộ ề ầ ộ ọ ượ ệ ở ả c b o v  b i 1 chính sách,

ư ượ ể ượ ấ ữ ệ các hàng d  li u ch a đ ẽ c gán nhãn s  không th  đ c truy xu t. Do đó khi áp

ứ ẵ ữ ệ ệ ả ầ ả ọ ộ ụ d ng m t chính sách b o v  cho b ng có ch a s n d  li u, đ u tiên ta ch n tùy

ể ọ ượ ả ch n   ‘NO_CONTROL’   đ   chính   sách   tuy   đ ộ   c   gán   cho   b ng   (c t

ượ ư ủ ả ộ OLS_COLUMN đ ữ c thêm vào b ng) nh ng nh ng ràng bu c c a chính sách

ư ụ ả ch a áp d ng lên b ng.

 Ta đăng nh p vào tài kho n HR đ  xem s  thay đ i c a b ng sau khi gán chính

ổ ủ ả ự ể ả ậ

CONN HR/HR;

DESCRIBE locations;

Name

Null?

Type

--------------- ---------- ------

LOCATION_ID

NOT NULL

NUMBER(4)

STREET_ADDRESS

VARCHAR2(40)

POSTAL_CODE

VARCHAR2(12)

CITY

NOT NULL

VARCHAR2(30)

STATE_PROVINCE

VARCHAR2(25)

COUNTRY_ID

CHAR(2)

sách:

Chương Trình Đào Tạo Từ Xa

KH & KT Máy Tính – Đại học Bách Khoa TP.HCM

OLS_COLUMN

NUMBER(10)

2. Gán nhãn cho d  li u

ữ ệ

 Đ  sec_admin có th  thi

ể ể ế ậ ề ầ ữ ệ t l p nhãn cho các dòng d  li u ta c n gán quy n cho

CONN hr/hr;

GRANT select, insert, update ON locations TO sec_admin;

sec_admin:

 Khi đã có đ  quy n ta gán nhãn cho các   dòng d  li u. Đ u tiên ta gán nhãn

ữ ệ ủ ề ầ

CONN sec_admin/secadmin;

UPDATE hr.locations SET ols_column = char_to_label

('ACCESS_LOCATIONS', 'CONF');

ả ọ ữ ệ CONF cho m i d  li u trong b ng:

 Ti p theo ta c p nh t các nhãn c a các dòng d  li u v  các n

ữ ệ ủ ế ề ậ ậ ướ ỹ c M , Anh,

CONN sec_admin/secadmin;

UPDATE hr.locations SET ols_column = char_to_label

('ACCESS_LOCATIONS', 'CONF::US')

WHERE country_id = 'US';

UPDATE hr.locations SET ols_column = char_to_label

('ACCESS_LOCATIONS', 'CONF::UK')

WHERE country_id = 'UK';

UPDATE hr.locations SET ols_column = char_to_label

('ACCESS_LOCATIONS', 'CONF::CA')

WHERE country_id = 'CA';

Canada:

 Gi

ả ử ộ ố ị ặ ệ ầ ậ ả ỉ  s  có m t s  đ a ch  là thông tin đ c bi t c n b o m t, nên ta gán cho

CONN sec_admin/secadmin;

UPDATE hr.locations SET ols_column = char_to_label

('ACCESS_LOCATIONS', 'CONF:SM:UK,CA')

WHERE (country_id = 'CA' and city = 'Toronto')

or (country_id = 'UK' and city = 'Oxford');

ộ ả ữ ậ ơ nh ng dòng này nhãn có đ  b o m t cao h n:

Chương Trình Đào Tạo Từ Xa

KH & KT Máy Tính – Đại học Bách Khoa TP.HCM

UPDATE hr.locations SET ols_column = char_to_label

('ACCESS_LOCATIONS', 'CONF:HR:UK')

WHERE country_id = 'UK' and city = 'London';

UPDATE hr.locations SET ols_column = char_to_label

('ACCESS_LOCATIONS', 'SENS:HR,SM,FIN:CORP')

WHERE country_id = 'CH' and city = 'Geneva';

COMMIT ;

 L u ý trong các l nh trên ta có dùng th  t c CHAR_TO_LABEL. Do giá tr  các

ủ ụ ư ệ ị

ượ ư ự ả ả ấ nhãn đ c l u trong b ng th c ch t là tag number. Cho nên ta ph i dùng hàm này

ể ừ ạ ắ ủ ố ủ ạ ỗ ể đ  chuy n t d ng chu i ng n c a nhãn thành d ng s  c a nó.

 T i đây thì ta đã th c hi n xong 5 b

ự ệ ớ ướ ự ệ c trong quy trình hi n th c OLS.

 Do

ở ế ậ ệ ọ trên chúng ta đã thi ụ   t l p tùy ch n ‘NO_CONTROL’ cho vi c áp d ng

ở ỏ ả ầ ồ ạ chính sách nên đây chúng ta c n remove chính sách kh i b ng r i add l i chính

CONN sec_admin/secadmin;

BEGIN

sa_policy_admin.remove_table_policy

(policy_name => 'ACCESS_LOCATIONS',

schema_name => 'HR',

table_name => 'LOCATIONS');

sa_policy_admin.apply_table_policy

(policy_name => 'ACCESS_LOCATIONS',

schema_name => 'HR',

table_name => 'LOCATIONS',

table_options

=>

'READ_CONTROL,WRITE_CONTROL,CHECK_CONTROL');

END;

ể ượ ọ ớ ạ ả ệ ả ớ ể sách v i tùy ch n m i đ  chính sách có th  đ c kích ho t b o v  cho b ng.

Chương Trình Đào Tạo Từ Xa

KH & KT Máy Tính – Đại học Bách Khoa TP.HCM

/

III. Bài t pậ

ấ ạ ề   T o ra các user: sales_manager, sales_north, sales_west, sales_east, sales_south. C p quy n

ế ố ừ ạ ể đ  các user này k t n i vào CSDL. Gán user label cho các user v a t o.

Chương Trình Đào Tạo Từ Xa

KH & KT Máy Tính – Đại học Bách Khoa TP.HCM