Kurz: Zabezpečené připojení k nástrojům Foundry ze služby PHP App Service pomocí služby Key Vault

Azure App Service může používat spravované identity pro připojení k back-endovým službám bez připojovacího řetězce. Tento přístup odstraňuje potřebu spravovat tajné informace o připojení a udržuje připojení back-end v produkčním prostředí bezpečné. Až budete hotovi, máte aplikaci, která programově volá Nástroje Foundry, aniž byste museli ukládat tajné kódy připojení ve službě App Service.

Pro back-endové služby, které nepodporují spravované identity a stále vyžadují tajné kódy připojení, můžete ke správě tajných kódů připojení použít Azure Key Vault. Tento kurz jako příklad používá Foundry Tools. Jakmile budete hotovi, máte aplikaci, která volá Nástroje Foundry pomocí programových funkcí, aniž by ukládala autentizační informace ve službě App Service.

Tip

Foundry Tools podporuje ověřování prostřednictvím spravovaných identit. Tento kurz používá ověřování pomocí klíče předplatného k předvedení toho, jak se můžete připojit ke službě Azure, která nepodporuje spravované identity ze služby App Service.

Diagram znázorňující uživatele, který se připojuje ke službě, a ta se následně připojuje k trezoru klíčů pro přístup k službám Cognitive Services.

V této architektuře:

  • Spravované identity zajišťují připojení k trezoru klíčů.
  • Služba App Service přistupuje k tajemstvím pomocí odkazů na Key Vault nastavených jako nastavení aplikace.
  • Přístup k trezoru klíčů je omezený na aplikaci. Přispěvatelé aplikací, jako jsou správci, můžou mít úplnou kontrolu nad prostředky služby App Service a zároveň nemají přístup k tajným kódům služby Key Vault.
  • Pokud kód aplikace už přistupuje k údajům o připojení s nastavením aplikace, není nutná žádná změna.

V tomto kurzu se naučíte:

  • Povolení spravovaných identit
  • Použití spravovaných identit pro připojení k Key Vault
  • Použijte odkazy na Key Vault
  • Dostupnost nástrojů Foundry

Požadavky

Připravte prostředí na Azure CLI.

Vytvoření aplikace s připojením k nástrojům Foundry

  1. Vytvořte skupinu prostředků, která bude obsahovat všechny vaše prostředky:

    # Save the resource group name as a variable for convenience
    groupName=myKVResourceGroup
    region=canadacentral
    
    az group create --name $groupName --location $region
    
  2. Vytvořte prostředek Foundry Tools. Nahraďte <název cs-resource-name> jedinečným názvem.

    # Save the resource name as a variable for convenience. 
    csResourceName=<cs-resource-name>
    
    az cognitiveservices account create --resource-group $groupName --name $csResourceName --location $region --kind TextAnalytics --sku F0 --custom-domain $csResourceName
    

    Poznámka:

    --sku F0 vytvoří prostředek Foundry Tools bezplatné úrovně. Každé předplatné je omezené na kvótu jednoho prostředku úrovně TextAnalytics Free. Pokud jste už kvótu využili, použijte --sku S.

Konfigurace aplikace PHP

Naklonujte ukázkové úložiště místně a nasaďte ukázkovou aplikaci do služby App Service. Nahraďte <název> aplikace jedinečným názvem.

# Clone and prepare the sample application
git clone https://github.com/Azure-Samples/app-service-language-detector.git
cd app-service-language-detector/php
zip default.zip index.php

# Save the app name as a variable for convenience
appName=<app-name>

az appservice plan create --resource-group $groupName --name $appName --sku FREE --location $region
az webapp create --resource-group $groupName --plan $appName --name $appName
az webapp deploy --resource-group $groupName --name $appName --src-path ./default.zip

