Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
casbin — Библиотека авторизации, обеспечивающая модели управления доступом ACL, RBAC, ABAC и пользовательские модели с RESTful-сопоставлением и API управления политиками для приложений и сервисов. | Kitploit
Инструменты/GitHubGitHub/apache/casbin
Аутентификация и авторизацияУправление идентификациейУправление идентификацией и доступом (IAM)Безопасность API
GitHubapache/casbin

casbin

Библиотека авторизации, обеспечивающая модели управления доступом ACL, RBAC, ABAC и пользовательские модели с RESTful-сопоставлением и API управления политиками для приложений и сервисов.

Репозиторий
20.3k1.8k2 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

Apache Casbin

Lint Build Coverage Status Godoc Release Discord

Новости: всё ещё переживаете, как написать правильную политику Apache Casbin? Apache Casbin online editor спешит на помощь! Попробуйте: https://casbin.apache.org/editor/

Логотип casbin

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

Все языки, поддерживаемые Apache Casbin:

Содержание

  • Поддерживаемые модели
  • Как это работает?
  • Возможности
  • Установка
  • Документация
  • Онлайн-редактор
  • Обучающие материалы
  • Начало работы
  • Управление политиками
  • Хранение политик
  • Согласованность политик между несколькими узлами
  • Менеджер ролей
  • Бенчмарки
  • Примеры
  • Промежуточные слои
  • Наши пользователи

