Перейти к основному содержимому

Суперадминистратор в Casbin: обход проверок политик

Что такое Суперадмин?​

Суперадмин (например, root) — это субъект, который обходит обычные политики и всегда получает разрешение. Это реализуется в matcher путём добавления условия вроде r.sub == "root". Пример:

[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 || r.sub == "root"

Matcher разрешает запрос, если либо (1) он соответствует правилу политики, либо (2) r.sub == "root". Таким образом, root никогда не получает отказ. Тот же паттерн работает в RBAC, ABAC или RBAC с доменами: добавьте || r.sub == "root" (или имя вашего суперпользователя) в matcher.

FAQ​

Как создать суперадмина в Casbin? Добавьте r.sub == "root" (или ваше собственное имя пользователя) как альтернативное условие в matcher, как показано выше. Проверка выполняется перед поиском по политике, поэтому суперадмину не нужны строки политики.

Суперадмин — это то же самое, что роль администратора? Нет. Роль администратора — это обычная роль с разрешениями, которую можно аудировать или удалить так же, как любую другую роль. Суперадмин полностью обходит политику, поэтому используйте его только для одной учётной записи и защитите её с помощью MFA.

Это работает с RBAC с доменами? Да. Добавьте то же условие в matcher; оно не зависит от проверки ролей или доменов.

Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.