Az Azure OpenAI biztonságos elérése az Azure Kubernetes Service-ből (AKS)
Ebből a cikkből megtudhatja, hogyan védheti meg az Azure OpenAI-t az Azure Kubernetes Service-ből (AKS) Microsoft Entra Számítási feladat ID használatával. Az alábbiak végrehajtásának módját ismerheti meg:
- Számítási feladatok identitásainak engedélyezése egy AKS-fürtön.
- Hozzon létre egy Azure-felhasználó által hozzárendelt felügyelt identitást.
- Hozzon létre egy Összevont Microsoft Entra-azonosítót.
- Számítási feladatok identitásának engedélyezése Kubernetes-podon.
Feljegyzés
Javasoljuk, hogy Microsoft Entra Számítási feladat ID és felügyelt identitásokat használjon az AKS-ben az Azure OpenAI-hozzáféréshez, mert biztonságos, jelszó nélküli hitelesítési folyamatot tesz lehetővé az Azure-erőforrások eléréséhez.
Mielőtt elkezdené
- Aktív előfizetéssel rendelkező Azure-fiókra van szüksége. Ha nem rendelkezik ilyen fiókkal, hozzon létre ingyenes fiókot.
- Ez a cikk az OpenAI-t az AKS-en használó alkalmazás üzembe helyezésére épül. Mielőtt elkezdené ezt a cikket, be kell fejeznie ezt a cikket.
- A Microsoft Entra engedélyezéséhez engedélyeznie kell egy egyéni tartománynevet az Azure OpenAI-fiókjában. További információ: Egyéni altartománynevek az Azure AI-szolgáltatásokhoz.
Előfeltételek
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: A Bash rövid útmutatója az Azure Cloud Shellben.
Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, telepítse az Azure CLI-t. Ha Windows vagy macOS rendszert használ, fontolja meg az Azure CLI Docker-tárolóban való futtatását. További információ: Az Azure CLI futtatása Docker-tárolóban.
Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért lásd : Bejelentkezés az Azure CLI-vel.
Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata az Azure CLI-vel.
Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet.
Microsoft Entra Számítási feladat ID engedélyezése AKS-fürtön
A Microsoft Entra Számítási feladat ID és az OIDC-kiállító végpontfunkciói alapértelmezés szerint nincsenek engedélyezve az AKS-ben. Használatuk előtt engedélyeznie kell őket az AKS-fürtön.
Adja meg az erőforráscsoport nevét és az AKS-fürt erőforráscsoportjának névváltozóit.
# 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)
Engedélyezze a Microsoft Entra Számítási feladat ID és az OIDC-kiállító végpont funkcióit a meglévő AKS-fürtön a
az aks update
paranccsal.az aks update \ --resource-group $RG_NAME \ --name $AKS_NAME \ --enable-workload-identity \ --enable-oidc-issuer
Kérje le az AKS OIDC-kiállító végpontJÁNAK URL-címét a
az aks show
paranccsal.AKS_OIDC_ISSUER=$(az aks show --resource-group $RG_NAME --name $AKS_NAME --query "oidcIssuerProfile.issuerUrl" -o tsv)
Azure-felhasználó által hozzárendelt felügyelt identitás létrehozása
Hozzon létre egy Azure-felhasználó által hozzárendelt felügyelt identitást a
az identity create
paranccsal.# 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
Kérje le a felügyelt identitás ügyfél-azonosítóját és objektumazonosítóját a
az identity show
parancs használatával.# 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)
Kérje le az Azure OpenAI-erőforrás-azonosítót a
az resource list
paranccsal.AOAI_RESOURCE_ID=$(az resource list --resource-group $RG_NAME --resource-type Microsoft.CognitiveServices/accounts --query "[0].id" -o tsv)
Adjon hozzáférést a felügyelt identitásnak az Azure OpenAI-erőforráshoz a
az role assignment create
paranccsal.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 összevont hitelesítő adatok létrehozása
Állítsa be az összevont hitelesítőadat-, névtér- és szolgáltatásfiókváltozókat.
# 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
Hozza létre az összevont hitelesítő adatokat a
az identity federated-credential create
paranccsal.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}
Microsoft Entra Számítási feladat ID használata az AKS-ben
Ha Microsoft Entra Számítási feladat ID szeretne használni az AKS-ben, néhány módosítást kell végrehajtania az ai-service
üzembehelyezési jegyzéken.
ServiceAccount létrehozása
Kérje le a fürt kubeconfigját a
az aks get-credentials
parancs használatával.az aks get-credentials \ --resource-group $RG_NAME \ --name $AKS_NAME
Hozzon létre egy Kubernetes ServiceAccount-fiókot a
kubectl apply
paranccsal.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
Microsoft Entra Számítási feladat ID engedélyezése a podon
Állítsa be az Azure OpenAI-erőforrás nevét, végpontjának és üzembe helyezésének névváltozóit.
# 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)
A ServiceAccount és a
azure.workload.identity/use
széljegyzettrue
ismételt üzembe helyezéseai-service
akubectl apply
parancs használatára.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
Az alkalmazás tesztelése
Ellenőrizze, hogy az új pod fut-e a
kubectl get pods
paranccsal.kubectl get pods --selector app=ai-service -w
Kérje le a podnaplókat a
kubectl logs
parancs használatával. A pod inicializálása eltarthat néhány percig.kubectl logs --selector app=ai-service -f
Az alábbi példakimenet azt mutatja, hogy az alkalmazás inicializálódott, és készen áll a kérések elfogadására. Az első sor arra utal, hogy a kód nem tartalmaz konfigurációs változókat. Az Azure Identity SDK azonban kezeli ezt a folyamatot, és beállítja a változókat és
AZURE_TENANT_ID
aAZURE_CLIENT_ID
változókat.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)
A pod környezeti változóinak lekérése a
kubectl describe pod
paranccsal. A kimenet azt mutatja, hogy az Azure OpenAI API-kulcs már nem létezik a Pod környezeti változóiban.kubectl describe pod --selector app=ai-service
Nyisson meg egy új terminált, és kérje le az áruházi rendszergazdai szolgáltatás IP-címét az alábbi
echo
paranccsal.echo "http://$(kubectl get svc/store-admin -o jsonpath='{.status.loadBalancer.ingress[0].ip}')"
Nyisson meg egy webböngészőt, és navigáljon az előző lépés IP-címére.
Válassza ki a termékeket. Hozzá kell tudnia adni egy új terméket, és le kell kapnia annak leírását az Azure OpenAI használatával.
Következő lépések
Ebben a cikkben megtanulhatta, hogyan védheti meg az Azure OpenAI-t az Azure Kubernetes Service-ből (AKS) Microsoft Entra Számítási feladat ID használatával.
A Microsoft Entra Számítási feladat ID kapcsolatos további információkért lásd: Microsoft Entra Számítási feladat ID.
Azure Kubernetes Service