Een Service Fabric-toepassing implementeren met door een gebruiker toegewezen beheerde identiteit
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 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 Managed Identity wordt ondersteund met API-versie "2019-06-01-preview"
. U kunt ook dezelfde API-versie gebruiken voor toepassingstype, toepassingstypeversie en servicebronnen.
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": "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 beschrijvende naam AdminUser is.
Toepassingspakket
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 . HetName
kenmerk moet overeenkomen met dename
eigenschap die is gedefinieerd in demanagedIdentities
sectie.ApplicationManifest.xml
<Principals> <ManagedIdentities> <ManagedIdentity Name="AdminUser" /> </ManagedIdentities> </Principals>
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>
Werk het servicemanifest bij om een ManagedIdentity toe te voegen in de sectie Resources met de naam die overeenkomt met de
ServiceIdentityRef
naam in hetIdentityBindingPolicy
toepassingsmanifest:ServiceManifest.xml
<Resources> ... <ManagedIdentities DefaultIdentity="WebAdmin"> <ManagedIdentity Name="WebAdmin" /> </ManagedIdentities> </Resources>