Dela via


Distribuera Service Fabric-program med systemtilldelad hanterad identitet

Kommentar

Det går inte att aktivera identiteter för en befintlig app som ursprungligen distribuerades med Hjälp av Azure-cmdletar.

För att få åtkomst till funktionen för hanterad identitet för Azure Service Fabric-program måste du först aktivera tjänsten för hanterad identitetstoken i klustret. Den här tjänsten ansvarar för autentisering av Service Fabric-program med hjälp av deras hanterade identiteter och för att få åtkomsttoken för deras räkning. När tjänsten är aktiverad kan du se den i Service Fabric Explorer under avsnittet System i den vänstra rutan, som körs under namnet fabric:/System/ManagedIdentityTokenService bredvid andra systemtjänster.

Kommentar

Distribution av Service Fabric-program med hanterade identiteter stöds från och med API-version "2019-06-01-preview". Du kan också använda samma API-version för programtyp, programtypsversion och tjänstresurser. Den lägsta Service Fabric-körningen som stöds är 6,5 CU2. Dessutom bör bygg-/paketmiljön också ha Service Fabric .NET SDK vid CU2 eller högre

Systemtilldelad hanterad identitet

Programmall

Om du vill aktivera ett program med en systemtilldelad hanterad identitet lägger du till identitetsegenskapen i programresursen, med typen systemTilldelad enligt exemplet nedan:

    {
      "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'))]"
      ],
      "identity": {
        "type" : "systemAssigned"
      },
      "properties": {
        "typeName": "[parameters('applicationTypeName')]",
        "typeVersion": "[parameters('applicationTypeVersion')]",
        "parameters": {
        }
      }
    }

Den här egenskapen deklarerar (till Azure Resource Manager och resursprovidrar för hanterad identitet respektive Service Fabric-resursproviders att den här resursen ska ha en implicit (system assigned) hanterad identitet.

Program- och tjänstpaket

  1. Uppdatera programmanifestet för att lägga till ett ManagedIdentity-element i avsnittet Principals som innehåller en enda post enligt nedan:

    ApplicationManifest.xml

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

    Detta mappar den identitet som tilldelats programmet som en resurs till ett eget namn, för ytterligare tilldelning till de tjänster som ingår i programmet.

  2. I avsnittet ServiceManifestImport som motsvarar tjänsten som tilldelas den hanterade identiteten lägger du till ett IdentityBindingPolicy-element enligt nedan:

    ApplicationManifest.xml

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

    Det här elementet tilldelar programmets identitet till tjänsten. utan den här tilldelningen kommer tjänsten inte att kunna komma åt programmets identitet. I kodfragmentet ovan mappas identiteten SystemAssigned (som är ett reserverat nyckelord) till tjänstens definition under det egna namnet WebAdmin.

  3. Uppdatera tjänstmanifestet för att lägga till ett ManagedIdentity-element i avsnittet Resurser med namnet som matchar värdet ServiceIdentityRef för inställningen från IdentityBindingPolicy definitionen i programmanifestet:

    ServiceManifest.xml

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

    Det här är motsvarande mappning av en identitet till en tjänst enligt beskrivningen ovan, men ur tjänstdefinitionens perspektiv. Identiteten refereras här med sitt eget namn (WebAdmin), enligt beskrivningen i programmanifestet.

Nästa steg