Freigeben über


Lernprogramm: Secure Cognitive Service-Verbindung von JavaScript App Service mithilfe von Key Vault

Azure App Service kann verwaltete Identitäten verwenden, um eine Verbindung mit Back-End-Diensten ohne Verbindungszeichenfolge herzustellen, wodurch Verbindungsschlüssel zum Verwalten überflüssig werden und Ihre Back-End-Konnektivität in einer Produktionsumgebung sicher bleibt. Für Back-End-Dienste, die verwaltete Identitäten nicht unterstützen und dennoch Verbindungsgeheimnisse erfordern, können Sie Key Vault zum Verwalten von Verbindungsgeheimnissen verwenden. In diesem Lernprogramm werden Foundry Tools als Beispiel verwendet, um Ihnen zu zeigen, wie es in der Praxis umgesetzt wird. Wenn Sie fertig sind, verfügen Sie über eine App, die programmgesteuerte Aufrufe an Foundry Tools vorgibt, ohne verbindungsgeheimnisse innerhalb von App Service zu speichern.

Tipp

Foundry Tools unterstützen die Authentifizierung über verwaltete Identitäten, aber in diesem Tutorial wird die Subscription-Key-Authentifizierung verwendet, um zu demonstrieren, wie Sie eine Verbindung zu einem Azure-Dienst herstellen könnten, der keine verwalteten Identitäten von App Services unterstützt.

Architekturdiagramm für das Tutorialszenario.

Mit dieser Architektur:

  • Die Verbindung mit Key Vault wird durch verwaltete Identitäten gesichert.
  • Der App-Dienst greift mithilfe von Key Vault-Verweisen in Form von App-Einstellungen auf die geheimen Schlüssel zu.
  • Der Zugriff auf den Schlüsseltresor ist auf die App beschränkt. App-Mitwirkende, z. B. Administratoren, haben möglicherweise die vollständige Kontrolle über die App Service-Ressourcen und haben gleichzeitig keinen Zugriff auf die Key Vault geheimen Schlüssel.
  • Wenn Ihr Anwendungscode bereits über die Anwendungseinstellungen auf Verbindungsgeheimnisse zugreift, ist keine Änderung erforderlich.

Sie lernen Folgendes:

  • Aktivieren von verwalteten Identitäten
  • Verwenden von verwalteten Identitäten zum Herstellen einer Verbindung mit Key Vault
  • Verwenden Sie Key Vault Verweise
  • Zugriff auf Foundry-Tools

Voraussetzungen

Bereiten Sie Ihre Umgebung auf die Azure CLI vor.

Erstellen einer App mit Konnektivität zu Foundry Tools

  1. Erstellen Sie eine Ressourcengruppe, die alle Ihre Ressourcen enthält:

    # Save resource group name as variable for convenience
    groupName=myKVResourceGroup
    region=westeurope
    
    az group create --name $groupName --location $region
    
  2. Erstellen Sie eine Azure AI services Ressource. Ersetzen Sie <cs-resource-name> durch einen eindeutigen Namen Ihrer Wahl.

    # 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
    

    Hinweis

    --sku F0 erstellt eine kostenlose Stufe Azure AI Services Ressource. Jedes Abonnement ist auf ein Kontingent von einer Ressource der freien Ebene TextAnalytics beschränkt. Wenn Sie die Quote bereits überschritten haben, verwenden Sie stattdessen --sku S.

Konfigurieren der JavaScript-App

Klonen Sie das Beispiel-Repository lokal und stellen Sie die Beispielanwendung im App Service bereit. Ersetzen Sie <app-name> durch einen eindeutigen Namen.

# 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

Die vorherigen Befehle:

  • Erstellen eines App Service-Plans für Linux
  • Erstellen einer Web-App für Node.js 24 LTS
  • Konfigurieren der Web-App zum Installieren der npm-Pakete bei der Bereitstellung
  • Hochladen der ZIP-Datei und Installieren der npm-Pakete

