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.

Některé služby nepodporují ověřování Microsoft Entra, takže vaše aplikace můžou dál vyžadovat tajné kódy. Můžete je ale 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ž ji nemůžete, budete moct snížit riziko, snížit provozní režii a obecně zlepšit stav zabezpečení pro vaše aplikace.

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. 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 službu Azure Files připojovací řetězec do služby Azure Key Vault. Tímto způsobem se centrálně spravuje s přístupem řízeným identitou.

Vytvoření služby Azure Key Vault

Nejprve budete potřebovat trezor klíčů k uložení tajných kódů. Nakonfigurujete ho tak, aby používala řízení přístupu na základě role v Azure (RBAC) 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, protože ho budete potřebovat později.

  5. Klepněte na tlačítko Další: Zásady přístupu 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 klepněte na tlačítko Vytvořit.

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

Abyste mohli používat Azure Key Vault, vaše aplikace bude muset mít identitu, která může být udělena oprávnění ke čtení tajných kódů. Tato aplikace bude používat 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 v tématu 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 klepněte na tlačítko Vytvořit.

  5. Když se identita vytvoří, přejděte na ni na portálu. Vyberte Vlastnosti a poznamenejte si ID prostředku, protože ho budete potřebovat později.

  6. Vyberte Přiřazení rolí Azure a klikněte na 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ď bude moct čí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í

Prostředí portálu pro vytváření aplikace funkcí nepracuje se službou Azure Key Vault, takže budete muset 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í . Vítá vás kontrola výchozích možností a budou 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.

    Screenshot of where to find the deploy button at the top of the template screen.

Úprava šablony

Teď upravíte šablonu 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ží připojovací řetězec Azure Files 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íčů. Aplikace se tak nevytvořila 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. Pokaždé, když chcete použít identitu přiřazenou uživatelem, musíte určit, která identita prochází určitým ID. To neplatí pro identity přiřazené systémem, protože aplikace bude 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. Teď 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í.

Blahopřejeme! Ú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 o tom najdete v referenčních informacích ke službě Key Vault pro Azure Functions.

Tip

Aplikační Přehledy připojovací řetězec a jeho zahrnutý instrumentační klíč se nepovažují za tajné kódy a dají se načíst z aplikace Přehledy 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 provedli 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). Tady můžete zobrazit a nakonfigurovat, kdo má k prostředku přístup.

  3. Klikněte na Přidat a vyberte přidat přiřazení role.

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

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

  6. Kliknutím na 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. Klikněte na svou aplikaci. Měl by se přesunout dolů do oddílu Vybrané členy . Klepněte na tlačítko Vybrat.

  11. Zpět na obrazovce Přidat přiřazení role klikněte na Zkontrolovat a přiřadit. Zkontrolujte konfiguraci a potom klikněte na 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 aplikaci funkcí aktualizujete tak, aby používala svou 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í hostování úložiště s identitou.

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 části Nastavení vyberte Konfigurace.

  3. Vyberte tlačítko Upravit vedle nastavení aplikace AzureWebJobsStorage a změňte ho na základě následujících hodnot.

    Možnost Navrhovaná hodnota Description
    Name AzureWebJobsStorage__accountName Aktualizujte název z AzureWebJobsStorage na přesný název AzureWebJobsStorage__accountName. Toto nastavení říká hostiteli, 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 upozorní systém, že by měl pro připojení k prostředku použít identitu.

  4. Vyberte OK a pak uložte provedené změny kliknutím na tlačítko Uložit>pokračovat.

Odebrali jste požadavek na připojovací řetězec úložiště pro AzureWebJobsStorage tak, ž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 identitu v triggerech a vazbách připojení.