Kurz: Zabezpečení připojení cognitive service z App Service pomocí Key Vault

Azure App Service spravované identity použít pro připojení k back-end službám bez připojovacího řetězce, což eliminuje tajné kódy připojení pro správu a zajišťuje zabezpečení připojení back-endu v produkčním prostředí. Pro back-endové služby, které nepodporují spravované identity a stále vyžadují tajné kódy připojení, můžete použít Key Vault ke správě tajných kódů připojení. Tento kurz používá Cognitive Services jako příklad, který vám ukáže, jak se to dělá v praxi. Až budete hotovi, budete mít aplikaci, která programově volá Cognitive Services, aniž by se do nich ukládal tajný kód App Service.

Tip

Azure Cognitive Services 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í, jak se můžete připojit ke službě Azure, která nepodporuje spravované identity z App Services.

Diagram architektury pro scénář kurzu

S touto architekturou:

  • Připojení k Key Vault zabezpečené spravovanými identitami
  • App Service k tajným kódům přistupuje pomocí Key Vault jako nastavení aplikace.
  • Přístup k trezoru klíčů je omezený na aplikaci. Přispěvatelé aplikací, jako jsou správci, mohou mít úplnou kontrolu App Service prostředků a zároveň nemají přístup k tajným kódům Key Vault dat.
  • Pokud kód vaší aplikace již přistupuje k tajným kódům připojení pomocí nastavení aplikace, není nutná žádná změna.

Co se naučíte:

  • Povolit spravované identity
  • Použití spravovaných identit pro připojení k Key Vault
  • Použití odkazů na službu Key Vault
  • Přístupový Cognitive Services

Požadavky

Připravte si prostředí pro Azure CLI.

  • V nástroji použijte prostředí Bash Azure Cloud Shell.

    Spuštění služby Cloud Shell v novém okně

  • Pokud tomu dáváte přednost, můžete nainstalovat Azure CLI a spouštět referenční příkazy CLI.

    • Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení jsou popsané v tématu Přihlášení pomocí Azure CLI.

    • Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.

    • Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.

Vytvoření aplikace s připojením k Cognitive Services

  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 Cognitive Services prostředků. 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ří pro prostředek Cognitive Services úroveň Free. Každé předplatné je omezené kvótou jednoho prostředku úrovně TextAnalytics Free. Pokud jste už kvótu přesáhováte, použijte --sku S místo toho .

  3. Naklonování ukázkového úložiště místně a nasazení ukázkové aplikace do App Service. Nahraďte <app-name> jedinečným názvem.

    # Save app name as variable for convenience
    appName=<app-name>
    
    # Clone sample application
    git clone https://github.com/Azure-Samples/app-service-language-detector.git
    cd app-service-language-detector/dotnet
    
    az webapp up --sku F1 --resource-group $groupName --name $appName --plan $appName --location $region
    
  4. Nakonfigurujte tajné Cognitive Services jako nastavení aplikace a CS_ACCOUNT_NAME 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"
    
  5. V prohlížeči přejděte do své nasazené aplikace na adrese a vyzkoušejte detektor jazyka <app-name>.azurewebsites.net s řetězci v různých jazycích.

    Snímek obrazovky znázorňuje nasazenou aplikaci detektoru jazyka v App Service

    Když se podíváte na kód aplikace, můžete si všimnout výstupu ladění výsledků detekce ve stejné barvě písma jako pozadí. Zobrazí se tak, že se zkusí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 ve vaší App Service aplikaci. Tento přístup už zabezpečuje tajné kódy připojení ze souboru kódu vaší aplikace. Nastavení aplikace si ale může zobrazit také každý přispěvatel, který může vaši aplikaci 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 ho může číst pomocí své spravované identity.

  1. Vytvořte trezor klíčů. Nahraďte <vault-name> 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í zruší platnost všech oprávnění zásad přístupu.

  2. Dejte si roli RBAC Key Vault pro tajné kódy pro trezor.

    vaultResourceId=$(az keyvault show --name $vaultName --query id --output tsv)
    myId=$(az ad signed-in-user show --query objectId --output tsv)
    az role assignment create --role "Key Vault Secrets Officer" --assignee-object-id $myId --assignee-principal-type User --scope $vaultResourceId
    
  3. Povolte pro svou aplikaci spravovanou identitu přiřazenou systémem a přidělte jí roli RBAC uživatele Key Vault tajných kódů pro trezor.

    az webapp identity assign --resource-group $groupName --name $appName --scope $vaultResourceId --role  "Key Vault Secrets User"
    
  4. Přidejte do Cognitive Services název prostředku 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 nastavili tajné kódy jako nastavení aplikace a CS_ACCOUNT_NAME CS_ACCOUNT_KEY v aplikaci. Teď je 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 znovu přejděte <app-name>.azurewebsites.net na . Pokud se vám vrátí výsledky detekce, připojujete se ke koncovému bodu Cognitive Services pomocí odkazů na trezor klíčů.

Blahopřejeme, vaše aplikace se teď připojuje Cognitive Services pomocí tajných kódů uchovaná v 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