Casbin

Casbin

  • Документ
  • API
  • Редактор
  • Плагины IDE
  • Single Sign-On (SSO)
  • Форум
  • Справка
  • Блог
  • Pricing
  • Contact Sales
  • Languages iconРусский
    • English
    • 中文
    • 한국어
    • Français
    • Deutsch
    • 日本語
    • Помочь перевести
  • GitHub

›Модель

Основы

  • Общий обзор
  • Начать работу
  • Как это работает
  • Уроки

Модель

  • Поддерживаемые модели
  • Синтаксис для моделей
  • Эффект
  • Функция
  • RBAC
  • RBAC with Pattern
  • RBAC с доменами
  • Casbin RBAC v.s. RBAC96
  • АДАТ
  • Приоритетная модель
  • Супер админ

Хранилище

  • Модель хранилища
  • Хранилище политики
  • Загрузка подмножества политик

Расширения

  • Enforcers
  • Адаптеры
  • Наблюдатели
  • Диспетчеры
  • Менеджеры ролей
  • Посредники
  • GraphQL Middlewares
  • Облачные Посредники

API

  • Обзор API
  • API управления
  • RBAC API
  • RBAC с доменным API
  • RoleManager API
  • Права доступа к данным

Расширенное использование

  • Многопоточность
  • Benchmarks
  • Оптимизация производительности
  • Авторизация Кубернетов
  • Авторизация служебной ячейки через посланника

Управление

  • Администратор портала
  • Служба Касбина
  • Обработка журнала и ошибок
  • Использование интерфейса

Редактор

  • Онлайн-редактор
  • Плагины IDE

Ещё

  • Наши усыновители
  • Вклад
  • Политика конфиденциальности
  • Условия предоставления услуг
Translate

АДАТ

Что такое модель ABAC?

ABAC это контроль доступа на основе атрибутов, что означает, что вы можете использовать атрибуты (свойства) предмета, объект или действие вместо себя (строка) для контроля доступа. Вы можете уже слышать о сложном языке контроля доступа ABAC под названием XACML. По сравнению с XACML, ABAC Касбину очень прост: в ABAC, можно использовать структуры (или экземпляры класса, основанные на языке программирования) вместо строки для элементов модели.

Используйте официальный пример ABAC например:

[request_definition]
r = sub, obj, акт

[policy_definition]
p = sub, obj, act

[policy_effect]
e = где-то (стр. ft == допустить))

[matchers]
м = r.sub == r.obj.Owner

Мы используем r.obj.Owner вместо r.obj в матче. Передача r.obj функции Enforce() будет структурой или экземпляром класса вместо строки. Касбин использует отражение, чтобы получить переменную obj члена в этой структуре или классе.

Вот определение для r.obj структуры или класса:

type testResource struct {
    Name string
    Owner string
}

Как использовать ABAC?

Просто говорите, чтобы использовать ABAC, вам нужно выполнить две вещи:

  1. Укажите атрибуты в модельном матче.
  2. Передать в структуру или экземпляр класса элемента в качестве аргумента функции Enforce().

::warning В настоящее время только запрашивать элементы типа r.sub, r.obj, r.act и так далее поддерживать ABAC. Вы не можете использовать его на элементах политики, таких как . ub, потому что нет способа определить структуру или класс в политике Casbin. :::

::tip В матче можно использовать несколько атрибутов АВАС, например: m = r.sub.Domain == r.obj.Domain. :::

::tip Если вам нужно использовать запятую в политике, которая конфликтует с разделителем csv и нам нужно избежать этого. Касбин анализирует файл политики через csv библиотеку, вы можете округлить оператор кавычками. Например, "keyMatch("bob", r.sub.Role)" не будет разделен. :::

Масштабирование модели для сложного и большого количества правил ABAC.

Вышеприведенный пример реализации АВК является очень простым, но часто система авторизации нуждается в очень сложном и большом количестве правил ABAC. С учетом этой необходимости вышеупомянутая реализация в значительной степени повысит точность модели. Поэтому целесообразно добавлять правила в политику вместо того, чтобы в модель. Это делается путем введения функциональной конструкции eval(). Ниже приведен пример управления такими моделями АВС.

Это определение файла CONF , используемого для определения модели ABAC.

[request_definition]
r = sub, obj, действовать

[policy_definition]
p = sub_rule, obj, act

[policy_effect]
e = где-то (стр. ft == допустить))

[matchers]
m = eval(стр. ub_rule) && r.obj == p.obj && r.act == p.act

Здесь p.sub_rule имеет тип структуры или класса (пользовательский тип), который состоит из необходимых атрибутов, которые будут использоваться в политике.

Это политика, которая используется против модели Принудительная. Теперь вы можете использовать экземпляр объекта, который передается eval() в качестве параметра для определения ограничений ABAC.

p, r.sub.Age > 18, /data1, чтение
p, r.sub.Age < 60, /data2, запись
← Casbin RBAC v.s. RBAC96Приоритетная модель →
  • Что такое модель ABAC?
  • Как использовать ABAC?
  • Масштабирование модели для сложного и большого количества правил ABAC.
Casbin
Docs
Getting StartedManagement APIRBAC APIMiddlewares
Community
Who's using Casbin?Stack Overflow
Casbin          jCasbin
Node-Casbin   PHP-CasbinPyCasbin          Casbin.NETCasbin-CPP        Casbin-RS
Follow @casbinHQ
Copyright © 2022 Casbin Organization