1) 权限授予最小化,只需要SELECT权限的不需要授予其他权限。
2) 不要为了方便随便授予ALL PRIVILEGES权限。
3) 谨慎授予可能改变表内容的操作(update、insert)等权限。
4) 管理好权限周期,超过时间及时使用REVOKE回收权限。
6 业务用户权限示例 6.1 业务操作权限步骤1:先建一个角色
create role data_mgr password 'Gauss_234';
步骤2:登陆schema所属的用户u2赋予角色data_mgr对所属schema s2的使用权限以及所有表的数据操作权限
Ø 赋予角色data_mgr对s2的使用权限
grant USAGE,CREATE on schema s2 to data_mgr;
Ø 角色data_mgr对u2已创建的表赋予查询权限
grant SELECT,insert,delete,update on all tables in schema s2 to data_mgr;
Ø 角色data_mgr对u2以后创建的新表赋予查询权限
alter default privileges in schema s2 grant SELECT,insert,delete,update on tables to data_mgr;
6.2 只读操作权限步骤1:创建只读角色
create role read_only password 'Gauss_234';
步骤2:登陆schema所属的用户u2赋予角色 read_only 对schema s1和s2的使用权限以及所有表的查询权限
Ø 赋予角色read_only对s1,s2的使用权限
grant USAGE on schema s1,s2 to read_only;
Ø --角色read_only拥有对s1,s2已创建的表赋予查询权限
grant SELECT on all tables in schema s1,s2 to read_only;
Ø 角色read_only拥有对s1,s2以后创建的新表赋予查询权限
alter default privileges in schema s1,s2 grant SELECT on tables to read_only;
6.3 赋权操作Ø 给用户u1赋予对用户u2的schema s2的数据操作权限。
grant data_mgr to u1;
Ø 给用户u3赋予对用户u2的schema s1和s2的只读权限。
grant read_only to u3;
6.4 权限回收操作 6.4.1 角色的权限回收Ø 回收角色data_mgr对s2的使用权限
revoke USAGE,CREATE on schema s2 from data_mgr;
Ø 回收角色data_mgr对u2已创建的表查询权限
revoke SELECT,insert,delete,update on all tables in schema s2 from data_mgr;
Ø 回收角色data_mgr对u2以后创建的新表赋予查询权限
alter default privileges in schema s2 revoke SELECT,insert,delete,update on tables from data_mgr;
6.4.2 用户的权限回收Ø 回收用户u1对u2的schema s2的数据操作权限
revoke data_mgr to u1;
Ø 回收用户u3对u2的schema s1、s2的只读权限
revoke read_only from u3;
6.5 赋权与回收把当前用户下某个schema下的表的查询权限赋给其他用户,既需要把schema的usage权限给其他用户,也要赋予其他用户对于表的查询权限(可以指定特定表来赋权查询操作,也可以赋予一次性赋予所有表的查询权限)。
对于将来新建表的查询权限想要一次性的赋予权限,则需要通过alter default privileges赋予默认权限来操作。
回收权限的话,需要回收schema的usage权限,也要回收表的查询权限,还有回收默认权限。
可以通过\ddp来查看默认赋权信息。
7 总结通过本文,可以系统了解DWS数据库权限管理相关知识,从而为数据库管理和业务开发提供技术支撑。通过更加有效和细致的权限管理,制定完善的数据安全机制,保证数据安全。