Partage via


Rôles personnalisés pour les migrations en ligne de SQL Server vers Azure SQL Managed Instance

Azure Database Migration Service utilise un ID d’application pour interagir avec les services Azure. L’ID d’application exige le rôle Contributeur au niveau de l’abonnement (ce que de nombreux services de sécurité d’entreprise n’autorisent pas) ou la création de rôles personnalisés qui accordent les autorisations spécifiques requises par Azure Database Migration Service. Étant donné qu’il existe une limite de 2 000 rôles personnalisés dans Microsoft Entra ID, vous pouvez combiner toutes les autorisations requises spécifiquement par l’ID d’application en un ou deux rôles personnalisés, puis accorder à l’ID d’application le rôle personnalisé sur des objets ou groupes de ressources spécifiques (par rapport au niveau de l’abonnement). Si le nombre de rôles personnalisés n’est pas un problème, vous pouvez fractionner les rôles personnalisés par type de ressource, afin de créer trois rôles personnalisés au total, comme décrit ci-dessous.

La section AssignableScopes de la chaîne JSON de définition de rôle vous permet de contrôler l’emplacement des autorisations dans l’interface utilisateur Ajouter une attribution de rôle dans le portail. Vous souhaiterez probablement définir le rôle au niveau du groupe de ressources, voire de la ressource pour éviter d’encombrer l’interface utilisateur avec des rôles supplémentaires. Notez que cela n’effectue pas d’attribution de rôle réelle.

Nombre minimal de rôles

Nous vous recommandons actuellement de créer au moins deux rôles personnalisés pour l’ID d’application, un au niveau de la ressource et l’autre au niveau de l’abonnement.

Remarque

La dernière exigence de rôle personnalisée pourrait finir par être supprimée, car un nouveau code SQL Managed Instance est déployé sur Azure.

Rôle personnalisé pour l’ID d’application. Ce rôle est requis pour la migration d’Azure Database Migration Service au niveau de la ressource ou du groupe de ressources qui héberge Azure Database Migration Service (pour plus d’informations sur l’ID d’application, consultez l’article Utiliser le portail pour créer une application Microsoft Entra et un principal de service pouvant accéder aux ressources).

{
  "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>",
  ]
}

Rôle personnalisé pour l’ID d’application - abonnement. Ce rôle est requis pour la migration d’Azure Database Migration Service au niveau de l’abonnement qui héberge SQL Managed Instance.

{
  "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>"
  ]
}

Le JSON ci-dessus doit être stocké dans deux fichiers texte. Vous pouvez utiliser les applets de commande AZ PowerShell, AzureRM ou Azure CLI pour créer les rôles à l’aide de New-AzureRmRoleDefinition (AzureRM) ou New-AzRoleDefinition (AZ).

Pour plus d’informations, consultez l’article Rôles personnalisés Azure.

Après avoir créé ces rôles personnalisés, vous devez ajouter des attributions de rôles aux utilisateurs et aux ID d’application pour les ressources ou groupes de ressources appropriés :

  • Le rôle « Rôle DMS - ID d’application » doit être accordé à l’ID d’application qui sera utilisé pour les migrations, ainsi qu’au niveau du compte de stockage, de l’instance Azure Database Migration Service et SQL Managed Instance. Il est accordé au niveau de la ressource ou du groupe de ressources qui héberge Azure Database Migration Service.
  • Le rôle « Rôle DMS – ID d’application » doit être accordé à l’ID d’application au niveau de l’abonnement qui héberge SQL Managed Instance (et non au niveau de la ressource ou du groupe de ressources, ce qui échouerait). Cette exigence est temporaire jusqu’à ce qu’une mise à jour du code soit déployée.

Nombre de rôles développé

Si le nombre de rôles personnalisés dans votre ID Microsoft Entra n’est pas un problème, nous vous recommandons de créer un total de trois rôles. Vous avez toujours besoin du rôle « Rôle DMS - ID d’application - Secondaire », mais le rôle « Rôle DMS - ID d’application » ci-dessus est fractionné par type de ressource en deux rôles différents.

Rôle personnalisé pour l’ID d’application pour SQL Managed Instance

{
  "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>"
  ]
}

Rôle personnalisé pour l’ID d’application pour le stockage

{
  "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>"
  ]
}

Attribution de rôle

Pour affecter un rôle à des utilisateurs/ID d’application, ouvrez le portail Azure, et procédez comme suit :

  1. Accédez au groupe de ressources ou à la ressource (à l’exception du rôle qui doit être accordé sur l’abonnement), accédez à Contrôle d'accès, puis faites défiler la liste pour rechercher les rôles personnalisés que vous venez de créer.

  2. Sélectionnez le rôle approprié, sélectionnez l’ID de l’application, puis enregistrez les modifications.

Votre ou vos ID d’application s’affichent désormais sous l’onglet Attributions de rôles.

Étapes suivantes