Benutzerdefinierte Rollen für Onlinemigrationsvorgänge von SQL Server zu verwalteten Azure SQL-Instanzen

In Azure Database Migration Service wird zur Interaktion mit Azure-Diensten eine App-ID verwendet. Die App-ID erfordert die Rolle „Mitwirkender“ auf Abonnementebene (durch die Sicherheitsabteilungen vieler Unternehmen nicht zugelassen) oder die Erstellung benutzerdefinierter Rollen, die die spezifischen für Azure Database Migration Service erforderlichen Berechtigungen gewähren. Da es eine Beschränkung von 2.000 benutzerdefinierten Rollen in der Microsoft Entra-ID gibt, sollten Sie alle Berechtigungen kombinieren, die speziell von der APP-ID in einer oder zwei benutzerdefinierten Rollen erforderlich sind, und dann der APP-ID die benutzerdefinierte Rolle für bestimmte Objekte oder Ressourcengruppen (vs. auf Abonnementebene) erteilen. Wenn die Anzahl der benutzerdefinierten Rollen nicht von Bedeutung ist, können Sie die benutzerdefinierten Rollen nach Ressourcentyp aufteilen und wie nachfolgend beschrieben insgesamt drei benutzerdefinierte Rollen erstellen.

Im Abschnitt „AssignableScopes“ der JSON-Zeichenfolge der Rollendefinition können Sie festlegen, wo die Berechtigungen in der Benutzeroberfläche Rollenzuweisung hinzufügen im Portal angezeigt werden. Es empfiehlt sich, die Rollen auf Ressourcengruppen- oder sogar Ressourcenebene zu definieren, um zu vermeiden, dass die Benutzeroberfläche durch zusätzliche Rollen unübersichtlich wird. Beachten Sie, dass dadurch nicht die eigentliche Rollenzuweisung erfolgt.

Mindestanzahl von Rollen

Derzeit wird empfohlen, mindestens zwei benutzerdefinierte Rollen für die App-ID zu erstellen: eine auf Ressourcenebene und eine auf Abonnementebene.

Hinweis

Die Anforderung für die letzte benutzerdefinierte Rolle kann zu einem bestimmten Zeitpunkt nicht mehr nötig sein, da neuer Code für die verwaltete SQL-Instanz in Azure bereitgestellt wird.

Benutzerdefinierte Rolle für die App-ID: Diese Rolle ist für die Migration des Azure-Datenbankmigrationsdiensts auf Ressourcen - oder Ressourcengruppenebene erforderlich, die den Azure-Datenbankmigrationsdienst hostet (weitere Informationen zur APP-ID finden Sie im Artikel Verwenden des Portals zum Erstellen einer Microsoft Entra-Anwendung und eines Dienstprinzipals, der auf Ressourcen zugreifen kann).

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

Benutzerdefinierte Rolle für die App-ID – Abonnement: Diese Rolle ist für die Azure Database Migration Service-Migration auf der Abonnementebene erforderlich, die die SQL Managed Instance-Instanz hostet.

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

Der JSON-Code oben muss in zwei Textdateien gespeichert werden. Sie können die Rollen mithilfe der PowerShell-Cmdlets AzureRM oder Az oder über die Azure CLI unter Verwendung von New-AzureRmRoleDefinition (AzureRM) bzw. New-AzRoleDefinition (Az) erstellen.

Weitere Informationen finden Sie im Artikel Benutzerdefinierte Azure-Rollen.

Nach dem Erstellen dieser benutzerdefinierten Rollen müssen Sie den Benutzern und App-IDs für die entsprechenden Ressourcen oder Ressourcengruppen Rollenzuweisungen hinzufügen:

  • Die Rolle „DMS Role – App ID“ muss der App-ID, die für die Migrationsvorgänge verwendet wird, sowie auf den Ressourcenebenen des Speicherkontos, der Azure Database Migration Service-Instanz und der verwalteten SQL-Instanz zugewiesen werden. Sie wird auf der Ressourcen- oder Ressourcengruppenebene zugewiesen, die den Azure Database Migration Service hostet.
  • Die Rolle „DMS Role – App ID – Sub“ muss der App-ID auf der Abonnementebene zugewiesen werden, die die SQL Managed Instance-Instanz hostet (bei der Zuweisung auf Ressourcen- oder Ressourcengruppenebene treten Fehler auf). Diese Anforderung gilt, bis ein Codeupdate bereitgestellt wurde.

Erweiterte Anzahl von Rollen

Wenn die Anzahl der benutzerdefinierten Rollen in Ihrer Microsoft Entra-ID kein Problem darstellt, empfehlen wir, insgesamt drei Rollen zu erstellen. Sie benötigen weiterhin die Rolle „DMS Role – App ID – Sub“, die Rolle „DMS Role – App ID“ von oben wird jedoch nach Ressourcentyp in zwei verschiedene Rollen aufgeteilt.

Benutzerdefinierte Rolle für die App-ID für die verwaltete SQL-Instanz

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

Benutzerdefinierte Rolle für die App-ID für den Speicher

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

Rollenzuweisung

Um Benutzern oder einer App-ID eine Rolle zuzuweisen, öffnen Sie das Azure-Portal, und führen Sie die folgenden Schritte aus:

  1. Navigieren Sie zu der entsprechenden Ressourcengruppe oder Ressource (mit Ausnahme der Rolle, die für das Abonnement zugewiesen werden muss), wechseln Sie zu Zugriffssteuerung, und scrollen Sie zu den soeben erstellten Rollen.

  2. Wählen Sie die entsprechende Rolle und dann die App-ID aus, und speichern Sie die Änderungen.

Die App-IDs werden nun auf der Registerkarte Rollenzuweisungen angezeigt.

Nächste Schritte