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 u kunt toewijzen aan uw container-app en andere resources. Een container-app kan meerdere door de gebruiker toegewezen identiteiten hebben. Door de gebruiker toegewezen identiteiten bestaan 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
Beheerde identiteiten in schaalregels worden niet ondersteund. U moet verbindingsreeks s of sleutels 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
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 Bicep-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 Bicep-sjabloon.
Selecteer Toevoegen op het tabblad Toegewezen gebruiker.
Zoek en selecteer de identiteit die u eerder hebt gemaakt.
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 waarde voor de type eigenschap .
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 type eigenschap .
Als u een of meer door de gebruiker toegewezen identiteiten wilt toevoegen, voegt u een identity sectie toe aan uw Bicep-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 type eigenschap .
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. Het afdwingen van een token vernieuwen wordt niet ondersteund.
Verbinding maken met 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 is beschikbaar vanuit de app met een standaard HTTP-aanvraag GET , die u kunt verzenden met een algemene HTTP-client in uw voorkeurstaal. Voor .NET, JavaScript, Java en Python biedt de Azure Identity-clientbibliotheek een abstractie over dit REST-eindpunt. U kunt verbinding maken met andere Azure-services door een referentieobject toe te voegen aan de servicespecifieke client.
Notitie
Wanneer u de Azure Identity-clientbibliotheek gebruikt, moet u expliciet de client-id van de door de gebruiker toegewezen beheerde identiteit opgeven.
Wanneer u verbinding maakt met Azure SQL-gegevensbronnen met Entity Framework Core, kunt u Overwegen Om Microsoft.Data.SqlClient te 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. Raadpleeg de volgende bronnen voor meer informatie:
De gekoppelde voorbeelden gebruiken DefaultAzureCredential. Dit object is effectief in de meeste scenario's als 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. Raadpleeg de volgende bronnen voor meer informatie:
De gekoppelde voorbeelden gebruiken DefaultAzureCredential. Dit object is effectief in de meeste scenario's als 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. Raadpleeg de volgende bronnen voor meer informatie:
De gekoppelde voorbeelden gebruiken DefaultAzureCredential. Dit object is effectief in de meeste scenario's als 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. Raadpleeg de volgende bronnen voor meer informatie:
De gekoppelde voorbeelden gebruiken DefaultAzureCredential. Dit object is effectief in de meeste scenario's als 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-aanvraag GET 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. Als u toegang wilt krijgen tot Key Vault, voegt u 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 aanvragen 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-aanvraag GET naar het eindpunt, inclusief de volgende parameters:
De versie van de token-API die moet worden gebruikt. Gebruik 2019-08-01 of hoger.
X-IDENTITY-HEADER
Koptekst
De waarde van de IDENTITY_HEADER omgevingsvariabele. Met deze header worden SSRF-aanvallen (request forgery) aan de serverzijde beperkt.
client_id
Query
(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
(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
(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 het linkernavigatievenster van de pagina van uw app omlaag naar de groep Instellingen .
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: