Открытый сервис авторизации по мотивам Google Zanzibar для тонкой настройки RBAC-, ReBAC- и ABAC-контроля доступа вне кода приложения.
apache/casbin
Библиотека контроля доступа для Go: применяет политики ACL, RBAC и ABAC, заданные в файлах моделей и правил.
- Звёзды
- 20,482
- Форки
- 1,767
- Открытые issues
- 39
- Последний коммит
- позавчера
Что это?
Apache Casbin — библиотека авторизации для проектов на Go. Она определяет, может ли субъект выполнить действие над объектом, на основе модели контроля доступа, заданной в конфигурационном файле, и набора правил. Поскольку модель хранится в конфигурационном файле, для смены схемы авторизации обычно достаточно изменить конфигурацию, а не переписывать код приложения.
Библиотека поддерживает ACL, RBAC (в том числе иерархии ролей, роли ресурсов и роли для отдельных доменов или арендаторов), ABAC на основе атрибутов ресурсов, сопоставление путей и методов RESTful API, правила с приоритетом запрета и приоритеты правил. Политики можно загружать из файлов или базы данных с помощью адаптеров. API управления во время выполнения и специальный API для RBAC позволяют приложениям менять разрешения без перезапуска. Casbin отвечает за проверку доступа и хранение политик, но не управляет пользователями, паролями или аутентификацией.
Проект входит в Apache Software Foundation. Существуют родственные реализации для Java, Node.js, PHP, Python, .NET, C++ и Rust; также проект предоставляет онлайн-редактор для создания моделей и политик.
Ключевые возможности
- 01Поддерживает модели контроля доступа ACL, RBAC, ABAC и RESTful, а также правила с приоритетом запрета и на основе приоритетов.
- 02Позволяет задавать модели контроля доступа в конфигурационном файле на основе метамодели PERM.
- 03Загружает и хранит политики с помощью подключаемых адаптеров, например для баз данных.
- 04Предоставляет API управления и API RBAC для изменения разрешений во время выполнения.
- 05Включает встроенные операторы сопоставления, например keyMatch для шаблонов путей к ресурсам.
- 06Предлагает синхронизированные варианты enforcer для параллельного использования.
Сценарии использования
- Добавление проверок разрешений на основе ролей в веб-сервис или API на Go.
- Применение правил для мультитенантных систем, где у пользователей разные роли в разных арендаторах.
- Задание правил на основе атрибутов, например разрешение редактировать ресурс только его владельцу.
- Управление разрешениями через интерфейс администратора, который обновляет политики во время выполнения.
Быстрый старт
- 1
Установите библиотеку с помощью Go modules
go get github.com/casbin/casbin/v3 - 2
Создайте Enforcer на основе файла модели и файла политик
- 3
Вызывайте Enforce в коде перед каждым обращением, чтобы проверить запрос
Что важно знать
- Enforcer не предназначен для параллельного использования. Поэтому для общих Enforcer, которые изменяются во время выполнения, нужны синхронизированные варианты.
- Библиотека не обрабатывает аутентификацию и не управляет пользователями и ролями — это должна обеспечивать ваша программа.
Темы
Частые вопросы
- Что такое casbin?
- Библиотека контроля доступа для Go: применяет политики ACL, RBAC и ABAC, заданные в файлах моделей и правил. Apache Casbin — библиотека авторизации для проектов на Go. Она определяет, может ли субъект выполнить действие над объектом, на основе модели контроля доступа, заданной в конфигурационном файле, и набора правил. Поскольку модель хранится в конфигурационном файле, для смены схемы авторизации обычно достаточно изменить конфигурацию, а не переписывать код приложения.
- casbin можно использовать бесплатно? Какая у него лицензия?
- casbin распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- casbin всё ещё поддерживается?
- Активно поддерживается. Последний коммит в casbin — 4 нояб. 2026 г..
- Для чего можно использовать casbin?
- Добавление проверок разрешений на основе ролей в веб-сервис или API на Go. Применение правил для мультитенантных систем, где у пользователей разные роли в разных арендаторах. Задание правил на основе атрибутов, например разрешение редактировать ресурс только его владельцу. Управление разрешениями через интерфейс администратора, который обновляет политики во время выполнения.
- Как установить casbin?
- Установите библиотеку с помощью Go modules: go get github.com/casbin/casbin/v3 Создайте Enforcer на основе файла модели и файла политик Вызывайте Enforce в коде перед каждым обращением, чтобы проверить запрос
- Где скачать casbin?
- Исходный код и инструкции по установке — на GitHub: https://github.com/apache/casbin
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Пакет Laravel для хранения пользователей, ролей и разрешений в базе данных и проверки доступа через gate Laravel.
Самостоятельно размещаемый движок авторизации (PDP), который проверяет YAML-политики и определяет, кто может выполнять какие действия над какими ресурсами.
Слой данных для TypeScript с ORM, совместимой с Prisma, встроенным контролем доступа и автоматической генерацией CRUD API и хуков TanStack Query.
Официальный Python-монорепозиторий клиентских библиотек Supabase для запросов к Postgres, авторизации, хранения файлов, realtime и edge-функций.
Облачная ОС в виде одного бинарного файла на базе встроенного Kubernetes: с веб-интерфейсом, магазином приложений, приватным хостингом AI-моделей и доступом для AI-агентов.