Aktivera säkra inställningar i azure IoT Operations Preview-distribution

Viktigt!

Förhandsversion av Azure IoT Operations – aktiverad av Azure Arc är för närvarande i förhandsversion. Du bör inte använda den här förhandsgranskningsprogramvaran i produktionsmiljöer.

Du måste distribuera en ny Azure IoT Operations-installation när en allmänt tillgänglig version görs tillgänglig. Du kommer inte att kunna uppgradera en förhandsgranskningsinstallation.

Juridiska villkor för Azure-funktioner i betaversion, förhandsversion eller som av någon annan anledning inte har gjorts allmänt tillgängliga ännu finns i kompletterande användningsvillkor för Microsoft Azure-förhandsversioner.

De säkra inställningarna för Azure IoT Operations omfattar konfigurationen av Secrets Management och användartilldelad hanterad identitet för molnanslutningar, till exempel en OPC UA-server eller dataflödesslutpunkter.

Den här artikeln innehåller instruktioner för att aktivera säkra inställningar om du inte gjorde det under den första distributionen.

Förutsättningar

  • En Azure IoT Operations-instans som distribuerats med testinställningar. Om du till exempel följde anvisningarna i Snabbstart: Kör Azure IoT-åtgärder i Codespaces.

  • Azure CLI installerat på utvecklingsdatorn. Det här scenariot kräver Azure CLI version 2.64.0 eller senare. Använd az --version för att kontrollera din version och az upgrade uppdatera om det behövs. Mer information finns i Installera Azure CLI.

  • De senaste versionerna av följande tillägg för Azure CLI:

    az extension add --upgrade --name azure-iot-ops
    az extension add --upgrade --name connectedk8s
    

Konfigurera kluster för arbetsbelastningsidentitet

En arbetsbelastningsidentitet är en identitet som du tilldelar till en programvaruarbetsbelastning (till exempel ett program, en tjänst, ett skript eller en container) för att autentisera och komma åt andra tjänster och resurser. Arbetsbelastningsidentitetsfunktionen måste vara aktiverad i klustret, så att Azure Key Vault Secret Store-tillägget för Kubernetes och Azure IoT Operations kan komma åt Microsoft Entra ID-skyddade resurser. Mer information finns i Vad är arbetsbelastningsidentiteter?.

Kommentar

Det här steget gäller endast för Ubuntu + K3s-kluster. Snabbstartsskriptet för Azure Kubernetes Service (AKS) Edge Essentials som används i Förbereda ditt Azure Arc-aktiverade Kubernetes-kluster möjliggör arbetsbelastningsidentitet som standard. Om du har ett AKS Edge Essentials-kluster fortsätter du till nästa avsnitt.

Om du inte är säker på om K3s-klustret redan har arbetsbelastningsidentiteten aktiverad eller inte kör du kommandot az connectedk8s show för att kontrollera:

az connectedk8s show --name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --query "{oidcIssuerEnabled:oidcIssuerProfile.enabled, workloadIdentityEnabled: securityProfile.workloadIdentity.enabled}"

Om du inte redan har konfigurerat kan du använda följande steg för att aktivera arbetsbelastningsidentitet i ett befintligt anslutet K3s-kluster:

  1. Använd kommandot az connectedk8s update för att aktivera funktionen för arbetsbelastningsidentitet i klustret.

    #!/bin/bash   
    
    # Variable block
    RESOURCE_GROUP="<RESOURCE_GROUP>"
    CLUSTER_NAME="<CLUSTER_NAME>"
    
    # Enable workload identity
    az connectedk8s update --resource-group $RESOURCE_GROUP \
                           --name $CLUSTER_NAME \
                           --enable-oidc-issuer --enable-workload-identity 
    
  2. Använd kommandot az connectedk8s show för att hämta klustrets utfärdar-URL. Anteckna om du vill lägga till den senare i K3s-konfigurationsfilen.

    #!/bin/bash
    
    # Variable block
    RESOURCE_GROUP="<RESOURCE_GROUP>"
    CLUSTER_NAME="<CLUSTER_NAME>"
    
    # Get the cluster's issuer url
    SERVICE_ACCOUNT_ISSUER=$(az connectedk8s show --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --query oidcIssuerProfile.issuerUrl --output tsv)
    echo "SERVICE_ACCOUNT_ISSUER = $SERVICE_ACCOUNT_ISSUER"
    
  3. Skapa en K3s-konfigurationsfil.

    sudo nano /etc/rancher/k3s/config.yaml
    
  4. Lägg till följande innehåll i filen config.yaml:

    kube-apiserver-arg:
     - service-account-issuer=<SERVICE_ACCOUNT_ISSUER>
     - service-account-max-token-expiration=24h 
    
  5. Spara och avsluta filredigeraren.

  6. Starta om k3s.

    systemctl restart k3s 
    

