Kurz: Vytvoření aplikace funkcí, která se připojuje ke službám Azure pomocí identit místo tajných kódů

V tomto kurzu se dozvíte, jak nakonfigurovat aplikaci funkcí pomocí identit Microsoft Entra místo tajných kódů nebo připojovací řetězec, pokud je to možné. Použití identit vám pomůže vyhnout se náhodnému úniku citlivých tajných kódů a poskytnout lepší přehled o přístupu k datům. Další informace o připojeních založených na identitách najdete v tématu Konfigurace připojení založeného na identitě.

I když uvedené postupy obecně fungují pro všechny jazyky, tento kurz aktuálně podporuje funkce knihovny tříd jazyka C# ve Windows konkrétně.

V tomto kurzu se naučíte:

  • Vytvoření aplikace funkcí v Azure pomocí šablony ARM
  • Povolení spravovaných identit přiřazených systémem i přiřazených uživatelem v aplikaci funkcí
  • Vytvoření přiřazení rolí, která udělují oprávnění jiným prostředkům
  • Přesun tajných kódů, které nejde nahradit identitami do služby Azure Key Vault
  • Konfigurace aplikace pro připojení k výchozímu hostitelskému úložišti pomocí své spravované identity

Po dokončení tohoto kurzu byste měli dokončit následující kurz, který ukazuje, jak [používat připojení založená na identitě místo tajných kódů s triggery a vazbami].

Požadavky

Proč používat identitu?

Správa tajných kódů a přihlašovacích údajů je běžnou výzvou pro týmy všech velikostí. Tajné kódy musí být zabezpečeny před krádeží nebo náhodným zveřejněním a může být nutné je pravidelně obměňovat. Mnoho služeb Azure umožňuje místo toho používat identitu v Microsoft Entra ID k ověřování klientů a kontrole oprávnění, která je možné rychle upravit a odvolat. To umožňuje větší kontrolu nad zabezpečením aplikací s menší provozní režií. Identita může být člověk, například vývojář aplikace nebo spuštěná aplikace v Azure se spravovanou identitou.

Vzhledem k tomu, že některé služby nepodporují ověřování Microsoft Entra, můžou vaše aplikace v určitých případech dál vyžadovat tajné kódy. Tyto tajné kódy se ale dají uložit ve službě Azure Key Vault, což pomáhá zjednodušit životní cyklus správy vašich tajných kódů. Přístup k trezoru klíčů je také řízen identitami.

Když pochopíte, jak používat identity místo tajných kódů, když je to možné, a používat Službu Key Vault, když nemůžete, snížíte riziko, snížíte provozní režii a obecně zlepšíte stav zabezpečení vašich aplikací.

Vytvoření aplikace funkcí, která pro nezbytné tajné kódy používá Key Vault

Azure Files je příkladem služby, která zatím nepodporuje ověřování Microsoft Entra pro sdílené složky SMB (Server Message Block). Azure Files je výchozí systém souborů pro nasazení Windows v plánech Premium a Consumption. I když bychom mohli službu Azure Files úplně odebrat, představuje omezení, která možná nebudete chtít. Místo toho přesunete připojovací řetězec Azure Files do služby Azure Key Vault. Díky tomu se centrálně spravuje s přístupem řízeným identitou.

Vytvoření služby Azure Key Vault

Nejdřív potřebujete trezor klíčů k ukládání tajných kódů. Nakonfigurujete ho tak, aby používala řízení přístupu na základě role (RBAC) Azure k určení, kdo může číst tajné kódy z trezoru.

  1. Na webu Azure Portal zvolte Vytvořit prostředek (+).

  2. Na stránce Vytvořit prostředek vyberte Security>Key Vault.

  3. Na stránce Základy nakonfigurujte trezor klíčů pomocí následující tabulky.

    Možnost Navrhovaná hodnota Popis
    Předplatné Vaše předplatné Předplatné, pod kterým se tato nová aplikace funkcí vytvoří.
    Skupina prostředků myResourceGroup Název nové skupiny prostředků, ve které vytvoříte aplikaci funkcí.
    Název trezoru klíčů Globálně jedinečný název Název, který identifikuje nový trezor klíčů. Název trezoru musí obsahovat pouze alfanumerické znaky a pomlčky a nesmí začínat číslem.
    Cenová úroveň Standard Možnosti fakturace Pro účely tohoto kurzu stačí standard.
    Oblast Upřednostňovaná oblast Vyberte oblast blízko vás nebo v blízkosti jiných služeb, ke kterým vaše funkce přistupují.

    Pro oddíly Možnosti obnovení použijte výchozí výběry.

  4. Poznamenejte si název, který jste použili pro pozdější použití.

  5. Vyberte Další: Zásady přístupu a přejděte na kartu Zásady přístupu.

  6. V části Model oprávnění zvolte řízení přístupu na základě role v Azure.

  7. Vyberte Zkontrolovat a vytvořit. Zkontrolujte konfiguraci a pak vyberte Vytvořit.

