Megosztás a következőn keresztül:


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

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.

  1. 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)
    
  2. 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
    
  3. 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

  1. 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
    
  2. 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)
    
  3. 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)
    
  4. 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

  1. Á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
    
  2. 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

  1. 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
    
  2. 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

  1. Á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)
    
  2. A ServiceAccount és a azure.workload.identity/use széljegyzet true ismételt üzembe helyezése ai-service a kubectl 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

  1. Ellenőrizze, hogy az új pod fut-e a kubectl get pods paranccsal.

    kubectl get pods --selector app=ai-service -w
    
  2. 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 a AZURE_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)
    
  3. 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
    
  4. 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}')"
    
  5. Nyisson meg egy webböngészőt, és navigáljon az előző lépés IP-címére.

  6. 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.