Service Fabric-toepassing implementeren met een User-Assigned Beheerde identiteit

Als u een Service Fabric-toepassing met een beheerde identiteit wilt implementeren, moet de toepassing worden geïmplementeerd via Azure Resource Manager, meestal met een Azure Resource Manager-sjabloon. Zie Toepassingen en services beheren als Azure Resource Manager-resources voor meer informatie over het implementeren van een Service Fabric-toepassing via Azure Resource Manager.

Notitie

Toepassingen die niet zijn geïmplementeerd als een Azure-resource , kunnen geen beheerde identiteiten hebben.

Implementatie van Service Fabric-toepassingen met beheerde identiteit wordt ondersteund met API-versie "2019-06-01-preview". U kunt ook dezelfde API-versie gebruiken voor toepassingstype, toepassingstypeversie en serviceresources.

User-Assigned-identiteit

Als u de toepassing met User-Assigned-identiteit wilt inschakelen, voegt u eerst de eigenschap identity toe aan de toepassingsresource met het type userAssigned en de door de gebruiker toegewezen identiteiten waarnaar wordt verwezen. Voeg vervolgens een sectie managedIdentities toe in de sectie eigenschappen voor de toepassingsresource . Deze bevat een lijst met beschrijvende naam voor principalId-toewijzing voor elk van de door de gebruiker toegewezen identiteiten. Zie Een door de gebruiker toegewezen beheerde identiteit maken, weergeven of verwijderen voor meer informatie over door de gebruiker toegewezen identiteiten.

Toepassingsjabloon

Als u de toepassing wilt inschakelen met een door de gebruiker toegewezen identiteit, voegt u eerst de eigenschap identiteit toe aan de toepassingsresource met het type userAssigned en de door de gebruiker toegewezen identiteiten waarnaar wordt verwezen. Vervolgens voegt u een managedIdentities-object toe in de sectie properties dat een lijst met beschrijvende naam bevat aan principalId-toewijzing voor elk van de door de gebruiker toegewezen identiteiten.

{
  "apiVersion": "2019-06-01-preview",
  "type": "Microsoft.ServiceFabric/clusters/applications",
  "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[concat('Microsoft.ServiceFabric/clusters/', parameters('clusterName'), '/applicationTypes/', parameters('applicationTypeName'), '/versions/', parameters('applicationTypeVersion'))]",
    "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]"
  ],
  "identity": {
    "type" : "userAssigned",
    "userAssignedIdentities": {
        "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]": {}
    }
  },
  "properties": {
    "typeName": "[parameters('applicationTypeName')]",
    "typeVersion": "[parameters('applicationTypeVersion')]",
    "parameters": {
    },
    "managedIdentities": [
      {
        "name" : "[parameters('userAssignedIdentityName')]",
        "principalId" : "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName')), '2018-11-30').principalId]"
      }
    ]
  }
}

In het bovenstaande voorbeeld wordt de resourcenaam van de door de gebruiker toegewezen identiteit gebruikt als de beschrijvende naam van de beheerde identiteit voor de toepassing. In de volgende voorbeelden wordt ervan uitgegaan dat de werkelijke beschrijvende naam 'AdminUser' is.

Toepassingspakket

  1. Voor elke identiteit die is gedefinieerd in de managedIdentities sectie in de Azure Resource Manager-sjabloon, voegt u een <ManagedIdentity> tag toe in het toepassingsmanifest onder de sectie Principals. Het Name kenmerk moet overeenkomen met de name eigenschap die in de managedIdentities sectie is gedefinieerd.

    ApplicationManifest.xml

      <Principals>
        <ManagedIdentities>
          <ManagedIdentity Name="AdminUser" />
        </ManagedIdentities>
      </Principals>
    
  2. Voeg in de sectie ServiceManifestImport een IdentityBindingPolicy toe voor de service die gebruikmaakt van de beheerde identiteit. Met dit beleid wordt de AdminUser identiteit toegewezen aan een servicespecifieke identiteitsnaam die later moet worden toegevoegd aan het servicemanifest.

    ApplicationManifest.xml

      <ServiceManifestImport>
        <Policies>
          <IdentityBindingPolicy ServiceIdentityRef="WebAdmin" ApplicationIdentityRef="AdminUser" />
        </Policies>
      </ServiceManifestImport>
    
  3. Werk het servicemanifest bij om een ManagedIdentity toe te voegen in de sectie Resources met de naam die overeenkomt met de ServiceIdentityRef in het IdentityBindingPolicy van het toepassingsmanifest:

    ServiceManifest.xml

      <Resources>
        ...
        <ManagedIdentities DefaultIdentity="WebAdmin">
          <ManagedIdentity Name="WebAdmin" />
        </ManagedIdentities>
      </Resources>
    

Volgende stappen