Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.
- aplikace Sample
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.
Použijte prostředí Bash v Azure Cloud Shell. Další informace najdete v tématu Začínáme s Azure Cloud Shell.
Pokud dáváte přednost místnímu spouštění referenčních příkazů CLI, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Dockeru. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Docker.
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í najdete v tématu Authenticate pro Azure 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 Použití a správa rozšíření pomocí Azure CLI.
Spusťte az version, abyste zjistili verzi a závislé knihovny, které jsou nainstalovány. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
Vytvoření aplikace s připojením k nástrojům Foundry
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 $regionVytvoř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 $csResourceNamePoznámka:
--sku F0vytvoří prostředek Foundry Tools bezplatné úrovně. Každé předplatné je omezené na kvótu jednoho prostředku úrovněTextAnalyticsFree. 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
Nakonfigurujte tajné údaje Foundry Tools jako nastavení aplikace
CS_ACCOUNT_NAMEaCS_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"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.
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.
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-authorizationParametr
--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.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 $vaultResourceIdPovolte 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"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)Dříve jste tajné kódy nastavili jako nastavení
CS_ACCOUNT_NAMEaplikace aCS_ACCOUNT_KEYv 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)"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í.