本文介绍如何在 Azure 中为 SQL Server 数据库迁移设置自定义角色。 自定义角色仅配置了使用 Azure 数据库迁移服务实例(面向 Azure SQL 托管实例)启动和执行迁移所需的权限。 若要预配 Azure 数据库迁移服务的新实例,必须在订阅级别为用户分配 “所有者 ”或 “参与者 ”角色。
用户还可以使用以下内置角色:
- SqlVM 迁移角色
- SqlMI 迁移角色
- SqlDB 迁移角色
这些内置角色使用户能够:
- 创建和删除 数据库迁移服务(DMS)实例。
- 通过DMS执行数据库迁移。
注释
要通过 Azure 门户配置迁移,你还需要在 blob 容器上获得存储 Blob 数据阅读器的访问权限。
对于 Custom 角色:
使用角色定义 JSON 字符串的 AssignableScopes 部分,可以控制权限在 Azure 门户中的“添加角色分配” UI 中的显示位置。 为了避免额外的角色使 UI 混乱,可能需要在资源组级别甚至资源级别定义角色。 自定义角色适用的资源不执行实际的角色分配。
{
"properties": {
"roleName": "DmsCustomRoleDemoForMI",
"description": "",
"assignableScopes": [
"/subscriptions/<storageSubscription>/resourceGroups/<storageAccountRG>",
"/subscriptions/<ManagedInstanceSubscription>/resourceGroups/<managedInstanceRG>",
"/subscriptions/<DMSSubscription>/resourceGroups/<dmsServiceRG>"
],
"permissions": [
{
"actions": [
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/listkeys/action",
"Microsoft.Storage/storageAccounts/blobServices/read",
"Microsoft.Storage/storageAccounts/blobServices/write",
"Microsoft.Storage/storageAccounts/blobServices/containers/read",
"Microsoft.Sql/managedInstances/read",
"Microsoft.Sql/managedInstances/write",
"Microsoft.Sql/managedInstances/databases/read",
"Microsoft.Sql/managedInstances/databases/write",
"Microsoft.Sql/managedInstances/databases/delete",
"Microsoft.DataMigration/locations/operationResults/read",
"Microsoft.DataMigration/locations/operationStatuses/read",
"Microsoft.DataMigration/locations/sqlMigrationServiceOperationResults/read",
"Microsoft.DataMigration/databaseMigrations/write",
"Microsoft.DataMigration/databaseMigrations/read",
"Microsoft.DataMigration/databaseMigrations/delete",
"Microsoft.DataMigration/databaseMigrations/cancel/action",
"Microsoft.DataMigration/databaseMigrations/cutover/action",
"Microsoft.DataMigration/sqlMigrationServices/write",
"Microsoft.DataMigration/sqlMigrationServices/delete",
"Microsoft.DataMigration/sqlMigrationServices/read",
"Microsoft.DataMigration/sqlMigrationServices/listAuthKeys/action",
"Microsoft.DataMigration/sqlMigrationServices/regenerateAuthKeys/action",
"Microsoft.DataMigration/sqlMigrationServices/deleteNode/action",
"Microsoft.DataMigration/sqlMigrationServices/listMonitoringData/action",
"Microsoft.DataMigration/sqlMigrationServices/listMigrations/read",
"Microsoft.DataMigration/sqlMigrationServices/MonitoringData/read",
"Microsoft.DataMigration/SqlMigrationServices/tasks/read",
"Microsoft.DataMigration/SqlMigrationServices/tasks/write",
"Microsoft.DataMigration/SqlMigrationServices/tasks/delete",
"Microsoft.DataMigration/sqlMigrationServices/validateIR/action"
],
"notActions": [],
"dataActions": [
"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read"
],
"notDataActions": []
}
]
}
}
你可以使用 Azure 门户、Azure PowerShell、Azure CLI 或 Azure REST API 来创建角色。
有关详细信息,请参阅使用 Azure 门户创建或更新 Azure 自定义角色和 Azure 自定义角色。
注释
通过Azure门户迁移到Azure SQL 托管实例或Azure SQL虚拟机时,确保登录用户在包含备份文件的Blob容器上拥有Storage Blob数据阅读器的访问权限。 仅在通过 Azure 门户进行迁移设置期间,需要此权限才能列出 Blob 容器中的文件夹和文件。
迁移到 Azure SQL 托管实例所需的权限说明
| 权限操作 | 说明 |
|---|---|
Microsoft.Storage/storageAccounts/read |
返回存储帐户的列表,或获取指定存储帐户的属性。 |
Microsoft.Storage/storageAccounts/listkeys/action |
返回指定存储帐户的访问密钥。 |
Microsoft.Storage/storageAccounts/blobServices/read |
列出 Blob 服务。 |
Microsoft.Storage/storageAccounts/blobServices/write |
返回设置 Blob 服务属性操作的结果。 |
Microsoft.Storage/storageAccounts/blobServices/containers/read |
返回容器列表。 |
Microsoft.Sql/managedInstances/read |
返回托管实例的列表,或获取指定托管实例的属性。 |
Microsoft.Sql/managedInstances/write |
使用指定参数创建托管实例,或更新指定托管实例的属性或标记。 |
Microsoft.Sql/managedInstances/databases/read |
获取现有的托管数据库。 |
Microsoft.Sql/managedInstances/databases/write |
创建新数据库或更新现有数据库。 |
Microsoft.Sql/managedInstances/databases/delete |
删除现有托管数据库。 |
Microsoft.DataMigration/locations/operationResults/read |
获取与“202 已接受”响应相关的长时间运行操作的状态。 |
Microsoft.DataMigration/locations/operationStatuses/read |
获取与“202 已接受”响应相关的长时间运行操作的状态。 |
Microsoft.DataMigration/locations/sqlMigrationServiceOperationResults/read |
检索服务操作结果。 |
Microsoft.DataMigration/databaseMigrations/write |
创建或更新数据库迁移资源。 |
Microsoft.DataMigration/databaseMigrations/read |
检索数据库迁移资源。 |
Microsoft.DataMigration/databaseMigrations/delete |
删除数据库迁移资源。 |
Microsoft.DataMigration/databaseMigrations/cancel/action |
停止正在进行的数据库迁移。 |
Microsoft.DataMigration/databaseMigrations/cutover/action |
数据库的在线迁移切换操作。 |
Microsoft.DataMigration/sqlMigrationServices/write |
创建新服务或更改现有服务的属性 |
Microsoft.DataMigration/sqlMigrationServices/delete |
删除现有服务。 |
Microsoft.DataMigration/sqlMigrationServices/read |
检索迁移服务的详细信息。 |
Microsoft.DataMigration/sqlMigrationServices/listAuthKeys/action |
检索身份验证密钥列表。 |
Microsoft.DataMigration/sqlMigrationServices/regenerateAuthKeys/action |
重新生成身份验证密钥。 |
Microsoft.DataMigration/sqlMigrationServices/deleteNode/action |
取消注册 IR 节点。 |
Microsoft.DataMigration/sqlMigrationServices/listMonitoringData/action |
列出所有迁移的监视数据。 |
Microsoft.DataMigration/sqlMigrationServices/listMigrations/read |
列出用户的迁移。 |
Microsoft.DataMigration/sqlMigrationServices/MonitoringData/read |
检索监视数据。 |
Microsoft.SqlVirtualMachine/sqlVirtualMachines/read |
检索 SQL 虚拟机的详细信息。 |
Microsoft.SqlVirtualMachine/sqlVirtualMachines/write |
创建新的或更改现有的 SQL 虚拟机的属性。 |
Microsoft.DataMigration/SqlMigrationServices/tasks/read |
获取迁移服务任务详细信息 |
Microsoft.DataMigration/SqlMigrationServices/tasks/write |
创建或更新迁移服务任务 |
Microsoft.DataMigration/SqlMigrationServices/tasks/delete |
删除迁移服务任务 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
读取 Azure 存储帐户中的 Blob 容器 |
Microsoft.DataMigration/sqlMigrationServices/validateIR/action |
验证集成运行时。 |
你可以获取一个示例脚本,创建登录名,并通过 Windows Authentication 或 SQL Server 认证为 VMware、Hyper-V 或物理服务器配置必要的权限。
角色分配
向用户或应用 ID 分配角色:
在 Azure 门户中,转到该资源。
在左侧菜单中,选择“访问控制 (IAM)”,然后滚动查找创建的自定义角色。
选择要分配的角色,选择用户或应用 ID,然后保存更改。
用户或应用 ID 随即显示在“角色分配”选项卡上。