Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Z tego artykułu dowiesz się, jak zabezpieczyć dostęp do usługi Azure OpenAI z poziomu usługi Azure Kubernetes Service (AKS) przy użyciu identyfikatora obciążenia entra firmy Microsoft. Uczysz się, jak:
- Włącz tożsamości obciążeń w klastrze AKS.
- Utwórz tożsamość zarządzaną przypisaną przez użytkownika platformy Azure.
- Utwórz uwierzytelnienia federacyjne Microsoft Entra ID.
- Włącz tożsamość środowiska pracy na zasobniku Kubernetes.
Note
Zalecamy użycie Microsoft Entra Workload ID i zarządzanych tożsamości w AKS do uzyskania dostępu do Azure OpenAI, ponieważ umożliwiają one bezpieczny proces uwierzytelniania bez użycia hasła do zasobów platformy Azure.
Zanim rozpoczniesz
- Potrzebujesz konta platformy Azure z aktywną subskrypcją. Jeśli go nie masz, utwórz bezpłatne konto.
- Ten artykuł nawiązuje do tematu Deploy an application that uses OpenAI on AKS. Przed rozpoczęciem tego artykułu należy ukończyć ten artykuł.
- W celu autoryzacji za pomocą Microsoft Entra potrzebujesz niestandardowej nazwy domeny, która jest aktywowana na koncie Azure OpenAI. Aby uzyskać więcej informacji, zobacz Niestandardowe nazwy poddomeny dla usług Azure AI.
Prerequisites
Użyj środowiska Bash w Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Rozpoczynanie pracy z usługą Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj Azure CLI. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie Azure CLI w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić Azure CLI w kontenerze Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do Azure CLI za pomocą polecenia az login. Aby zakończyć proces uwierzytelniania, wykonaj kroki wyświetlane na Twoim terminalu. Aby uzyskać inne opcje logowania, zobacz Uwierzytelnianie na platformie Azure przy użyciu interfejsu wiersza polecenia platformy Azure.
Gdy zostaniesz o to poproszony/a, zainstaluj rozszerzenie Azure CLI przy pierwszym użyciu. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Używanie rozszerzeń i zarządzanie nimi za pomocą interfejsu wiersza polecenia platformy Azure.
Uruchom az version, aby sprawdzić zainstalowaną wersję i biblioteki zależne. Aby zaktualizować do najnowszej wersji, uruchom az upgrade.
Włączanie identyfikatora obciążenia entra firmy Microsoft w klastrze usługi AKS
Funkcjonalności Microsoft Entra Workload ID i punkt końcowy wystawcy OIDC nie są domyślnie włączone w usłudze AKS. Aby można było ich używać, należy je włączyć w klastrze usługi AKS.
Ustaw zmienne dotyczące nazw grupy zasobów i grupy zasobów klastra AKS.
# 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)Włącz funkcje Microsoft Entra Workload ID i OIDC Issuer Endpoint w istniejącym klastrze usługi AKS za pomocą polecenia
az aks update.az aks update \ --resource-group $RG_NAME \ --name $AKS_NAME \ --enable-workload-identity \ --enable-oidc-issuerAby uzyskać adres URL punktu końcowego wystawcy usługi AKS OIDC, użyj polecenia
az aks show.AKS_OIDC_ISSUER=$(az aks show --resource-group $RG_NAME --name $AKS_NAME --query "oidcIssuerProfile.issuerUrl" -o tsv)
Utwórz przypisaną przez użytkownika tożsamość zarządzaną w usłudze Azure
Utwórz tożsamość zarządzaną przypisaną przez użytkownika platformy Azure przy użyciu
az identity createpolecenia .# Set the managed identity name variable MANAGED_IDENTITY_NAME=myIdentity # Create the managed identity az identity create \ --resource-group $RG_NAME \ --name $MANAGED_IDENTITY_NAMEPobierz identyfikator klienta tożsamości zarządzanej i identyfikator obiektu za pomocą polecenia
az identity show.# 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)Pobierz identyfikator zasobu usługi Azure OpenAI za pomocą polecenia
az resource list.AOAI_RESOURCE_ID=$(az resource list --resource-group $RG_NAME --resource-type Microsoft.CognitiveServices/accounts --query "[0].id" -o tsv)Udziel tożsamości zarządzanej dostępu do zasobu usługi Azure OpenAI za pomocą polecenia
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
Utworzenie federacyjnych poświadczeń Microsoft Entra ID
Ustaw zmienne poświadczeń federacyjnych, przestrzeni nazw i konta usługi.
# 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-accountUtwórz poświadczenie federacyjne przy użyciu
az identity federated-credential createpolecenia .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}
Korzystanie z Identyfikatora Obciążenia Roboczego Entra firmy Microsoft w usłudze AKS
Aby użyć Microsoft Entra Workload ID w usłudze AKS, należy wprowadzić kilka zmian w manifeście wdrożenia ai-service.
Tworzenie konta usługi
Uzyskaj kubeconfig dla klastra przy użyciu polecenia
az aks get-credentials.az aks get-credentials \ --resource-group $RG_NAME \ --name $AKS_NAMEUtwórz konto usługi Kubernetes ServiceAccount przy użyciu
kubectl applypolecenia .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
Włącz identyfikator obciążenia Microsoft Entra na Podzie
Ustaw zmienne nazwy zasobu usługi Azure OpenAI, punktu końcowego i nazwy wdrożenia.
# 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)Ponownie wdroż
ai-servicez kontem usługi oraz z adnotacjąazure.workload.identity/useustawioną natrueprzy użyciu poleceniakubectl apply.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
Testowanie aplikacji
Sprawdź, czy nowy zasobnik jest uruchomiony za pomocą polecenia
kubectl get pods.kubectl get pods --selector app=ai-servicePobierz zmienne środowiskowe zasobnika przy użyciu
kubectl describe podpolecenia . Dane wyjściowe pokazują, że klucz API Azure OpenAI już nie istnieje w zmiennych środowiskowych pod-u.kubectl describe pod --selector app=ai-serviceOtwórz nowy terminal i uzyskaj adres IP usługi administracyjnej magazynu przy użyciu następującego
echopolecenia.echo "http://$(kubectl get svc/store-admin -o jsonpath='{.status.loadBalancer.ingress[0].ip}')"Otwórz przeglądarkę internetową i przejdź do adresu IP z poprzedniego kroku.
Wybierz produkt . Powinien być w stanie dodać nowy produkt i uzyskać opis przy użyciu usługi Azure OpenAI.
Dalsze kroki
W tym artykule przedstawiono sposób zabezpieczania dostępu do usługi Azure OpenAI z poziomu usługi Azure Kubernetes Service (AKS) przy użyciu identyfikatora obciążenia entra firmy Microsoft.
Aby uzyskać więcej informacji na temat identyfikatora obciążenia entra firmy Microsoft, zobacz Identyfikator obciążenia entra firmy Microsoft.