Sdílet prostřednictvím


Spravované identity v Azure Container Apps

Spravovaná identita z Microsoft Entra ID umožňuje vaší aplikaci kontejneru přistupovat k dalším prostředkům chráněným Microsoft Entra. Další informace o spravovaných identitách v Microsoft Entra ID najdete v tématu Spravované identity pro prostředky Azure.

Aplikaci kontejneru můžete udělit dva typy identit:

  • Identita přiřazená systémem je svázaná s vaší aplikací kontejneru a při odstranění aplikace kontejneru se odstraní. Aplikace může mít pouze jednu identitu přiřazenou systémem.
  • Identita přiřazená uživatelem je samostatný prostředek Azure, který můžete přiřadit ke své aplikaci kontejneru a dalším prostředkům. Aplikace typu kontejner může mít více identit přiřazených uživatelem. Identity přiřazené uživatelem existují, dokud je neodstraníte.

Proč používat spravovanou identitu?

Spravovanou identitu ve spuštěné aplikaci kontejneru můžete použít k ověření ve všech službách, které podporují ověřování Microsoft Entra.

Se spravovanými identitami:

  • Vaše aplikace se připojuje k prostředkům pomocí spravované identity. V aplikaci kontejneru nemusíte spravovat přihlašovací údaje.
  • Řízení přístupu na základě role můžete použít k udělení konkrétních oprávnění spravované identitě.
  • Identity přiřazené systémem se automaticky vytvářejí a spravují. Po odstranění vaší aplikace kontejneru se odstraní.
  • Můžete přidávat a odstraňovat identity přiřazené uživatelem a přiřazovat je k více prostředkům. Jsou nezávislé na životním cyklu vaší aplikace kontejneru.
  • Spravovanou identitu můžete použít k ověření pomocí privátní služby Azure Container Registry bez uživatelského jména a hesla pro vyžádání kontejnerů pro vaši aplikaci kontejneru.
  • Spravovanou identitu můžete použít k vytvoření připojení pro aplikace s podporou Dapr prostřednictvím komponent Dapr.

Běžné případy použití

Identity přiřazené systémem jsou nejvhodnější pro úlohy, které:

  • jsou obsaženy v rámci jednoho prostředku.
  • potřeba nezávislých identit

Identity přiřazené uživatelem jsou ideální pro úlohy, které:

  • spustit na více prostředcích a může sdílet jednu identitu.
  • potřeba předběžné autorizace k zabezpečenému prostředku

Omezení

Inicializační kontejnery nemají přístup ke spravovaným identitám v prostředích jen pro spotřebu a vyhrazených prostředích profilů úloh

Konfigurace spravovaných identit

Spravované identity můžete nakonfigurovat prostřednictvím:

  • Azure Portal
  • Rozhraní příkazového řádku Azure
  • šablona Azure Resource Manageru (ARM)

Když se spravovaná identita přidá, odstraní nebo upraví ve spuštěné aplikaci kontejneru, aplikace se automaticky nerestartuje a nevytvořila se nová revize.

Poznámka:

Při přidávání spravované identity do aplikace kontejneru nasazené před 11. dubna 2022 je nutné vytvořit novou revizi.

Přidání identity přiřazené systémem

  1. Přejděte do aplikace kontejneru na webu Azure Portal.

  2. Ve skupině Nastavení vyberte Možnost Identita.

  3. Na kartě Přiřazený systém přepněte stav na Zapnuto.

  4. Zvolte Uložit.

Snímek obrazovky se systémem přiřazenými identitami

Přidání identity přiřazené uživatelem

Konfigurace aplikace kontejneru s identitou přiřazenou uživatelem vyžaduje, abyste nejprve vytvořili identitu a pak do konfigurace vaší aplikace kontejneru přidali její identifikátor prostředku. Identity přiřazené uživatelem můžete vytvořit prostřednictvím webu Azure Portal nebo Azure CLI. Informace o vytváření a správě identit přiřazených uživatelem najdete v tématu Správa spravovaných identit přiřazených uživatelem.

