Mô hình phân quyền : ACL, DAC, MAC, RBAC
rbac
1
acl
1
phân quyền
1
White

Quân Lê viết ngày 04/07/2019

Mô hình phân quyền : ACL, DAC, MAC, RBAC

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

Là hình thức phân quyền dựa trên một danh sách các quyền truy cập.

  • Subject có thể Action tới Object.
  • Dựa vào người dùng và nhóm người dùng.

Ví dụ

  • Cho phép Nguyễn Văn A tạo bài viết
'Subject' : 'Nguyễn Văn A'
'Action' : 'Tạo'
'Đối tượng' : 'Bài viết'
  • Nguyễn Văn A có thể tạo bài viết..

Ví dụ : Phân quyền trong MySql.

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

Là hình thức phân quyền dựa trên một danh sách các quyền truy cập, DAC khác ACL ở chỗ chủ thể của đối tượng có thể ủy quyền cho một chủ thể khác.

  • Subject có thể Action tới Object.
  • Subject có thể Grant cho Subject khác.
  • Dựa vào người dùng và nhóm người dùng.

Ví dụ

  • Cho phép Nguyễn Văn A tạo bài viết
'Subject' : 'Nguyễn Văn A'
'Action' : 'Tạo'
'Đối tượng' : 'Bài viết'
  • Nguyễn Văn A có thể tạo bài viết.
  • Nguyễn Văn A cho phép Lê Văn B tạo bài viết
'Subject' : 'Lê Văn B'
'Action' : 'Tạo'
'Đối tượng' : 'Bài viết'
  • Lê Văn B có thể tạo bài viết.

Ví dụ : Phân quyền file trong các hệ điều hành.

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

Là hình thức phân quyền dựa trên một danh sách các quyền truy cập, tuy nhiên thay vì hướng chủ thể thì MAC có thể hướng cả đối tượng nữa.

  • Subject có thể Action tới Object.
  • Object có thể Action bởi Object.
  • Dựa vào người dùng và nhóm người dùng.

Ví dụ

  • Cho phép Nguyễn Văn A tạo bài viết
'Subject' : 'Nguyễn Văn A'
'Action' : 'Tạo'
'Đối tượng' : 'Bài viết'
  • Nguyễn Văn A có thể tạo bài viết.
  • Bài viết có thể sửa bởi Lê Văn B
'Đối tượng' : 'Bài viết'
'Action' : 'Tạo'
'Subject' : 'Lê Văn B'
  • Lê Văn B có thể tạo bài viết.

Ví dụ : SELinux.

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

Là hình thức phân quyền dựa vào vai, mỗi Subject sẽ thuộc một hoặc nhiều Role. Mỗi Role lại có một hoặc nhiều Permission thực thi Action tới Object.

  • Một Subject thuộc một hoặc nhiều Vai
  • Một Vai có một hoặc nhiều Quyền.

Ví dụ

  • Người dùng Nguyễn Văn A có quyền Admin, User.
  • Người dùng Lê Văn B có quyền User.
  • User có quyền Đọc bài viết.
  • Admin có quyền Đọc, Thêm. Sửa, Xóa bài viết.

=>

  • Người dùng A có quyền Đọc, Thêm. Sửa, Xóa bài viết.
  • Người dùng Lê Văn B có quyền Đọc bài viết.

Ví dụ : Phân quyền của VBulettin, Xenforo, ...v...v...

Kết luận

Có thể dễ dàng thấy, với các hệ thống như ACL, MAC, DAC, việc implement phân quyền cho các hệ thống trở nên dễ dàng hơn. Hệ thống chỉ cần kiểm tra Subject là ai, Object là gì, Action là sao, rồi so sánh với danh sách truy cập để quyết định Action này có thể được thực hiện hay không.

Tuy nhiên, khi có nhiều người dùng có quyền giống nhau, việc bổ sung quyền trở nên phức tạp thì bạn có thể dùng RBAC. Giả sử như trên ví dụ trên, ta có 200 người dùng. Và người dùng có thể sửa bài viết, với ACL bạn sẽ phải thêm 200 bản ghi "Subject X" có thể "Sửa" "Bài viết".
Với RBAC, một khi 200 người dùng đã được gán vào user, mỗi khi user có một quyền mới, ta chỉ cần thêm 1 bản ghi, đó là "User" có quyền "Sửa" "Bài viết".

Hi vọng qua bài viết này, các bạn có thể dễ dàng chọn lựa mô hình phân quyền phù hợp cho hệ thống của mình.

Nevermore - 04-07-2019

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Quân Lê

1 bài viết.
17 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
1 bài viết.
17 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!