数据同步权限规划

使用Teleport迁移工具做数据迁移时,新迁移的数据权限均绑定在任务创建者名下,如需要精细管理数据权限,可在迁移前规划好权限管理模型

精简权限模型

只对数据做简单的只读、只写权限管理。

  • 创建只读账号,该账号对当前database下所有数据的只读权限
--- 创建一个只读账号 reader
create user reader with password 'XXXX';
 
--- pg_read_all_data 为 [预定义角色]
grant pg_read_all_data to reader;
  • 创建只写账号, 该账号对当前database下所有数据的写入权限(注意不能创建表、视图等操作)
--- 创建一个只写账号 writer
create user writer with password 'XXXX';
 
--- pg_write_all_data 为 [预定义角色]
grant pg_write_all_data to writer;

精细管理权限

当只读、只写不满足业务场景时,需要更准确的权限管理,可参考文档简单权限模型实践自定义角色,并管理角色相关权限

  • 创建一个与数据Owner所有人基本等同的账号
create user owner with password 'XXXX';
 
--- 将当前database d1 的所有权限授予owner
grant all on database d1 to owner with grant option;
 
--- 将public schema所有权限授予 owner
grant all on schema public to owner;
 
--- 修改当前用户【未来】创建对象的默认权限, 当创建对象时,会根据当前user的默认配置给对象设置权限
--- 以下语句为修改用户的权限默认配置,这样当对应的对象创建时,会默认授予owner权限,注意对于已创建
--- 的对象不起作用。
--- schema
ALTER DEFAULT privileges GRANT all ON schemas TO owner;
--- table
ALTER DEFAULT privileges GRANT all ON tables TO owner;
--- sequence
ALTER DEFAULT privileges GRANT all ON sequences TO owner;