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
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 . AttributetName
måste matcha egenskapenname
som definierats imanagedIdentities
avsnittet.ApplicationManifest.xml
<Principals> <ManagedIdentities> <ManagedIdentity Name="AdminUser" /> </ManagedIdentities> </Principals>
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>
Uppdatera tjänstmanifestet för att lägga till en ManagedIdentity i avsnittet Resurser med namnet som matchar
ServiceIdentityRef
iIdentityBindingPolicy
programmanifestet:ServiceManifest.xml
<Resources> ... <ManagedIdentities DefaultIdentity="WebAdmin"> <ManagedIdentity Name="WebAdmin" /> </ManagedIdentities> </Resources>