Sdílet prostřednictvím


Kurz: Zabezpečení připojení služeb Cognitive Service ze služby PHP App Service pomocí služby Key Vault

Aplikace Azure Služba může používat spravované identity k připojení k back-endovým službám bez připojovací řetězec, což eliminuje tajné kódy připojení ke správě a zajištění zabezpečeného připojení back-endu v produkčním prostředí. Pro back-endové služby, které nepodporují spravované identity a přesto vyžadují tajné kódy připojení, můžete ke správě tajných kódů připojení použít službu Key Vault. V tomto kurzu se jako příklad používají služby Azure AI, které vám ukážou, jak se to dělá v praxi. Jakmile budete hotovi, máte aplikaci, která programově volá služby Azure AI, aniž by se ukládaly tajné kódy připojení ve službě App Service.

Tip

Služby Azure AI podporují ověřování prostřednictvím spravovaných identit, ale 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žeb App Services.

Diagram architektury pro scénář kurzu

S touto architekturou:

  • Připojení ke službě Key Vault je zabezpečené spravovanými identitami
  • 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 současně nemají přístup k tajným kódům služby Key Vault.
  • Pokud kód aplikace už přistupuje k tajným kódům připojení s nastavením aplikace, nevyžaduje se žádná změna.

Co se naučíte:

  • Povolení spravovaných identit
  • Použití spravovaných identit pro připojení ke službě Key Vault
  • Použití odkazů na službu Key Vault
  • Přístup ke službám Azure AI

Požadavky

Připravte prostředí pro Azure CLI.

Vytvoření aplikace s připojením ke službám Azure AI

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

    # Save resource group name as variable for convenience
    groupName=myKVResourceGroup
    region=westeurope
    
    az group create --name $groupName --location $region
    
  2. Vytvořte prostředek služeb Azure AI. Nahraďte <cs-resource-name> jedinečným názvem podle vašeho výběru.

    # Save resource name as 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 služeb Azure AI úrovně Free. Každé předplatné je omezené na kvótu jednoho prostředku úrovně TextAnalytics Free. Pokud už kvótu překročili, použijte --sku S ji.

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 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 app name as 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

Konfigurace tajných kódů jako nastavení aplikace

  1. Nakonfigurujte tajné kódy služeb Azure AI jako nastavení CS_ACCOUNT_NAME aplikace a CS_ACCOUNT_KEY.

    # Get subscription key for Cognitive Services 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 aplikace <app-name>.azurewebsites.net pro nasazení a vyzkoušejte detektor jazyků s řetězci 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, můžete si všimnout výstupu ladění pro výsledky detekce ve stejné barvě písma jako pozadí. Můžete ho zobrazit tak, že se pokusíte zvýraznit prázdné znaky přímo pod výsledkem.

Zabezpečené připojení back-endu

V tuto chvíli se tajné kódy připojení ukládají jako nastavení aplikace v 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 tomto kroku přesunete tajné kódy připojení do trezoru klíčů a 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 app name as variable for convenience
    vaultName=<vault-name>
    
    az keyvault create --resource-group $groupName --name $vaultName --location $region --sku standard --enable-rbac-authorization
    

    Parametr --enable-rbac-authorization nastaví řízení přístupu na základě role v Azure (RBAC) jako model oprávnění. Toto nastavení ve výchozím nastavení zneplatňuje všechna oprávnění zásad přístupu.

  2. Dejte sobě roli RBAC pro správce tajných kódů služby Key Vault 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 spravovanou identitu přiřazenou systémem pro vaši aplikaci a udělte jí roli RBAC uživatele RBAC služby Key Vault 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 služby Azure AI 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.<app-name>.azurewebsites.net Pokud se vám vrátí výsledky detekce, pak se připojujete ke koncovému bodu služeb Azure AI s odkazy na trezor klíčů.

Blahopřejeme, vaše aplikace se teď připojuje ke službám Azure AI pomocí tajných kódů uložených ve vašem trezoru klíčů bez jakýchkoli změn 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 předpokládáte, že už tyto prostředky nebudete potřebovat, odstraňte skupinu prostředků spuštěním následujícího příkazu ve službě Cloud Shell:

az group delete --name $groupName

Spuštění tohoto příkazu může trvat přibližně minut.

Další kroky