Hasura继承角色权限不一致

Hasura inherited role permission inconsistency

我试图在 Hasura 中定义两个角色:

我希望最终用户能够在不指定角色的情况下更新 column_Acolumn_Bcolumn_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 个角色包含所有请求的列,将被视为冲突,因为它们是竞争权限规则。