Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel erfahren Sie, wie Sie den Zugriff auf Azure OpenAI über Azure Kubernetes Service (AKS) mithilfe von Microsoft Entra Workload ID sichern. Folgendes wird vermittelt:
- Aktivieren von Workloadidentitäten in einem AKS-Cluster.
- Erstellen einer benutzerzugewiesenen verwalteten Azure-Identität.
- Erstellen Sie Microsoft Entra ID-Verbundanmeldeinformationen.
- Aktivieren der Workload-Identität auf einem Kubernetes-Pod
Hinweis
Es wird empfohlen, Microsoft Entra Workload ID und verwaltete Identitäten auf AKS für Azure OpenAI-Zugriff zu verwenden, da dadurch ein sicherer, kennwortloser Authentifizierungsprozess für den Zugriff auf Azure Ressourcen ermöglicht wird.
Bevor Sie beginnen
- Sie benötigen ein Azure Konto mit einem aktiven Abonnement. Erstellen Sie ein kostenloses Konto, falls Sie keines besitzen.
- Dieser Artikel baut auf den Artikel Bereitstellen einer Anwendung, die OpenAI in AKS verwendet auf. Sie sollten ihn lesen, bevor Sie mit diesem Artikel beginnen.
- Sie benötigen einen benutzerdefinierten Domänennamen, der für Ihr Azure OpenAI-Konto aktiviert ist, um Microsoft Entra Autorisierung zu verwenden. Weitere Informationen finden Sie unter benutzerdefinierte Unterdomänennamen für Foundry Tools.
Voraussetzungen
Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Get started with Azure Cloud Shell.
Wenn Sie CLI-Referenzbefehle lieber lokal ausführen möchten, install die Azure CLI. Wenn Sie Windows oder macOS verwenden, sollten Sie Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter How to run the Azure CLI in a Docker container.
Wenn Sie eine lokale Installation verwenden, melden Sie sich mit dem Befehl az login beim Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Weitere Anmeldeoptionen finden Sie unter Authentifizieren bei Azure mit Azure CLI.
Wenn Sie dazu aufgefordert werden, installieren Sie die Azure CLI Erweiterung bei der ersten Verwendung. Weitere Informationen zu Erweiterungen finden Sie unter Use and manage extensions with the Azure CLI.
Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.
Aktivieren von Microsoft Entra Workload ID in einem AKS-Cluster
Die Features Microsoft Entra Workload ID und OIDC Issuer Endpoint sind standardmäßig nicht auf AKS aktiviert. Sie müssen sie in Ihrem AKS-Cluster aktivieren, um Sie verwenden zu können.
Legen Sie den Ressourcengruppennamen und die Variablennamen der AKS-Clusterressourcengruppe fest.
# Set the resource group variable RG_NAME=myResourceGroup # Set the AKS cluster name based on the resource group variable AKS_NAME=$(az resource list --resource-group $RG_NAME --resource-type Microsoft.ContainerService/managedClusters --query "[0].name" -o tsv)Aktivieren Sie die Microsoft Entra Workload ID- und OIDC-Issuer-Endpoint-Feature auf Ihrem vorhandenen AKS-Cluster mithilfe des
az aks update-Befehls.az aks update \ --resource-group $RG_NAME \ --name $AKS_NAME \ --enable-workload-identity \ --enable-oidc-issuerRufen Sie mit dem Befehl die AKS OIDC-Aussteller-Endpunkt-URL ab.
AKS_OIDC_ISSUER=$(az aks show --resource-group $RG_NAME --name $AKS_NAME --query "oidcIssuerProfile.issuerUrl" -o tsv)
Erstellen einer vom Benutzer zugewiesenen verwalteten Azure-Identität
Erstellen Sie eine Azure vom Benutzer zugewiesene verwaltete Identität mithilfe des Befehls
az identity create.# Set the managed identity name variable MANAGED_IDENTITY_NAME=myIdentity # Create the managed identity az identity create \ --resource-group $RG_NAME \ --name $MANAGED_IDENTITY_NAMERufen Sie mit dem Befehl die Client- und Objekt-ID der verwalteten Identität ab.
# Get the managed identity client ID MANAGED_IDENTITY_CLIENT_ID=$(az identity show --resource-group $RG_NAME --name $MANAGED_IDENTITY_NAME --query clientId -o tsv) # Get the managed identity object ID MANAGED_IDENTITY_OBJECT_ID=$(az identity show --resource-group $RG_NAME --name $MANAGED_IDENTITY_NAME --query principalId -o tsv)Rufen Sie die Azure OpenAI-Ressourcen-ID mithilfe des Befehls
az resource listab.AOAI_RESOURCE_ID=$(az resource list --resource-group $RG_NAME --resource-type Microsoft.CognitiveServices/accounts --query "[0].id" -o tsv)Gewähren Sie den verwalteten Identitätszugriff auf die Azure OpenAI-Ressource mithilfe des Befehls
az role assignment create.az role assignment create \ --role "Cognitive Services OpenAI User" \ --assignee-object-id $MANAGED_IDENTITY_OBJECT_ID \ --assignee-principal-type ServicePrincipal \ --scope $AOAI_RESOURCE_ID
Erstellen von Microsoft Entra ID-Verbundanmeldeinformationen
Legen Sie die Verbundanmeldeinformation, den Namespace und die Dienstkontovariablen fest.
# Set the federated credential name variable FEDERATED_CREDENTIAL_NAME=myFederatedCredential # Set the namespace variable SERVICE_ACCOUNT_NAMESPACE=default # Set the service account variable SERVICE_ACCOUNT_NAME=ai-service-accountErstellen Sie mit dem Befehl „“ die Verbundanmeldeinformation.
az identity federated-credential create \ --name ${FEDERATED_CREDENTIAL_NAME} \ --resource-group ${RG_NAME} \ --identity-name ${MANAGED_IDENTITY_NAME} \ --issuer ${AKS_OIDC_ISSUER} \ --subject system:serviceaccount:${SERVICE_ACCOUNT_NAMESPACE}:${SERVICE_ACCOUNT_NAME}
Verwenden Sie Microsoft Entra Workload ID in AKS
Um Microsoft Entra Workload ID auf AKS zu verwenden, müssen Sie einige Änderungen am ai-service-Bereitstellungsmanifest vornehmen.
Erstellen eines Dienstkontos (ServiceAccount)
Rufen Sie mit dem Befehl die kubeconfig für Ihren Cluster ab.
az aks get-credentials \ --resource-group $RG_NAME \ --name $AKS_NAMEErstellen Sie mit dem Befehl ein Kubernetes-Dienstkonto.
kubectl apply -f - <<EOF apiVersion: v1 kind: ServiceAccount metadata: annotations: azure.workload.identity/client-id: ${MANAGED_IDENTITY_CLIENT_ID} name: ${SERVICE_ACCOUNT_NAME} namespace: ${SERVICE_ACCOUNT_NAMESPACE} EOF
Aktivieren von Microsoft Entra Workload ID auf dem Pod
Legen Sie die variablen Azure OpenAI-Ressourcennamen, Endpunkt und Bereitstellungsnamen fest.
# Get the Azure OpenAI resource name AOAI_NAME=$(az resource list \ --resource-group $RG_NAME \ --resource-type Microsoft.CognitiveServices/accounts \ --query "[0].name" -o tsv) # Get the Azure OpenAI endpoint AOAI_ENDPOINT=$(az cognitiveservices account show \ --resource-group $RG_NAME \ --name $AOAI_NAME \ --query properties.endpoint -o tsv) # Get the Azure OpenAI deployment name AOAI_DEPLOYMENT_NAME=$(az cognitiveservices account deployment list \ --resource-group $RG_NAME \ --name $AOAI_NAME \ --query "[0].name" -o tsv)Stellen Sie den erneut bereit, wobei Sie den ServiceAccount und die Anmerkung mithilfe des Befehls „“ auf „“ festlegen.
kubectl apply -f - <<EOF apiVersion: apps/v1 kind: Deployment metadata: name: ai-service spec: replicas: 1 selector: matchLabels: app: ai-service template: metadata: labels: app: ai-service azure.workload.identity/use: "true" spec: serviceAccountName: $SERVICE_ACCOUNT_NAME nodeSelector: "kubernetes.io/os": linux containers: - name: ai-service image: ghcr.io/azure-samples/aks-store-demo/ai-service:latest ports: - containerPort: 5001 env: - name: USE_AZURE_OPENAI value: "True" - name: USE_AZURE_AD value: "True" - name: AZURE_OPENAI_DEPLOYMENT_NAME value: "${AOAI_DEPLOYMENT_NAME}" - name: AZURE_OPENAI_ENDPOINT value: "${AOAI_ENDPOINT}" resources: requests: cpu: 20m memory: 50Mi limits: cpu: 50m memory: 128Mi EOF
Testen der App
Überprüfen Sie mit dem Befehl „“, ob der neue Pod ausgeführt wird.
kubectl get pods --selector app=ai-serviceRufen Sie mit dem Befehl die Umgebungsvariablen des Pods ab. Die Ausgabe zeigt, dass der Azure OpenAI-API-Schlüssel in den Umgebungsvariablen von Pod nicht mehr vorhanden ist.
kubectl describe pod --selector app=ai-serviceÖffnen Sie ein neues Terminal, und rufen Sie die IP-Adresse des Speicheradministratordiensts mithilfe des folgenden -Befehls ab.
echo "http://$(kubectl get svc/store-admin -o jsonpath='{.status.loadBalancer.ingress[0].ip}')"Öffnen Sie einen Webbrowser und navigieren Sie zur IP-Adresse des vorherigen Schritts.
Wählen Sie Produkte aus. Sie sollten in der Lage sein, ein neues Produkt hinzuzufügen und eine Beschreibung dafür mithilfe von Azure OpenAI zu erhalten.
Nächste Schritte
In diesem Artikel haben Sie erfahren, wie Sie den Zugriff auf Azure OpenAI über Azure Kubernetes Service (AKS) mithilfe von Microsoft Entra Workload ID sichern.
Weitere Informationen zu Microsoft Entra Workload ID finden Sie unter Microsoft Entra Workload ID.