Konfigurieren von Geheimnissen als App-Einstellungen

  1. Konfigurieren Sie die Geheimnisse der Foundry Tools als App-Einstellungen CS_ACCOUNT_NAME und 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. Navigieren Sie im Browser zu Ihrer bereitgestellten Anwendung unter <app-name>.azurewebsites.net und testen Sie den Sprachdetektor mit Strings in verschiedenen Sprachen.

    Screenshot, der die installierte Sprachdetektor-App im App-Dienst zeigt.

    Wenn Sie sich den Anwendungscode ansehen, werden Sie feststellen, dass die Debug-Ausgabe für die Erkennungsergebnisse die gleiche Schriftfarbe hat wie der Hintergrund. Sie können dies erkennen, indem Sie versuchen, die weiße Fläche direkt unter dem Ergebnis zu markieren.

Sichere Backend-Konnektivität

Derzeit werden die Verbindungsgeheimnisse als App-Einstellungen in Ihrer App Service-App gespeichert. Bei diesem Ansatz werden bereits die Verbindungsgeheimnisse aus der Codebasis Ihrer Anwendung gesichert. Allerdings kann jeder Mitwirkende, der Ihre App verwalten kann, auch die App-Einstellungen einsehen. In diesem Schritt verschieben Sie die Verbindungsgeheimnisse in einen Schlüsseltresor und sperren den Zugriff, so dass nur Sie sie verwalten können und nur die App Service App sie mit ihrer verwalteten Identität lesen kann.

  1. Erstellen eines Schlüsseltresors Ersetzen Sie <vault-name> durch einen eindeutigen Namen.

    # 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
    

    Der Parameter legt die Azure rollenbasierte Zugriffssteuerung (RBAC) als Berechtigungsmodell fest. Diese Einstellung macht standardmäßig alle Zugriffsrichtlinienberechtigungen ungültig.

  2. Geben Sie sich selbst die Key Vault Secrets Officer RBAC-Rolle für die Schlüsselbund.

    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. Aktivieren Sie die vom System zugewiesene verwaltete Identität für Ihre App, und weisen Sie ihr die Key Vault Secrets User RBAC-Rolle für den Tresor zu.

    az webapp identity assign --resource-group $groupName --name $appName --scope $vaultResourceId --role  "Key Vault Secrets User"
    
  4. Fügen Sie den Azure AI services Ressourcennamen und den Abonnementschlüssel als geheime Schlüssel zum Tresor hinzu, und speichern Sie ihre IDs als Umgebungsvariablen für den nächsten Schritt.

    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. Zuvor haben Sie die Geheimnisse als App-Einstellungen CS_ACCOUNT_NAME und CS_ACCOUNT_KEY in Ihrer App festgelegt. Legen Sie sie stattdessen als Key Vault-Referenzen fest.

    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. Navigieren Sie im Browser erneut zu <app-name>.azurewebsites.net. Wenn Sie Erkennungsergebnisse zurückerhalten, stellen Sie mit dem Azure AI Services-Endpunkt und den Key Vault-Referenzen eine Verbindung her.

Herzlichen Glückwunsch, Ihre App stellt jetzt eine Verbindung mit Foundry Tools her, wobei geheime Schlüssel im Schlüsseltresor gespeichert sind, ohne dass Änderungen an Ihrem Anwendungscode vorgenommen werden.

Bereinigen von Ressourcen

In den vorherigen Schritten haben Sie Azure Ressourcen in einer Ressourcengruppe erstellt. Wenn Sie nicht erwarten, dass diese Ressourcen in Zukunft benötigt werden, löschen Sie die Ressourcengruppe, indem Sie den folgenden Befehl in der Cloud Shell ausführen:

az group delete --name $groupName

Die Ausführung dieses Befehls kann eine Minute in Anspruch nehmen.

Nächste Schritte