南大通用 GBase 8c 数据库的权限管理机制清晰且灵活,旨在保障数据安全并支持精细化的访问控制。其核心主要包括默认权限机制、多种管理员角色、三权分立模式以及角色与用户管理。本文以特定实践场景为例,介绍GBase 8c权限管理的功能及配置方法。
4. 权限验证测试
4.1 serceruser 用户测试
-
切换到serceruser 用户会话,测试其权限,应支持表的创建和数据插入。对其他用户可见。
-
创建表 a1 并插入数据
-
预期结果:表成功创建并可插入,后续clientuser用户应能访问此表
执行命令:
sql
gsql -r -d testgrant -p 15400 -U serveruser -W "********"
set search_path = test_privileges;
-- 创建测试表
create table a1(username varchar(20));
insert into a1 values('serveruser');
4.2 clientuser 用户测试
- 跨用户访问表 a1
- 创建表 b1 并插入数据
- 预期结果:成功访问serveruser用户的表 a1,能新建表 b1,新建表应能被serveruser访问
sql
gsql -r -d testgrant -p 15400 -U clientuser -W "********"
set search_path = test_privileges;
-- 跨用户访问测试
insert into a1 values('clientuser');
select * from a1;
-- 创建反向测试表
create table b1(username varchar(20));
insert into b1 values('clientuser');
4.3 双向访问验证
- serceruser 访问 b1
- 预期结果:双向插入和查询成功
5. 总结最佳实践及注意事项
在生产环境中,仍需结合最小权限原则进行合理的权限控制。建议权限管理应考虑以下几个方面:
- 最小化授权:生产环境避免使用 ALL,根据业务需求细化到 SELECT/INSERT 等。
- 定期权限审计:使用 \dp 检查当前权限分配情况。
- 新用户维护:有新用户加入时需更新默认权限。
- 模式隔离:不同业务独立使用模式,降低权限风险。
- 密码策略:定期更换数据库用户密码。
注意事项
- ALTER DEFAULT PRIVILEGES 只对执行命令的用户后续创建的对象生效。
- 如果表在执行前已存在,需要额外执行 GRANT ALL ON TABLES。
- 权限修改不会影响已创建的连接,可能需要重新登录。