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.
V tomto článku se dozvíte, jak zabezpečit přístup k Azure OpenAI ze služby Azure Kubernetes Service (AKS) pomocí ID úlohy Microsoft Entra. Naučíte se:
- Povolení identit úloh v clusteru AKS
- Vytvořte uživatelem přiřazenou spravovanou identitu Azure.
- Vytvořte federované přihlašovací údaje Microsoft Entra ID.
- Povolení identity úloh na podu Kubernetes
Note
Doporučujeme používat ID úloh Microsoft Entra a spravované identity v AKS pro přístup k Azure OpenAI, protože umožňuje zabezpečený proces ověřování bez hesla pro přístup k prostředkům Azure.
Než začnete
- Potřebujete účet Azure s aktivním předplatným. Pokud ho nemáte, vytvořte si účet zdarma.
- Tento článek vychází z nasazení aplikace, která používá OpenAI v AKS. Než začnete s tímto článkem, měli byste ho dokončit.
- Pro použití pro autorizaci Microsoft Entra potřebujete pro účet Azure OpenAI povolený vlastní název domény. Další informace najdete v tématu Názvy vlastních subdomén pro služby Azure AI.
Prerequisites
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v tématu Začínáme s Azure Cloud Shellem.
Pokud chcete spouštět referenční příkazy CLI lokálně, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Pro více informací, viz Jak spustit Azure CLI v Docker kontejneru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Chcete-li dokončit proces ověřování, postupujte podle kroků zobrazených ve vašem terminálu. Další možnosti přihlášení najdete v tématu Ověřování v Azure pomocí Azure CLI.
Když budete vyzváni, 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.
Povolení ID úlohy Microsoft Entra v clusteru AKS
Funkce ID úlohy Microsoft Entra a koncového bodu vystavitele OIDC nejsou ve výchozím nastavení povoleny v AKS. Než je budete moct používat, musíte je povolit v clusteru AKS.
Nastavte název skupiny prostředků a proměnné názvu skupiny prostředků clusteru 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)Povolte funkce Microsoft Entra Workload ID a koncového bodu vydavatele OIDC ve vašem stávajícím clusteru AKS pomocí příkazu
az aks update.az aks update \ --resource-group $RG_NAME \ --name $AKS_NAME \ --enable-workload-identity \ --enable-oidc-issuerZískejte adresu URL vystavitelského koncového bodu AKS OIDC pomocí příkazu
az aks show.AKS_OIDC_ISSUER=$(az aks show --resource-group $RG_NAME --name $AKS_NAME --query "oidcIssuerProfile.issuerUrl" -o tsv)
Vytvořte spravovanou identitu přiřazenou uživatelem v Azure
Vytvořte spravovanou identitu Azure přiřazenou uživatelem pomocí příkazu
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_NAMEPomocí příkazu získejte ID klienta spravované identity a ID objektu
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)Pomocí příkazu získejte ID
az resource listprostředku Azure OpenAI.AOAI_RESOURCE_ID=$(az resource list --resource-group $RG_NAME --resource-type Microsoft.CognitiveServices/accounts --query "[0].id" -o tsv)Udělte spravované identitě přístup k prostředku Azure OpenAI pomocí příkazu
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
Vytvořte federované přihlašovací údaje Microsoft Entra ID
Nastavte federované přihlašovací údaje, obor názvů a proměnné účtu služby.
# 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-accountPomocí příkazu vytvořte federované přihlašovací údaje
az identity federated-credential create.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}
Použijte ID zátěže Microsoft Entra v AKS
Pokud chcete v AKS použít ID úlohy Microsoft Entra, musíte v manifestu ai-service nasazení provést několik změn.
Vytvoření účtu služby
Pomocí příkazu získejte kubeconfig pro váš cluster
az aks get-credentials.az aks get-credentials \ --resource-group $RG_NAME \ --name $AKS_NAMEPomocí příkazu vytvořte účet služby Kubernetes ServiceAccount
kubectl apply.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
Povolte pracovní ID Microsoft Entra na podu
Nastavte proměnné pro název prostředku Azure OpenAI, koncový bod a název nasazení.
# 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)Znovu nasaďte
ai-services ServiceAccount a s poznámkouazure.workload.identity/usenastavenou natruepomocí příkazukubectl 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
Otestování aplikace
Pomocí příkazu
kubectl get podsověřte, že nový pod je spuštěný.kubectl get pods --selector app=ai-servicePomocí příkazu
kubectl describe podzískejte proměnné prostředí podu. Výstup ukazuje, že klíč rozhraní API Azure OpenAI už v proměnných prostředí Podu neexistuje.kubectl describe pod --selector app=ai-serviceOtevřete nový terminál a pomocí následujícího
echopříkazu získejte IP adresu služby správce storu.echo "http://$(kubectl get svc/store-admin -o jsonpath='{.status.loadBalancer.ingress[0].ip}')"Otevřete webový prohlížeč a přejděte na IP adresu z předchozího kroku.
Vyberte Produkty. Měli byste být schopni přidat nový produkt a získat popis pro něj pomocí Azure OpenAI.
Další kroky
V tomto článku jste zjistili, jak zabezpečit přístup k Azure OpenAI ze služby Azure Kubernetes Service (AKS) pomocí ID úlohy Microsoft Entra.
Další informace o ID úlohy Microsoft Entra naleznete v tématu ID úlohy Microsoft Entra.
Azure Kubernetes Service