在 Azure Data Studio 中实现从 SQL Server 到 Azure SQL 数据库迁移的自定义角色

本文介绍如何在 Azure 中为 SQL Server 数据库迁移设置自定义角色。 自定义角色仅具有创建和运行以 Azure SQL 数据库为目标的 Azure 数据库迁移服务实例所需的权限。

使用角色定义 JSON 字符串的 AssignableScopes 部分,可以控制权限在 Azure 门户中的“添加角色分配” UI 中的显示位置。 为了避免额外的角色使 UI 混乱,可能需要在资源组级别甚至资源级别定义角色。 自定义角色适用的资源不执行实际的角色分配。

{
    "properties": {
        "roleName": "DmsCustomRoleDemoForSqlDB",
        "description": "",
        "assignableScopes": [
            "/subscriptions/<SQLDatabaseSubscription>/resourceGroups/<SQLDatabaseResourceGroup>",
            "/subscriptions/<DatabaseMigrationServiceSubscription>/resourceGroups/<DatabaseMigrationServiceResourceGroup>"
        ],
        "permissions": [
            {
                "actions": [
                    "Microsoft.Sql/servers/read",
                    "Microsoft.Sql/servers/write",
                    "Microsoft.Sql/servers/databases/read",
                    "Microsoft.Sql/servers/databases/write",
                    "Microsoft.Sql/servers/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/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"
                ],
                "notActions": [],
                "dataActions": [],
                "notDataActions": []
            }
        ]
    }
}

你可以使用 Azure 门户、Azure PowerShell、Azure CLI 或 Azure REST API 来创建角色。

有关详细信息,请参阅使用 Azure 门户创建或更新 Azure 自定义角色Azure 自定义角色

迁移到 Azure SQL 数据库所需的权限

权限操作 说明
Microsoft.Sql/servers/read 返回 SQL 数据库资源列表,或获取指定 SQL 数据库的属性。
Microsoft.Sql/servers/write 使用指定的参数创建 SQL 数据库,或更新指定 SQL 数据库的属性或标记。
Microsoft.Sql/servers/databases/read 获取现有 SQL 数据库。
Microsoft.Sql/servers/databases/write 创建新数据库或更新除现有数据库。
Microsoft.Sql/servers/databases/delete 删除现有 SQL 数据库。
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/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 检索监视数据。

你可以使用 Windows 身份验证或 SQL Server 身份验证获取示例脚本来创建登录名,并使用 VMwareHyper-V物理服务器所需的权限对其进行预配。

角色分配

向用户或应用 ID 分配角色:

  1. 在 Azure 门户中,转到资源。

  2. 在左侧菜单中,选择“访问控制 (IAM)”,然后滚动查找创建的自定义角色

  3. 选择要分配的角色,选择用户或应用 ID,然后保存更改。

    用户或应用 ID 随即显示在“角色分配”选项卡上