Hinzufügen einer verwalteten Identität zu einem verwalteten Service Fabric-Clusterknotentyp

Jeder Knotentyp in einem verwalteten Service Fabric-Cluster wird von einer VM-Skalierungsgruppe unterstützt. Damit verwaltete Identitäten mit einem verwalteten Clusterknotentyp verwendet werden können, wurde den Knotentypdefinitionen die vmManagedIdentity-Eigenschaft hinzugefügt. Diese enthält eine Liste der Identitäten, die verwendet werden können (userAssignedIdentities). Die Funktionalität ähnelt der, mit der verwaltete Identitäten in nicht verwalteten Clustern verwendet werden und die Sie z. B. bei der Verwendung einer verwalteten Identität mit der Azure Key Vault-Erweiterung für VM-Skalierungsgruppen finden.

Ein Beispiel für eine Bereitstellung eines verwalteten Service Fabric-Clusters, der eine verwaltete Identität für einen Knotentyp nutzt, finden Sie in diesen Vorlagen. Das Beispiel umfasst zwei Vorlagen:

  1. Verwaltete Identität und Rollenzuweisung: Vorlage zum Erstellen der verwalteten Identität und der Rollenzuweisung, um Service Fabric RP die Zuweisung der Identität zur VM-Skalierungsgruppe des verwalteten Clusters zu ermöglichen. Diese sollte nur einmal bereitgestellt werden, bevor die verwaltete Identität für die Knotentypressource verwendet wird.

  2. Verwalteter Cluster und Knotentyp: Vorlage für den verwalteten Service Fabric-Cluster und die Knotentypenressourcen, die die zuvor erstellte verwaltete Identität nutzen

Hinweis

Für dieses Feature werden derzeit nur vom Benutzer zugewiesene Identitäten unterstützt.

Voraussetzungen

Vorbereitungen

  • Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
  • Wenn Sie PowerShell verwenden möchten, installieren Sie die Azure-Befehlszeilenschnittstelle, um CLI-Verweisbefehle auszuführen.

1. Erstellen einer Identität und Rollenzuweisung

Erstellen einer benutzerseitig zugewiesenen verwalteten Identität

Eine vom Benutzer zugewiesene verwaltete Identität kann im Abschnitt „resources“ einer Azure Resource Manager-Vorlage (ARM) für die Erstellung bei der Bereitstellung definiert werden:

{
  "type": "Microsoft.ManagedIdentity/userAssignedIdentities",
  "name": "[parameters('userAssignedIdentityName')]",
  "apiVersion": "2018-11-30",
  "location": "[resourceGroup().location]"
}

Sie kann auch mit PowerShell erstellt werden:

New-AzResourceGroup -Name <managedIdentityRGName> -Location <location>
New-AzUserAssignedIdentity -ResourceGroupName <managedIdentityRGName> -Name <userAssignedIdentityName>

Hinzufügen einer Rollenzuweisung mit dem Service Fabric-Ressourcenanbieter

Fügen Sie der verwalteten Identität mit der Service Fabric-Ressourcenanbieteranwendung eine Rollenzuweisung hinzu. Diese Zuweisung ermöglicht dem Service Fabric-Ressourcenanbieter das Zuweisen der im vorherigen Schritt erstellten Identität zur VM-Skalierungsgruppe des verwalteten Clusters. Dies ist eine einmalige Aktion.

Abrufen des Dienstprinzipals für eine Service Fabric-Ressourcenanbieteranwendung:

Login-AzAccount
Select-AzSubscription -SubscriptionId <SubId>
Get-AzADServicePrincipal -DisplayName "Azure Service Fabric Resource Provider"

Hinweis

Stellen Sie sicher, dass Sie sich im richtigen Abonnement befinden. Die Prinzipal-ID ändert sich, wenn sich das Abonnement in einem anderen Mandanten befindet.

ServicePrincipalNames : {74cb6831-0dbb-4be1-8206-fd4df301cdc2}
ApplicationId         : 74cb6831-0dbb-4be1-8206-fd4df301cdc2
ObjectType            : ServicePrincipal
DisplayName           : Azure Service Fabric Resource Provider
Id                    : 00000000-0000-0000-0000-000000000000

Verwenden Sie die ID der vorherigen Ausgabe als principalId und ggf. die Rollendefinitions-ID unten als roleDefinitionId für die Vorlage oder den PowerShell-Befehl:

Name der Rollendefinition Rollendefinitions-ID
Operator für verwaltete Identität f1a07417-d97a-45cb-824c-7a7467783830

