Tài liệu 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 (Phần 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 lý 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 lý việc truy xuất dữ liệu bằng cách quản lý 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 lý việc truy xuất dựa trên mức độ nhạy cảm của dữ liệu và 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 và 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ò rỉ dữ liệu có 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ị có 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 và quyền hệ thống (bài Lab 3 – Quyền và Role).

 MAC:

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ị có 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 đó có 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).

 

Tài liệu 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 (Phần 1) trang 1

Trang 1

Tài liệu 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 (Phần 1) trang 2

Trang 2

Tài liệu 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 (Phần 1) trang 3

Trang 3

Tài liệu 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 (Phần 1) trang 4

Trang 4

Tài liệu 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 (Phần 1) trang 5

Trang 5

Tài liệu 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 (Phần 1) trang 6

Trang 6

Tài liệu 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 (Phần 1) trang 7

Trang 7

Tài liệu 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 (Phần 1) trang 8

Trang 8

Tài liệu 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 (Phần 1) trang 9

Trang 9

Tài liệu 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 (Phần 1) trang 10

Trang 10

Tải về để xem bản đầy đủ

docx 16 trang xuanhieu 8680
Bạn đang xem 10 trang mẫu của tài liệu "Tài liệu 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 (Phần 1)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Tài liệu 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 (Phần 1)

Tài liệu 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 (Phần 1)
 bảo đảm an toàn cho dữ liệu là DAC (Discretionary Access Control) và MAC (Mandatory Access Control).
DAC: quản lý việc truy xuất dữ liệu bằng cách quản lý 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 lý việc truy xuất dựa trên mức độ nhạy cảm của dữ liệu và 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 và 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ò rỉ dữ liệu có mức độ nhạy cảm cao ra cho những người dùng có độ tin cậy thấp.
MAC và DAC trong Oracle
DAC:
Trong Oracle Database, các nhà quản trị có 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 và quyền hệ thống (bài Lab 3 – Quyền và Role).
MAC:
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ị có 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 đó có 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
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 và dễ dàng hơn. 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ị có 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 và 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 lý 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 kê ở 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.
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à một label thuộc chính sách trên có thể có.
B3: Tạo các nhãn dữ liệu thật sự mà 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 và đố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.
Thực hành
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 có sẵn. Bạn phải có quyền admin để có 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:
Trước khi cài đặt, cần đảm bảo là dịch vụ OracleService đã đượ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ọn dịch vụ OracleServiceORCL và nhấn chuột phải, chọn Stop để tắt dịch vụ này.
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.
Oracle Universal Installer được khởi động:
Click chọn Advanced Installation trong cửa sổ Installation Method rồi nhấn Next.
Chọn Custom trong cửa sổ Select Installation Type và nhấn Next.
Ở 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 là C:\oracle\product\10.2.0\db_1.
Trong cửa sổ Available Product Components đánh dấu vào ô Oracle Label Security.
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).
Cấu hình để sử dụng OLS 
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.
Trong cửa sổ Step 1, chọn Configure Database Options và click Next.
Trong Step 2, chọn cơ sở dữ liệu mà bạn muốn cài đặt thêm OLS và click Next.
Trong Step 3, chọn Oracle Label Security và click Next.
Trong Step 4, đề mặc định và chọn Finish.
Lần lượt 2 ô cửa sổ Restart Database và Confirmation xuất hiện, nhấn OK trong mỗi cửa sổ đó.
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.
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 và 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;
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ủ 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 và 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ư là 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 lý 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;
-- Steven King (Tổng Giám đốc)
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 lý 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;
Chính sách trong Oracle Label Security
Lý thuyết
Chính sách (policy) có thể được xem như là 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. Mọi bảng có áp dụng chung 1 chính sách sẽ có 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. 
Ví 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 có 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ệ có 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.
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;
/
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 “_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ỉ có nhiệm vụ chung tạo ra các chính sách, sẽ có 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 lý 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;
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 là điều kiện đủ để user đó có 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 => 'Different_Policy',
long_name => 'foo',
short_name => 'bar',
level_num => 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:
CONN lbacsys/lbacsys;
BEGIN
sa_sysdba.drop_policy
(policy_name => 'Different_Policy',
drop_column => true);
END;
/
Bài tập
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 lý được một chính sách.
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.
Disable thủ tục đã tạo ở câu 2. Sau đó enable nó lại. 

File đính kèm:

  • docxtai_lieu_thuc_hanh_bao_mat_he_thong_thong_tin_bai_thuc_hanh.docx