Nastavení identity a oprávnění pro aplikaci

Aby mohla vaše aplikace používat Azure Key Vault, musí mít identitu, která může být udělena oprávnění ke čtení tajných kódů. Tato aplikace používá identitu přiřazenou uživatelem, aby bylo možné oprávnění nastavit před vytvořením aplikace. Další informace o spravovaných identitách pro Azure Functions najdete v tématu Použití spravovaných identit ve službě Azure Functions.

  1. Na webu Azure Portal zvolte Vytvořit prostředek (+).

  2. Na stránce Vytvořit prostředek vyberte >Spravovanou identitu přiřazenou uživatelem.

  3. Na stránce Základy nakonfigurujte identitu pomocí následující tabulky.

    Možnost Navrhovaná hodnota Popis
    Předplatné Vaše předplatné Předplatné, pod kterým se tato nová aplikace funkcí vytvoří.
    Skupina prostředků myResourceGroup Název nové skupiny prostředků, ve které vytvoříte aplikaci funkcí.
    Oblast Upřednostňovaná oblast Vyberte oblast blízko vás nebo v blízkosti jiných služeb, ke kterým vaše funkce přistupují.
    Název Globálně jedinečný název Název, který identifikuje vaši novou identitu přiřazenou uživatelem.
  4. Vyberte Zkontrolovat a vytvořit. Zkontrolujte konfiguraci a pak vyberte Vytvořit.

  5. Když se identita vytvoří, přejděte na ni na portálu. Vyberte Vlastnosti a poznamenejte si ID prostředku pro pozdější použití.

  6. Vyberte Přiřazení rolí Azure a vyberte Přidat přiřazení role (Preview).

  7. Na stránce Přidat přiřazení role (Preview) použijte možnosti, jak je znázorněno v následující tabulce.

    Možnost Navrhovaná hodnota Popis
    Scope Key Vault Obor je sada prostředků, na které se přiřazení role vztahuje. Obor má úrovně, které se dědí na nižších úrovních. Pokud například vyberete obor předplatného, přiřazení role se vztahuje na všechny skupiny prostředků a prostředky v předplatném.
    Předplatné Vaše předplatné Předplatné, pod kterým se tato nová aplikace funkcí vytvoří.
    Prostředek Váš trezor klíčů Trezor klíčů, který jste vytvořili dříve.
    Role Uživatel tajných kódů služby Key Vault Role je kolekce udělených oprávnění. Uživatel tajných kódů služby Key Vault udělí identitě oprávnění ke čtení hodnot tajných kódů z trezoru.
  8. Zvolte Uložit. Může trvat minutu nebo dvě, než se role zobrazí při aktualizaci seznamu přiřazení rolí pro identitu.

Identita teď dokáže číst tajné kódy uložené v trezoru klíčů. Později v tomto kurzu přidáte další přiřazení rolí pro různé účely.

Vygenerování šablony pro vytvoření aplikace funkcí

Vzhledem k tomu, že prostředí portálu pro vytváření aplikace funkcí s Azure Key Vaultem nepracuje, musíte vygenerovat a upravit šablonu Azure Resource Manageru. Tuto šablonu pak můžete použít k vytvoření aplikace funkcí odkazující na službu Azure Files připojovací řetězec z trezoru klíčů.

Důležité

