OpenFGA中如何为所有未来用户配置默认管理员关系?
OpenFGA 默认用户管理员权限配置问题
当前权限模型
model schema 1.1 type user relations define admin: [admin#member] type admin relations define member: [user]
已配置的用户管理员关系
已为特定用户user:rahul配置管理员关系,对应的元组为:
User admin:identity_admin Relation admin Object user:rahul
尝试的无效配置
希望让所有未来创建的user对象默认拥有admin:identity_admin作为管理员,尝试使用通配符配置元组但失败:
User admin:identity_admin Relation admin Object user:*
问题原因与解决方案
原因
OpenFGA不支持在关系元组中使用通配符*作为对象ID,因此user:*的写法无法生效。
解决方案
方案1:修改权限模型实现默认管理员
通过调整模型定义,让所有user对象的admin关系默认包含admin:identity_admin,无需手动为每个用户添加元组。修改后的模型如下:
model schema 1.1 type user relations define admin: [admin#member] or admin:identity_admin type admin relations define member: [user]
该配置下,所有user对象自动拥有admin:identity_admin作为管理员,同时仍支持添加其他admin#member角色的用户作为管理员。
方案2:业务逻辑层面自动添加元组
若无法修改权限模型,可在创建新user对象的业务逻辑中,自动插入对应的管理员关系元组。例如创建user:new_user时,同步添加:
User admin:identity_admin Relation admin Object user:new_user
确保每个新用户创建时都执行该操作,即可实现默认管理员效果。
内容的提问来源于stack exchange,提问作者JRudransh
相关产品推荐
相关产品推荐

