Een toepassing met beheerde identiteit implementeren in een beheerd Service Fabric-cluster

Als u een Service Fabric-toepassing met beheerde identiteit wilt implementeren, moet de toepassing worden geïmplementeerd via Azure Resource Manager, meestal met een Azure Resource Manager-sjabloon. Zie Een toepassing implementeren in een beheerd cluster met behulp van Azure Resource Manager 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 Managed Identity wordt ondersteund met API-versie "2021-05-01" op beheerde clusters.

Voorbeelden van beheerde clustersjablonen zijn hier beschikbaar: beheerde Service Fabric-clustersjablonen

Ondersteuning voor beheerde identiteiten in een beheerd Service Fabric-cluster

Wanneer een Service Fabric-toepassing is geconfigureerd met beheerde identiteiten voor Azure-resources en is geïmplementeerd in het cluster, wordt automatische configuratie van de Service Managed Identity Token Service geactiveerd op het beheerde Service Fabric-cluster. Deze service is verantwoordelijk voor de verificatie van Service Fabric-toepassingen met behulp van hun beheerde identiteiten en voor het verkrijgen van toegangstokens namens hen. Zodra de service is ingeschakeld, ziet u deze in Service Fabric Explorer in de sectie Systeem in het linkerdeelvenster, uitgevoerd onder de naam fabric:/System/ManagedIdentityTokenService.

Notitie

De eerste keer dat een toepassing wordt geïmplementeerd met beheerde identiteiten, verwacht u een eenmalige langere implementatie vanwege de automatische clusterconfiguratiewijziging. U kunt verwachten dat dit 15 minuten duurt voor een zonegebonden cluster tot 45 minuten voor een zone-spanningscluster. Als er andere implementaties in de vlucht zijn, moet de configuratie van de beheerde identiteit eerst wachten tot deze zijn voltooid.

Toepassingsresource biedt ondersteuning voor toewijzing van zowel SystemAssigned als UserAssigned en toewijzing, zoals weergegeven in het onderstaande fragment.

{
  "type": "Microsoft.ServiceFabric/managedclusters/applications",
  "apiVersion": "2021-05-01",
  "identity": {
    "type": "SystemAssigned",
    "userAssignedIdentities": {}
  },
}

Volledige JSON-verwijzing

Door de gebruiker toegewezen identiteit

Als u een toepassing met door de gebruiker toegewezen identiteit wilt inschakelen, voegt u eerst de identiteitseigenschap 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 die een lijst met beschrijvende naam bevat aan 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 door de gebruiker toegewezen identiteit, voegt u eerst de id-eigenschap toe aan de toepassingsresource met het type userAssigned en de door de gebruiker toegewezen identiteiten. Vervolgens voegt u een object managedIdentities toe in de eigenschappensectie met een lijst met beschrijvende naam aan principalId-toewijzing voor elk van de door de gebruiker toegewezen identiteiten.

{
  "apiVersion": "2021-05-01",
  "type": "Microsoft.ServiceFabric/managedclusters/applications",
  "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[parameters('applicationVersion')]",
    "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]"
  ],
  "identity": {
    "type" : "userAssigned",
    "userAssignedIdentities": {
        "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]": {}
    }
  },
  "properties": {
    "version": "[parameters('applicationVersion')]",
    "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 beschrijvende naam 'Beheer Gebruiker' 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 aan het toepassingsmanifest onder de sectie Principals . Het Name kenmerk moet overeenkomen met de name eigenschap die is gedefinieerd in de managedIdentities sectie.

    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. Dit beleid wijst de AdminUser identiteit toe 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 naam in het IdentityBindingPolicy toepassingsmanifest:

    ServiceManifest.xml

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

Door het systeem toegewezen beheerde identiteit

Toepassingsjabloon

Als u een toepassing met een door het systeem toegewezen beheerde identiteit wilt inschakelen, voegt u de identiteitseigenschap toe aan de toepassingsresource, met het type systemAssigned , zoals wordt weergegeven in het onderstaande voorbeeld:

    {
      "apiVersion": "2021-05-01",
      "type": "Microsoft.ServiceFabric/managedclusters/applications",
      "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
      "location": "[resourceGroup().location]",
      "dependsOn": [
        "[concat('Microsoft.ServiceFabric/clusters/', parameters('clusterName'), '/applicationTypes/', parameters('applicationTypeName'), '/versions/', parameters('applicationTypeVersion'))]"
      ],
      "identity": {
        "type" : "systemAssigned"
      },
      "properties": {
        "typeName": "[parameters('applicationTypeName')]",
        "typeVersion": "[parameters('applicationTypeVersion')]",
        "parameters": {
        }
      }
    }

Deze eigenschap declareert (aan Azure Resource Manager, respectievelijk de beheerde identiteit en Service Fabric-resourceproviders) dat deze resource een impliciete (system assigned) beheerde identiteit heeft.

Toepassings- en servicepakket

  1. Werk het toepassingsmanifest bij om een ManagedIdentity-element toe te voegen in de sectie Principals , die één vermelding bevat, zoals hieronder wordt weergegeven:

    ApplicationManifest.xml

    <Principals>
      <ManagedIdentities>
        <ManagedIdentity Name="SystemAssigned" />
      </ManagedIdentities>
    </Principals>
    

    Hiermee wordt de identiteit toegewezen aan de toepassing als een resource toegewezen aan een beschrijvende naam, voor verdere toewijzing aan de services die de toepassing omvat.

  2. Voeg in de sectie ServiceManifestImport die overeenkomt met de service waaraan de beheerde identiteit wordt toegewezen, een IdentityBindingPolicy-element toe, zoals hieronder wordt aangegeven:

    ApplicationManifest.xml

      <ServiceManifestImport>
        <Policies>
          <IdentityBindingPolicy ServiceIdentityRef="WebAdmin" ApplicationIdentityRef="SystemAssigned" />
        </Policies>
      </ServiceManifestImport>
    

    Dit element wijst de identiteit van de toepassing toe aan de service; zonder deze toewijzing heeft de service geen toegang tot de identiteit van de toepassing. In het bovenstaande fragment wordt de SystemAssigned identiteit (een gereserveerd trefwoord) toegewezen aan de definitie van de service onder de beschrijvende naam WebAdmin.

  3. Werk het servicemanifest bij om een ManagedIdentity-element toe te voegen in de sectie Resources met de naam die overeenkomt met de waarde van de ServiceIdentityRef instelling uit de IdentityBindingPolicy definitie in het toepassingsmanifest:

    ServiceManifest.xml

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

    Dit is de equivalente toewijzing van een identiteit aan een service, zoals hierboven beschreven, maar vanuit het perspectief van de servicedefinitie. Hier wordt naar de identiteit verwezen met de beschrijvende naam (WebAdmin), zoals gedeclareerd in het toepassingsmanifest.

Volgende stappen