Nejprve budete muset vytvořit prostředek identity přiřazený uživatelem.

  1. Podle kroků zjištěných ve správě spravovaných identit přiřazených uživatelem vytvořte prostředek spravované identity přiřazené uživatelem.

  2. Přejděte do aplikace kontejneru na webu Azure Portal.

  3. Ve skupině Nastavení vyberte Možnost Identita.

  4. Na kartě Přiřazené uživatelem vyberte Přidat.

  5. Vyhledejte a vyberte identitu, kterou jste vytvořili dříve.

  6. Vyberte Přidat.

Snímek obrazovky s identitami přiřazenými uživatelem

Konfigurace cílového prostředku

U některých prostředků je potřeba nakonfigurovat přiřazení rolí pro spravovanou identitu vaší aplikace pro udělení přístupu. V opačném případě se volání z vaší aplikace do služeb, jako je Azure Key Vault a Azure SQL Database, zamítnou, i když pro tuto identitu použijete platný token. Další informace o řízení přístupu na základě role v Azure (Azure RBAC) najdete v tématu Co je RBAC? Další informace o tom, které prostředky podporují tokeny Microsoft Entra, najdete v tématu Služby Azure, které podporují ověřování Microsoft Entra.

Důležité

Back-endové služby pro spravované identity uchovávají mezipaměť pro identifikátor URI prostředku přibližně po dobu 24 hodin. Pokud aktualizujete zásady přístupu konkrétního cílového prostředku a okamžitě načtete token pro tento prostředek, můžete token uložený v mezipaměti získat se zastaralými oprávněními, dokud nevyprší platnost tohoto tokenu. Vynucení aktualizace tokenu se nepodporuje.

Připojení ke službám Azure v kódu aplikace

Pomocí spravovaných identit může aplikace získat tokeny pro přístup k prostředkům Azure, které používají ID Microsoft Entra, jako je Azure SQL Database, Azure Key Vault a Azure Storage. Tyto tokeny představují aplikaci, která přistupuje k prostředku, a ne k žádnému konkrétnímu uživateli aplikace.

Container Apps poskytuje interně přístupný koncový bod REST pro načtení tokenů. Koncový bod REST je k dispozici v aplikaci se standardním požadavkem HTTP GET , který můžete odeslat pomocí obecného klienta HTTP ve vašem upřednostňovaném jazyce. Klientská knihovna Azure Identity poskytuje pro .NET, JavaScript, Java a Python abstrakci tohoto koncového bodu REST. K dalším službám Azure se můžete připojit přidáním objektu přihlašovacích údajů do klienta specifického pro službu.

Poznámka:

Pokud používáte klientskou knihovnu Azure Identity, musíte explicitně zadat ID klienta spravované identity přiřazené uživatelem.

Poznámka:

Při připojování ke zdrojům dat Azure SQL pomocí Entity Framework Core zvažte použití Microsoft.Data.SqlClient, které poskytuje speciální připojovací řetězec pro připojení spravovaných identit.

Pro aplikace .NET je nejjednodušší způsob, jak pracovat se spravovanou identitou, prostřednictvím klientské knihovny Azure Identity pro .NET. Další informace najdete v následujících materiálech:

Odkazované příklady používají DefaultAzureCredential. Tento objekt je ve většině scénářů efektivní, protože stejný model funguje v Azure (se spravovanými identitami) a na místním počítači (bez spravovaných identit).

Použití spravované identity pro pravidla škálování

Spravované identity ve vašich pravidlech škálování můžete použít k ověřování pomocí služeb Azure, které podporují spravované identity. Pokud chcete ve svém pravidle škálování použít spravovanou identitu, použijte identity místo vlastnosti ve svém pravidle škálování vlastnost auth . Přijatelné hodnoty pro identity vlastnost jsou ID prostředku Azure identity přiřazené uživatelem nebo system použití identity přiřazené systémem.

Poznámka:

Ověřování spravované identity v pravidlech škálování je ve verzi Public Preview. Je k dispozici ve verzi 2024-02-02-previewrozhraní API.

Následující příklad šablony ARM ukazuje, jak používat spravovanou identitu s pravidlem škálování azure Queue Storage:

Účet úložiště fronty používá accountName vlastnost k identifikaci účtu úložiště, zatímco identity vlastnost určuje, kterou spravovanou identitu použít. Vlastnost nemusíte používat auth .

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

Další informace o používání spravované identity s pravidly škálování najdete v tématu Nastavení pravidel škálování v Azure Container Apps.

