Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam artikel ini, Anda mempelajari cara mengamankan akses ke Azure OpenAI dari Azure Kubernetes Service (AKS) menggunakan ID Beban Kerja Microsoft Entra. Anda akan mempelajari cara untuk:
- Aktifkan identitas beban kerja pada kluster AKS.
- Membuat identitas terkelola oleh pengguna di Azure.
- Buat kredensial terfederasi Microsoft Entra ID.
- Aktifkan identitas beban kerja pada Pod Kubernetes.
Catatan
Sebaiknya gunakan ID Beban Kerja Microsoft Entra dan identitas terkelola di AKS untuk akses Azure OpenAI karena memungkinkan proses autentikasi tanpa kata sandi yang aman untuk mengakses sumber daya Azure.
Sebelum Anda mulai
- Anda memerlukan akun Azure dengan langganan aktif. Jika Anda tidak memilikinya, buat akun secara gratis.
- Artikel ini dibuat pada Menyebarkan aplikasi yang menggunakan OpenAI di AKS. Anda harus menyelesaikan artikel tersebut sebelum memulai artikel ini.
- Anda memerlukan nama domain kustom yang diaktifkan di akun Azure OpenAI Anda untuk digunakan untuk otorisasi Microsoft Entra. Untuk informasi selengkapnya, lihat Nama subdomain kustom untuk layanan Azure AI.
Prasyarat
Gunakan lingkungan Bash di Azure Cloud Shell. Untuk informasi selengkapnya, lihat Mulai menggunakan Azure Cloud Shell.
Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, instal Azure CLI. Jika Anda menjalankan Windows atau macOS, pertimbangkan untuk menjalankan Azure CLI dalam kontainer Docker. Untuk informasi lebih lanjut, lihat Cara menjalankan Azure CLI di kontainer Docker.
Jika Anda menggunakan instalasi lokal, masuk ke Azure CLI dengan menggunakan perintah login az. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk lainnya, lihat Mengautentikasi ke Azure menggunakan Azure CLI.
Saat Anda diminta, instal ekstensi Azure CLI pada penggunaan pertama. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan dan mengelola ekstensi dengan Azure CLI.
Jalankan versi az untuk menemukan versi dan pustaka dependen yang diinstal. Untuk meningkatkan ke versi terbaru, jalankan az upgrade.
Mengaktifkan ID Beban Kerja Microsoft Entra pada kluster AKS
Fitur ID Beban Kerja Microsoft Entra dan Titik Akhir Pengeluar Sertifikat OIDC tidak diaktifkan di AKS secara default. Anda harus mengaktifkannya di kluster AKS sebelum dapat menggunakannya.
Atur nama grup sumber daya dan variabel nama grup sumber daya kluster AKS.
# 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)
Aktifkan fitur ID Beban Kerja Microsoft Entra dan Endpoint Penerbit OIDC pada kluster AKS yang ada menggunakan perintah
az aks update
.az aks update \ --resource-group $RG_NAME \ --name $AKS_NAME \ --enable-workload-identity \ --enable-oidc-issuer
Dapatkan URL Titik Akhir Penerbit AKS OIDC menggunakan perintah
az aks show
.AKS_OIDC_ISSUER=$(az aks show --resource-group $RG_NAME --name $AKS_NAME --query "oidcIssuerProfile.issuerUrl" -o tsv)
Membuat identitas terkelola yang ditetapkan pengguna Azure
Buat identitas terkelola yang ditetapkan pengguna Azure dengan menggunakan perintah
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_NAME
Dapatkan ID klien identitas terkelola dan ID objek menggunakan perintah
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)
Dapatkan ID sumber daya Azure OpenAI menggunakan
az resource list
perintah .AOAI_RESOURCE_ID=$(az resource list --resource-group $RG_NAME --resource-type Microsoft.CognitiveServices/accounts --query "[0].id" -o tsv)
Berikan akses identitas terkelola ke sumber daya Azure OpenAI menggunakan
az role assignment create
perintah .az role assignment create \ --role "Cognitive Services OpenAI User" \ --assignee-object-id $MANAGED_IDENTITY_OBJECT_ID \ --assignee-principal-type ServicePrincipal \ --scope $AOAI_RESOURCE_ID
Membuat kredensial ID Microsoft Entra yang difederasi
Atur variabel kredensial, namespace layanan, dan akun layanan federasi.
# 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
Buat kredensial federasi menggunakan
az identity federated-credential create
perintah .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}
Gunakan ID Beban Kerja Microsoft Entra di AKS
Untuk menggunakan Microsoft Entra Workload ID di AKS, Anda perlu melakukan beberapa penyesuaian pada ai-service
manifes penyebaran.
Membuat ServiceAccount
Dapatkan kubeconfig untuk kluster Anda dengan menggunakan perintah
az aks get-credentials
.az aks get-credentials \ --resource-group $RG_NAME \ --name $AKS_NAME
Buat Kubernetes ServiceAccount menggunakan
kubectl apply
perintah .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
Aktifkan Microsoft Entra Workload ID di dalam Pod
Atur variabel nama sumber daya, titik akhir, dan nama penyebaran Azure OpenAI.
# 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)
Sebarkan ulang
ai-service
dengan ServiceAccount dan anotasi yangazure.workload.identity/use
diatur ketrue
menggunakan perintahkubectl 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
Uji aplikasi
Verifikasi pod baru yang berjalan menggunakan perintah
kubectl get pods
.kubectl get pods --selector app=ai-service -w
Dapatkan log pod menggunakan perintah
kubectl logs
. Mungkin perlu waktu beberapa menit untuk menginisialisasi pod.kubectl logs --selector app=ai-service -f
Contoh output berikut menunjukkan aplikasi telah diinisialisasi dan siap untuk menerima permintaan. Baris pertama menunjukkan kode tidak memiliki variabel konfigurasi. Namun, Azure Identity SDK menangani proses ini dan menetapkan
AZURE_CLIENT_ID
danAZURE_TENANT_ID
variabel.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)
Dapatkan variabel lingkungan pod menggunakan perintah
kubectl describe pod
. Output menunjukkan bahwa kunci Azure OpenAI API tidak lagi ada dalam variabel lingkungan Pod.kubectl describe pod --selector app=ai-service
Buka terminal baru dan dapatkan IP layanan admin toko menggunakan perintah berikut
echo
.echo "http://$(kubectl get svc/store-admin -o jsonpath='{.status.loadBalancer.ingress[0].ip}')"
Buka browser web dan navigasikan ke alamat IP dari langkah sebelumnya.
Pilih Produk. Anda harus dapat menambahkan produk baru dan mendapatkan deskripsi untuk produk tersebut menggunakan Azure OpenAI.
Langkah berikutnya
Dalam artikel ini, Anda mempelajari cara mengamankan akses ke Azure OpenAI dari Azure Kubernetes Service (AKS) menggunakan ID Beban Kerja Microsoft Entra.
Untuk informasi selengkapnya tentang ID Beban Kerja Microsoft Entra, lihat ID Beban Kerja Microsoft Entra.
Azure Kubernetes Service