Перейти к основному содержимому

Обзор

Casbin — это эффективная библиотека управления доступом с открытым исходным кодом, которая обеспечивает авторизацию и поддерживает несколько моделей контроля доступа.

Реализация управления доступом на основе правил проста: определите субъектов, объекты и разрешенные действия в файле policy в любом удобном для вас формате. Этот подход единообразен во всех реализациях Casbin. Файл model предоставляет разработчикам и администраторам полный контроль над логикой авторизации — структурой, потоком выполнения и условиями. Компонент Enforcer проверяет входящие запросы на соответствие вашей модели и политике.

Языки программирования, поддерживаемые Casbin​

Casbin предоставляет нативную поддержку множества языков программирования, что позволяет интегрировать его в широкий спектр проектов и рабочих процессов:

golangjavanodejsphp
CasbinjCasbinnode-CasbinPHP-Casbin
Готово к использованию в продакшенеГотово к использованию в продакшенеГотово к использованию в продакшенеГотово к использованию в продакшене
pythondotnetc++rust
PyCasbinCasbin.NETCasbin-CPPCasbin-RS
Готово к использованию в продакшенеГотово к использованию в продакшенеГотово к использованию в продакшенеГотово к использованию в продакшене

Набор функций по языкам​

Мы стремимся к паритету функций во всех реализациях на разных языках; полная унификация пока не достигнута.

ФункцияGoJavaNode.jsPHPPythonC#DelphiRustC++LuaDartElixir
Принуждение (Enforcement)✅✅✅✅✅✅✅✅✅✅✅✅
RBAC✅✅✅✅✅✅✅✅✅✅✅✅
ABAC✅✅✅✅✅✅✅✅✅✅✅✅
Масштабируемый ABAC (eval())✅✅✅✅✅✅❌✅✅✅✅✅
Adapter✅✅✅✅✅✅✅✅✅✅✅❌
Management API✅✅✅✅✅✅✅✅✅✅✅✅
RBAC API✅✅✅✅✅✅✅✅✅✅✅✅
Batch API✅✅✅✅✅✅❌✅✅✅❌❌
Filtered Adapter✅✅✅✅✅✅❌✅✅✅❌❌
Watcher✅✅✅✅✅✅✅✅✅✅❌❌
Role Manager✅✅✅✅✅✅❌✅✅✅✅❌
Многопоточность✅✅✅❌✅❌❌✅❌❌❌❌
Оператор 'in' в matcher✅✅✅✅✅❌✅❌❌❌✅✅
примечание

Галочка (✅) для Watcher или Role Manager означает, что интерфейс существует в основной библиотеке; это не гарантирует наличие реализации для данного языка.

Что такое Casbin?​

Casbin — это библиотека авторизации для приложений, которым требуется контролируемый доступ к ресурсам. Обычно субъект (пользователь или сервис) запрашивает доступ к объекту (ресурсу или сущности) для выполнения действия (например, чтение, запись или удаление). Вы определяете эти действия в соответствии с требованиями вашего приложения. Это стандартный поток { subject, object, action }, который Casbin обрабатывает чаще всего.

Casbin также поддерживает более сложные сценарии через роли (RBAC), атрибуты (ABAC) и другие паттерны.

Что делает Casbin​

  1. Применяет политики в классическом формате { subject, object, action } или в любом другом пользовательском формате, включая как разрешение, так и запрет доступа.
  2. Управляет хранением данных модели контроля доступа и политик.
  3. Обрабатывает связи «пользователь–роль» и «роль–роль» (иерархия ролей RBAC).
  4. Поддерживает встроенных суперпользователей (например, root, administrator) с неограниченным доступом без явных правил.
  5. Предоставляет встроенные операторы для сопоставления по шаблону (например, keyMatch сопоставляет /foo/bar со шаблоном /foo*).

Что Casbin не делает​

  1. Аутентификация пользователей — проверка имен пользователей и паролей при входе.
  2. Управление списками пользователей или ролей — ведение списков пользователей или ролей.

Большинство приложений уже управляют пользователями, ролями и учетными данными. Casbin фокусируется только на авторизации и не хранит и не проверяет пароли. В режиме RBAC он поддерживает ассоциации «пользователь–роль».

Следующие шаги​

Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.