间接关系类型之间的差异

问题描述 投票:0回答:1

这两种在 OpenFGA 授权模型中定义间接关系的方法有什么区别?

type user

type team
  relations
    define member: [user]

type project
  relations
    define member: [user, team#member]

---

fga.writeTuples([
  {team:'devs#member', relation:'member', object:'project:next-big-app'}
])

type user

type team
  relations
    define member: [user]

type project
  relations
    define team: [team]
    define member: [user] or member from team

---

fga.writeTuples([
  {team:'devs', relation:'team', object:'project:next-big-app'}
])

我发现第二种方法更清晰、更容易推理,但第一种方法似乎在文档中得到更多推广。两者之间有功能上的区别吗?两者之间有性能差异吗?

okta open-fga zanzibar
1个回答
0
投票

对于该场景,是等效的。

如果您使用第一种方法,您可以为不同的团队分配不同的关系,例如

输入用户

type team
  relations
     define member: [user]

type project
  relations
    define reader: [team#member]
    define writer: [team#member]

如果您使用第二种方法,您可以轻松定义比继承团队的关系更多的关系:

type user

type team
  relations
     define member: [user]
     define owner : [user]

type project
  relations
    define team: [team]
    define member: [user] or member from team
    define owner : owner from project

当您有层次结构时,您倾向于使用第二种方法(例如文件夹/文档),但是当您有一组想要为其分配特定关系的用户时(例如“团队”、“组”、“角色”) )首选第一种方法。

© www.soinside.com 2019 - 2024. All rights reserved.