我正在寻找具有两个参数的RBAC系统的示例或最佳实践。而不是简单地让用户与角色相关联,而是与一组权限相关联的角色;用户可以与“针对特定项目”的角色相关联,然后用户可以仅为该项目拥有该角色的权限(或者用户拥有该角色的其他项目)。用户可以在一个项目上具有特定角色,在另一个项目上具有不同角色;授予角色的权限对于每个项目都是一致的;用户对项目的权限取决于用户对项目的作用。
(如果它有任何区别,我试图限制通过URL查询参数开发页面内容的页面访问,该参数通过GET语句设置项目ID。)
ABAC看起来很有希望,但我无法绕过它。我的理解是用户的属性决定了用户是否具有角色(和/或权限)。在我的情况下,似乎我可能认为项目是“用户”,我的用户是项目的属性(如果我的用户持有该项目的角色,则为true,否则为false)
答案 0 :(得分:1)
如果您想坚持RBAC标准,那么您将不得不为不同的项目使用不同的角色。例如,如果在项目“P1”和“P2”中使用角色“admin”,则可以创建角色“P1:admin”和另一个角色“P2:admin”。
ABAC确实是另一种可能性。但是,如果我理解正确,那么说“用户的属性决定用户是否具有角色(和/或权限)”是不正确的。 ABAC中只有属性(在某种意义上,角色是属性),这提供了比RBAC更多的灵活性。在请求中,您可以拥有表示项目的属性(“P1”或“P2”),以及表示该特定项目(“admin”)角色的另一个属性。例如,正确指定的策略将能够识别您将“admin”角色称为“P1”项目的一部分。