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

Bảo Mật Hệ Thống Thông Tin  
Lab 8  
1
Bài thực hành số 8  
ORACLE LABEL SECURITY (1)  
Tóm tắt nội dung:  
Mô hình DAC và MAC  
DAC và MAC trong Oracle  
Giới thiệu Oracle Label Security  
Hướng dẫn cài đặt Oracle Label Security  
Chính sách trong Oracle Label Security  
I. Giới thiệu  
A. Lý thuyết  
1. Mô hình DAC và MAC  
Có 2 mô hình tiêu biểu dùng để quản việc truy xuất dữ liệu một cách đúng đắn và  
bảo đảm an toàn cho dữ liệu là DAC (Discretionary Access Control) và MAC  
(Mandatory Access Control).  
DAC: quản việc truy xuất dữ liệu bằng cách quản việc cấp phát các quyền truy  
xuất cho những người dùng thích hợp tùy theo yêu cầu của các chính sách bảo mật.  
MAC: quản việc truy xuất dựa trên mức độ nhạy cảm của dữ liệu mức độ tin  
cậy của người dùng truy xuất CSDL. Bằng cách phân lớp và gán nhãn cho dữ liệu  
người dùng, đồng thời áp dụng quy tắc no read up - no write down”, mô hình  
MAC giúp ta tránh được việc rỉ dữ liệu mức độ nhạy cảm cao ra cho những  
người dùng có độ tin cậy thấp.  
2. MAC và DAC trong Oracle  
DAC:  
Trong Oracle Database, các nhà quản trị thể áp dụng mô hình DAC thông qua  
việc quản lý các truy xuất theo quyền đối tượng quyền hệ thống (bài Lab 3 –  
Quyền và Role).  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
MAC:  
Lab 8  
2
Oracle hiện thực mô hình MAC trên lý thuyết thành sản phẩm Oracle Label  
Security (OLS). Tuy nhiên, do mô hình MAC lý thuyết tuân theo nguyên tắc no  
read up - no write down” nên chỉ bảo đảm tính bí mật mà không có tính toàn vẹn.  
Để cung cấp một mô hình bảo vệ tốt hơn cho CSDL của khách hàng, OLS của  
Oracle đã cải tiến mô hình MAC lý thuyết bằng cách thay đổi nguyên tắc trên thành  
no read up - no write up - limited write down”. Nhờ vậy, tính bảo mật và tính toàn  
vẹn của dữ liệu được bảo đảm. Mặt khác, khác với mô hình lý thuyết, OLS không  
bắt buộc áp dụng MAC cho toàn bộ CSDL. Người quản trị thể chỉ định ra những  
table hoặc schema nào sẽ được áp dụng OLS.  
Mối tương quan giữa DAC và MAC:  
Khi người dùng nhập vào 1 câu truy vấn SQL, đầu tiên Oracle sẽ kiểm tra DAC để  
bảo đảm rằng user đó quyền truy vấn trên table được nhắc đến trong câu truy  
vấn. Kế tiếp Oracle sẽ kiểm tra xem có chính sách VPD (Virtual Private Database)  
nào được áp dụng cho table đó không. Nếu có, chuỗi điều kiện của chính sách VPD  
sẽ được nối thêm vào câu truy vấn gốc, giúp lọc ra được một tập các hàng dữ liệu  
thỏa điều kiện của VPD. Cuối cùng, Oracle sẽ kiểm tra các nhãn OLS trên mỗi hàng  
dữ liệu có trong tập trên để xác định những hàng nào mà người dùng có thể truy  
xuất (xem hình minh họa bên dưới).  
Kiến trúc của Oracle Label Security  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 8  
3
3. Giới thiệu Oracle Label Security  
Oracle Label Security (OLS) là một sản phẩm được hiện thực dựa trên nền tảng  
công nghệ Virtual Private Database (VPD), cho phép các nhà quản trị điều khiển  
truy xuất dữ liệu ở mức hàng (row-level) một cách tiện lợi dễ dàng hơn. điều  
khiển việc truy xuất nội dung của các dòng dữ liệu bằng cách so sánh nhãn của  
hàng dữ liệu với nhãn và quyền của user. Các nhà quản trị thể dễ dàng tạo thêm  
các chính sách kiểm soát việc truy xuất các hàng dữ liệu cho các CSDL bằng giao  
diện đồ họa thân thiện người dùng có tên gọi là Oracle Policy Manager hoặc bằng  
các packages được xây dựng sẵn.  
Có 6 package được hiện thực sẵn cho OLS:  
SA_SYSDBA: tạo, thay đổi, xóa các chính sách.  
SA_COMPONENTS: định nghĩa quản lý các thành phần của nhãn.  
SA_LABEL_ADMIN: thực hiện các thao tác quản trị chính sách, nhãn.  
SA_POLICY_ADMIN: áp dụng chính sách cho bảng và schema.  
SA_USER_ADMIN: quản việc cấp phát quyền truy xuất và quy định mức độ  
tin cậy cho các user liên quan.  
SA_AUDIT_ADMIN: thiết lập các tùy chọn cho các tác vụ quản trị việc audit.  
(Trong chương trình này chúng ta chỉ tìm hiểu cách làm việc với OLS thông qua 5  
package đầu trong 6 package liệt trên).  
Trong OLS, ta dùng các chính sách (policy) để quản lý truy xuất. Đối với mỗi chính  
sách, ta cần định ra một tập nhãn để phân lớp dữ liệu từ cao xuống thấp dựa theo  
mức độ nhạy cảm của dữ liệu (ngoài ra các nhãn còn có những yếu tố khác mà ta sẽ  
bàn đến khi đi vào chi tiết). Các nhãn đó được gọi là các nhãn dữ liệu - “data  
label”. Sau đó ta áp dụng các chính sách lên các bảng hoặc schema mà mình mong  
muốn bảo vệ. Mỗi khi một người dùng muốn truy xuất một hàng dữ liệu nào đó, hệ  
thống sẽ so sánh nhãn của người dùng (user label) tại thời điểm đó với nhãn dữ liệu  
để quyết định có cho phép việc truy xuất hay không.  
4. Năm bước hiện thực OLS  
Quy trình cơ bản để hiện thực một chính sách OLS gồm 5 bước như sau:  
B1: Tạo chính sách OLS.  
B2: Định nghĩa các thành phần một label thuộc chính sách trên có thể có.  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 8  
4
B3: Tạo các nhãn dữ liệu thật sự bạn muốn dùng.  
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.  
Trong chương trình của chúng ta, các khái niệm đối tượng OLS sẽ lần lượt được  
giới thiệu theo thứ tự của các bước trong quy trình hiện thực cơ bản một chính sách  
OLS để giúp các bạn dễ theo dõi và thực hành.  
B. Thực hành  
1. Cài đặt OLS  
Cài đặt mặc định của Oracle không bao gồm tính năng OLS. Do vậy phần này sẽ  
hướng dẫn các bạn cài đặt thêm tính năng OLS cho một cơ sở dữ liệu sẵn. Bạn  
phải quyền admin để thể thực hiện việc cài đặt này.  
Trong ví dụ minh họa bên dưới, tên (System Identifier Database - SID) của cơ sở dữ  
liệu đang tồn tại có tên là ORCL.  
Các bước cài đặt OLS:  
a. Trước khi cài đặt, cần đảm bảo dịch vụ OracleService<SID> đã được tắt.  
Trong ví dụ minh họa ở đây, dịch vụ có tên là OracleServiceORCL. Để tắt dịch  
vụ này, chọn Start Settings Control Panel Administrative Tools   
Services.  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 8  
5
b. Chọn dịch vụ OracleServiceORCL nhấn chuột phải, chọn Stop để tắt dịch vụ  
này.  
c. Sau khi đã tắt dịch vụ OracleServiceORCL, mở thư mục chứa chương trình cài  
đặt Oracle Database Enterprise Edition, nhấp đôi lên file setup.exe.  
d. Oracle Universal Installer được khởi động:  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 8  
6
e. Click chọn Advanced Installation trong cửa sổ Installation Method rồi nhấn  
Next.  
f. Chọn Custom trong cửa sổ Select Installation Type nhấn Next.  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 8  
7
g. Ở cửa sổ Specify File Locations, nhập Global Database Name vào Home và  
đường dẫn của Oracle Home vào Path rồi nhấn Next. Thông thường, nếu khi  
cài đặt Oracle, bạn không thay đổi giá trị mặc định của vị trí cài đặt thì giá trị  
của đường dẫn C:\oracle\product\10.2.0\db_1.  
h. Trong cửa sổ Available Product Components đánh dấu vào ô Oracle Label  
Security.  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 8  
8
i. Các bước kế tiếp làm theo hướng dẫn trong cửa sổ hiển thị (cách làm giống như  
quá trình cài đặt Oracle Database).  
2. Cấu hình để sử dụng OLS  
a. Chọn Start Programs Oracle-OraDb10g_home1 Configuration and  
Migration Tools Database Configuration Assistant. Cửa sổ chương trình sẽ  
hiện ra như hình bên dưới. Click Next để tiếp tục.  
b. Trong cửa sổ Step 1, chọn Configure Database Options và click Next.  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 8  
9
c. Trong Step 2, chọn cơ sở dữ liệu bạn muốn cài đặt thêm OLS và click Next.  
d. Trong Step 3, chọn Oracle Label Security và click Next.  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 8 10  
e. Trong Step 4, đề mặc định chọn Finish.  
f. Lần lượt 2 ô cửa sổ Restart Database Confirmation xuất hiện, nhấn OK trong  
mỗi cửa sổ đó.  
g. Sau khi chương trình cài đặt thành công, click No trong cửa sổ Database  
Configuration Assistant để thoát ra khỏi chương trình.  
3. Kích hoạt tài khoản LBACSYS  
Để sử dụng OLS bảo vệ cho cơ sở dữ liệu, ta cần tạo ra các chính sách (policy) quy  
định các mức độ nhạy cảm của dữ liệu mức độ tin cậy của những người dùng liên  
quan. Muốn tạo ra các chính sách, ta phải đăng nhập bằng tài khoản LBACSYS. Tuy  
nhiên, mặc định tài khoản này bị khóa. Dùng đoạn lệnh sau để kích hoạt tài khoản này.  
CONN system/system;  
ALTER USER lbacsys IDENTIFIED BY lbacsys ACCOUNT UNLOCK;  
4. Chuẩn bị dữ liệu  
Để minh họa cho phần thực hành của các bài lab về OLS, chúng ta cần tạo trước  
một số tài khoản, role.  
Thông thường, ngữ cảnh mà trong đó dữ liệu cần được bảo vệ sẽ gồm các thành  
phần:  
Dữ liệu cần được bảo vệ.  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 8 11  
Chủ sở hữu dữ liệu cần được bảo vệ (user tạo ra và chứa dữ liệu cần được bảo  
vệ trong schema của mình).  
User chịu trách nhiệm quản lý ai được phép truy xuất những đối tượng dữ liệu  
cần được bảo vệ.  
User chịu trách nhiệm quản lý chính sách bảo mật những quy định của chính  
sách đó.  
Trong phần thực hành, chúng ta sẽ sử dụng các đối tượng dữ liệu thuộc schema HR  
(có sẵn khi cài đặt Oracle Database, chứa dữ liệu quản lý nhân sự của một công ty-  
Human Resources) như những đối tượng dữ liệu cần được bảo vệ. Nói cách khác,  
HR là user tạo ra, quản lý và sở hữu (về mặt nội dung) dữ liệu cần được bảo vệ. Đổi  
mật khẩu cho schema HR:  
CONN system/system;  
ALTER USER hr IDENTIFIED BY hr ACCOUNT UNLOCK;  
Tiếp theo, ta tạo mới user HR_SEC chịu trách nhiệm quản những user nào được  
phép truy xuất dữ liệu trong schema HR:  
CONN system/system;  
GRANT connect, create user, drop user,  
create role, drop any role  
TO hr_sec IDENTIFIED BY hrsec;  
Ta tạo user SEC_ADMIN chịu trách nhiệm quản lý chính sách bảo mật dành cho  
dữ liệu trong HR.  
CONN system/system;  
GRANT connect TO sec_admin IDENTIFIED BY secadmin;  
Ta cũng cần tạo ra các user là các nhân viên trong công ty và role cho các nhân  
viên:  
CONN system/system;  
CREATE ROLE emp_role;  
GRANT connect TO emp_role;  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
-- Steven King (Tổng Giám đốc)  
Lab 8 12  
CREATE USER sking IDENTIFIED BY sking;  
GRANT emp_role TO sking;  
-- Neena Kochhar (Giám đốc điều hành)  
CREATE USER nkochhar IDENTIFIED BY nkochhar;  
GRANT emp_role TO nkochhar;  
-- Karen Partner (Trưởng phòng Sales)  
CREATE USER kpartner IDENTIFIED BY kpartner;  
GRANT emp_role TO kpartner;  
-- Louise Doran (Nhân viên thuộc phòng Sales)  
CREATE USER ldoran IDENTIFIED BY ldoran;  
GRANT emp_role TO ldoran;  
Vì HR là người quản về mặt nội dung đối với dữ liệu trong của phòng nhân sự  
nên HR là người cấp quyền xem dữ liệu cho các nhân viên:  
CONN hr/hr;  
GRANT select ON hr.locations TO emp_role;  
II. Chính sách trong Oracle Label Security  
A. Lý thuyết  
Chính sách (policy) có thể được xem như một danh sách tập hợp thông tin về các  
nhãn dữ liệu và nhãn người dùng của chính sách đó, các quy định về quyền truy xuất,  
các điều kiện áp dụng chính sách. Do vậy để hiện thực OLS thì đầu tiên cần phải tạo ra  
chính sách.  
Oracle cho phép tạo nhiều chính sách khác nhau. Một chính sách có thể được dùng để  
bảo vệ nhiều bảng và schema. Một bảng hoặc schema có thể được bảo vệ bởi nhiều  
chính sách khác nhau. Khi đó, nếu một người dùng muốn truy xuất dữ liệu trong bảng  
thì phải thỏa mãn quy định của tất cả các chính sách đang được áp dụng cho bảng đó.  
Với mỗi chính sách được áp dụng trên một bảng, một cột dùng để lưu thông tin nhãn dữ  
liệu (data label) của chính sách đó cho mỗi hàng trong bảng sẽ được thêm vào 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  
Bảo Mật Hệ Thống Thông Tin  
Lab 8 13  
Mọi bảng có áp dụng chung 1 chính sách sẽ cột thông tin với tên cột giống nhau. Vì  
vậy, mỗi khi tạo một chính sách, ta phải quy định một tên cột cho chính sách đó và tên  
này phải là duy nhất trong toàn bộ các chính sách OLS của CSDL.  
d: chính sách A quy định tên cột chứa thông tin là B. Như vậy với mỗi bảng có áp  
dụng chính sách A, Oracle sẽ thêm vào đó 1 cột có tên là B dùng để lưu nhãn dữ liệu  
tương ứng với chính sách A cho từng dòng dữ liệu của bảng đó.  
Các cột chứa thông tin của các chính sách trong mỗi bảng kiểu NUMBER. Thông tin  
của nhãn dữ liệu được lưu trong cột này là một con số đại diện cho nhãn gọi là tag (sẽ  
được giới thiệu kỹ hơn trong phần sau).  
Chúng ta sử dụng package SA_SYSDBA để quản lý chính sách. SA_SYSDBA bao  
gồm các thủ tục (procedure) sau:  
SA_SYSDBA.CREATE_POLICY: tạo mới một chính sách.  
SA_SYSDBA.ALTER_POLICY: thay đổi những điều kiện áp dụng chính sách.  
SA_SYSDBA.DISABLE_POLICY: làm cho những quy định của chính sách tạm  
thời không có hiệu lực đối với những dữ liệu có áp dụng chính sách đó.  
SA_SYSDBA.ENABLE_POLICY: kích hoạt chính sách để những quy định của  
chính sách trên các đối tượng dữ liệu mà nó bảo vệ hiệu lực. Mặc định ngay khi  
được tạo ra, chính sách đã được kích hoạt.  
SA_SYSDBA.DROP_POLICY: xóa bỏ chính sách và tất cả các nhãn người dùng,  
nhãn dữ liệu liên quan ra khỏi cơ sở dữ liệu.  
B. Thực hành  
Ta dùng procedure SA_SYSDBA.CREATE_POLICY để tạo ra chính sách mới. Quyền  
thực thi thủ tục này được cấp mặc định cho LBACSYS. Trong phần thực hành sau ta sẽ  
tạo ra một chính sách dùng để điều khiển các truy xuất đến bảng LOCATIONS của HR  
với tên gọi là “ACCESS_LOCATIONS” và có cột chứa nhãn tên là “OLS_COLUMN”.  
CONN lbacsys/lbacsys;  
BEGIN  
SA_SYSDBA.CREATE_POLICY (  
policy_name => 'ACCESS_LOCATIONS',  
column_name => 'OLS_COLUMN');  
END;  
/
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 8 14  
Khi một chính sách được tạo ra, Oracle tự động tạo ra 1 role quản trị riêng cho chính  
sách đó và gán role này cho LBACSYS. Tên của role có dạng  
“<tên_chính_sách>_DBA”. Ví dụ, đối với chính sách vừa tạo ở trên thì role tương ứng  
sẽ có tên là ACCESS_LOCATIONS_DBA. Thông thường LBACSYS chỉ nhiệm  
vụ chung tạo ra các chính sách, sẽ những người khác chịu trách nhiệm quản lý chính  
sách đó. Cụ thể trong ngữ cảnh thực hành của chúng ta, SEC_ADMIN sẽ là user chịu  
trách nhiệm quản lý chính sách, duy trì hoạt động của nó và HR_SEC sẽ quyết định  
quyền truy xuất dữ liệu trong schema HR của các user khác dựa trên mức độ tin cậy họ.  
Để SEC_ADMIN có thể quản lý và duy trì hoạt động của chính sách, ta cần cấp cho  
user này role quản trị của chính sách và các quyền thực thi trên các package liên quan:  
CONN lbacsys/lbacsys;  
GRANT access_locations_dba TO sec_admin;  
-- Package dùng để tạo ra các thành phần của nhãn  
GRANT execute ON sa_components TO sec_admin;  
-- Package dùng để tạo các nhãn  
GRANT execute ON sa_label_admin TO sec_admin;  
-- Package dùng để gán chính sách cho các table/schema  
GRANT execute ON sa_policy_admin TO sec_admin;  
Để HR_SEC có thể quản việc truy xuất của các user, ta cũng cần cấp cho user này  
role quản trị của chính sách và các quyền thực thi trên các package liên quan:  
CONN lbacsys/lbacsys;  
GRANT access_locations_dba TO hr_sec;  
-- Package dùng để gán các label cho user  
GRANT execute ON sa_user_admin TO hr_sec;  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 8 15  
Lưu ý: đối với mỗi user quản lý chính sách, ta cấp cho user đó các quyền thực thi trên  
các package tương ứng. Tuy nhiên có các quyền trên chưa phải điều kiện đủ để user  
đó thể quản lý các chính sách. Nếu muốn user đó quản lý chính sách nào, ta cần gán  
thêm role quản trị của chính sách đó cho user. Như vậy những quyền mà user được cấp  
sẽ chỉ có tác dụng trên những chính sách mà user được gán role quản trị.  
-- Tạo 1 policy mới nhưng không gán role  
CONN lbacsys/lbacsys;  
BEGIN  
sa_sysdba.create_policy  
(policy_name  
=> 'Different_Policy');  
END;  
/
/*** Thử quản lý policy mới tạo ra. Nhưng sẽ bị thất  
bại vì sec_mgr không được gán role cần thiết.**/  
CONN sec_admin/secadmin;  
BEGIN  
sa_components.create_level  
(policy_name  
long_name  
=> 'Different_Policy',  
=> 'foo',  
short_name  
level_num  
=> 'bar',  
=> 9);  
END;  
/
BEGIN  
*
ERROR at line 1:  
ORA-12407: unauthorized operation for policy Different_Policy  
Ta dùng SA_SYSDBA.DROP_POLICY để xóa chính sách 'Different_Policy' trên:  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 8 16  
CONN lbacsys/lbacsys;  
BEGIN  
sa_sysdba.drop_policy  
(policy_name  
drop_column  
=> 'Different_Policy',  
=> true);  
END;  
/
III. Bài tập  
1. Tạo user ols_test và cấp quyền để user này truy cập vào hệ thống được. Cấp quyền thực thi  
trên các gói thủ tục cần thiết để user này quản được một chính sách.  
2. Tạo chính sách region_policy với tên cột chính sách là region_label. Thực hiện lệnh cần  
thiết để ols_test trở thành người quản lý chính sách này.  
3. Disable thủ tục đã tạo ở câu 2. Sau đó enable nó lại.  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
docx 16 trang yennguyen 08/04/2022 4540
Bạn đang xem tài liệu "Bài thực hành Bảo mật hệ thống thông tin - Bài thực hành số 8: Oracle Label Security (1)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • docxbai_thuc_hanh_bao_mat_he_thong_thong_tin_bai_thuc_hanh_so_8.docx