Diese Rollenzuweisung kann im Abschnitt „resources“ der Vorlage mithilfe der Prinzipal-ID und der Rollendefinitions-ID definiert werden:

{
  "type": "Microsoft.Authorization/roleAssignments",
  "apiVersion": "2020-04-01-preview",
  "name": "[parameters('vmIdentityRoleNameGuid')]",
  "scope": "[concat('Microsoft.ManagedIdentity/userAssignedIdentities', '/', parameters('userAssignedIdentityName'))]",
  "dependsOn": [
    "[concat('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]"
  ],
  "properties": {
    "roleDefinitionId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'f1a07417-d97a-45cb-824c-7a7467783830')]",
    "principalId": "<Service Fabric Resource Provider ID>"
  }
}

Hinweis

vmIdentityRoleNameGuid muss eine gültige GUID sein. Wenn Sie die gleiche Vorlage einschließlich dieser Rollenzuweisung erneut bereitstellen, stellen Sie sicher, dass die GUID mit der ursprünglich verwendeten identisch ist, oder entfernen Sie diese Ressource, da sie nur einmal erstellt werden muss.

Sie kann auch mithilfe der Prinzipal-ID und des Rollendefinitionsnamens über PowerShell erstellt werden:

New-AzRoleAssignment -PrincipalId "<Service Fabric Resource Provider ID>" -RoleDefinitionName "Managed Identity Operator" -Scope "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<userAssignedIdentityName>"

Bereitstellen der verwalteten Identität und der Rollenzuweisung

Führen Sie das Cmdlet „New-AzResourceGroupDeployment“ aus, um die verwaltete Identität zu erstellen und die Rollenzuweisung hinzuzufügen:

New-AzResourceGroupDeployment -ResourceGroupName <managedIdentityRGName> -TemplateFile ".\MangedIdentityAndSfrpRoleAssignment.json" -TemplateParameterFile ".\MangedIdentityAndSfrpRoleAssignment.Parameters.json" -Verbose

2. Zuweisen der Identität zur Knotentypressource

Hinzufügen von Eigenschaften der verwalteten Identität zur Knotentypdefinition

Fügen Sie abschließend die Eigenschaften vmManagedIdentity und userAssignedIdentities zur Knotentypdefinition des verwalteten Clusters mit der vollständigen Ressourcen-ID der Identität hinzu, die im ersten Schritt erstellt wurde. Stellen Sie sicher, dass Sie als apiVersion2021-05-01 oder höher verwenden.

{
  "type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
  "apiVersion": "2021-05-01",
  "properties": {
    "isPrimary": true,
    "vmInstanceCount": 5,
    "dataDiskSizeGB": 100,
    "vmSize": "Standard_D2_v2",
    "vmImagePublisher": "MicrosoftWindowsServer",
    "vmImageOffer": "WindowsServer",
    "vmImageSku": "2019-Datacenter",
    "vmImageVersion": "latest",
    "vmManagedIdentity": {
      "userAssignedIdentities": [
        "[parameters('userAssignedIdentityResourceId')]"
      ]
    }
  }
}

Bereitstellen der Knotentypressource, die die Identität zu weist

Führen Sie das Cmdlet „New-AzResourceGroupDeployment“ aus, um die Vorlage für den verwalteten Service Fabric-Cluster bereitzustellen, mit der die verwaltete Identität der Knotentypressource zugewiesen wird.

New-AzResourceGroupDeployment -ResourceGroupName <sfmcRGName> -TemplateFile ".\SfmcVmMangedIdentity.json" -TemplateParameterFile ".\SfmcVmMangedIdentity.Parameters.json" -Verbose

Nach der Bereitstellung wurde die erstellte verwaltete Identität der VM-Skalierungsgruppe des angegebenen Knotentyps hinzugefügt und kann erwartungsgemäß wie in einem nicht verwalteten Cluster verwendet werden.

Problembehandlung

Wenn eine Rollenzuweisung nicht ordnungsgemäß ausgeführt werden kann, tritt bei der Bereitstellung der folgende Fehler auf:

Azure portal deployment error showing the client with SFRP's object/application ID not having permission to perform identity management activity

Stellen Sie in diesem Fall sicher, dass die Rollenzuweisung mit der Rolle „Operator für verwaltete Identität“ erfolgreich erstellt wurde. Die Rollenzuweisung finden Sie im Azure-Portal in der Zugriffssteuerung für die Ressource der verwalteten Identität, wie nachfolgend gezeigt:

Role assignment properties for Service Fabric Resource provider on the user-assigned managed identity shown in the Azure portal

Nächste Schritte