Dela via


Distribuera Service Fabric-program med användartilldelad hanterad identitet

För att distribuera ett Service Fabric-program med hanterad identitet måste programmet distribueras via Azure Resource Manager, vanligtvis med en Azure Resource Manager-mall. Mer information om hur du distribuerar Service Fabric-program via Azure Resource Manager finns i Hantera program och tjänster som Azure Resource Manager-resurser.

Kommentar

Program som inte distribueras som en Azure-resurs kan inte ha hanterade identiteter.

Distribution av Service Fabric-program med hanterad identitet stöds med API-versionen "2019-06-01-preview". Du kan också använda samma API-version för programtyp, programtypsversion och tjänstresurser.

Användartilldelad identitet

Om du vill aktivera programmet med användartilldelad identitet lägger du först till identitetsegenskapen i programresursen med typen userAssigned och de användartilldelade identiteterna. Lägg sedan till ett managedIdentities-avsnitt i egenskapsavsnittet för programresursen som innehåller en lista med eget namn till principalId-mappning för var och en av de användartilldelade identiteterna. Mer information om användartilldelade identiteter finns i Skapa, lista eller ta bort en användartilldelad hanterad identitet.

Programmall

Om du vill aktivera programmet med användartilldelad identitet lägger du först till identitetsegenskapen till programresursen med typen userAssigned och de användartilldelade identiteterna och lägger sedan till ett managedIdentities-objekt i egenskapsavsnittet som innehåller en lista med eget namn till principalId-mappning för var och en av de användartilldelade identiteterna.

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

I exemplet ovan används resursnamnet för den användartilldelade identiteten som eget namn på den hanterade identiteten för programmet. I följande exempel förutsätts att det faktiska egna namnet är "AdminUser".

Programpaket

  1. För varje identitet som definieras i managedIdentities avsnittet i Azure Resource Manager-mallen lägger du till en <ManagedIdentity> tagg i programmanifestet under avsnittet Huvudnamn . Attributet Name måste matcha egenskapen name som definierats i managedIdentities avsnittet.

    ApplicationManifest.xml

      <Principals>
        <ManagedIdentities>
          <ManagedIdentity Name="AdminUser" />
        </ManagedIdentities>
      </Principals>
    
  2. I avsnittet ServiceManifestImport lägger du till en IdentityBindingPolicy för tjänsten som använder den hanterade identiteten. Den här principen mappar identiteten AdminUser till ett tjänstspecifikt identitetsnamn som måste läggas till i tjänstmanifestet senare.

    ApplicationManifest.xml

      <ServiceManifestImport>
        <Policies>
          <IdentityBindingPolicy ServiceIdentityRef="WebAdmin" ApplicationIdentityRef="AdminUser" />
        </Policies>
      </ServiceManifestImport>
    
  3. Uppdatera tjänstmanifestet för att lägga till en ManagedIdentity i avsnittet Resurser med namnet som matchar ServiceIdentityRef i IdentityBindingPolicy programmanifestet:

    ServiceManifest.xml

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

Nästa steg