Kit*_*Cat 1 authorization rbac ory
我试图通过 Ory Keto 实现以下几点:
UserA拥有ProductA-> 所有权赋予一项 CRUD 权利。UserB具有角色Admin->Admin赋予一个对所有事物的 CRUD 权限。UserA具有角色KYCVerified或属于名为KYCVerified-> 的组的一部分,这为用户提供了额外的权限。第 1 点描述了所有权的概念,根据 Ory Keto 的当前状态,将其描述为 RBAC 的缺点之一(来源):
不存在所有权概念:Dan 是文章“Hello World”的作者,因此可以更新它。
第 2 点描述了一个基本上通过了所有权检查的角色,因为这个角色可以做所有事情。这在当前状态下应该是可能的,但不能与第 1 点结合使用。
第 3 点描述的内容与第 2 点基本相同,但这更针对我的用例。
我在Ory网站上读过这篇文章和这篇文章。然而,我仍然无法理解这个概念。我举了以下例子来说明我如何看待 Ory Keto 的所有权概念:
# Tenant TenantA needs to be a owner of product ProductA in order to view it
products:ProductA#view@(tenants:TenantA#owner)
# Tenant A is a owner of ProductA
tenants:ProductA#owner@TenantA
Run Code Online (Sandbox Code Playgroud)
但这会产生很多规则,我什至不确定这是否是正确的方法。
从这一刻起你是对的。您必须手动创建一堆元组。完整的元组集应该类似于:
Run Code Online (Sandbox Code Playgroud)
products:ProductA#owner@UserA
products:ProductA#crud@(products:ProductA#owner)
roles:admin#member@UserB
products:ProductA#crud@(roles:admin#member)
products:ProductA#additional_permissions@(roles:KYCVerified#member)
roles:KYCVerified#member@UserA
从https://github.com/ory/keto/pull/877开始,您现在可以定义全局重写:
products:ProductA#owner@UserA
products:ProductA#crud@(products:ProductA#owner)
roles:admin#member@UserB
products:ProductA#crud@(roles:admin#member)
products:ProductA#additional_permissions@(roles:KYCVerified#member)
roles:KYCVerified#member@UserA
Run Code Online (Sandbox Code Playgroud)
这样你就必须创建这些元组:
products:ProductA#owners@UserA
roles:admin#members@UserB
roles:KYCVerified#members@UserA
products:ProductA#admins@(roles:admin)
products:ProductA#additional_permissions@(roles:KYCVerified)
Run Code Online (Sandbox Code Playgroud)
请注意,不可能(目前还没有计划)定义一个admin可以访问所有内容的组。您始终必须在对象和主题之间建立某种关系才能查询/重写它。admins这就是存在和关系的原因special_roles。
| 归档时间: |
|
| 查看次数: |
1362 次 |
| 最近记录: |