Kurz: Zabezpečení připojení služeb Cognitive Service ze služby JavaScript App Service pomocí 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 eliminuje nutnost spravovat utajené údaje o připojení a udržuje bezpečnost připojení serverové části v produkčním prostředí. 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á programově volá Nástroje Foundry, aniž by ukládal tajné kódy připojení 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ě, ta se pak připojuje k trezoru klíčů pro přístup ke Cognitive Services.

V této architektuře:

  • Spravované identity zajišťují připojení k trezoru klíčů.
  • Služba App Service přistupuje k tajným kódům pomocí odkazů služby Key Vault 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 na úrovni bezplatné. Každé předplatné je omezené na kvótu jednoho prostředku úrovně TextAnalytics Free. Pokud jste už kvótu využili, použijte místo toho --sku S.

Konfigurace javascriptové aplikace

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 sample application
git clone https://github.com/Azure-Samples/app-service-language-detector.git
cd app-service-language-detector/javascript
zip -r default.zip .

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

az appservice plan create --resource-group $groupName --name $appName --sku FREE --location $region --is-linux
az webapp create --resource-group $groupName --plan $appName --name $appName --runtime "node:24-lts"
az webapp config appsettings set --resource-group $groupName --name $appName --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true
az webapp deploy --resource-group $groupName --name $appName --src-path ./default.zip

Předchozí příkazy:

  • Vytvoření plánu služby App Service pro Linux
  • Vytvoření webové aplikace pro Node.js 24 LTS
  • Nakonfigurujte webovou aplikaci k instalaci balíčků npm při nasazení
  • Nahrajte soubor ZIP a nainstalujte balíčky npm.

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 tajné kódy a uložte jejich ID jako proměnné prostředí pro další krok.

    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í referencí na Key Vault.

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