GBase 8c数据库权限管理场景实践 分享
环境要求项目参数目标数据库turboex数据库端口15400测试用户turboserver / turbolog测试模式test_privileges环境准备-- 清理旧环境 gsql -r -d postgres -p 15400 clean connection to all force for database turboex; drop database if exists turboex; drop user if exists turboserver; drop user if exists turbolog; -- 创建新数据库 create database turboex; -- 创建测试用户 create user turboserver with login password turboserver123; create user turbolog with login password turbolog123;权限配置流程1.模式权限配置\c turboex create schema test_privileges; -- 授予模式所有权 grant all on schema test_privileges to turboserver; grant all on schema test_privileges to turbolog;作用说明GRANT ALL ON SCHEMA授予用户对模式的完全控制权包含创建/修改/删除对象、注释、使用等权限用户可在模式下自由操作各类数据库对象无需额外申请基础操作权限。2.表权限配置-- 授予现有表权限 grant all on all tables in schema test_privileges to turboserver; grant all on all tables in schema test_privileges to turbolog;注意事项仅对已存在的表生效包含SELECT/INSERT/UPDATE/DELETE/TRUNCATE等完整数据操作权限若后续在模式中新建表此权限配置不会自动应用到新表上。3.默认权限配置-- turboserver用户会话 ALTER DEFAULT PRIVILEGES IN SCHEMA test_privileges GRANT ALL ON TABLES TO turbolog; -- turbolog用户会话 ALTER DEFAULT PRIVILEGES IN SCHEMA test_privileges GRANT ALL ON TABLES TO turboserver;核心作用自动授予未来新建表的权限仅影响执行该语句用户创建的对象因此需要分别在两个用户会话中执行确保turboserver创建的新表自动对turbolog开放权限turbolog创建的新表也自动对turboserver开放权限。权限验证测试turboserver 用户测试成功创建表并插入数据使用turboserver用户登录数据库切换至test_privileges模式执行CREATE TABLE语句创建测试表如CREATE TABLE test_tb(id INT, name VARCHAR(50));随后执行INSERT语句插入测试数据如INSERT INTO test_tb VALUES(1,testdata);验证表创建和数据插入操作无权限报错。后续turbolog用户应能访问此表切换至turbolog用户登录数据库执行SELECT * FROM test_privileges.test_tb;语句验证可正常查询到turboserver插入的数据无权限拒绝提示。turbolog 用户测试成功访问turboserver用户的表登录turbolog用户对turboserver创建的test_tb执行SELECT、INSERT、UPDATE、DELETE等操作验证所有数据操作均可正常执行无权限限制。新建表应能被turboserver访问使用turbolog用户在test_privileges模式下创建新表如CREATE TABLE test_tb2(id INT, value INT);插入测试数据后切换至turboserver用户执行查询操作验证可正常访问该表数据。双向权限验证双向 DML 操作成功turboserver用户对turbolog创建的表执行INSERT/UPDATE/DELETE操作turbolog用户对turboserver创建的表执行相同操作验证所有操作均无权限报错数据修改结果符合预期。双向数据可见性正常双方用户均能实时看到对方对表进行的数据修改执行查询语句返回的结果为最新数据状态无数据访问延迟或权限导致的不可见问题。关键命令解析命令作用注意点ALTER DEFAULT PRIVILEGES设置未来对象的默认权限指定用户在特定模式下新建对象时自动将权限授予目标用户用户级配置需分别在不同用户会话中执行仅对执行用户后续创建的对象生效不影响已存在的对象GRANT ALL ON SCHEMA授予用户对模式的完全管理权限包含模式内对象的创建、修改、删除及使用权限包含创建/删除对象权限授予后用户可自由管理模式内的各类数据库对象需谨慎授予set search_path设置模式搜索路径指定数据库查找对象时的模式优先级影响对象创建和查询的默认位置若未设置默认查找 public 模式建议在用户登录后配置对应的模式搜索路径避免对象创建位置错误clean connection清理数据库的所有连接强制断开当前数据库的活跃会话生产环境慎用可能导致正在执行的业务事务中断仅在测试环境清理旧环境时使用最佳实践建议权限最小化原则生产环境建议细化权限分配避免直接授予ALL权限根据用户实际业务需求授予必要权限如仅授予查询用户SELECT权限授予数据录入用户INSERT/UPDATE权限降低权限滥用风险。定期权限审计使用\dp命令查看权限分配情况定期审计数据库用户的权限配置及时回收不再需要的权限清理冗余权限确保权限配置符合业务安全要求。默认权限维护新用户加入时需更新默认权限配置针对新用户执行ALTER DEFAULT PRIVILEGES语句确保新用户能自动获得后续新建对象的必要权限同时避免过度授权。模式隔离不同业务使用独立模式进行权限隔离将不同业务线的数据库对象划分到独立模式中针对不同模式配置独立的权限策略降低业务间权限交叉风险提升数据安全性。密码策略建议定期轮换数据库密码设置复杂的密码规则如包含大小写字母、数字、特殊字符避免使用弱密码同时配置密码过期时间提升用户账号安全性。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2448816.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!