Řízení dostupnosti spravované identity

Container Apps umožňuje zadat inicializační kontejnery a hlavní kontejnery. Ve výchozím nastavení můžou hlavní i inicializační kontejnery v prostředí profilu úloh consumption používat spravovanou identitu pro přístup k jiným službám Azure. V prostředích jen pro spotřebu a vyhrazených prostředích profilů úloh můžou spravovanou identitu používat pouze hlavní kontejnery. Přístupové tokeny spravované identity jsou k dispozici pro každou spravovanou identitu nakonfigurovanou v aplikaci kontejneru. V některých situacích ale pouze inicializační kontejner nebo hlavní kontejner vyžadují přístupové tokeny pro spravovanou identitu. Jindy můžete ke stažení image kontejneru použít spravovanou identitu pouze pro přístup ke službě Azure Container Registry a samotná aplikace nemusí mít přístup ke službě Azure Container Registry.

Počínaje verzí 2024-02-02-previewrozhraní API můžete řídit, které spravované identity jsou pro vaši aplikaci kontejneru dostupné během inicializačních a hlavních fází, a řídit tak princip zabezpečení s nejnižšími oprávněními. Existují tyto možnosti:

  • Init: K dispozici pouze pro inicializační kontejnery. Tuto možnost použijte, když chcete provést určitou inicializaci, která vyžaduje spravovanou identitu, ale spravovanou identitu už nepotřebujete v hlavním kontejneru. Tato možnost se v současné době podporuje jenom v prostředích s využitím profilů úloh.
  • Main: K dispozici pouze pro hlavní kontejnery. Tuto možnost použijte, pokud váš inicializační kontejner nepotřebuje spravovanou identitu.
  • All: K dispozici pro všechny kontejnery. Tato hodnota je výchozím nastavením.
  • None: Není k dispozici pro žádné kontejnery. Tuto možnost použijte, pokud máte spravovanou identitu, která se používá jenom pro vyžádání image ACR, pravidla škálování nebo tajné kódy služby Key Vault a nemusí být k dispozici pro kód spuštěný ve vašich kontejnerech.

Následující příklad šablony ARM ukazuje, jak nakonfigurovat aplikaci kontejneru v prostředí consumption profilu úloh, které:

  • Omezuje identitu přiřazenou systémem aplikace kontejneru pouze na hlavní kontejnery.
  • Omezuje konkrétní identitu přiřazenou uživatelem pouze na inicializační kontejnery.
  • Používá konkrétní identitu přiřazenou uživatelem pro vyžádání image služby Azure Container Registry, aniž by umožňovala kódu v kontejnerech používat tuto spravovanou identitu pro přístup k registru. V tomto příkladu samotné kontejnery nepotřebují přístup k registru.

Tento přístup omezuje prostředky, ke kterým je možné získat přístup, pokud by objekt actor se zlými úmysly získal neoprávněný přístup ke kontejnerům.

{
    "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",
                }
            ]
        }
    }
}

Zobrazení spravovaných identit

Spravované identity přiřazené systémem a uživatelem můžete zobrazit pomocí následujícího příkazu Azure CLI. Výstup zobrazuje typ spravované identity, ID tenanta a ID objektu zabezpečení všech spravovaných identit přiřazených k vaší aplikaci kontejneru.

az containerapp identity show --name <APP_NAME> --resource-group <GROUP_NAME>

Odebrání spravované identity

Když odeberete identitu přiřazenou systémem, odstraní se z ID Microsoft Entra. Identity přiřazené systémem se také automaticky odeberou z ID Microsoft Entra při odstranění samotného prostředku aplikace kontejneru. Odebrání spravovaných identit přiřazených uživatelem z aplikace kontejneru je neodebere z ID Microsoft Entra.

  1. V levém navigačním panelu stránky aplikace se posuňte dolů ke skupině Nastavení .

  2. Vyberte Identita. Pak postupujte podle kroků založených na typu identity:

    • Identita přiřazená systémem: Na kartě Přiřazený systém přepněte Stav na Vypnuto. Zvolte Uložit.
    • Identita přiřazená uživatelem: Vyberte kartu Přiřazený uživatel, zaškrtněte políčko pro identitu a vyberte Odebrat. Potvrďte výběrem možnosti Ano.

Další kroky