Поддерживаемые модели

  1. ACL (список контроля доступа)
  2. ACL с суперпользователем
  3. ACL без пользователей: особенно полезен для систем, в которых нет аутентификации или входа пользователей.
  4. ACL без ресурсов: в некоторых сценариях цель — тип ресурсов, а не отдельный ресурс, с использованием таких разрешений, как write-article, read-log. При этом не контролируется доступ к конкретной статье или логу.
  5. RBAC (управление доступом на основе ролей)
  6. RBAC с ролями ресурсов: и пользователи, и ресурсы могут одновременно иметь роли (или группы).
  7. RBAC с доменами/тенантами: пользователи могут иметь разные наборы ролей для разных доменов/тенантов.
  8. ABAC (управление доступом на основе атрибутов): синтаксический сахар, например resource.Owner, позволяет получить атрибут ресурса.
  9. RESTful: поддерживаются пути вида /res/*, /res/:id и HTTP-методы GET, POST, PUT, .

Как это работает?

В Casbin модель контроля доступа абстрагируется в CONF-файл на основе метамодели PERM (Policy, Effect, Request, Matchers). Поэтому переключение или обновление механизма авторизации для проекта так же просто, как изменение конфигурации. Вы можете настроить собственную модель контроля доступа, комбинируя доступные модели. Например, можно объединить роли RBAC и атрибуты ABAC в одной модели и использовать один общий набор правил политики.

Самая базовая и простая модель в Casbin — ACL. CONF-модель ACL выглядит так:

root@kitploit:~
# Request definition
[request_definition]
r = sub, obj, act

# Policy definition
[policy_definition]
p = sub, obj, act

# Policy effect
[policy_effect]
e = some(where (p.eft == allow))

# Matchers
[matchers]
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act

Пример политики для модели ACL:

root@kitploit:~
p, alice, data1, read
p, bob, data2, write

Это означает:

  • alice может читать data1
  • bob может записывать data2

Мы также поддерживаем многострочный режим, добавляя '\' в конец:

root@kitploit:~
# Matchers
[matchers]
m = r.sub == p.sub && r.obj == p.obj \
  && r.act == p.act

Более того, если вы используете ABAC, в golang-редакции Casbin можно использовать оператор in следующим образом (jCasbin и Node-Casbin пока не поддерживаются):

root@kitploit:~
# Matchers
[matchers]
m = r.obj == p.obj && r.act == p.act || r.obj in ('data2', 'data3')

Но вы ДОЛЖНЫ убедиться, что длина массива БОЛЬШЕ 1, иначе произойдёт паника.

Дополнительные операторы можно посмотреть в govaluate

Возможности

Что делает Apache Casbin:

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

Чего Apache Casbin НЕ делает:

  1. аутентификацию (т.е. проверку username и password при входе пользователя)
  2. управление списком пользователей или ролей. Мы считаем, что проекту удобнее самостоятельно управлять этими сущностями. У пользователей обычно есть пароли, а Apache Casbin не задумывался как хранилище паролей. Однако Apache Casbin хранит сопоставление «пользователь-роль» для сценария RBAC.

Установка

root@kitploit:~
go get github.com/casbin/casbin/v3

Документация

https://casbin.apache.org/docs/overview

Онлайн-редактор

Вы также можете использовать онлайн-редактор (https://casbin.apache.org/editor/), чтобы писать модель и политику Casbin прямо в веб-браузере. Он предоставляет такие возможности, как подсветка синтаксиса и автодополнение, совсем как IDE для языка программирования.

Обучающие материалы

https://casbin.apache.org/docs/tutorials

Начало работы

  1. Создайте новый enforcer Casbin с файлом модели и файлом политики:

    root@kitploit:~
    e, _ := casbin.NewEnforcer("path/to/model.conf", "path/to/policy.csv")
    

Примечание: вы также можете инициализировать enforcer с политикой в БД вместо файла, подробнее см. раздел Хранение политик.

  1. Добавьте перехватчик принудительного применения в ваш код непосредственно перед обращением к ресурсу:

    root@kitploit:~
    sub := "alice" // the user that wants to access a resource.
    obj := "data1" // the resource that is going to be accessed.
    act := "read" // the operation that the user performs on the resource.
    
    if res, _ := e.Enforce(sub, obj, act); res {
        // permit alice to read data1
    } else {
        // deny the request, show an error
    }
    
  2. Помимо статического файла политики, Apache Casbin также предоставляет API для управления разрешениями во время выполнения. Например, можно получить все роли, назначенные пользователю, так:

    root@kitploit:~
    roles, _ := e.GetImplicitRolesForUser(sub)
    

Дополнительные варианты использования см. в разделе API управления политиками.

Управление политиками

Apache Casbin предоставляет два набора API для управления разрешениями:

  • Management API: низкоуровневый API с полной поддержкой управления политиками Apache Casbin.
  • RBAC API: более удобный API для RBAC. Этот API является подмножеством Management API. Пользователи RBAC могут использовать его для упрощения кода.

Мы также предоставляем веб-интерфейс для управления моделью и политиками:

редактор модели

редактор политики

Хранение политик

https://casbin.apache.org/docs/adapters

Согласованность политик между несколькими узлами

https://casbin.apache.org/docs/watchers

Менеджер ролей

https://casbin.apache.org/docs/role-managers

Бенчмарки

https://casbin.apache.org/docs/benchmark

Примеры

Промежуточные слои

Authz-промежуточные слои для веб-фреймворков: https://casbin.apache.org/docs/middlewares

Наши пользователи

https://casbin.apache.org/docs/adopters

Как внести вклад

Пожалуйста, прочитайте руководство по внесению вклада.

Авторы

Этот проект существует благодаря всем людям, которые вносят вклад.

История звёзд

Star History Chart

Лицензия

Этот проект распространяется под лицензией Apache 2.0.

Контакты

Если у вас есть вопросы или запросы функций, пожалуйста, свяжитесь с нами. PR приветствуется.

  • https://github.com/apache/casbin/issues
  • https://discord.gg/S5UjpzGZjN
Скачать инструмент
golangjavanodejsphp
CasbinjCasbinnode-CasbinPHP-Casbin
готов к продакшенуготов к продакшенуготов к продакшенуготов к продакшену
pythondotnetc++rust
PyCasbinCasbin.NETCasbin-CPPCasbin-RS
готов к продакшенуготов к продакшенуготов к продакшенуготов к продакшену
DELETE
  • Deny-override (приоритет запрета): поддерживаются и разрешающие, и запрещающие авторизации, при этом запрет имеет приоритет над разрешением.
  • Приоритет: правила политики могут иметь приоритет, как правила межсетевого экрана.
  • МодельФайл моделиФайл политики
    ACLbasic_model.confbasic_policy.csv
    ACL с суперпользователемbasic_model_with_root.confbasic_policy.csv
    ACL без пользователейbasic_model_without_users.confbasic_policy_without_users.csv
    ACL без ресурсовbasic_model_without_resources.confbasic_policy_without_resources.csv
    RBACrbac_model.confrbac_policy.csv
    RBAC с ролями ресурсовrbac_model_with_resource_roles.confrbac_policy_with_resource_roles.csv
    RBAC с доменами/тенантамиrbac_model_with_domains.confrbac_policy_with_domains.csv
    ABACabac_model.confN/A
    RESTfulkeymatch_model.confkeymatch_policy.csv
    Deny-overriderbac_model_with_deny.confrbac_policy_with_deny.csv
    Приоритетpriority_model.confpriority_policy.csv