Nastavení tajemství jako nastavení aplikace

  1. Nakonfigurujte tajné údaje Foundry Tools jako nastavení aplikace CS_ACCOUNT_NAME a CS_ACCOUNT_KEY.

    # Get the subscription key for the Foundry Tools resource
    csKey1=$(az cognitiveservices account keys list --resource-group $groupName --name $csResourceName --query key1 --output tsv)
    
    az webapp config appsettings set --resource-group $groupName --name $appName --settings CS_ACCOUNT_NAME="$csResourceName" CS_ACCOUNT_KEY="$csKey1"
    
  2. V prohlížeči přejděte do nasazené aplikace na adrese <app-name>.azurewebsites.net. Vyzkoušejte detektor jazyka zadáním řetězců v různých jazycích.

    Snímek obrazovky znázorňující nasazenou aplikaci detektoru jazyka ve službě App Service

    Pokud se podíváte na kód aplikace, výstup ladění výsledků detekce může být ve stejné barvě písma jako pozadí. Výstup můžete zobrazit tak, že zvýrazníte prázdné znaky přímo pod výsledkem.

Zabezpečené připojení k back-endu

Tajné kódy připojení se teď ukládají jako nastavení aplikace ve vaší aplikaci App Service. Tento přístup už zabezpečuje tajné kódy připojení z základu kódu vaší aplikace. Nastavení aplikace ale uvidí také každý přispěvatel, který vaši aplikaci může spravovat. V této části přesunete tajné kódy připojení do trezoru klíčů. Uzamknete přístup, abyste ho mohli spravovat jenom vy a jenom aplikace App Service ji může číst pomocí své spravované identity.

  1. Vytvořte trezor klíčů. Nahraďte <název trezoru> jedinečným názvem.

    # Save the key vault name as a variable for convenience
    vaultName=<vault-name>
    
    az keyvault create --resource-group $groupName --name $vaultName --location $region --sku standard --enable-rbac-authorization
    

    Parametr --enable-rbac-authorizationnastavuje Azure řízení přístupu založené na rolích (RBAC) jako model oprávnění. Toto nastavení ve výchozím nastavení zneplatní všechna oprávnění zásad přístupu.

  2. Dejte si roli RBAC Key Vault Secrets Officer pro trezor.

    vaultResourceId=$(az keyvault show --name $vaultName --query id --output tsv)
    myId=$(az ad signed-in-user show --query id --output tsv)
    az role assignment create --role "Key Vault Secrets Officer" --assignee-object-id $myId --assignee-principal-type User --scope $vaultResourceId
    
  3. Povolte systémem přiřazenou spravovanou identitu vaší aplikace a udělte jí roli uživatele tajemství Key Vault RBAC pro trezor.

    az webapp identity assign --resource-group $groupName --name $appName --scope $vaultResourceId --role  "Key Vault Secrets User"
    
  4. Přidejte do trezoru název prostředku Foundry Tools a klíč předplatného jako tajemství a uložte jejich ID jako proměnné prostředí pro použití v dalším kroku.

    csResourceKVUri=$(az keyvault secret set --vault-name $vaultName --name csresource --value $csResourceName --query id --output tsv)
    csKeyKVUri=$(az keyvault secret set --vault-name $vaultName --name cskey --value $csKey1 --query id --output tsv)
    
  5. Dříve jste tajné kódy nastavili jako nastavení CS_ACCOUNT_NAME aplikace a CS_ACCOUNT_KEY v aplikaci. Teď je místo toho nastavte jako odkazy na trezor klíčů.

    az webapp config appsettings set --resource-group $groupName --name $appName --settings CS_ACCOUNT_NAME="@Microsoft.KeyVault(SecretUri=$csResourceKVUri)" CS_ACCOUNT_KEY="@Microsoft.KeyVault(SecretUri=$csKeyKVUri)"
    
  6. V prohlížeči přejděte znovu na <app-name>.azurewebsites.net. Pokud se vám vrátí výsledky detekce, připojujete se ke koncovému bodu Foundry Tools pomocí odkazů na trezor klíčů.

Blahopřejeme, vaše aplikace se teď připojuje k Nástroji Foundry pomocí tajných kódů uložených v trezoru klíčů a neprováděli jste žádné změny kódu aplikace.

Vyčištění prostředků

V předchozích krocích jste vytvořili prostředky Azure ve skupině prostředků. Pokud v budoucnu tyto prostředky nepotřebujete, odstraňte skupinu prostředků spuštěním následujícího příkazu v Cloud Shell:

az group delete --name $groupName

Tento příkaz může chvíli trvat, než se spustí.