Nevytvořte aplikaci funkcí, dokud neupravíte šablonu ARM. Konfiguraci služby Azure Files je potřeba nastavit při vytváření aplikace.

  1. Na webu Azure Portal zvolte Vytvořit prostředek (+).

  2. Na stránce Vytvořit prostředek vyberte Aplikaci výpočetních>funkcí.

  3. Na stránce Základy nakonfigurujte aplikaci funkcí pomocí následující tabulky.

    Možnost Navrhovaná hodnota Popis
    Předplatné Vaše předplatné Předplatné, pod kterým se tato nová aplikace funkcí vytvoří.
    Skupina prostředků myResourceGroup Název nové skupiny prostředků, ve které vytvoříte aplikaci funkcí.
    Název aplikace funkcí Globálně jedinečný název Název identifikující novou aplikaci funkcí. Platné znaky jsou a-z (bez rozlišování malých a velkých písmen), 0-9 a -.
    Publikovat Kód Zvolte publikování souborů kódu nebo kontejneru Dockeru.
    Zásobník modulu runtime .NET Tento kurz používá .NET.
    Oblast Upřednostňovaná oblast Vyberte oblast blízko vás nebo v blízkosti jiných služeb, ke kterým vaše funkce přistupují.
  4. Vyberte Zkontrolovat a vytvořit. Vaše aplikace používá výchozí hodnoty na stránce Hostování a monitorování . Zkontrolujte výchozí možnosti, které jsou součástí šablony ARM, kterou vygenerujete.

  5. Místo vytvoření aplikace funkcí zde zvolte Stáhnout šablonu pro automatizaci, která je napravo od tlačítka Další .

  6. Na stránce šablony vyberte Nasadit a potom na stránce Vlastní nasazení vyberte Upravit šablonu.

    Snímek obrazovky znázorňující tlačítko Nasadit v horní části stránky Šablona

Úprava šablony

Teď šablonu upravíte tak, aby ukládaly připojovací řetězec Azure Files ve službě Key Vault a povolili aplikaci funkcí odkazovat na ni. Než budete pokračovat, ujistěte se, že máte následující hodnoty z předchozích částí:

  • ID prostředku identity přiřazené uživatelem
  • Název trezoru klíčů

Poznámka:

Pokud byste chtěli vytvořit úplnou šablonu pro automatizaci, měli byste zahrnout definice pro prostředky přiřazení identit a rolí s příslušnými dependsOn klauzulemi. Tím se nahradí předchozí kroky, které používaly portál. Projděte si pokyny k Azure Resource Manageru a dokumentaci ke každé službě.

  1. V editoru najděte, kde pole resources začíná. Před definici aplikace funkcí přidejte následující část, která vloží službu Azure Files připojovací řetězec do služby Key Vault. Nahraďte "VAULT_NAME" názvem trezoru klíčů.

    {
        "type": "Microsoft.KeyVault/vaults/secrets",
        "apiVersion": "2016-10-01",
        "name": "VAULT_NAME/azurefilesconnectionstring",
        "properties": {
            "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value,';EndpointSuffix=','core.windows.net')]"
        },
        "dependsOn": [
            "[concat('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]"
        ]
    },
    
  2. V definici prostředku aplikace funkcí (který je type nastavený na Microsoft.Web/sites) přidejte Microsoft.KeyVault/vaults/VAULT_NAME/secrets/azurefilesconnectionstring do dependsOn pole. Znovu nahraďte "VAULT_NAME" názvem vašeho trezoru klíčů. Tím zabráníte vytvoření aplikace před definováním tajného kódu. Pole dependsOn by mělo vypadat jako v následujícím příkladu:

        {
            "type": "Microsoft.Web/sites",
            "apiVersion": "2018-11-01",
            "name": "[parameters('name')]",
            "location": "[parameters('location')]",
            "tags": null,
            "dependsOn": [
                "microsoft.insights/components/idcxntut",
                "Microsoft.KeyVault/vaults/VAULT_NAME/secrets/azurefilesconnectionstring",
                "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
                "[concat('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]"
            ],
            // ...
        }
    
  3. identity Přidejte blok z následujícího příkladu do definice prostředku vaší aplikace funkcí. Jako ID prostředku vaší identity přiřazené uživatelem nahraďte "IDENTITY_RESOURCE_ID".

    {
        "apiVersion": "2018-11-01",
        "name": "[parameters('name')]",
        "type": "Microsoft.Web/sites",
        "kind": "functionapp",
        "location": "[parameters('location')]",
        "identity": {
            "type": "SystemAssigned,UserAssigned",
            "userAssignedIdentities": {
                "IDENTITY_RESOURCE_ID": {}
            }
        },
        "tags": null,
        // ...
    }
    

    Tento identity blok také nastaví identitu přiřazenou systémem, kterou použijete později v tomto kurzu.

  4. keyVaultReferenceIdentity Přidejte vlastnost do objektu properties aplikace funkcí, jak je znázorněno v následujícím příkladu. Jako ID prostředku vaší identity přiřazené uživatelem nahraďte "IDENTITY_RESOURCE_ID".

    {
        // ...
         "properties": {
                "name": "[parameters('name')]",
                "keyVaultReferenceIdentity": "IDENTITY_RESOURCE_ID",
                // ...
         }
    }
    

    Tuto konfiguraci potřebujete, protože aplikace může mít nakonfigurovaných více identit přiřazených uživatelem. Kdykoli chcete použít identitu přiřazenou uživatelem, musíte ji zadat s ID. Identity přiřazené systémem není potřeba tímto způsobem zadávat, protože aplikace může mít jenom jednu. Mnoho funkcí, které používají spravovanou identitu, předpokládá, že by ve výchozím nastavení měly používat systém přiřazený.

  5. Najděte objekty JSON, které definují WEBSITE_CONTENTAZUREFILECONNECTIONSTRING nastavení aplikace, které by měly vypadat jako v následujícím příkladu:

    {
        "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING",
        "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value,';EndpointSuffix=','core.windows.net')]"
    },
    
  6. value Nahraďte pole odkazem na tajný kód, jak je znázorněno v následujícím příkladu. Nahraďte "VAULT_NAME" názvem trezoru klíčů.

    {
        "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING",
        "value": "[concat('@Microsoft.KeyVault(SecretUri=', reference(resourceId('Microsoft.KeyVault/vaults/secrets', 'VAULT_NAME', 'azurefilesconnectionstring')).secretUri, ')')]"
    },
    
  7. Výběrem možnosti Uložit uložte aktualizovanou šablonu ARM.