Konfigurera hantering av hemligheter

Secrets Management för Azure IoT Operations använder Secret Store-tillägget för att synkronisera hemligheterna från ett Azure Key Vault och lagra dem på gränsen som Kubernetes-hemligheter. Secret Store-tillägget kräver en användartilldelad hanterad identitet med åtkomst till Azure Key Vault där hemligheter lagras. Mer information finns i Vad är hanterade identiteter för Azure-resurser?.

Följ de här stegen för att konfigurera Secrets Management:

  1. Skapa ett Azure Key Vault som används för att lagra hemligheter och ge ditt användarkonto behörighet att hantera hemligheter med Key Vaults Secrets Officer rollen.

  2. Skapa en användartilldelad hanterad identitet för Secret Store-tillägget.

  3. Använd kommandot az iot ops secretsync enable för att konfigurera Azure IoT Operations-instansen för hemlig synkronisering. Det här kommandot:

    • Skapar en federerad identitetsautentiseringsuppgift med hjälp av den användartilldelade hanterade identiteten.
    • Lägger till en rolltilldelning till den användartilldelade hanterade identiteten för åtkomst till Azure Key Vault.
    • Lägger till en lägsta hemlighetsproviderklass som är associerad med Azure IoT Operations-instansen.
    # Variable block
    INSTANCE_NAME="<INSTANCE_NAME>"
    RESOURCE_GROUP="<RESOURCE_GROUP>"
    USER_ASSIGNED_MI_NAME="<USER_ASSIGNED_MI_NAME>"
    KEYVAULT_NAME="<KEYVAULT_NAME>"
    
    #Get the resource ID of the user-assigned managed identity
    USER_ASSIGNED_MI_RESOURCE_ID=$(az identity show --name $USER_ASSIGNED_MI_NAME --resource-group $RESOURCE_GROUP --query id --output tsv)
    
    #Get the resource ID of the key vault
    KEYVAULT_RESOURCE_ID=$(az keyvault show --name $KEYVAULT_NAME --resource-group $RESOURCE_GROUP --query id --output tsv)
    
    #Enable secret synchronization
    az iot ops secretsync enable --name $INSTANCE_NAME \
                                 --resource-group $RESOURCE_GROUP \
                                 --mi-user-assigned $USER_ASSIGNED_MI_RESOURCE_ID \
                                 --kv-resource-id $KEYVAULT_RESOURCE_ID
    

Nu när installationen av hemlig synkronisering är klar kan du läsa Hantera hemligheter för att lära dig hur du använder hemligheter med Azure IoT Operations.

Konfigurera användartilldelad hanterad identitet för molnanslutningar

Vissa Azure IoT Operations-komponenter som dataflödesslutpunkter använder användartilldelad hanterad identitet för molnanslutningar. Vi rekommenderar att du använder en separat identitet från den som används för att konfigurera Secrets Management.

  1. Skapa en användartilldelad hanterad identitet som används för molnanslutningar.

    Kommentar

    Du måste ge identiteten behörighet till den molnresurs som detta ska användas för.

  2. Använd kommandot az iot ops identity assign för att tilldela identiteten till Azure IoT Operations-instansen. Det här kommandot skapar också en federerad identitetsautentiseringsuppgift med OIDC-utfärdaren för det angivna anslutna klustret och Azure IoT Operations-tjänstkontot.

    # Variable block
    INSTANCE_NAME="<INSTANCE_NAME>"
    RESOURCE_GROUP="<RESOURCE_GROUP>"
    USER_ASSIGNED_MI_NAME="<USER_ASSIGNED_MI_NAME FOR CLOUD CONNECTIONS>"
    
    #Get the resource ID of the user-assigned managed identity
    USER_ASSIGNED_MI_RESOURCE_ID=$(az identity show --name $USER_ASSIGNED_MI_NAME --resource-group $RESOURCE_GROUP --query id --output tsv)
    
    #Assign the identity to the Azure IoT Operations instance
    az iot ops identity assign --name $INSTANCE_NAME \
                               --resource-group $RESOURCE_GROUP \
                               --mi-user-assigned $USER_ASSIGNED_MI_RESOURCE_ID
    

Nu kan du använda den här hanterade identiteten i dataflödesslutpunkter för molnanslutningar.