1. Giới thiệu
Đặc biệt, khi xã hội chuyển sang giai đoạn xã hội hoá thông tin và nền kinh tế chuyển sang nền kinh tế số hoá với mức độ liên kết chặt chẽ, với quy mô toàn cầu thì vai trò của cơ sở dữ liệu (CSDL) càng trở nên quan trọng. Do vậy, các vấn đề tin cậy, an toàn và bí mật thông tin trong các cơ sở dữ liệu cần được đầu tư nghiên cứu dưới cả góc độ lý thuyết và triển khai thực tiễn.
Bảo vệ thông tin trong các CSDL là một vấn đề không đơn giản. Hiện nay, đã có một số mô hình an toàn CSDL được nghiên cứu kỹ về mặt lý thuyết và có các triển khai ứng dụng nhất định. Song để có thể triển khai được, các mô hình này cần được xây dựng cùng với các hệ quản trị cơ sở dữ liệu (DBMS) hoặc xây dựng trên nền một Engine CSDL quan hệ nào đó.
Trong các mức bảo vệ CSDL, có thể nói mức bảo vệ sâu nhất và an toàn nhất là tại chính CSDL. Trong các tổ chức, người ta thường gắn ngay các kiểm soát an toàn vào các ứng dụng. Tuy nhiên, người dùng có thể truy nhập CSDL không theo kiểu thông thường và bỏ qua các kỹ thuật an toàn gắn với ứng dụng. Điều đó làm cho các kỹ thuật an toàn được nhúng vào các ứng dụng có thể bị người dùng bỏ qua và họ có thể truy xuất trái phép đến thông tin nhạy cảm của CSDL.
Vấn đề đặt ra là liệu ta có thể nhúng các kỹ thuật an toàn vào trong CSDL được hay không? Nếu thực hiện được như vậy thì sẽ không cần phải quan tâm tới khả năng có thể vượt qua các kỹ thuật an toàn nhúng trong ứng dụng để khai thác các dữ liệu không được phép của người dùng. Dựa vào các khả năng của hệ quản trị cơ sở dữ liệu ORACLE (phiên bản 8i trở đi) và DB2 ta có thể thực hiện được điều đó.
Để đảm bảo an toàn cho một hệ thống thì kiểm soát truy nhập là một trong những biện pháp đầu tiên và quan trọng nhất. Nhờ khả năng kiểm soát truy nhập, chúng ta có thể cho phép hoặc từ chối một chủ thể (một người dùng hay một tiến trình nào đó) truy nhập vào một đối tượng trong hệ thống. Trong an toàn cơ sở dữ liệu, ta hoàn toàn có thể gắn kiểm soát truy nhập cho cơ sở dữ liệu của mình bằng các chính sách kiểm soát truy nhập, cụ thể là chính sách kiểm soát truy nhập bắt buộc (MAC) và chính sách kiểm soát truy nhập tùy ý (DAC). Bài báo này tập trung tìm hiểu chính sách MAC và ứng dụng của nó trong bảo mật cơ sở dữ liệu dựa trên hệ quản trị cơ sở dữ liệu Oracle và DB2 ra sao?
2. Chính sách kiểm soát truy nhập bắt buộc
Mandatory Access Control - MAC là chính sách bắt buộc trong kiểm soát truy nhập được áp dụng cho các thông tin có yêu cầu bảo vệ nghiêm ngặt, trong các môi trường mà ở đó dữ liệu hệ thống và người dùng đều có thể được phân loại mức nhạy cảm rõ ràng. Kiểm soát này luôn có độ ưu tiên cao hơn những kiểm soát tùy chọn do người dùng thực hiện, cho nên gọi là kiểm soát “bắt buộc”.
Kiểm soát truy nhập tùy ý DAC (Discretionary Access Control) cho phép quyền truy nhập được lan truyền từ chủ thể này sang chủ thể khác, còn trong MAC tất cả chủ thể và đối tượng đều được gắn một lớp an toàn, thể hiện như sau:
Lớp an toàn = (Mức nhạy cảm, Vùng ứng dụng)
Mức nhạy cảm là thành phần phân cấp.
Vùng ứng dụng là thành phần không phân cấp.
- Ví dụ trong quân sự:
Lớp an toàn = (Mức nhạy cảm, Vùng ứng dụng)
Mức nhạy cảm:
0 = Không phân loại (U - Unclassified)
1 = Mật (C – Confidential)
2 = Tuyệt mật (S – Secret)
3 = Tối mật (TS – Top Secret)
Vùng ứng dụng: Hạt nhân - Nato - Cơ quan tình báo
- Ví dụ trong thương mại:
Lớp an toàn = (Mức nhạy cảm, Vùng ứng dụng)
Mức nhạy cảm:
0 = Không phân loại (U - Unclassified)
1 = Nhạy cảm (S – Sensitive)
2 = Rất nhạy cảm (HS – High Sensitive)
Vùng ứng dụng: Phòng làm việc - Vùng, miền, chi nhánh.
Để một chủ thể được phép truy nhập vào một đối tượng, thì lớp an toàn (nhãn) của chủ thể phải thỏa mãn các tiên đề an toàn trong chính sách an toàn của hệ thống.
Khái niệm MAC được hình thức hóa lần đầu tiên bởi mô hình Bell và LaPadula. Mô hình này hỗ trợ MAC bằng việc xác định rõ các quyền truy nhập từ các mức bảo mật kết hợp với các chủ thể và đối tượng. Hai quy tắc sau định nghĩa truy nhập bắt buộc:
Thuộc tính an toàn đơn giản (ss - property): Một chủ thể có thể đọc một đối tượng chỉ nếu mức bảo mật của chủ thể cao hơn hoặc bằng mức bảo mật của đối tượng (gọi là quy tắc Readdown - đọc xuống).
Thuộc tính *(*. Property): Một chủ thể có thể ghi thông tin vào một đối tượng chỉ nếu mức bảo mật của đối tượng cao hơn hoặc bằng mức bảo mật của chủ thể (gọi là quy tắc Write up - ghi lên)
Ý nghĩa: Nhờ hai thuộc tính này, đảm bảo không xảy ra tình trạng lộ thông tin mật từ mức cao xuống mức nhạy cảm thấp hơn, bởi vì một chủ thể không được phép đọc thông tin từ đối tượng mức cao để ghi xuống các đối tượng mức thấp.
Có thể nói MAC là một chính sách kiểm soát an toàn mức cao, đảm bảo an toàn cho CSDL. Hạn chế của nó là, người dùng không thể thay đổi quyền đã được gán nếu không có sự cho phép của nhà quản trị trung tâm và cũng không thể gán quyền cho người dùng khác. Nhưng MAC lại kiểm soát quyền rất tốt và đảm bảo mức an toàn cao cho CSDL.
Sau đây sẽ xem xét việc áp dụng Chính sách kiểm soát truy nhập bắt buộc trong các hệ quản trị Oracle và DB2?
3. Chính sách MAC trong ORACLE
Có thể nói sự thực thi của MAC trong các hệ quản trị là dựa và các nhãn - label, dùng để gán cho các chủ thể và đối tượng của hệ thống. Do đó, trong Oracle, MAC được gọi là an toàn dựa vào nhãn - OLS (Oracle Label Security).
OLS trong Oracle cho phép bảo vệ dữ liệu của các bảng đến mức hàng - mức bản ghi (row level).
OLS cho phép bạn định nghĩa một chính sách an toàn (security policy) được thực thi bằng cách gắn cho các bản ghi trong bảng bởi các nhãn an toàn. Nhãn này cũng thể hiện quyền mà một người dùng cần có để có thể đọc hay ghi dữ liệu trong các bản ghi. Khi áp dụng chính sách an toàn vào một bảng, bảng đó sẽ được bổ sung thêm một cột để chứa các nhãn an toàn gắn với từng bản ghi của nó.
Cài đặt OLS
Để cài đặt OLS, người sử dụng phải lựa chọn tùy chọn Custom trong quá trình cài đặt Oracle. Đồng thời, khi create Database, phải chọn tùy chọn Oracle Label Security.
Sau khi chọn các tùy chọn đó, OLS đã được hỗ trợ trong Oracle để có thể bảo vệ CSDL, dựa vào các label mà người sử dụng tạo ra.
Ta có thể thực thi OLS trong Oracle bằng công cụ Oracle Policy Manager. Tại đây, có thể tạo policy để áp dụng vào các bảng và các lược đồ. Trong một Policy tạo ra, cần quan tâm đến 3 phần sau:
Labels: là nhãn tạo ra để gán cho các bản ghi trong table, bao gồm:
+ Label components (Thành phần nhãn): bao gồm Level, Compartment và Group.
+ Data label: là nhãn dữ liệu tạo ra từ 3 thành phần nhãn trên.
Authorizations: là phần cấp quyền cho các user để cho phép họ truy nhập và từng hàng dữ liệu như thế nào.
Protected Objects (Các đối tượng cần bảo vệ): đưa vào các bảng hay các lược đồ cần bảo vệ.
Bên cạnh đó, ta có thể sử dụng thêm công cụ SQLPlus Worksheet để thực hiện OLS bằng các câu lệnh SQL.
Thực thi an toàn dựa vào nhãn
Cần có 5 bước để thực thi OLS trong Oracle:
- Bước 1 (Tạo chính sách OLS): Chính sách này bao gồm các nhãn (label), quyền người dùng (user authorization), đối tượng CSDL cần bảo vệ (protected database object).
- Bước 2 (Định nghĩa các thành phần nhãn - label component): mỗi một label bao gồm 3 thành phần:
+ Level: là thành phần bắt buộc, phân cấp, thể hiện mức nhạy cảm của thông tin
+ Compartment: là thành phần tùy chọn, không phân cấp, sử dụng để phân loại dữ liệu. Ví dụ, compartment là các phòng ban làm việc của một tổ chức.
+ Group: cũng là một tùy chọn để giới hạn truy nhập trong một level. Group có ích trong việc phân cấp user. Ví dụ, Group có thể là các chi nhánh của một công ty, các vùng miền của một đất nước.
- Bước 3 (Tạo các label để sử dụng): Từ các label component đã định nghĩa ở bước 2, tạo một tập các nhãn dựa vào chính sách an toàn phù hợp với ứng dụng của bạn.
- Bước 4 (Áp dụng chính sách an toàn trên cho các bảng hay các lược đồ): Sau bước này, các bảng hay lược đồ đó sẽ được tạo thêm một cột chứa nhãn an toàn của từng hàng.
- Bước 5 (Gán nhãn cho các user hay các ứng dụng): Bước này thực hiện gán nhãn cho người dùng một cách phù hợp với từng người dùng.
Sau đó OLS sẽ so sánh nhãn của một người dùng với nhãn dữ liệu gán cho từng hàng để đưa ra quyết định truy nhập. Một người dùng chưa được gán nhãn sẽ không thể truy nhập vào bảng đó.
Ví dụ: Ta có một bảng CSDL lưu thông tin về các nhân viên của một công ty phần mềm như sau:
Đặc tả bài toán:
- Tất cả các nhân viên có thể xem thông tin của các nhân viên phòng mình.
- Tất cả các trưởng phòng: có thể xem, sửa và thêm thông tin của nhân viên phòng mình.
- Giám đốc: có thể thực hiện tất cả các hoạt động đối với CSDL.
Level
Tạo 3 level, tương ứng với 3 chức vụ: Giám đốc,
trưởng phòng, nhân viên:
Short Long Numeric
OFF OFFICER 7000 (nhân viên)
MGR MANAGER 8000 (trưởng phòng)
EXEC EXECUTIVE 9000 (giám đốc)
Compartment
Tạo ra 3 compartment tương ứng với 3 phòng
ban: KH, MK, LT
Short Long Numeric
KH Phòng kế hoạch 100
MK Phòng Maketing 200
LT Phòng lập trình 300
Group
Tạo 3 group, tương ứng với ALL- đại diện cho cả
nước, MB- là chi nhánh miền bắc, MN – chi
nhánh miền nam
Short Long Numeric
ALL Tổng công ty 10
MB Miền bắc 20 ALL
MN Miền Nam 30 ALL
Label
EXEC: KH, MK, LT: ALL
MGR: KH: MB
MGR: KH: MN
OFF: MK: MB
OFF: MK: MN
OFF: LT: MN
...
Sau đó, ta phân cho người dùng những nhãn thích hợp để họ có thể truy nhập vào những bản ghi phù hợp như đặc tả của bài toán.
Gán nhãn user
Ví dụ: Tạo ra một số người dùng như EXECUTIVE, MGR_KH_MB, MGR_KH_MN, OFF_MK_MB, OFF_MK_MN…
Ta gán nhãn tương ứng như sau:
EXECUTIVE label= EXEC: KH, MK, LT: ALL
MGR_KH_MB label = MGR: KH: MB
MGR_KH_MN label = MGR: KH: MN
OFF_MK_MB label = OFF: MK: MB
OFF_MK_MN label = OFF: MK: MN
Kết quả
Giám đốc có thể thực hiện mọi thao tác trên CSDL, các trưởng phòng có thể xem, sửa thông tin của các nhân viên thuộc phòng họ nhưng không thể xem thông tin của các phòng khác, các nhân viên thì chỉ có thể xem thông tin của phòng mình mà không được phép sửa đổi.
Như vậy, sau khi áp dụng OLS, các hàng dữ liệu trong bảng và người dùng đều được gán nhãn an toàn phù hợp. Một người dùng chỉ được xem, thực hiện những câu truy vấn nhất định trong một số các bản ghi mà họ có thể xem chứ không phải tất cả các bản ghi của CSDL.
Ta có thể áp dụng MAC trong một số ứng dụng như:
- Với các ngân hàng, những khách hàng trực tuyến chỉ có thể nhìn thấy các giao dịch của họ và số dư tài khoản của họ nhưng không thể nhìn thấy các giao dịch cũng như số dư tài khoản của người khác.
- Với các công ty có nhiều chi nhánh đặt ở các nơi khác nhau, thì nhà quản lý của từng chi nhánh chỉ có thể nhìn thấy thông tin về nhân viên cũng như thông tin về quá trình sản xuất của chi nhánh mà anh ta quản lý.
Tuy nhiên, OLS trong Oracle chỉ bảo vệ dữ liệu được mức hàng, vậy DB2 có gì khác biệt?
4. Chính sách MAC trong DB2
Trong hệ quản trị DB2, chính sách MAC được thực thi cũng bởi chính sách kiểm soát truy nhập dựa vào nhãn LBAC (Label-Based Access Control).
Với LBAC, nhà quản trị có thể kiểm soát truy nhập đọc và ghi của một user vào một bảng ở cả mức hàng và mức cột (column and row level).
Có 3 loại nhãn an toàn trong LBAC:
- Nhãn an toàn mức hàng (Row security label): là một nhãn an toàn được gắn với một hàng (hay một bản ghi) dữ liệu.
- Nhãn an toàn cột (Column security label): là một nhãn an toàn được gán với một cột trong một bảng CSDL.
- Nhãn an toàn user (User security label): là một nhãn an toàn được gán cho một user CSDL.
Một nhãn an toàn trong DB2 bao gồm một hoặc nhiều thành phần nhãn - label component (khác trong Oracle là chỉ gồm 3 thành phần). Tuy nhiên, trong DB2, có 3 kiểu thành phần nhãn an toàn như sau:
- Set (tập hợp): là một tập các phần tử, trong đó vị trí xuất hiện của chúng không quan trọng, vai trò các phần tử đó là như nhau.
- Array (mảng): mảng là một tập được sắp xếp, có thể được dùng để thể hiện một phân cấp đơn giản. Trong một mảng, phần tử đầu tiên có vị trí cao hơn phần tử thứ hai, phần tử thứ hai có vị trí cao hơn phần tử thứ 3,...
- Tree (cây): một cây thể hiện một phân cấp phức tạp hơn, có thể có nhiều nút và nhiều nhánh. Ví dụ, cây có thể được dùng để thể hiện các lưu đồ của tổ chức.
Trong DB2, chỉ có nhà quản trị an toàn (SECADM) mới có quyền thực hiện kiểm soát LBAC.
Các bước bảo vệ CSDL bằng kiểm soát LBAC bao gồm:
1. Phân tích các giới hạn dữ liệu cần thiết
2. Thiết kế giải pháp LBAC
3. Thực thi giải pháp LBAC
4. Xem giải pháp LBAC đó hoạt động thế nào
5. Kết luận
Phần trên đã giới thiệu về việc thực thi chính sách MAC trong các hệ quản trị Oracle và DB2. Mỗi hệ quản trị đều có những đặc điểm riêng nên việc áp dụng MAC cũng khác nhau. Ví dụ, trong Oracle, MAC chỉ bảo vệ được ở mức hàng, còn DB2 vừa có thể bảo vệ ở mức hàng, vừa có thể bảo vệ được ở mức cột. Nhưng áp dụng MAC trong Oracle linh hoạt hơn và cũng dễ hiểu hơn so với DB2. Với hệ quản trị Sybase, cũng giống như Oracle ta có thể bảo vệ ở mức hàng (mức bản ghi).
Chính sách kiểm soát truy nhập bắt buộc MAC cũng có đóng góp rất lớn trong việc đảm bảo an toàn CSDL ngay tại CSDL đó. Mặc dù vẫn còn những nhược điểm khó tránh khỏi nhưng MAC giúp cho hệ thống CSDL được đảm bảo an toàn hơn, tránh được nhiều tấn công trực tiếp và gián tiếp vào CSDL.