Met een beheerde identiteit van Microsoft Entra ID heeft uw container-app toegang tot andere met Microsoft Entra beveiligde resources. Zie Beheerde identiteiten voor Azure-resources voor meer informatie over beheerde identiteiten in Microsoft Entra ID.
Aan uw container-app kunnen twee typen identiteiten worden toegekend:
Een door het systeem toegewezen identiteit is gekoppeld aan uw container-app en wordt verwijderd wanneer uw container-app wordt verwijderd. Een app kan slechts één door het systeem toegewezen identiteit hebben.
Een door de gebruiker toegewezen identiteit is een zelfstandige Azure-resource die kan worden toegewezen aan uw container-app en andere resources. Een container-app kan meerdere door de gebruiker toegewezen identiteiten hebben. De identiteit bestaat totdat u ze verwijdert.
Uw app maakt verbinding met resources met de beheerde identiteit. U hoeft geen referenties in uw container-app te beheren.
U kunt op rollen gebaseerd toegangsbeheer gebruiken om specifieke machtigingen te verlenen aan een beheerde identiteit.
Door het systeem toegewezen identiteiten worden automatisch gemaakt en beheerd. Ze worden verwijderd wanneer uw container-app wordt verwijderd.
U kunt door de gebruiker toegewezen identiteiten toevoegen en verwijderen en deze toewijzen aan meerdere resources. Ze zijn onafhankelijk van de levenscyclus van uw container-app.
Door het systeem toegewezen identiteiten zijn het meest geschikt voor workloads die:
zijn opgenomen in één resource
onafhankelijke identiteiten nodig hebben
Door de gebruiker toegewezen identiteiten zijn ideaal voor workloads die:
worden uitgevoerd op meerdere resources en kunnen één identiteit delen
moet vooraf worden geautoriseerd voor een beveiligde resource
Beperkingen
Het gebruik van beheerde identiteiten in schaalregels wordt niet ondersteund. U moet nog steeds de verbindingsreeks of sleutel opnemen in de secretRef schaalregel.
Init-containers hebben geen toegang tot beheerde identiteiten.
Beheerde identiteiten configureren
U kunt uw beheerde identiteiten configureren via:
de Azure Portal
de Azure CLI
uw ARM-sjabloon (Azure Resource Manager)
Wanneer een beheerde identiteit wordt toegevoegd, verwijderd of gewijzigd in een actieve container-app, wordt de app niet automatisch opnieuw opgestart en wordt er geen nieuwe revisie gemaakt.
Notitie
Wanneer u een beheerde identiteit toevoegt aan een container-app die vóór 11 april 2022 is geïmplementeerd, moet u een nieuwe revisie maken.
Een door het systeem toegewezen identiteit toevoegen
Schuif in de linkernavigatiebalk van de pagina van de container-app omlaag naar de Instellingen groep.
Selecteer Identiteit.
Schakel op het tabblad Door systeem toegewezen status over naar Aan. Selecteer Opslaan.
Voer de az containerapp identity assign opdracht uit om een door het systeem toegewezen identiteit te maken:
az containerapp identity assign --name myApp --resource-group myResourceGroup --system-assigned
Een ARM-sjabloon kan worden gebruikt om de implementatie van uw container-app en -resources te automatiseren. Als u een door het systeem toegewezen identiteit wilt toevoegen, voegt u een identity sectie toe aan uw ARM-sjabloon.
"identity": {
"type": "SystemAssigned"
}
Als u het door het systeem toegewezen type toevoegt, geeft Azure de opdracht om de identiteit voor uw toepassing te maken en te beheren. Zie ARM API-specificatie voor een volledig voorbeeld van een ARM-sjabloon.
Sommige Azure CLI-opdrachten, waaronder az containerapp create en az containerapp job create, ondersteunen YAML-bestanden voor invoer. Als u een door het systeem toegewezen identiteit wilt toevoegen, voegt u een identity sectie toe aan uw YAML-bestand.
identity:
type: SystemAssigned
Als u het door het systeem toegewezen type toevoegt, geeft Azure de opdracht om de identiteit voor uw toepassing te maken en te beheren. Zie ARM API-specificatie voor een volledig voorbeeld van een YAML-sjabloon.
Een door de gebruiker toegewezen identiteit toevoegen
Schuif in de linkernavigatiebalk voor de pagina van de container-app omlaag naar de Instellingen groep.
Selecteer Identiteit.
Selecteer Toevoegen op het tabblad Toegewezen gebruiker.
Zoek naar de identiteit die u eerder hebt gemaakt en selecteer deze. Selecteer Toevoegen.
Maak een door de gebruiker toegewezen identiteit.
az identity create --resource-group <GROUP_NAME> --name <IDENTITY_NAME> --output json
Noteer de id eigenschap van de nieuwe identiteit.
Voer de az containerapp identity assign opdracht uit om de identiteit toe te wijzen aan de app. De parameter identiteiten is een door spaties gescheiden lijst.
Vervang door <IDENTITY_RESOURCE_ID> de id eigenschap van de identiteit. Als u meer dan één door de gebruiker toegewezen identiteit wilt toewijzen, geeft u een door ruimte gescheiden lijst met identiteits-id's op aan de --user-assigned parameter.
Als u een of meer door de gebruiker toegewezen identiteiten wilt toevoegen, voegt u een identity sectie toe aan uw ARM-sjabloon. Vervang en <IDENTITY2_RESOURCE_ID> door <IDENTITY1_RESOURCE_ID> de resource-id's van de identiteiten die u wilt toevoegen.
Geef elke door de gebruiker toegewezen identiteit op door een item toe te voegen aan het userAssignedIdentities object met de resource-id van de identiteit als sleutel. Gebruik een leeg object als de waarde.
Een toepassing kan zowel door het systeem toegewezen als door de gebruiker toegewezen identiteiten tegelijk hebben. In dit geval is SystemAssigned,UserAssignedde typeeigenschap .
Als u een of meer door de gebruiker toegewezen identiteiten wilt toevoegen, voegt u een identity sectie toe aan uw YAML-configuratiebestand. Vervang en <IDENTITY2_RESOURCE_ID> door <IDENTITY1_RESOURCE_ID> de resource-id's van de identiteiten die u wilt toevoegen.
Geef elke door de gebruiker toegewezen identiteit op door een item toe te voegen aan het userAssignedIdentities object met de resource-id van de identiteit als sleutel. Gebruik een leeg object als de waarde.
Een toepassing kan zowel door het systeem toegewezen als door de gebruiker toegewezen identiteiten tegelijk hebben. In dit geval is SystemAssigned,UserAssignedde typeeigenschap .
De back-endservices voor beheerde identiteiten onderhouden ongeveer 24 uur een cache per resource-URI. Als u het toegangsbeleid van een bepaalde doelresource bijwerkt en onmiddellijk een token voor die resource ophaalt, kunt u een token in de cache met verouderde machtigingen blijven ophalen totdat dat token verloopt. Er is momenteel geen manier om een tokenvernieuwing af te dwingen.
Verbinding maken naar Azure-services in app-code
Met beheerde identiteiten kan een app tokens verkrijgen voor toegang tot Azure-resources die gebruikmaken van Microsoft Entra-id, zoals Azure SQL Database, Azure Key Vault en Azure Storage. Deze tokens vertegenwoordigen de toepassing die toegang heeft tot de resource en niet een specifieke gebruiker van de toepassing.
Container Apps biedt een intern toegankelijk REST-eindpunt om tokens op te halen. Het REST-eindpunt kan worden geopend vanuit de app met een standaard HTTP GET, die kan worden geïmplementeerd met een algemene HTTP-client in elke taal. Voor .NET, JavaScript, Java en Python biedt de Azure Identity-clientbibliotheek een abstractie over dit REST-eindpunt. Verbinding maken aan andere Azure-services is net zo eenvoudig als het toevoegen van een referentieobject aan de servicespecifieke client.
Notitie
Wanneer u de Azure Identity-clientbibliotheek gebruikt, moet de client-id van de door de gebruiker toegewezen beheerde identiteit worden opgegeven.
Wanneer u verbinding maakt met Azure SQL-gegevensbronnen met Entity Framework Core, kunt u Microsoft.Data.SqlClient gebruiken. Dit biedt speciale verbindingsreeks s voor connectiviteit met beheerde identiteiten.
Voor .NET-apps is de eenvoudigste manier om met een beheerde identiteit te werken via de Azure Identity-clientbibliotheek voor .NET. Zie de respectieve documentatiekoppen van de clientbibliotheek voor informatie:
De gekoppelde voorbeelden gebruiken DefaultAzureCredential. Dit is handig voor de meeste scenario's omdat hetzelfde patroon werkt in Azure (met beheerde identiteiten) en op uw lokale computer (zonder beheerde identiteiten).
Voor Node.js-apps is de eenvoudigste manier om met een beheerde identiteit te werken via de Azure Identity-clientbibliotheek voor JavaScript. Zie de respectieve documentatiekoppen van de clientbibliotheek voor informatie:
De gekoppelde voorbeelden gebruiken DefaultAzureCredential. Dit is handig voor de meeste scenario's omdat hetzelfde patroon werkt in Azure (met beheerde identiteiten) en op uw lokale computer (zonder beheerde identiteiten).
Voor Python-apps is de eenvoudigste manier om met een beheerde identiteit te werken via de Azure Identity-clientbibliotheek voor Python. Zie de respectieve documentatiekoppen van de clientbibliotheek voor informatie:
De gekoppelde voorbeelden gebruiken DefaultAzureCredential. Dit is handig voor de meeste scenario's omdat hetzelfde patroon werkt in Azure (met beheerde identiteiten) en op uw lokale computer (zonder beheerde identiteiten).
Voor Java-apps en -functies is de eenvoudigste manier om met een beheerde identiteit te werken via de Azure Identity-clientbibliotheek voor Java. Zie de respectieve documentatiekoppen van de clientbibliotheek voor informatie:
De gekoppelde voorbeelden gebruiken DefaultAzureCredential. Dit is handig voor de meeste scenario's omdat hetzelfde patroon werkt in Azure (met beheerde identiteiten) en op uw lokale computer (zonder beheerde identiteiten).
Gebruik het volgende script om een token op te halen van het lokale eindpunt door een resource-URI van een Azure-service op te geven. Vervang de tijdelijke aanduiding door de resource-URI om het token te verkrijgen.
Een onbewerkte HTTP GET-aanvraag ziet eruit als in het volgende voorbeeld.
Haal de eindpunt-URL van het token op uit de IDENTITY_ENDPOINT omgevingsvariabele. x-identity-header bevat de GUID die is opgeslagen in de IDENTITY_HEADER omgevingsvariabele.
GET http://localhost:42356/msi/token?resource=https://vault.azure.net&api-version=2019-08-01 HTTP/1.1
x-identity-header: 853b9a84-5bfa-4b22-a3f3-0b9a43d9ad8a
Dit antwoord is hetzelfde als het antwoord voor de toegangstokenaanvraag van Microsoft Entra-service-naar-service. Voor toegang tot Key Vault voegt u vervolgens de waarde toe van access_token een clientverbinding met de kluis.
REST-eindpuntreferentie
Een container-app met een beheerde identiteit maakt het identiteitseindpunt beschikbaar door twee omgevingsvariabelen te definiëren:
IDENTITY_ENDPOINT - lokale URL van waaruit uw container-app tokens kan aanvragen.
IDENTITY_HEADER - een header die wordt gebruikt om aanvragenvervalsing (SSRF) aan de serverzijde te beperken. De waarde wordt gedraaid door het platform.
Als u een token voor een resource wilt ophalen, maakt u een HTTP GET-aanvraag naar het eindpunt, met inbegrip van de volgende parameters:
De versie van de token-API die moet worden gebruikt. Gebruik 2019-08-01 of hoger.
X-IDENTITY-HEADER
Kop
De waarde van de IDENTITY_HEADER omgevingsvariabele. Met deze header worden SSRF-aanvallen (request forgery) aan de serverzijde beperkt.
client_id
Query’s uitvoeren
(Optioneel) De client-id van de door de gebruiker toegewezen identiteit die moet worden gebruikt. Kan niet worden gebruikt voor een aanvraag met principal_id, mi_res_idof object_id. Als alle id-parameters (client_id, principal_id, object_iden mi_res_id) worden weggelaten, wordt de door het systeem toegewezen identiteit gebruikt.
principal_id
Query’s uitvoeren
(Optioneel) De principal-id van de door de gebruiker toegewezen identiteit die moet worden gebruikt. object_id is een alias die in plaats daarvan kan worden gebruikt. Kan niet worden gebruikt voor een aanvraag met client_id, mi_res_id of object_id. Als alle id-parameters (client_id, principal_id, object_iden mi_res_id) worden weggelaten, wordt de door het systeem toegewezen identiteit gebruikt.
mi_res_id
Query’s uitvoeren
(Optioneel) De Azure-resource-id van de door de gebruiker toegewezen identiteit die moet worden gebruikt. Kan niet worden gebruikt voor een aanvraag met principal_id, client_idof object_id. Als alle id-parameters (client_id, principal_id, object_iden mi_res_id) worden weggelaten, wordt de door het systeem toegewezen identiteit gebruikt.
Belangrijk
Als u tokens probeert te verkrijgen voor door de gebruiker toegewezen identiteiten, moet u een van de optionele eigenschappen opnemen. Anders probeert de tokenservice een token te verkrijgen voor een door het systeem toegewezen identiteit, die al dan niet bestaat.
Beheerde identiteiten weergeven
U kunt de door het systeem toegewezen en door de gebruiker toegewezen beheerde identiteiten weergeven met behulp van de volgende Azure CLI-opdracht. In de uitvoer ziet u het type beheerde identiteit, tenant-id's en principal-id's van alle beheerde identiteiten die zijn toegewezen aan uw container-app.
az containerapp identity show --name <APP_NAME> --resource-group <GROUP_NAME>
Een beheerde identiteit verwijderen
Wanneer u een door het systeem toegewezen identiteit verwijdert, wordt deze verwijderd uit de Microsoft Entra-id. Door het systeem toegewezen identiteiten worden ook automatisch verwijderd uit Microsoft Entra ID wanneer u de container-app-resource zelf verwijdert. Als u door de gebruiker toegewezen beheerde identiteiten verwijdert uit uw container-app, worden deze niet uit Microsoft Entra-id verwijderd.
Schuif in de linkernavigatiebalk van de pagina van uw app omlaag naar de Instellingen groep.
Selecteer Identiteit. Volg vervolgens de stappen op basis van het identiteitstype:
Door het systeem toegewezen identiteit: schakel op het tabblad Door systeem toegewezen status over op Uit. Selecteer Opslaan.
Door de gebruiker toegewezen identiteit: selecteer het tabblad Door de gebruiker toegewezen , schakel het selectievakje voor de identiteit in en selecteer Verwijderen. Selecteer Ja om te bevestigen.
De door het systeem toegewezen identiteit verwijderen:
az containerapp identity remove --name <APP_NAME> --resource-group <GROUP_NAME> --system-assigned
Een of meer door de gebruiker toegewezen identiteiten verwijderen: