Oktatóanyag: A Cognitive Service-kapcsolat védelme JavaScript-App Service használatával Key Vault
Azure App Servicefelügyelt identitásokkal kapcsolati sztring nélkül csatlakozhat a háttérszolgáltatásokhoz, ami kiküszöböli a kapcsolati titkos kódokat a háttérkapcsolatok éles környezetben történő kezeléséhez és védelméhez. Az olyan háttérszolgáltatások esetében, amelyek nem támogatják a felügyelt identitásokat, és továbbra is kapcsolati titkos kódokat igényelnek, a Key Vault használatával kezelheti a kapcsolati titkos kulcsokat. Ez az oktatóanyag az Azure AI-szolgáltatásokat használja példaként annak szemléltetésére, hogyan történik a gyakorlatban. Ha végzett, egy olyan alkalmazással rendelkezik, amely programozott hívásokat indít az Azure AI-szolgáltatások felé anélkül, hogy a App Service belül tárolná a kapcsolat titkos kulcsait.
Tipp
Az Azure AI-szolgáltatások támogatják a felügyelt identitásokon keresztüli hitelesítést, de ez az oktatóanyag az előfizetési kulcs hitelesítésével mutatja be, hogyan csatlakozhat olyan Azure-szolgáltatáshoz, amely nem támogatja az App Servicesből származó felügyelt identitásokat.
Ezzel az architektúrával:
- A Key Vault való csatlakozást felügyelt identitások védik
- App Service alkalmazásbeállításokként Key Vault hivatkozásokkal fér hozzá a titkos kódokhoz.
- A kulcstartóhoz való hozzáférés az alkalmazásra korlátozódik. Előfordulhat, hogy az alkalmazás közreműködői, például a rendszergazdák teljes mértékben felügyelik az App Service erőforrásokat, és ugyanakkor nem férnek hozzá a Key Vault titkos kulcsokhoz.
- Ha az alkalmazáskód már hozzáfér a kapcsolatkulcsokhoz az alkalmazásbeállítások segítségével, nincs szükség módosításra.
A következő tudnivalókat fogja megtanulni:
- Felügyelt identitások engedélyezése
- Felügyelt identitások használata Key Vault
- Key Vault-referenciák használata
- Azure AI-szolgáltatások elérése
Előfeltételek
A környezet előkészítése az Azure CLI-hez.
Használja a Bash-környezetet az Azure Cloud Shell. További információ: Rövid útmutató a Bashhez az Azure Cloud Shell-ban.
Ha inkább helyileg szeretné futtatni a PARANCSSORI referenciaparancsokat, telepítse az Azure CLI-t . Ha Windows vagy macOS rendszert használ, fontolja meg az Azure CLI Docker-tárolóban való futtatását. További információ: Az Azure CLI futtatása Docker-tárolóban.
Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért lásd: Bejelentkezés az Azure CLI-vel.
Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata az Azure CLI-vel.
Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet.
Alkalmazás létrehozása az Azure AI-szolgáltatásokhoz való csatlakozással
Hozzon létre egy erőforráscsoportot, amely az összes erőforrást tartalmazza:
# Save resource group name as variable for convenience groupName=myKVResourceGroup region=westeurope az group create --name $groupName --location $region
Hozzon létre egy Azure AI-szolgáltatási erőforrást. Cserélje le <a cs-resource-name> nevet egy tetszőleges egyedi névre.
# 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
Megjegyzés
--sku F0
egy ingyenes szintű Azure AI-szolgáltatási erőforrást hoz létre. Minden előfizetés egy ingyenes szintűTextAnalytics
erőforrás kvótájára korlátozódik. Ha már túllépte a kvótát, használja helyette a parancsot--sku S
.
JavaScript-alkalmazás konfigurálása
Klónozza helyileg a mintaadattárat, és helyezze üzembe a mintaalkalmazást a App Service. Cserélje le <az alkalmazásnevet> egy egyedi névre.
# Clone and prepare sample application
git clone https://github.com/Azure-Samples/app-service-language-detector.git
cd app-service-language-detector/javascript
zip 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|14-lts"
az webapp config appsettings set --resource-group $groupName --name $appName --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true
az webapp deployment source config-zip --resource-group $groupName --name $appName --src ./default.zip
Az előző parancsok:
- Linux App Service-csomag létrehozása
- Webalkalmazás létrehozása Node.js 14 LTS-hez
- A webalkalmazás konfigurálása az npm-csomagok telepítésre való telepítéséhez
- Töltse fel a zip-fájlt, és telepítse az npm-csomagokat
Titkos kódok konfigurálása alkalmazásbeállításokként
Az Azure AI-szolgáltatások titkos kulcsainak konfigurálása alkalmazásbeállításokként
CS_ACCOUNT_NAME
ésCS_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"
A böngészőben keresse meg az üzembe helyezési alkalmazást a címen
<app-name>.azurewebsites.net
, és próbálja ki a különböző nyelvű sztringeket tartalmazó nyelvi detektort.Ha megtekinti az alkalmazás kódját, észreveheti, hogy az észlelés hibakeresési kimenete ugyanolyan betűszínt eredményez, mint a háttér. Ezt úgy tekintheti meg, hogy megpróbálja kiemelni a fehér területet közvetlenül az eredmény alatt.
Biztonságos háttérkapcsolat
A kapcsolati titkos kulcsok jelenleg alkalmazásbeállításokként vannak tárolva a App Service alkalmazásban. Ez a módszer már biztosítja a kapcsolati titkos kódokat az alkalmazás kódbázisából. Az alkalmazást kezelő közreműködők azonban láthatják az alkalmazásbeállításokat is. Ebben a lépésben áthelyezi a kapcsolati titkos kulcsokat egy kulcstartóba, és zárolja a hozzáférést, hogy csak Ön felügyelhesse, és csak a App Service alkalmazás tudja olvasni a felügyelt identitásával.
Kulcstartó létrehozása. Cserélje le <a tároló nevét> egy egyedi névre.
# 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
A
--enable-rbac-authorization
paraméter az Azure szerepköralapú hozzáférés-vezérlést (RBAC) állítja be engedélymodellként. Ez a beállítás alapértelmezés szerint érvényteleníti az összes hozzáférési szabályzat engedélyét.Adja meg magának a Key Vault titkos kulcsokra vonatkozó RBAC-szerepkört a tárolóhoz.
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
Engedélyezze a rendszer által hozzárendelt felügyelt identitást az alkalmazáshoz, és adja meg neki a tároló Key Vault titkos felhasználói RBAC-szerepkörét.
az webapp identity assign --resource-group $groupName --name $appName --scope $vaultResourceId --role "Key Vault Secrets User"
Adja hozzá az Azure AI-szolgáltatások erőforrásnevét és előfizetési kulcsát titkos kulcsként a tárolóhoz, és mentse az azonosítóikat környezeti változókként a következő lépéshez.
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)
Korábban a titkos kulcsokat alkalmazásbeállításokként
CS_ACCOUNT_NAME
ésCS_ACCOUNT_KEY
az alkalmazásban állította be. Most állítsa be őket kulcstartó-hivatkozásokként .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)"
A böngészőben lépjen ismét a következőre
<app-name>.azurewebsites.net
: . Ha ismét észlelési eredményeket kap, kulcstartó-hivatkozásokkal csatlakozik az Azure AI-szolgáltatások végpontjához.
Gratulálunk, az alkalmazás most már a kulcstartóban tárolt titkos kódokat használva csatlakozik az Azure AI-szolgáltatásokhoz, az alkalmazás kódjának módosítása nélkül.
Az erőforrások eltávolítása
Az előző lépésekben Azure-erőforrásokat hozott létre egy erőforráscsoportban. Ha várhatóan nem lesz szüksége ezekre az erőforrásokra a jövőben, törölje az erőforráscsoportot a következő parancs Cloud Shellben történő futtatásával:
az group delete --name $groupName
A parancs futtatása egy percig is eltarthat.
Következő lépések
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: