跳到主要内容

Casbin 中的超级管理员:绕过策略检查

什么是超级管理员?​

Super Admin(例如 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:只需在 matcher 中添加 || r.sub == "root"(或你的超级用户名称)。

常见问题解答​

如何在 Casbin 中创建超级管理员? 如上所述,在 matcher 中添加 r.sub == "root"(或你自己的用户名)作为备选条件。该检查在策略查找之前执行,因此超级管理员不需要任何策略行。

超级管理员与管理员角色相同吗? 不同。管理员角色是一个拥有权限的普通角色,可以像其他任何角色一样进行审计或移除。超级管理员完全绕过策略,因此请将其限制在一个账户内,并使用 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.