Overview
Casbin là một thư viện kiểm soát truy cập mã nguồn mở mạnh mẽ và hiệu quả, hỗ trợ nhiều mô hình kiểm soát truy cập khác nhau để thực thi quyền ủy quyền trên toàn bộ hệ thống.
Thực thi một tập hợp các quy tắc đơn giản như liệt kê các chủ thể, đối tượng và hành động được phép mong muốn (hoặc bất kỳ định dạng nào theo nhu cầu của bạn) trong tệp policy. Điều này tương đồng trên tất cả các luồng mà Casbin được sử dụng. Nhà phát triển/quản trị viên có toàn quyền kiểm soát bố cục, thực thi và điều kiện cho việc ủy quyền, được thiết lập thông qua tệp model. Casbin cung cấp một Enforcer để xác thực một yêu cầu đến dựa trên các tệp policy và model đã được cung cấp cho Enforcer.
Các Ngôn Ngữ Được Hỗ Trợ Bởi Casbin
Casbin cung cấp hỗ trợ cho nhiều ngôn ngữ lập trình, sẵn sàng để tích hợp vào bất kỳ dự án và quy trình làm việc nào:
Casbin | jCasbin | node-Casbin | PHP-Casbin |
Sẵn sàng cho sản xuất | Sẵn sàng cho sản xuất | Sẵn sàng cho sản xuất | Sẵn sàng cho sản xuất |
PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
Sẵn sàng cho sản xuất | Sẵn sàng cho sản xuất | Sẵn sàng cho sản xuất | Sẵn sàng cho sản xuất |
Tập Tính năng cho Các Ngôn ngữ Khác nhau
Chúng tôi luôn làm việc hết sức để Casbin có cùng một tập hợp các tính năng cho tất cả các ngôn ngữ. Tuy nhiên, thực tế không đẹp đẽ như vậy.
Tính năng | Go | Java | Node.js | PHP | Python | C# | Delphi | Rust | C++ | Lua | Dart | Elixir |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Enforcement | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
ABAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Scaling ABAC (eval() ) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
Adapter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
Management API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Batch API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Filtered Adapter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Watcher | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
Role Manager | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
Multi-Threading | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
'in' of matcher | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
Lưu ý - ✅ cho Watcher hoặc Role Manager chỉ có nghĩa là có giao diện trong thư viện chính. Điều này không cho biết liệu có một triển khai Watcher hoặc Role Manager khả dụng hay không.
Casbin là gì?
Casbin là một thư viện ủy quyền có thể được sử dụng trong các luồng mà chúng ta muốn một đối tượng
hoặc thực thể được truy cập bởi một người dùng cụ thể hoặc chủ thể
. Loại truy cập, tức là action
, Đây là cách Casbin được sử dụng rộng rãi nhất, và nó được gọi là "chuẩn"
Casbin có khả năng xử lý nhiều tình huống ủy quyền phức tạp khác ngoài luồng chuẩn. Có thể có sự bổ sung của vai trò (RBAC), thuộc tính (ABAC), v.v.
Những gì Casbin Làm
- Thực thi chính sách dưới dạng
{ subject, object, action }
cổ điển hoặc dạng tùy chỉnh theo định nghĩa của bạn. Cả ủy quyền cho phép và từ chối đều được hỗ trợ. - Xử lý việc lưu trữ mô hình kiểm soát truy cập và chính sách của nó.
- Quản lý ánh xạ người dùng-vai trò và ánh xạ vai trò-vai trò (aka thứ bậc vai trò trong RBAC).
- Hỗ trợ người dùng siêu cấp như
root
hoặcadministrator
. Một người dùng siêu cấp có thể làm mọi thứ mà không cần sự cho phép rõ ràng. - Cung cấp nhiều toán tử tích hợp sẵn để hỗ trợ so khớp quy tắc. Ví dụ,
keyMatch
có thể ánh xạ một khóa tài nguyên/foo/bar
đến mẫu/foo*
.
Những việc Casbin KHÔNG LÀM
- Xác thực (aka xác minh
username
vàpassword
khi người dùng đăng nhập) - Quản lý danh sách người dùng hoặc vai trò.
Thông thường, việc quản lý danh sách người dùng, vai trò hoặc mật khẩu sẽ thuận tiện hơn cho các dự án. Người dùng thường có mật khẩu của riêng họ, và Casbin không được thiết kế như một bộ chứa mật khẩu. Tuy nhiên, Casbin lưu trữ ánh xạ giữa người dùng và vai trò cho kịch bản RBAC.