Nasazení upravené šablony

  1. Ujistěte se, že možnosti vytvoření, včetně skupiny prostředků, jsou stále správné, a vyberte Zkontrolovat a vytvořit.

  2. Po ověření šablony si poznamenejte název účtu úložiště, protože tento účet použijete později. Nakonec vyberte Vytvořit , abyste vytvořili prostředky Azure a nasadíte kód do aplikace funkcí.

  3. Po dokončení nasazení vyberte Přejít do skupiny prostředků a pak vyberte novou aplikaci funkcí.

Gratulujeme! Úspěšně jste vytvořili aplikaci funkcí, která odkazuje na připojovací řetězec Azure Files ze služby Azure Key Vault.

Kdykoli by vaše aplikace potřebovala přidat odkaz na tajný klíč, stačí definovat nové nastavení aplikace odkazující na hodnotu uloženou ve službě Key Vault. Další informace najdete v referenčních informacích ke službě Key Vault pro Azure Functions.

Tip

Application Insights připojovací řetězec a jeho zahrnutý instrumentační klíč se nepovažují za tajné kódy a je možné je načíst z App Insights pomocí oprávnění čtenáře. Nemusíte je přesouvat do služby Key Vault, i když je určitě můžete.

Použití spravované identity pro AzureWebJobsStorage

Dále použijete identitu přiřazenou systémem, kterou jste nakonfigurovali v předchozích krocích pro AzureWebJobsStorage připojení. AzureWebJobsStorage používá modul runtime služby Functions a několik aktivačních událostí a vazeb ke koordinaci mezi několika spuštěnými instancemi. Aby vaše aplikace funkcí fungovala a podobně jako služba Azure Files, je ve výchozím nastavení nakonfigurovaná s připojovací řetězec při vytváření nové aplikace funkcí.

Udělení přístupu identitě přiřazené systémem k účtu úložiště

