Delen via


Beheerde identiteiten in Azure Container Apps

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.

Waarom een beheerde identiteit gebruiken?

U kunt een beheerde identiteit in een actieve container-app gebruiken om te verifiëren bij elke service die ondersteuning biedt voor Microsoft Entra-verificatie.

Met beheerde identiteiten:

  • 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.
  • U kunt beheerde identiteit gebruiken om te verifiëren met een privé-Azure Container Registry zonder gebruikersnaam en wachtwoord om containers voor uw container-app op te halen.
  • U kunt een beheerde identiteit gebruiken om verbindingen te maken voor toepassingen met Dapr-functionaliteit via Dapr-onderdelen

Veelvoorkomende toepassingen

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

Init-containers hebben geen toegang tot beheerde identiteiten in omgevingen met alleen verbruik en toegewezen workloadprofielomgevingen

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

  1. Ga naar uw container-app in Azure Portal.

  2. Selecteer Identiteit in de groep Instellingen.

  3. Schakel op het tabblad Door systeem toegewezen status over naar Aan.

  4. Selecteer Opslaan.

Schermopname van door het systeem toegewezen identiteiten.

Een door de gebruiker toegewezen identiteit toevoegen

Voor het configureren van een container-app met een door de gebruiker toegewezen identiteit moet u eerst de identiteit maken en vervolgens de resource-id toevoegen aan de configuratie van uw container-app. U kunt door de gebruiker toegewezen identiteiten maken via Azure Portal of de Azure CLI. Zie Door de gebruiker toegewezen beheerde identiteiten beheren voor meer informatie over het maken en beheren van door de gebruiker toegewezen identiteiten.

Eerst moet u een door de gebruiker toegewezen identiteitsresource maken.

  1. Maak een door de gebruiker toegewezen beheerde identiteitresource volgens de stappen in Door de gebruiker toegewezen beheerde identiteiten beheren.

  2. Ga naar uw container-app in Azure Portal.

  3. Selecteer Identiteit in de groep Instellingen.

  4. Selecteer Toevoegen op het tabblad Toegewezen gebruiker.

  5. Zoek en selecteer de identiteit die u eerder hebt gemaakt.

  6. Selecteer Toevoegen.

Schermopname van door de gebruiker toegewezen identiteiten.

Een doelresource configureren

Voor sommige resources moet u roltoewijzingen configureren voor de beheerde identiteit van uw app om toegang te verlenen. Anders worden aanroepen van uw app naar services, zoals Azure Key Vault en Azure SQL Database, geweigerd, zelfs wanneer u een geldig token voor die identiteit gebruikt. Zie Wat is RBAC?voor meer informatie over op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC). Zie Azure-services die ondersteuning bieden voor Microsoft Entra-verificatie voor meer informatie over welke resources Ondersteuning bieden voor Microsoft Entra-tokens.

Belangrijk

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.

Notitie

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).

Beheerde identiteit gebruiken voor schaalregels

U kunt beheerde identiteiten in uw schaalregels gebruiken om te verifiëren met Azure-services die beheerde identiteiten ondersteunen. Als u een beheerde identiteit in uw schaalregel wilt gebruiken, gebruikt u de identity eigenschap in plaats van de auth eigenschap in uw schaalregel. Acceptabele waarden voor de eigenschap zijn de Azure-resource-id van een door de identity gebruiker toegewezen identiteit of system om een door het systeem toegewezen identiteit te gebruiken.

Notitie

Verificatie van beheerde identiteit in schaalregels is in openbare preview. Deze is beschikbaar in API-versie 2024-02-02-preview.

In het volgende ARM-sjabloonvoorbeeld ziet u hoe u een beheerde identiteit gebruikt met een Azure Queue Storage-schaalregel:

Het wachtrijopslagaccount gebruikt de accountName eigenschap om het opslagaccount te identificeren, terwijl de identity eigenschap aangeeft welke beheerde identiteit moet worden gebruikt. U hoeft de auth eigenschap niet te gebruiken.

"scale": {
    "minReplicas": 1,
    "maxReplicas": 10,
    "rules": [{
        "name": "myQueueRule",
        "azureQueue": {
            "accountName": "mystorageaccount",
            "queueName": "myqueue",
            "queueLength": 2,
            "identity": "<IDENTITY1_RESOURCE_ID>"
        }
    }]
}

Zie Schaalregels instellen in Azure Container Apps voor meer informatie over het gebruik van beheerde identiteiten met schaalregels.

