1. Trang chủ
  2. » Công Nghệ Thông Tin

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

8 36 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 8
Dung lượng 364,94 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài thực hành Bảo mật hệ thống thông tin số 11: Oracle Label Security (4) có nội dung trình bày về một số kỹ thuật nâng cao trong OLS, che dấu cột thông tin chính sách, sử dụng hàm gán nhãn, các view của OLS,... Mời các bạn cùng tham khảo chi tiết nội dung tài liệu.

Trang 1

Bài th c hành s  11 ự ố

ORACLE LABEL SECURITY (4)

Tóm t t n i dung:   ắ ộ  

Che d u c t thông tin chính sáchấ ộ

S  d ng hàm gán nhãnử ụ

Các view c a OLSủ

I M t s  k  thu t nâng cao trong OLS ộ ố ỹ ậ

A. Lý thuy t ế

1 Che d u c t thông tin nhãn d  li uấ ộ ữ ệ

Đ  tránh vi c hi n th  c t ch a thông tin chính sách, ngể ệ ể ị ộ ứ ười qu n tr  có th  thi tả ị ể ế  

l p tùy ch n HIDE khi gán chính sách cho b ng.ậ ọ ả

M t khi chính sách đã độ ược áp d ng, tr ng thái  n/Không  n c a c t khôngụ ạ Ẩ Ẩ ủ ộ  

th   để ược   thay   đ i   tr   khi   ta   remove   chính   sách   kh i   b ng   v i   tham   sổ ừ ỏ ả ớ ố  DROP_COLUMN b ng TRUE. Sau đó chính sách có th  đằ ể ược áp d ng l i v iụ ạ ớ  

tr ng thái m i.ạ ớ

Khi người dùng INSERT d  li u vào b ng có tr ng thái  n c t chính sách, giáữ ệ ả ạ ẩ ộ  

tr  c a c t ch a nhãn s  không b  yêu c u ph i insert.ị ủ ộ ứ ẽ ị ầ ả

Câu l nh SELECT * s  không t  đ ng tr  v  giá tr  c a c t  n, tr  khi nóệ ẽ ự ộ ả ề ị ủ ộ ẩ ừ  

được truy xu t tr c ti p.ấ ự ế

Câu l nh DESCRIBE cũng s  không hi n th  thông tin c t  n.ệ ẽ ể ị ộ ẩ

2 Hàm gán nhãn

Có nh ng b ng d  li u l n, ta không th  ng i gán nhãn cho t ng trữ ả ữ ệ ớ ể ồ ừ ường h p.ợ   OLS cung c p cho ta m t cách gán nhãn khác. Đó là s  d ng m t hàm (function)ấ ộ ử ụ ộ  

do mình hi n th c đ  OLS s  t  đ ng gán nhãn m i khi có hàng m i đệ ự ể ẽ ự ộ ỗ ớ ược insert 

Trang 2

vào b ng d  li u đả ữ ệ ược b o v  Xem ph n th c hành đ  hi u rõ h n v  cáchả ệ ầ ự ể ể ơ ề  

th c làm vi c này.ứ ệ

Hàm   gán   nhãn   s   override   2   tùy   ch n   LABEL_DEFAULT   vàẽ ọ   LABEL_UPDATE

B. Th c hành

1 Che d u c t thông tin chính sáchấ ộ

Do trong bài lab trước, ta đã áp d ng chính sách cho b ng mà không có tùy ch nụ ả ọ   HIDE nên trong b i lab này ta ph i remove chính sách (xóa luôn c t thông tin),ả ả ộ  

th c hi n l i đo n code gán nhãn trong bài lab trự ệ ạ ạ ước và gán l i chính sách.ạ

CONN sec_admin/secadmin;

BEGIN

sa_policy_admin.remove_table_policy (policy_name => 'ACCESS_LOCATIONS', schema_name => 'HR',

table_name => 'LOCATIONS', drop_column => true);

END;

/

SELECT * FROM hr.locations;

Ta nh n th y lúc này c t OLS_COLUMN v n ch a b  xóa dù Oracle báo th cậ ấ ộ ẫ ư ị ự  

hi n   thành   công   th   t c   Lý   do   là   khi   remove   chính   sách,   ta   s   xóa   c tệ ủ ụ ẽ ộ   OLS_COLUMN, t c là đã thay đ i b ng Locations. Do v y ta c n c p thêmứ ổ ả ậ ầ ấ   quy n ALTER trên b ng Locations cho sec_admin đ  c t OLS_COLUMN th tề ả ể ộ ậ  

s   b   xóa   Bây   gi   ta   gán   l i   chính   sách   trên   đ   th y   s   thay   đ i   sau   khiự ị ờ ạ ể ấ ự ổ   sec_admin được gán quy n.ề

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');

Trang 3

/

CONN system/system;

GRANT alter ON hr.locations TO sec_admin;

CONN sec_admin/secadmin;

BEGIN

sa_policy_admin.remove_table_policy (policy_name => 'ACCESS_LOCATIONS', schema_name => 'HR',

table_name => 'LOCATIONS', drop_column => true);

END;

/

SELECT * FROM hr.locations;

Ta nh n th y bây gi  c t OLS_COLUMN đã th t s  đậ ấ ờ ộ ậ ự ược xóa

Gán l i chính sách cho b ng v i NO_CONTROL và HIDE:ạ ả ớ

CONN sec_admin/secadmin;

BEGIN

sa_policy_admin.apply_table_policy (policy_name => 'ACCESS_LOCATIONS', schema_name => 'HR',

table_name => 'LOCATIONS', table_options => 'HIDE,NO_CONTROL');

END;

/

Gán l i nhãn cho d  li u trong b ng (do lúc remove đã xóa m t c t ch a thôngạ ữ ệ ả ấ ộ ứ   tin chính sách):

CONN sec_admin/secadmin;

UPDATE hr.locations SET ols_column = char_to_label ('ACCESS_LOCATIONS', 'CONF');

Trang 4

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';

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');

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 ;

Ti p theo ta c n gán l i chính sách v i tùy ch n HIDE và READ_CONTROL:ế ầ ạ ớ ọ

Trang 5

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 =>

'HIDE,READ_CONTROL,WRITE_CONTROL,CHECK_CONTROL');

END;

/

Bây gi  ta th  truy xu t b ng Locations:ờ ử ấ ả

CONN sec_admin/secadmin;

SELECT * FROM hr.locations;

DESCRIBE hr.locations;

K t   qu   c a   dòng   code   SELECT   là   “no   rows   selected”   Ch   có   câu   l nhế ả ủ ỉ ệ   DESCRIBE có tr  v  k t qu  Nguyên nhân là do bây gi  b ng này đã đả ề ế ả ờ ả ược b oả  

v , ch  nh ng ngệ ỉ ữ ườ ượ ấi đ c c p quy n OLS c  th  m i có th  truy xu t. Ta log inề ụ ể ớ ể ấ  

l i b ng user SKING:ạ ằ

CONN sking/sking;

SELECT * FROM hr.locations;

SELECT label_to_char (ols_column) as label, locations.*

FROM hr.locations;

Ta th y trong câu l nh SELECT th  2, ta có ch  đ nh rõ c t ols_column nên c tấ ệ ứ ỉ ị ộ ộ   này m i xu t hi n. Trong k t qu  truy v n c a câu SELECT th  nh t không cóớ ấ ệ ế ả ấ ủ ứ ấ  

c t thông tin chính sách này.ộ

Trang 6

2 Dùng hàm gán nhãn

Trong ph n th c hành này, ta s  dùng b ng Employees c a schem HR đ  minhầ ự ẽ ả ủ ể  

h a.ọ

C p các quy n c n thi t cho sec_admin trên b ng Employees:ấ ề ầ ế ả

CONN system/system;

GRANT select, insert, update, alter

ON hr.employees TO sec_admin;

GRANT create procedure TO sec_admin;

CONN lbacsys/lbacsys

GRANT execute ON to_lbac_data_label

TO sec_admin WITH GRANT OPTION;

Ti p theo ta vi t m t hàm gán nhãn d a trên đi u ki n c a thông tin nhân viên:ế ế ộ ự ề ệ ủ

CONN sec_admin/secadmin;

CREATE OR REPLACE FUNCTION sec_admin.gen_emp_label

(Job varchar2, Depto number, Sal number)

RETURN LBACSYS.LBAC_LABEL

AS

i_label varchar2(80);

BEGIN

/************* Xác định level *************/

IF Sal > 17000 THEN

i_label := 'SENS:';

ELSIF Sal > 10000 THEN

i_label := 'CONF:';

ELSE

i_label := 'PUB:';

END IF;

/************* Xác định compartment *************/

IF Job LIKE '%HR%' THEN i_label := i_label||'HR:';

ELSIF (Job LIKE '%MK%') OR (Job LIKE '%SA%') THEN i_label := i_label||'SM:';

Trang 7

ELSIF Job LIKE '%FI%' THEN i_label := i_label||'FIN:';

ELSE i_label := i_label||':';

END IF;

/************* Xác định groups *************/

i_label := i_label||'CORP';

RETURN TO_LBAC_DATA_LABEL('ACCESS_LOCATIONS',i_label); END;

/

Ta c n gán cho LBACSYS quy n th c thi trên hàm gán nhãn v a đầ ề ự ừ ượ ạc t o:

CONN sec_admin/secadmin;

GRANT execute ON sec_admin.gen_emp_label TO lbacsys;

Ta ch  đ nh th  t c v a hi n th c làm hàm gán nhãnỉ ị ủ ụ ừ ệ ự cho bảng Employees: CONN sec_admin/secadmin;

BEGIN SA_POLICY_ADMIN.APPLY_TABLE_POLICY ( policy_name => 'ACCESS_LOCATIONS', schema_name => 'HR',

table_name => 'EMPLOYEES', table_options =>

'READ_CONTROL,WRITE_CONTROL,CHECK_CONTROL', label_function => 'sec_admin.gen_emp_label

(:new.job_id,:new.department_id,:new.salary)'); END;

/

II Các view thông tin c a OLS

Các thông tin v  các chính sách c a OLS đề ủ ượ ưc l u trong data dictionary. Ta có 

th  xem các thông tin này thông qua các view c a OLS.ể ủ

View DBA_SA_USERS: hi n th  thông tin v  t t c  các chính sách có trongể ị ề ấ ả   CSDL

Trang 8

DBA_SA_USER_LEVELS: hi n th  thông tin level c a m i ngể ị ủ ọ ười dùng.

DBA_SA_USER_COMPARTMENTS: hi n th  thông tin compartment c a m iể ị ủ ọ  

người dùng

DBA_SA_USER_GROUPS: hi n th  thông tin group c a m i ngể ị ủ ọ ười dùng

Đ  xem t t c  các view trên c n log in vào tài kho n LBACSYS ho c để ấ ả ầ ả ặ ượ  c

c p quy n SELECT t  LBACSYS.ấ ề ừ

conn lbacsys/lbacsys;

select * from DBA_SA_USERS;

select * from DBA_SA_USER_LEVELS;

select * from DBA_SA_USER_COMPARTMENTS;

select * from DBA_SA_USER_GROUPS;

III Bài t p

1. Vi t hàm gán nhãn GET_CUSTOMER_LABEL cho các khách hàng trong b ng ế ả

CUSTOMERS đã t o   bài lab 9 theo đi u ki n sau:ạ ở ề ệ

 Credit > 2000: level 3; 500 < credit <= 2000: level 2; còn l i level 1ạ

 Cust_type = ‘Platinum’ thì compartment là Manager, còn l i là Employeeạ

 Group gán theo region

2. Th c hi n các câu l nh c n thi t đ  b ng trên đự ệ ệ ầ ế ể ả ược gán nhãn và được áp d ng chính ụ sách REGION_POLICY đã t o trong bài lab 8.ạ

3. Th c hi n m t s  câu l nh đ  ki m tra tác d ng c a chính sách.ự ệ ộ ố ệ ể ể ụ ủ

Ngày đăng: 10/07/2021, 08:48

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w