若要使用 PostgreSQL 迁移服务创建和监视迁移,用户需要特定的权限。 以下指南阐述了所需权限和有效配置这些权限的步骤。
基于角色的访问控制(RBAC):最小权限组
以下权限是用户成功创建和监视迁移所需的最低权限:
资源组 和 订阅
- Microsoft.Resources/subscriptions/resourceGroups/read
- Microsoft.Resources/subscriptions/read
- Microsoft.Resources/subscriptions/locations/read
- Microsoft.Resources/subscriptions/resourceGroups/deployments/read
- Microsoft.Resources/deployments/read
- Microsoft.Resources/subscriptions/resourceGroups/resources/read
特定于迁移
- Microsoft.DBforPostgreSQL/flexibleServers/checkMigrationNameAvailability/action
- Microsoft.DBforPostgreSQL/flexibleServers/migrations/write
- Microsoft.DBforPostgreSQL/flexibleServers/migrations/read
- Microsoft.DBforPostgreSQL/flexibleServers/migrations/delete
目标服务器
- Microsoft.DBforPostgreSQL/flexibleServers/read
- Microsoft.DBforPostgreSQL/flexibleServers/databases/read
源服务器(仅适用于单一服务器源)
- Microsoft.DBforPostgreSQL/servers/read
- Microsoft.DBforPostgreSQL/servers/administrators/read
- Microsoft.DBforPostgreSQL/servers/databases/read
连接 和 数据库列表
- Microsoft.DBforPostgreSQL/flexibleServers/testConnectivity/action
- Microsoft.DBforPostgreSQL/flexibleServers/getSourceDatabaseList/action
配置
- Microsoft.DBforPostgreSQL/flexibleServers/configurations/read
- Microsoft.DBforPostgreSQL/servers/configurations/read
默认角色
默认情况下,订阅级别的特权管理员角色(例如“所有者”或“参与者”)具有必要的权限。
分配用于迁移的自定义角色
如果想要专门授予用于创建和监视迁移的权限,而不具有其他数据库管理员权限,请考虑创建自定义角色。
在订阅级别为迁移中涉及的单一服务器和灵活服务器分配自定义角色的范围。
将此自定义角色分配给负责执行迁移的用户。
包括运行时服务器的其他迁移要求
如果运行时服务器是迁移设置的一部分,请确保运行时服务器范围内包含 Microsoft.DBforPostgreSQL/flexibleServers/migrations/* 的权限。
通过设置这些权限,可确保迁移过程既安全又符合 PostgreSQL 迁移服务要求。
(预览版)联机迁移发布权限
在联机迁移期间,创建发布是必需的,以便在 PostgreSQL 迁移时使用 pgoutput 定义逻辑复制的数据集。 它控制细化程度,确保仅流化传输所需的表更改以进行复制,从而支持高效且受控的云迁移工作流。
必须通过以下任 一 选项在源上启用发布创建:
- 授予“创建数据库 + 使用继承角色”:在此选项中,你可以提供迁移用户所需的权限,而无需更改表所有权。
对于计划迁移的所有数据库 - CREATE 向用户授予创建发布以流式传输更改的权限。
GRANT CREATE ON DATABASE your_db TO migration_user;
接下来,向迁移用户授予角色成员 身份,以便 所有表都可以包含在发布中。 请选择数据库中由用户定义且拥有表或对象的角色。 必须对要迁移的数据库的所有表进行该操作。
GRANT role1, role2...etc TO migration_user;
- 在源中使用超级用户凭据进行迁移:超级用户凭据可帮助源用户创建所需的发布,而没有任何权限问题。
CREATE ROLE migration_user WITH LOGIN SUPERUSER PASSWORD 'your_secure_password';
还可以通过向要用于迁移的现有角色授予超级用户权限来实现提升的访问权限:
ALTER ROLE existing_migration_user WITH SUPERUSER;
- 授予在数据库上创建权限 + 转移所有权(更改所有者):允许非超级用户迁移用户通过赋予所需权限并控制表来创建发布。
GRANT CREATE ON DATABASE your_db TO migration_user;
ALTER TABLE table1, table2...etc OWNER TO migration_user;
要迁移的数据库中所有表的所有权必须更改为migration_user。 更改表的所有权并恢复原样可能会影响应用程序权限。