Repolode
apache

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. 1

    Установите библиотеку с помощью Go modules

    go get github.com/casbin/casbin/v3
  2. 2

    Создайте Enforcer на основе файла модели и файла политик

  3. 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 обновляется ежедневно.

Похожие проекты

Открытый сервис авторизации по мотивам Google Zanzibar для тонкой настройки RBAC-, ReBAC- и ABAC-контроля доступа вне кода приложения.

6 тыс.+1 за неделю331GoAGPL-3.0Активно поддерживаетсяОбновлён 16 часов назад

Самостоятельно размещаемый движок авторизации (PDP), который проверяет YAML-политики и определяет, кто может выполнять какие действия над какими ресурсами.

4,6 тыс.+9 за неделю218GoApache-2.0Активно поддерживаетсяОбновлён 12 часов назад

Облачная ОС в виде одного бинарного файла на базе встроенного Kubernetes: с веб-интерфейсом, магазином приложений, приватным хостингом AI-моделей и доступом для AI-агентов.

1,4 тыс.+2 за неделю106GoApache-2.0Активно поддерживаетсяОбновлён 6 дней назад