1. CSDL riêng ảo trên Oracle
CSDL riêng ảo là một cơ chế bảo mật, cho phép ta tạo các chính sách bảo mật để điều khiển việc truy cập ở mức hàng, cột. Bản chất thì VPD thêm một mệnh đề WHERE vào câu lệnh SQL được đưa ra đối với bảng (table), khung nhìn (view) hoặc synonym (tên thay thế cho các đối tượng như bảng, khung nhìn, các thủ tục được lưu và các đối tượng CSDL khác).
VPD cung cấp giải pháp bảo mật tới mức mịn trực tiếp trên các table, view, synonym. Nó gán trực tiếp các chính sách bảo mật lên các đối tượng CSDL, và các chính sách sẽ tự động được thực hiện mỗi khi có một người dùng truy nhập dữ liệu đến các đối tượng đó.
Khi người dùng trực tiếp hoặc gián tiếp truy cập tới table, view hay synonym được bảo vệ bởi chính sách VPD, thì hệ thống CSDL Oracle sẽ tự động sửa lại câu truy vấn SQL của người dùng bằng cách thêm vào một mệnh đề WHERE. Biểu thức đằng sau mệnh đề WHERE thường được gọi là một tân từ (predicate) và thực hiện trong suốt đối với người dùng. Kết quả là mỗi người dùng có một khung nhìn khác nhau với CSDL ban đầu, tùy thuộc vào đặc quyền của họ.
Chính sách VPD có thể áp dụng trên các lệnh SQL như: SELECT, INSERT, UPDATE, INDEX và DELETE. VPD không hỗ trợ các ngôn ngữ định nghĩa dữ liệu như: TRUNCATE hay ALTER TABLE. Dưới đây là một ví dụ đơn giản về VPD khi có một bảng NHANVIEN với khóa chính là NV_ID. Theo chính sách VPD được định nghĩa trước, mỗi người dùng chỉ được xem những thông tin của mình trong bảng NHANVIEN mà không được truy xuất đến thông tin của những người dùng khác. Khi đó, giả sử một người dùng với NV_ID bằng 19, thực hiện câu truy vấn sau:
SELECT * FROM NHANVIEN;
Chính sách VPD được áp dụng trên bảng này sẽ tự động gắn thêm vào câu truy vấn trên một mệnh đề WHERE như sau:
SELECT * FROM NHANVIEN
WHERE NV_ID = 19;
Khi đó, người dùng này chỉ có thể xem được các trường dữ liệu của bản ghi số 19 là những thông tin liên quan đến người dùng này.
VPD kết hợp hai tính năng: chính sách kiểm soát truy cập mịn (Fine-grained) và ngữ cảnh ứng dụng (application context). Chính sách kiểm soát truy cập mịn cho phép xây dựng các ứng dụng hay chính sách bảo mật với mức chi tiết mịn. Các chính sách này cũng được gọi là chính sách VPD. Chẳng hạn, có thể dùng chính sách này để hạn chế khách hàng truy cập vào một máy chủ CSDL Oracle, họ chỉ được xem những tài khoản riêng của mình. Một bác sĩ chỉ có thể nhìn thấy các hồ sơ bệnh nhân của mình, hoặc một người quản lý chỉ có thể nhìn thấy các hồ sơ của nhân viên làm việc trong phòng của anh ta.
Ngữ cảnh ứng dụng là một tập các cặp tên – giá trị, được lưu trong bộ nhớ. Nó được xác định, thiết lập và lấy ra bởi người dùng và các ứng dụng. Các giá trị liên quan được nhóm lại thành một nhóm được truy cập theo không gian tên miền (namespace) hay tên của nó. Bằng cách lưu trữ các giá trị và các thuộc tính trong bộ nhớ, sau đó chia sẻ chúng dựa trên ngữ cảnh, sẽ giúp việc truy xuất các giá trị nhanh chóng hơn. Khi tạo một ngữ cảnh ứng dụng, ta cần phải đặt tên và liên kết nó với một gói PL/SQL chứa các hàm định nghĩa giá trị của các thuộc tính. Dưới đây là ví dụ về một câu lệnh tạo một ngữ cảnh có tên là “CTX_EX”.
sec_mgr@KNOX10g> CREATE CONTEXT ctx_ex USING sec_mgr. ctx_ex_mgr;
Có thể nói, VPD mang lại rất nhiều lợi ích trong việc bảo mật CSDL trong hệ quản trị Oracle. Bên cạnh đó cũng có thể được kết hợp với các cơ chế an toàn khác để đảm bảo an toàn mức cao cho CSDL.
2. An toàn toàn dựa vào nhãn trên Oracle
An toàn dựa vào nhãn là một cơ chế, cho phép kiểm soát truy cập theo mức hàng (row_level), dựa trên cơ chế VPD của Oracle. Nó kiểm soát truy cập vào nội dung của một hàng bằng cách so sánh nhãn (label) của hàng với nhãn của người dùng và những đặc quyền của họ. Hình vẽ dưới đây thể hiện mối quan hệ giữa người dùng, dữ liệu và các nhãn.
Khi áp dụng chính sách OLS, một cột mới sẽ được thêm vào mỗi hàng dữ liệu. Cột này sẽ lưu trữ các nhãn phản ánh sự nhạy cảm của mỗi hàng dữ liệu trong CSDL. Khi đó có thể xác định được mức độ truy cập của người dùng vào CSDL bằng cách so sánh nhãn của người dùng với nhãn của hàng.
Lưu ý rằng, nhãn cho phép chúng ta điều khiển truy cập mịn bằng cách dùng dữ liệu trong hàng.
Mỗi nhãn dữ liệu sẽ chứa thông tin về mức độ nhạy cảm của dữ liệu. Nó là 1 thuộc tính đơn gồm 3 thành phần:
- Level (thành phần bắt buộc) là thành phần phân cấp biểu thị độ nhạy cảm của dữ liệu, chẳng hạn: HIGHLY_SENSITIVE, SENSITIVE, CONFIDENTIAL, PUBLIC. Đối với mỗi level, ta cần định nghĩa 1 dạng số (numeric form) và 2 dạng chuỗi (chuỗi dài- long form và chuối ngắn – short form).
- Compartment (thành phần tùy chọn) là thành phần không phân cấp giúp phân lớp dữ liệu chính xác hơn, việc phân loại dữ liệu được phân chia theo lĩnh vực, chuyên ngành, dự án,.… Tức là nếu ta có 2 dữ liệu thuộc 2 compartment C1 và C2, thì có nghĩa là 2 dữ liệu đó thuộc 2 lĩnh vực khác nhau là C1 và C2 và không có nghĩa dữ liệu thuộc C1 nhạy cảm hơn dữ liệu thuộc C2 (hay ngược lại).
- Group (thành phần tùy chọn) biểu diễn mối quan hệ sở hữu (thông thường nó thể hiện cơ cấu của công ty). Do vậy group có cấu trúc cây phân cấp “cha – con”. Một user có nhãn chứa một group cha thì có thể truy xuất dữ liệu thuộc group cha và tất cả các group con của group cha đó.
Trong Oracle, ta có thể thực thi OLS bằng công cụ Oracle Policy Manager. Tại đây, ta có thể tạo các chính sách OLS để áp dụng vào các bảng và các lược đồ.
Đối với một bảng được bảo vệ bởi một chính sách OLS, người dùng muốn truy cập vào một hàng, đòi hỏi nhãn của họ phải thỏa mãn một số tiêu chuẩn đã được định nghĩa trước trong chính sách đó. OSL cung cấp khả năng kiểm soát linh hoạt quyền truy cập vào dữ liệu nhạy cảm và kiểm soát truy cập dữ liệu dựa trên danh tính và nhãn của người dùng, sự nhạy cảm và nhãn của dữ liệu. Nó làm mịn thêm các điều khiển truy cập tùy ý, các điều khiển truy cập tùy ý này xác định hoạt động nào người dùng có thể thực hiện trên dữ liệu trong một đối tượng CSDL như: bảng hoặc khung nhìn.
Chính sách an toàn dựa vào nhãn là một cơ chế dựa trên kiểm soát bắt buộc (Mandatory Access Control - MAC, một loại chính sách kiểm soát truy cập trong CSDL). Do vậy, OLS có khả năng đảm bảo tính an toàn cao cho dữ liệu nhạy cảm, tuy nhiên việc thực thi và áp dụng OLS trên một hệ thống CSDL là khá phức tạp.
3. Áp dụng cơ chế VPD và OLS trên một CSDL
Nếu một CSDL đơn giản về nhân sự của một công ty được mô tả trên bảng NHANSU dưới đây (CSDL được cài đặt trên Oracle 10g hoặc 11g):
Yêu cầu: Có ba lớp người dùng cần phân quyền trên bảng CSDL này tương ứng với ba loại chức vụ: giám đốc, trưởng phòng và nhân viên. Trong đó, giám đốc là người có quyền cao nhất nên có mọi quyền (xem, xóa, sửa, cập nhật) trên bảng NHANSU. Các trưởng phòng được xem và sửa tất cả các bản ghi thuộc phòng đó trong bảng NHANSU. Và các nhân viên chỉ được xem thông tin của các nhân viên trong phòng mình trừ trường LUONG (trường này lưu thông tin về lương của nhân viên).
Sau khi áp dụng kết hợp các cơ chế và chính sách an toàn VPD và OLS của hệ quản trị Oracle, những yêu cầu bảo mật trên đều được đáp ứng. Kết quả là người dùng ứng với giám đốc có mọi đặc quyền trên bảng đó. Các trưởng phòng được xem và sửa tất cả các bản ghi thuộc phòng mình quản lý, chẳng hạn trưởng phòng phòng lập trình sẽ được nhìn thấy, sửa, cập nhật các thông tin sau:
4. Kết luận
Việc bảo vệ an toàn cho CSDL luôn là một việc vô cùng quan trọng. Tuy nhiên, bảo vệ như thế nào lại là một vấn đề không hề đơn giản. Với những nội dung được trình bày trong bài báo, chúng ta có thể thấy rằng bên trong các hệ quản trị CSDL luôn có các cơ chế an toàn được hỗ trợ sẵn. Các cơ chế an toàn như VPD và OLS trong hệ quản trị Oracle có thể hỗ trợ trong việc bảo vệ CSDL mức hàng kết hợp với mức cột. Đây có thể là một gợi ý tốt cho các nhà quản trị an toàn khi cần thiết lập các biện pháp để bảo vệ CSDL.
TÀI LIỆU THAM KHẢO [1] Oracle®, Oracle Label Security Administrator’s Guide 11g Release 2 (11.2), 2013. [2] Security Evaluations Oracle Corporation 500 Oracle Parkway Redwood Shores, CA 94065, OLS Security Target for Oracle Database 11g Release 1 (11.1.0), 2009. [3] Global Information Assurance Certification Paper, Oracle’s virtual private database, 2003. [4] Peter Finnigan, Using Oracle VPD In The Real World, 2009. |