Mô hình phân quyền - Access Control

- Phạm Duy Tùng

Giới thiệu

  1. Danh sách điều khiển truy cập - Access Control List
  2. Điều khiển truy cập bắt buộc - Mandatory Access Control
  3. Điều khiển truy cập tùy quyền - Discretionary Access Control (DAC)
  4. Điều khiển truy cập theo vai - Role Based Access Control (RBAC)
  5. Điều khiển truy cập theo thuộc tính - Attribute Based Access Control (ABAC)

Danh sách điều khiển truy cập - Access Control List (ACL)

Là mô hình cấp quyền truy cập dựa vào danh sách các quyền

Mô hình:

Subject được quyền ( action ) trên object

Tuỳ từng bài toán khác nhau mà subject, action, object là khác nhau

Ví dụ: 

Trong môi trường phân quyền tập tin linux, subject là user, thread, action là READ/WRITE/ EXECUTE object là file, directory, tcp/udp port, thiết bị nhập xuất ...

Ví dụ:

Trong hệ thống phân quyền của linux

User Alice được quyền đọc/ghi/thực thi trên file alice.sh

User Bob được quyền đọc trên file alice.sh

Ứng dụng:

Mô hình được ứng dụng trong Filesystem ACLs, POSIX ACL, NFSv4 ACL, Active Directory ACLs, Networking ACLs, SQL implementations. 

Tham khảo:

Điều khiển truy cập bắt buộc - Mandatory Access Control (MAC)

Về cơ bản thì mô hình này cũng “ là mô hình cấp quyền truy cập dựa vào danh sách các quyền”. Tuy nhiên, mô hình này sẽ kiểm soát quyền truy cập đến từng object của subject

Mô hình:

Subject được quyền ( action ) trên object

Object được quyền (action) bởi object

Vì ràng ở mức 2 đầu, nên mô hình này được ràng chặc chẽ hơn

Ví dụ:

Ví dụ: Ở một số tổ chức, user có quyền đọc ghi file (subject - action - object), tuy nhiên, có một số file  tuyệt mật được phân quyền đọc/ ghi cho giám đốc  (object - action - subject), nên user bình thường không thể đọc được.

Các bạn có thể đọc thêm 3 ví dụ trong link của cornell mình có để bên dưới

Ứng dụng:

SELinux
Windows Vista và Windows Server 2008
...

Tham khảo:

https://en.wikipedia.org/wiki/Mandatory_access_control

http://www.cs.cornell.edu/courses/cs5430/2015sp/notes/mac.php

Điều khiển truy cập tùy quyền - Discretionary Access Control (DAC)

Là mô hình cấp quyền truy cập dựa vào danh sách các quyền. Mô hình này giống với ACL, chỉ có 1 điểm khác là subject có thể chuyển quyền mình đang có cho một subject khác

Mô hình:

Subject được quyền ( action ) trên object

Subject gán quyền (grant : action - object) cho Subject khác

Ví dụ: Alice có quyền đọc, ghi, thực thi file Alice.sh

Alice gán quyền đọc file Alice.sh cho Bob

Ứng dụng:

Phân quyền file trong hệ điều hành
...

Điều khiển truy cập theo vai - Role Based Access Control (RBAC)

Mô hình còn có tên gọi khác là Role Based Security, là mô hình cấp quyền truy cập dựa vào danh sách các quyền. Tuy nhiên, các subject sẽ được gán vào trong các Role và chúng ta sẽ cấp quyền cho các role.

Mô hình này có thể kết hợp với mô hình DAC (để tăng khả năng cấp quyền), hoặc MAC (để tăng tính bảo mật) mà không xung đột với 2 mô hình trên.

Mô hình:

Subject thuộc Roles

Roles  được quyền ( action ) trên object

=> các subject thuộc Roles được quyền (action) trên object

Ví dụ:

Alice thuộc Role NhanVienTuyenDung, NhanVienIT

Role NhanVienTuyenDung có quyền read, execute file

Role NhanVienIT có quyền write file

=> Alice có quyền read, write, execute file

Ứng dụng:

Có rất nhiều ứng dụng của mô hình này, ví dụ các forum mã nguồn mở, cấp quyền trong hệ điều hành ....

Để tìm hiểu kỹ hơn về mô hình RBAC, các bạn có thể đọc quyển sách tham khảo ở dưới

Tham khảo :

David F. Ferraiolo; D. Richard Kuhn; Ramaswamy Chandramouli (2007). Role-based Access Control (2nd ed.). Artech House. ISBN 978-1-59693-113-8.

https://en.wikipedia.org/wiki/Role-based_access_control

Điều khiển truy cập theo thuộc tính - Attribute Based Access Control (ABAC)

Mô hình còn có tên gọi khác là Policy Based Access Control hoặc Claims Based Access Control (CBAC), là mô hình cấp quyền truy cập dựa vào danh sách các quyền kết hợp với các thuộc tính.

Kiến trúc: Theo NIST đề xuất, kiến trúc của ABAC nên có các thành phần sau:

-  Policy Enforcement Point PEP: chịu trách nhiệm phân tích các yêu cầu truy xuất và gửi đến PDP để chứng thực.

- Policy Decision Point PDP: nhận thông tin từ PEP và chịu trách nhiệm chứng thực yêu cầu có quyền truy xuất tới các tài nguyên hay không, trả về đồng ý hoặc từ chối. Nếu thiếu tông tin thì 

- Policy Information Point PIP: trả về các attribute mà PDP yêu cầu.

Thuộc tính: Bất kể thứ gì trên đời này đều có thể là thuộc tính. Tuy nhiên, chúng sẽ thường được phân làm 4 nhóm chính sau:

- Subject attributes: Các thuộc tính về thông tin người dùng, ví dụ họ tên, ngày tháng năm sinh, quê quán, quốc tịch, địa chỉ, phòng ban, chức vụ, tên công việc, số cmnd, ....

- Action attributes: Các thuộc tính về hành động như chạy , nảy, xoá, thêm, đọc, ghi ...

- Object attributes: Các thuộc tính về thông tin của đối tượng muốn truy xuất, ví dụ như loại file, phần đuôi mở rộng, vị trí, ....

- Contextual (environment) attributes: Các thuộc tính liên quan đến kịch bản diễn ra. Ví dụ hệ điều hành, ram, cpu, thời gian, múi giờ, ...

Ví dụ:

Toàn bộ nhân viên không được truy xuất database sau 21h đêm

Nhân viên Nguyễn Thị Lụa của GHN được quyền đổ danh sách freelancer ở Hà Nội, Hải Phòng, Hưng Yên

Ứng dụng:

Có thể ứng dụng ABAC vào rất nhiều ứng dụng khác nhau để kiểm soát luồng truy cập tài nguyên của hệ thống. Tuy nhiên, việc xây dựng mô hình ACBA khá tốn kém về tài nguyên và đòi hỏi người quản lý phải có tư duy hệ thống vững chắc

Để tìm hiểu kỹ hơn về mô hình ABAC, các bạn có thể đọc quyển sách tham khảo ở dưới

Tham khảo :

https://nvlpubs.nist.gov/nistpubs/specialpublications/NIST.SP.800-162.pdf

https://arxiv.org/pdf/1306.2401.pdf

https://en.wikipedia.org/wiki/Attribute-based_access_control

Cảm ơn các bạn đã chú ý quan tâm theo dõi. Xin chào và hẹn gặp lại ở các bài viết tiếp theo.