Beschikbaarheid van beheerde identiteit beheren

Met Container Apps kunt u init-containers en hoofdcontainers opgeven. Standaard kunnen zowel hoofd- als init-containers in een omgeving met werkbelastingsprofielen voor verbruik beheerde identiteiten gebruiken voor toegang tot andere Azure-services. In omgevingen met alleen verbruik en toegewezen workloadprofielomgevingen kunnen alleen hoofdcontainers beheerde identiteit gebruiken. Toegangstokens voor beheerde identiteiten zijn beschikbaar voor elke beheerde identiteit die is geconfigureerd in de container-app. In sommige gevallen is echter alleen de init-container of de hoofdcontainer toegangstokens vereist voor een beheerde identiteit. In andere gevallen kunt u een beheerde identiteit alleen gebruiken om toegang te krijgen tot uw Azure Container Registry om de containerinstallatiekopie op te halen en hoeft uw toepassing zelf geen toegang te hebben tot uw Azure Container Registry.

Vanaf API-versie 2024-02-02-previewkunt u bepalen welke beheerde identiteiten beschikbaar zijn voor uw container-app tijdens de init- en hoofdfasen om het beveiligingsprincipe van minimale bevoegdheden te volgen. De volgende opties zijn beschikbaar:

  • Init: alleen beschikbaar voor init-containers. Gebruik dit wanneer u een initialisatiewerk wilt uitvoeren waarvoor een beheerde identiteit is vereist, maar u de beheerde identiteit niet meer nodig hebt in de hoofdcontainer. Deze optie wordt momenteel alleen ondersteund in verbruiksomgevingen voor werkbelastingprofielen
  • Main: Alleen beschikbaar voor hoofdcontainers. Gebruik deze optie als uw init-container geen beheerde identiteit nodig heeft.
  • All: Beschikbaar voor alle containers. Deze waarde is de standaardinstelling.
  • None: Niet beschikbaar voor containers. Gebruik deze optie wanneer u een beheerde identiteit hebt die alleen wordt gebruikt voor het ophalen, schalen van ACR-installatiekopieën of Key Vault-geheimen en die niet beschikbaar hoeft te zijn voor de code die wordt uitgevoerd in uw containers.

In het volgende ARM-sjabloonvoorbeeld ziet u hoe u een container-app configureert in een verbruiksomgeving voor werkbelastingprofielen die:

  • Hiermee beperkt u de door het systeem toegewezen identiteit van de container-app alleen tot hoofdcontainers.
  • Beperkt een specifieke door de gebruiker toegewezen identiteit alleen tot init-containers.
  • Maakt gebruik van een specifieke door de gebruiker toegewezen identiteit voor het ophalen van een Azure Container Registry-installatiekopie zonder dat de code in de containers die beheerde identiteit kan gebruiken voor toegang tot het register. In dit voorbeeld hoeven de containers zelf geen toegang te krijgen tot het register.

Deze aanpak beperkt de resources die kunnen worden geopend als een kwaadwillende actor onbevoegde toegang tot de containers zou krijgen.

{
    "location": "eastus2",
    "identity":{
    "type": "SystemAssigned, UserAssigned",
        "userAssignedIdentities": {
            "<IDENTITY1_RESOURCE_ID>":{},
            "<ACR_IMAGEPULL_IDENTITY_RESOURCE_ID>":{}
         }
     },
    "properties": {
        "workloadProfileName":"Consumption",
        "environmentId": "<CONTAINER_APPS_ENVIRONMENT_ID>",
        "configuration": {
            "registries": [
            {
                "server": "myregistry.azurecr.io",
                "identity": "ACR_IMAGEPULL_IDENTITY_RESOURCE_ID"
            }],
            "identitySettings":[
            {
                "identity": "ACR_IMAGEPULL_IDENTITY_RESOURCE_ID",
                "lifecycle": "None"
            },
            {
                "identity": "<IDENTITY1_RESOURCE_ID>",
                "lifecycle": "Init"
            },
            {
                "identity": "system",
                "lifecycle": "Main"
            }]
        },
        "template": {
            "containers":[
                {
                    "image":"myregistry.azurecr.io/main:1.0",
                    "name":"app-main"
                }
            ],
            "initContainers":[
                {
                    "image":"myregistry.azurecr.io/init:1.0",
                    "name":"app-init",
                }
            ]
        }
    }
}

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.

  1. Schuif in het linkernavigatievenster van de pagina van uw app omlaag naar de groep Instellingen .

  2. 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.

Volgende stappen