Hasura继承角色权限不一致
Hasura inherited role permission inconsistency
我试图在 Hasura 中定义两个角色:
role_1
:在my_table
中,可以更新:column_A
和column_B
role_2
:在my_table
,可以更新:column_C
我希望最终用户能够在不指定角色的情况下更新 column_A
、column_B
或 column_C
,因此我将这些组合成一个继承角色:user
.
我在将元数据上传到 Hasura 时收到以下错误:
{
"internal": [
{
"reason": "Could not inherit permission for the role 'user' for the entity: 'update permission, table: my_table, source: 'my_source''",
"name": "user",
"type": "inherited role permission inconsistency",
"entity": {
"permission_type": "update",
"source": "my_source",
"table": "my_table"
}
}
],
"path": "$.args",
"error": "cannot continue due to inconsistent metadata",
"code": "unexpected"
}
我的元数据中的 my_table
权限:
"update_permissions": [
{
"role": "role_1",
"permission": {
"filter": ...(check if I can update column_A and column_B)
},
"columns": [
"column_A",
"column_B"
]
}
},
{
"role": "role_2",
"permission": {
"filter": ...(a different check if I can update column_C)
},
"columns": [
"column_C"
]
}
}
],
继承角色配置:
"inherited_roles": [
{
"role_name": "user",
"role_set": [
"role_1",
"role_2"
]
}
]
如果我在更新权限/角色中包括所有三列,它工作正常。然而这不是我想要的
(感谢 jmart 在 Hasura Discorf 上的回答):
据我了解该功能,它是一连串的检查,而不是检查的组合。
因此它会查看用户是否有权从它有权访问的第一个角色访问 select 列 ABC,如果没有,则检查它是否有权通过任何其他角色访问。
如果 none 个角色包含所有请求的列,将被视为冲突,因为它们是竞争权限规则。
我试图在 Hasura 中定义两个角色:
role_1
:在my_table
中,可以更新:column_A
和column_B
role_2
:在my_table
,可以更新:column_C
我希望最终用户能够在不指定角色的情况下更新 column_A
、column_B
或 column_C
,因此我将这些组合成一个继承角色:user
.
我在将元数据上传到 Hasura 时收到以下错误:
{
"internal": [
{
"reason": "Could not inherit permission for the role 'user' for the entity: 'update permission, table: my_table, source: 'my_source''",
"name": "user",
"type": "inherited role permission inconsistency",
"entity": {
"permission_type": "update",
"source": "my_source",
"table": "my_table"
}
}
],
"path": "$.args",
"error": "cannot continue due to inconsistent metadata",
"code": "unexpected"
}
我的元数据中的 my_table
权限:
"update_permissions": [
{
"role": "role_1",
"permission": {
"filter": ...(check if I can update column_A and column_B)
},
"columns": [
"column_A",
"column_B"
]
}
},
{
"role": "role_2",
"permission": {
"filter": ...(a different check if I can update column_C)
},
"columns": [
"column_C"
]
}
}
],
继承角色配置:
"inherited_roles": [
{
"role_name": "user",
"role_set": [
"role_1",
"role_2"
]
}
]
如果我在更新权限/角色中包括所有三列,它工作正常。然而这不是我想要的
(感谢 jmart 在 Hasura Discorf 上的回答):
据我了解该功能,它是一连串的检查,而不是检查的组合。
因此它会查看用户是否有权从它有权访问的第一个角色访问 select 列 ABC,如果没有,则检查它是否有权通过任何其他角色访问。
如果 none 个角色包含所有请求的列,将被视为冲突,因为它们是竞争权限规则。