1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/casbin-php-casbin

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 9.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 15:48 a284159

Контроль доступа (Access Control List)

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

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

В php-casbin модель контроля доступа абстрагируется в файл CONF на основе метамодели PERM (политика, эффект, запрос, сопоставители). Таким образом, переключение или обновление механизма авторизации для проекта — это просто изменение конфигурации. Вы можете настроить собственную модель контроля доступа, комбинируя доступные модели. Например, вы можете объединить роли RBAC и атрибуты ABAC в одной модели и использовать один набор правил политики.

Самая базовая и простая модель в php-casbin — это ACL. Модель CONF ACL:

# Определение запроса
[request_definition]
r = sub, obj, act

# Определение политики
[policy_definition]
p = sub, obj, act

# Эффект политики
[policy_effect]
e = some(where (p.eft == allow))

# Сопоставители
[matchers]
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act

Пример политики для модели ACL выглядит так:

p, alice, data1, read
p, bob, data2, write

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

  • Алиса может читать data1;
  • Боб может писать data2.

Функции

Что делает php-casbin:

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

Чего php-casbin не делает:

  1. Аутентификацию (проверку имени пользователя и пароля при входе пользователя в систему).
  2. Управление списком пользователей или ролей. Я считаю, что самому проекту удобнее управлять этими сущностями. Пользователи обычно имеют свои пароли, а php-casbin не предназначен для хранения паролей. Однако php-casbin хранит сопоставление пользователь-роль для сценария RBAC.

Документация https://casbin.org/docs/en/overview

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

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

Учебники

https://casbin.org/docs/tutorials

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

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

  • Management API: примитивный API, обеспечивающий полную поддержку управления политиками php-casbin.
  • RBAC API: более дружественный API для RBAC. Этот API является подмножеством Management API. Пользователи RBAC могут использовать этот API для... Упрощение кода

Модель редактора

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

Сохранение политик

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

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

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

Примеры

Модель Файл модели Файл политики
ACL basic_model.conf basic_policy.csv
ACL с суперпользователем basic_model_with_root.conf basic_policy.csv
ACL без пользователей basic_without_users_model.conf basic_without_users_policy.csv
ACL без ресурсов basic_without_resources_model.conf basic_without_resources_policy.csv
RBAC rbac_model.conf rbac_policy.csv
RBAC с ролями ресурсов rbac_with_resource_roles_model.conf rbac_with_resource_roles_policy.csv
RBAC с доменами/арендаторами rbac_with_domains_model.conf rbac_with_domains_policy.csv
ABAC abac_model.conf N/A
RESTful keymatch_model.conf keymatch_policy.csv
Запрет-переопределение rbac_with_deny_model.conf rbac_with_deny_policy.csv
Приоритет priority_model.conf priority_policy.csv

Промежуточное ПО

Промежуточное ПО Authz для веб-фреймворков: https://casbin.org/docs/middlewares

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

https://casbin.org/docs/adopters

Участники

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

Поддержавшие

Спасибо всем нашим поддержавшим! 🙏 [Станьте поддержавшим]

Спонсоры

Поддержите этот проект, став спонсором. Ваш логотип будет отображаться здесь со ссылкой на ваш веб-сайт. [Стать спонсором]

## Лицензия

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

Контакты

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

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/casbin-php-casbin.git
git@api.gitlife.ru:oschina-mirror/casbin-php-casbin.git
oschina-mirror
casbin-php-casbin
casbin-php-casbin
master