is_account_group_member与is_member的差异及适用场景咨询
区分
is_account_group_member与is_member及适用场景 核心差异
is_member('group_name'):仅检查当前数据库角色是否为指定数据库内部组的直接/间接成员,完全依赖数据库原生的角色权限体系(比如PostgreSQL的CREATE ROLE、GRANT机制)。is_account_group_member('group_name'):检查当前认证的外部账号是否属于外部身份系统(如企业SSO、第三方Auth服务)中的指定组,组信息存储在数据库之外的账号管理体系中。
适用场景
使用is_member('healthcare')的场景
- 用户权限完全通过数据库内部角色管理:比如用数据库原生命令创建
healthcare组角色,再将医护人员的数据库角色加入该组。 - 无需对接外部身份系统,仅依赖数据库自身权限体系控制访问时,用该函数验证当前数据库角色的组归属。
使用is_account_group_member('healthcare')的场景
- 用户账号通过外部身份提供商管理:比如医护人员通过医院的SSO系统、或Supabase Auth这类服务登录,
healthcare是外部系统中定义的用户组。 - 需要基于外部账号系统的组信息做权限校验时,用该函数验证当前登录账号的外部组归属。
结合你的视图示例
对于patient_phi这类包含敏感患者数据的视图:
- 若医护人员使用数据库本地角色登录,用
is_member确保只有数据库内healthcare组的角色能访问自身对应的数据。 - 若医护人员使用外部账号系统登录,用
is_account_group_member基于外部组权限控制数据访问。
内容的提问来源于stack exchange,提问作者Enrique Benito Casado
相关产品推荐
相关产品推荐

