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": {}
},
}
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 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>
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
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.
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 naamWebAdmin
.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 deIdentityBindingPolicy
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.