Поделиться через


Настраиваемые роли для миграции с подключением к сети из SQL Server в Управляемый экземпляр SQL Azure

Azure Database Migration Service использует для взаимодействия со службами Azure идентификатор приложения. Для идентификатора приложения требуется роль участника на уровне подписки (которую корпоративные отделы безопасности часто не предоставляют) или настраиваемые роли, предоставляющие определенные разрешения, которые необходимы службе Azure Database Migration Service. Так как в идентификаторе Microsoft Entra имеется ограничение в 2000 пользовательских ролей, может потребоваться объединить все разрешения, необходимые для идентификатора приложения, в одну или две пользовательские роли, а затем предоставить идентификатор приложения пользовательской роли для определенных объектов или групп ресурсов (и на уровне подписки). Если число настраиваемых ролей не имеет значения, их можно разделить по типам ресурсов, в результате чего будет создано три настраиваемые роли, как описано ниже.

Управлять отображением разрешений в пользовательском интерфейсе назначения ролей на портале позволяет раздел AssignableScopes JSON-строки определения роли. Обычно роль определяется на уровне группы ресурсов или даже отдельных ресурсов, чтобы избежать загромождения пользовательского интерфейса лишними ролями. Обратите внимание, что фактическое назначение ролей при этом не выполняется.

Минимальное количество ролей

В настоящее время мы рекомендуем создать для идентификатора приложения как минимум две настраиваемые роли: одну на уровне ресурсов, а другую — на уровне подписки.

Примечание.

Последнее требование для настраиваемой роли может быть устранено по мере развертывания кода нового Управляемого экземпляра SQL в Azure.

Настраиваемая роль для идентификатора приложения. Эта роль необходима для миграции Azure Database Migration Service на уровне ресурса или группы ресурсов, на котором размещена служба Azure Database Migration Service (дополнительные сведения об идентификаторе ПРИЛОЖЕНИЯ см. в статье "Создание приложения Microsoft Entra и субъекта-службы" с доступом к ресурсам).

{
  "Name": "DMS Role - App ID",
  "IsCustom": true,
  "Description": "DMS App ID access to complete MI migrations",
  "Actions": [
        "Microsoft.Storage/storageAccounts/read",
        "Microsoft.Storage/storageAccounts/listKeys/action",
        "Microsoft.Storage/storageaccounts/blobservices/read",
        "Microsoft.Storage/storageaccounts/blobservices/write",
        "Microsoft.Sql/managedInstances/read",
        "Microsoft.Sql/managedInstances/write",
        "Microsoft.Sql/managedInstances/databases/read",
        "Microsoft.Sql/managedInstances/databases/write",
        "Microsoft.Sql/managedInstances/databases/delete",
        "Microsoft.Sql/managedInstances/metrics/read",
        "Microsoft.DataMigration/locations/*",
        "Microsoft.DataMigration/services/*"
  ],
  "NotActions": [
  ],
  "AssignableScopes": [
    "/subscriptions/<subscription_id>/ResourceGroups/<StorageAccount_rg_name>",
    "/subscriptions/<subscription_id>/ResourceGroups/<ManagedInstance_rg_name>",
    "/subscriptions/<subscription_id>/ResourceGroups/<DMS_rg_name>",
  ]
}

Настраиваемая роль для идентификатора приложения — подписка. Эта роль необходима для миграции Azure Database Migration Service на уровне подписки, в которой размещается Управляемый экземпляр SQL.

{
  "Name": "DMS Role - App ID - Sub",
  "IsCustom": true,
  "Description": "DMS App ID access at subscription level to complete MI migrations",
  "Actions": [
        "Microsoft.Sql/locations/managedDatabaseRestoreAzureAsyncOperation/*"
  ],
  "NotActions": [
  ],
  "AssignableScopes": [
    "/subscriptions/<subscription_id>"
  ]
}

Приведенный выше json должен храниться в двух текстовых файлах, и вы можете использовать командлеты AzureRM, AZ PowerShell или Azure CLI для создания ролей с помощью New-AzureRmRoleDefinition (AzureRM) или New-AzRoleDefinition (AZ).

Дополнительные сведения см. в статье Настраиваемые роли Azure.

После создания этих настраиваемых ролей необходимо добавить назначения ролей для пользователей и идентификаторов приложений в соответствующие ресурсы или группы ресурсов:

  • Роль DMS Role - App ID должна быть предоставлена идентификатору приложения, который будет использоваться для миграции, а также на уровнях ресурсов учетной записи хранения, экземпляра Azure Database Migration Service и Управляемого экземпляра SQL. Роль предоставляется на уровне ресурса или группы ресурсов, где размещена служба Azure Database Migration Service.
  • Идентификатору приложения на уровне подписки, в которой размещается Управляемый экземпляр SQL, должна быть предоставлена роль "DMS Role - App ID - Sub". Это требование является временным до развертывания обновления кода.

Увеличение числа ролей

Если количество пользовательских ролей в идентификаторе Microsoft Entra не является проблемой, рекомендуется создать в общей сложности три роли. Вам по-прежнему потребуется роль "DMS Role - App ID – Sub", но указанная выше роль "DMS Role - App ID" будет разделена на две роли по типу ресурса.

Настраиваемая роль для идентификатора приложения для Управляемого экземпляра SQL

{
  "Name": "DMS Role - App ID - SQL MI",
  "IsCustom": true,
  "Description": "DMS App ID access to complete MI migrations",
  "Actions": [
        "Microsoft.Sql/managedInstances/read",
        "Microsoft.Sql/managedInstances/write",
        "Microsoft.Sql/managedInstances/databases/read",
        "Microsoft.Sql/managedInstances/databases/write",
        "Microsoft.Sql/managedInstances/databases/delete",
        "Microsoft.Sql/managedInstances/metrics/read"
  ],
  "NotActions": [
  ],
  "AssignableScopes": [
    "/subscriptions/<subscription_id>/resourceGroups/<ManagedInstance_rg_name>"
  ]
}

Настраиваемая роль для идентификатора приложения для хранилища

{
  "Name": "DMS Role - App ID - Storage",
  "IsCustom": true,
  "Description": "DMS App ID storage access to complete MI migrations",
  "Actions": [
"Microsoft.Storage/storageAccounts/read",
        "Microsoft.Storage/storageAccounts/listKeys/action",
        "Microsoft.Storage/storageaccounts/blobservices/read",
        "Microsoft.Storage/storageaccounts/blobservices/write"
  ],
  "NotActions": [
  ],
  "AssignableScopes": [
    "/subscriptions/<subscription_id>/resourceGroups/<StorageAccount_rg_name>"
  ]
}

Назначение ролей

Чтобы назначить роль пользователям или идентификаторам приложений, откройте портал Azure и выполните указанные ниже действия.

  1. Перейдите к группе ресурсов или ресурсу (за исключением роли, которая должна быть предоставлена на уровне подписки), выберите Управление доступом, а затем найдите только что созданные настраиваемые роли.

  2. Выберите соответствующую роль, укажите идентификатор приложения, а затем сохраните изменения.

Идентификаторы приложений появятся на вкладке Назначения ролей.

Следующие шаги