Podobně jako v krocích, které jste dříve použili s identitou přiřazenou uživatelem a trezorem klíčů, teď vytvoříte přiřazení role, které udělí identitě přiřazené systémem přístup k vašemu účtu úložiště.

  1. Na webu Azure Portal přejděte na účet úložiště, který jste vytvořili v předchozí aplikaci funkcí.

  2. Vyberte Řízení přístupu (IAM). Na této stránce můžete zobrazit a nakonfigurovat, kdo má k prostředku přístup.

  3. Vyberte Přidat a vyberte Přidat přiřazení role.

  4. Vyhledejte vlastníka dat objektů blob služby Storage, vyberte ho a vyberte Další.

  5. Na kartě Členové v části Přiřadit přístup zvolte Spravovaná identita.

  6. Výběrem možnosti Vybrat členy otevřete panel Vybrat spravované identity .

  7. Ověřte, že předplatné je předplatné , ve kterém jste prostředky vytvořili dříve.

  8. V selektoru spravované identity zvolte Aplikace funkcí z kategorie Spravovaná identita přiřazená systémem. Popisek aplikace funkcí může mít vedle sebe číslo v závorkách, které označují počet aplikací v předplatném s identitami přiřazenými systémem.

  9. Vaše aplikace by se měla zobrazit v seznamu pod vstupními poli. Pokud ho nevidíte, můžete pomocí pole Vybrat vyfiltrovat výsledky s názvem vaší aplikace.

  10. Vyberte aplikaci. Měl by se přesunout dolů do oddílu Vybrané členy . Zvolte Vybrat.

  11. Na obrazovce Přidat přiřazení role vyberte Zkontrolovat a přiřadit. Zkontrolujte konfiguraci a pak vyberte Zkontrolovat a přiřadit.

Tip

Pokud máte v úmyslu použít aplikaci funkcí pro funkci aktivovanou objektem blob, budete muset tyto kroky zopakovat pro role Přispěvatel dat fronty úložiště a Přispěvatel dat fronty úložiště nad účtem používaným službou AzureWebJobsStorage. Další informace najdete v tématu Připojení založená na identitách aktivovaná objektem blob.

Úprava konfigurace AzureWebJobsStorage

Dále aktualizujete aplikaci funkcí tak, aby používala identitu přiřazenou systémem, když používá službu blob pro hostitelské úložiště.

Důležité

Konfiguraci AzureWebJobsStorage používají některé triggery a vazby a tato rozšíření musí také používat připojení založená na identitách. Aplikace, které používají triggery objektů blob nebo triggery centra událostí, můžou tato rozšíření potřebovat aktualizovat. Vzhledem k tomu, že pro tuto aplikaci nebyly definovány žádné funkce, ještě se nemusíte zabývat. Další informace o tomto požadavku najdete v tématu Připojení k hostitelskému úložišti pomocí identity.

AzureWebJobsStorage Podobně se používá pro artefakty nasazení při použití sestavení na straně serveru ve spotřebě Linuxu. Když povolíte připojení založená na identitě pro AzureWebJobsStorage využití Linuxu, budete muset provést nasazení prostřednictvím externího balíčku pro nasazení.

  1. Na webu Azure Portal přejděte do aplikace funkcí.

  2. V aplikaci funkcí rozbalte Nastavení a pak vyberte Proměnné prostředí.

  3. Na kartě Nastavení aplikace vyberte nastavení aplikace AzureWebJobsStorage a upravte ji podle následující tabulky:

    Možnost Navrhovaná hodnota Description
    Jméno AzureWebJobsStorage__accountName Změňte název z AzureWebJobsStorage na přesný název AzureWebJobsStorage__accountName. Toto nastavení dává hostiteli pokyn, aby místo hledání uloženého tajného kódu použil identitu. Nové nastavení používá dvojité podtržítko (__), což je speciální znak v nastavení aplikace.
    Hodnota Název vašeho účtu Aktualizujte název z připojovací řetězec jenom na název účtu Úložiště.

    Tato konfigurace říká systému, aby k připojení k prostředku použil identitu.

  4. Vyberte Použít a pak vyberte Použít a Potvrdit uložte změny a restartujte funkci aplikace.

Teď jste odebrali požadavek na připojovací řetězec úložiště pro AzureWebJobsStorage tím, že aplikaci nakonfigurujete tak, aby se místo toho připojovala k objektům blob pomocí spravovaných identit.

Poznámka:

__accountName Syntaxe je jedinečná pro připojení AzureWebJobsStorage a nedá se použít pro jiná připojení k úložišti. Pokud se chcete naučit definovat další připojení, projděte si referenční informace pro jednotlivé triggery a vazbu, které vaše aplikace používá.

Další kroky

Tento kurz ukázal, jak vytvořit aplikaci funkcí bez uložení tajných kódů v její konfiguraci.

V dalším kurzu se dozvíte, jak používat identity v triggerech a vazbách připojení.