Azure Kubernetes Service'ten (AKS) Azure OpenAI'ye güvenli erişim
Bu makalede, Microsoft Entra İş Yükü Kimliği kullanarak Azure Kubernetes Service'ten (AKS) Azure OpenAI'ye erişimin güvenliğini sağlamayı öğreneceksiniz. Şunları yapmayı öğreneceksiniz:
- AKS kümesinde iş yükü kimliklerini etkinleştirme.
- Azure kullanıcı tarafından atanan yönetilen kimlik oluşturma.
- Microsoft Entra Id federasyon kimlik bilgileri oluşturun.
- Kubernetes Pod'da iş yükü kimliğini etkinleştirme.
Not
Azure kaynaklarına erişmek için güvenli, parolasız bir kimlik doğrulama işlemine olanak sağladığından, Azure OpenAI erişimi için AKS'de Microsoft Entra İş Yükü Kimliği ve yönetilen kimlikler kullanmanızı öneririz.
Başlamadan önce
- Etkin aboneliği olan bir Azure hesabına ihtiyacınız vardır. Hesabınız yoksa ücretsiz bir hesap oluşturun.
- Bu makale, AKS üzerinde OpenAI kullanan bir uygulama dağıtma konusunda derlemektedir. Bu makaleye başlamadan önce bu makaleyi tamamlamanız gerekir.
- Microsoft Entra yetkilendirmesi için kullanmak üzere Azure OpenAI hesabınızda özel bir etki alanı adının etkinleştirilmesi gerekir. Daha fazla bilgi için bkz . Azure AI hizmetleri için özel alt etki alanı adları.
Önkoşullar
Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.
CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.
Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.
İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.
Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.
AKS kümesinde Microsoft Entra İş Yükü Kimliği etkinleştirme
AKS'de Microsoft Entra İş Yükü Kimliği ve OIDC Veren Uç Noktası özellikleri varsayılan olarak etkinleştirilmez. Bunları kullanabilmeniz için aks kümenizde etkinleştirmeniz gerekir.
Kaynak grubu adını ve AKS kümesi kaynak grubu adı değişkenlerini ayarlayın.
# Set the resource group variable RG_NAME=myResourceGroup # Set the AKS cluster resource group variable AKS_NAME=$(az resource list --resource-group $RG_NAME --resource-type Microsoft.ContainerService/managedClusters --query "[0].name" -o tsv)
komutunu kullanarak
az aks update
mevcut AKS kümenizde Microsoft Entra İş Yükü Kimliği ve OIDC Veren Uç Noktası özelliklerini etkinleştirin.az aks update \ --resource-group $RG_NAME \ --name $AKS_NAME \ --enable-workload-identity \ --enable-oidc-issuer
komutunu kullanarak AKS OIDC Veren Uç Noktası URL'sini
az aks show
alın.AKS_OIDC_ISSUER=$(az aks show --resource-group $RG_NAME --name $AKS_NAME --query "oidcIssuerProfile.issuerUrl" -o tsv)
Azure kullanıcı tarafından atanan yönetilen kimlik oluşturma
komutunu kullanarak
az identity create
Azure kullanıcı tarafından atanan bir yönetilen kimlik oluşturun.# Set the managed identity name variable MANAGED_IDENTITY_NAME=myIdentity # Create the managed identity az identity create \ --resource-group $RG_NAME \ --name $MANAGED_IDENTITY_NAME
komutunu kullanarak
az identity show
yönetilen kimlik istemci kimliğini ve nesne kimliğini alın.# 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)
komutunu kullanarak
az resource list
Azure OpenAI kaynak kimliğini alın.AOAI_RESOURCE_ID=$(az resource list --resource-group $RG_NAME --resource-type Microsoft.CognitiveServices/accounts --query "[0].id" -o tsv)
komutunu kullanarak yönetilen kimliğe Azure OpenAI kaynağına erişim izni verin
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
Microsoft Entra Id federasyon kimlik bilgisi oluşturma
Federasyon kimlik bilgileri, ad alanı ve hizmet hesabı değişkenlerini ayarlayın.
# 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-account
komutunu kullanarak
az identity federated-credential create
federasyon kimlik bilgilerini oluşturun.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}
AKS'de Microsoft Entra İş Yükü Kimliği kullanma
AKS'de Microsoft Entra İş Yükü Kimliği kullanmak için dağıtım bildiriminde ai-service
birkaç değişiklik yapmanız gerekir.
ServiceAccount oluşturma
komutunu kullanarak kümeniz için kubeconfig değerini
az aks get-credentials
alın.az aks get-credentials \ --resource-group $RG_NAME \ --name $AKS_NAME
komutunu kullanarak
kubectl apply
bir Kubernetes ServiceAccount oluşturun.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
Pod'da Microsoft Entra İş Yükü Kimliği etkinleştirme
Azure OpenAI kaynak adı, uç noktası ve dağıtım adı değişkenlerini ayarlayın.
# 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)
komutunu kullanarak ServiceAccount ve
azure.workload.identity/use
ek açıklama ayarıtrue
ile öğesini yeniden dağıtınai-service
kubectl 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
Uygulamayı test etme
komutunu kullanarak yeni pod'un
kubectl get pods
çalıştığını doğrulayın.kubectl get pods --selector app=ai-service -w
komutunu kullanarak pod günlüklerini
kubectl logs
alın. Pod'un başlatılması birkaç dakika sürebilir.kubectl logs --selector app=ai-service -f
Aşağıdaki örnek çıktı, uygulamanın başlatıldığını ve istekleri kabul etmeye hazır olduğunu gösterir. İlk satırda kodun yapılandırma değişkenleri eksik olduğu öne sürülüyor. Ancak Azure Kimlik SDK'sı bu işlemi işler ve ve
AZURE_TENANT_ID
değişkenlerini ayarlarAZURE_CLIENT_ID
.Incomplete environment configuration. These variables are set: AZURE_CLIENT_ID, AZURE_TENANT_ID INFO: Started server process [1] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:5001 (Press CTRL+C to quit)
komutunu kullanarak
kubectl describe pod
pod ortam değişkenlerini alın. Çıktı, Azure OpenAI API anahtarının pod'un ortam değişkenlerinde artık mevcut olmadığını gösterir.kubectl describe pod --selector app=ai-service
Yeni bir terminal açın ve aşağıdaki
echo
komutu kullanarak mağaza yönetici hizmetinin IP'sini alın.echo "http://$(kubectl get svc/store-admin -o jsonpath='{.status.loadBalancer.ingress[0].ip}')"
Bir web tarayıcısı açın ve önceki adımdaki IP adresine gidin.
Ürünler'i seçin. Azure OpenAI kullanarak yeni bir ürün ekleyebilmeniz ve bunun için bir açıklama alabilmeniz gerekir.
Sonraki adımlar
Bu makalede, Microsoft Entra İş Yükü Kimliği kullanarak Azure Kubernetes Service'ten (AKS) Azure OpenAI'ye erişimin güvenliğini sağlamayı öğrendiniz.
Microsoft Entra İş Yükü Kimliği hakkında daha fazla bilgi için bkz. Microsoft Entra İş Yükü Kimliği.
Azure Kubernetes Service