Definition
Điều khiển truy cập tùy quyền (Discretionary Access Control - DAC)
Là điều khiển việc truy cập của chủ thể vào đối tượng thông qua định danh của chủ thể (identification) và các luật điều khiển truy cập. Các luật này quy định các quyền truy cập mà một người dùng được phép làm trên một đối tượng nào đó.
Cơ chế này được gọi là tùy quyền là do cơ chế cho phép chủ thể có thể cấp quyền cho chủ thể khác truy cập các đối tượng của nó.
Ưu điểm của DAC là nó linh động nên được sử dụng trong hầu hết các hệ quản trị cơ sở dữ liệu.
System R
Các mô hình cấp quyền theo cơ chế DAC hiện tại đều dựa trên mô hình System R.
System R là một trong những mô hình ra đời đầu tiên cho hệ quản trị cơ sở dữ liệu quan hệ và dựa trên nguyên lý ủy quyền quản trị cho người sở hữu.
Subjects
Các chủ thể (subject) có thể là người dùng (user), nhóm người dùng (group) hay tiến trình (process) nhưng không thể là vai trò (role).
Objects
Các đối tượng (object) được quản lý trong mô hình là table (hay relation) và view.
Privileges
Các loại quyền (privilege):
- Quyền ở cấp tài khoản/hệ thống (account/system level):
- Độc lập với các đối tượng.
- Do quản trị hệ thống định nghĩa và cấp cho từng người dùng.
- Bao gồm: CREATE SCHEMA, CREATE TABLE, CREATE VIEW, ALTER, DROP, MODIFY và SELECT.
- Quyền ở cấp đối tượng (object level):
- Quyền trên mỗi đối tượng. Bao gồm: INSERT, DELETE, UPDATE và REFERENCE.
- Chủ của đối tượng (là người tạo ra đối tượng), sẽ có tất cả các quyền trên đối tượng đó.
Sự ủy quyền được thể hiện thông qua GRANT OPTION, nếu cấp quyền cho một user bằng câu lệnh có GRANT OPTION thì user đó ngoài việc có thể thực hiện quyền được cấp, còn có thể cấp quyền đó cho các user khác.
Access Control Structure
Cấu trúc điều khiển truy cập phổ biến nhất cho mô hình DAC là ma trận điều khiển truy cập (Access Control Matrix).
Control with SQL
Điều khiển dựa trên hai thao tác:
- Cấp quyền (grant)
- Thu hồi quyền (revoke)
Grant
Cú pháp:
Đối với quyền cập nhật (update privilege), cần phải chỉ định quyền này áp dụng trên cột dữ liệu nào.
Revoke
Cú pháp:
Lưu ý:
- Chỉ có thể thu hồi quyền mà user đã cấp.
- Không thể chỉ thu hồi GRANT OPTION.
- Một người dùng chỉ có thể bị thu hồi quyền truy xuất khi tất cả những người cấp quyền cho đều thu hồi quyền lại.
Recursive Revocation
Thu hồi quyền đệ quy (recursive revocation): khi người dùng A thu hồi quyền truy xuất trên bảng của một người B thì tất cả các quyền mà B đã gán cho người khác đều bị thu hồi.
Minh họa:
Các con số trong hình trên đại diện cho thứ tự cấp quyền.
Fail
Thực tế, khi user A thay đổi công việc hay vị trí thì chỉ muốn lấy lại quyền truy xuất của A mà không muốn lấy lại các quyền truy xuất mà A đã cấp cho người khác.
Một giải pháp cho vấn đề này là không dựa vào nhãn thời gian, mục đích là để tránh thu hồi quyền dây chuyền.
Khi đó, nếu C bị B thu hồi quyền và C lại có quyền tương đương do người khác cấp (mặc dù được cấp sau đó) thì quyền mà C cấp cho người khác vẫn được giữ.
Minh họa:
Noncascading Revoke
Thu hồi quyền không dây chuyền: khi A thu hồi quyền truy xuất của B thì tất cả quyền truy xuất mà B cấp cho các chủ thể khác được thay bằng A cấp cho những chủ thể này.
Minh họa:
Bởi vì B có thể được cấp quyền truy xuất từ nhiều chủ thể (khác A), nên không phải tất cả các quyền mà B cấp đều thay bằng A cấp.
Với những quyền B đã được cấp bởi C (khác A), đến lượt B cấp cho người khác thì B vẫn là người cấp các quyền này.
Minh họa:
Deny
System R và hầu hết các hệ quản trị cơ sở dữ liệu đều dùng chính sách đóng, tức là nếu thiếu quyền truy xuất thì đồng nghĩa với việc không có quyền truy xuất.
Tuy nhiên, việc thiếu quyền truy xuất không ngăn cấm chủ thể sẽ nhận quyền này từ các chủ thể khác.
Để giải quyết vấn đề trên, ta sử dụng quyền phủ định (DENY) có cú pháp như sau:
Khi chủ thể bị gán quyền phủ định trên đối tượng thì quyền khẳng định trên đối tượng mà họ có trước đó bị chặn lại.
Information Flow Control
Khuyết điểm của DAC: cho phép dòng thông tin từ đối tượng này truyền sang đối tượng khác bằng cách đọc thông tin lên từ một đối tượng rồi ghi thông tin đó xuống đối tượng khác.
Ví dụ: Bob không được phép xem file A, nên anh ta nhờ Alice (đồng lõa với Bob) copy nội dung của file A sang file B (Bob có thể xem được file B). Đây được gọi là tấn công Trojan Horse.
Minh họa:
Resources
- Slide “An toàn và bảo mật trong hệ thống thông tin - Chương 02: Điều khiển truy cập phần 1” của trường Đại Học Khoa học Tự nhiên TP.HCM.
- Slide “Bảo mật hệ thống thông tin - Chương 4: Điều khiển truy cập tùy quyền (DAC)” của trường Đại Học Bách Khoa Tp.HCM.