Postgres 13(AWS Aurora)权限异常:撤销后仍可执行UPDATE
问题根源与解决办法
为什么UPDATE还能执行?
rds_superuser是AWS Aurora自带的超级用户角色,默认拥有数据库的全部权限——哪怕你手动撤销了这个角色对表的权限,超级用户的权限优先级会直接绕过表级限制。另外,你的目标用户如果是rds_superuser的成员,会直接继承该角色的所有权限,你单独给用户设置的权限会被完全覆盖。
解决步骤
1. 先把用户移出rds_superuser角色
这是关键前提,不移除的话所有表级权限设置都是白搭:
REVOKE rds_superuser FROM 你的目标用户名;
2. 重新配置表的权限
先彻底清空用户和角色对该表的权限,再明确授予需要的权限:
-- 撤销目标用户的所有表权限 REVOKE ALL ON tryon.rx_cryptographic_signature FROM 你的目标用户名; -- 清理rds_superuser的表权限记录(规范权限列表) REVOKE ALL ON tryon.rx_cryptographic_signature FROM rds_superuser; -- 授予用户仅需要的权限 GRANT SELECT, INSERT, TRIGGER ON tryon.rx_cryptographic_signature TO 你的目标用户名;
3. 验证权限是否生效
执行Postgres命令查看权限状态:
\z tryon.rx_cryptographic_signature
确认输出里目标用户的权限只有r(SELECT)、a(INSERT)、t(TRIGGER),且rds_superuser不再出现在权限列表中。
4. 检查Schema权限(可选但建议)
确保用户对tryon schema只有必要的访问权限,防止通过schema权限间接获得修改权限:
-- 撤销schema的所有权限 REVOKE ALL ON SCHEMA tryon FROM 你的目标用户名; -- 授予访问schema的权限(允许查看和操作schema内的授权对象) GRANT USAGE ON SCHEMA tryon TO 你的目标用户名;
最后测试
切换到目标用户账号,尝试执行UPDATE操作,确认会收到权限不足的报错,说明权限限制生效。
内容的提问来源于stack exchange,提问作者rj_murray
相关产品推荐
相关产品推荐

