Delen via


Beveiligde instellingen inschakelen in Azure IoT-bewerkingen

De beveiligde instellingen voor Azure IoT-bewerkingen omvatten de installatie van geheimenbeheer en een door de gebruiker toegewezen beheerde identiteit voor cloudverbindingen; Bijvoorbeeld een OPC UA-server of gegevensstroomeindpunten.

Dit artikel bevat instructies voor het inschakelen van beveiligde instellingen als u dit niet hebt gedaan tijdens de eerste implementatie.

Vereisten

  • Een Azure IoT Operations-exemplaar dat is geïmplementeerd met testinstellingen.

  • Azure CLI is geïnstalleerd op uw ontwikkelcomputer. Voor dit scenario is Azure CLI versie 2.53.0 of hoger vereist. Gebruik az --version om uw versie te controleren en az upgrade om indien nodig bij te werken. Zie De Azure CLI installeren voor meer informatie.

  • De nieuwste versie van de connectedk8s-extensie voor Azure CLI. Gebruik de volgende opdracht om de extensie toe te voegen of bij te werken naar de nieuwste versie:

    az extension add --upgrade --name connectedk8s
    
  • De Azure IoT Operations-extensie voor Azure CLI. Gebruik de volgende opdracht om de extensie toe te voegen of bij te werken naar de nieuwste versie:

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

Het cluster inschakelen voor beveiligde instellingen

Als u geheimensynchronisatie wilt inschakelen voor uw Azure IoT Operations-exemplaar, moet uw cluster zijn ingeschakeld als OIDC-verlener en voor federatie van workloadidentiteit. Deze configuratie is vereist voor de Azure Key Vault Secret Store-extensie om de geheimen te synchroniseren vanuit een Azure Key Vault en deze op te slaan aan de rand als Kubernetes-geheimen.

Voor AKS-clusters (Azure Kubernetes Service) kunnen de OIDC-verlener- en workloadidentiteitsfuncties alleen worden ingeschakeld op het moment dat het cluster wordt gemaakt. Voor clusters in AKS Edge Essentials schakelt het geautomatiseerde script deze functies standaard in. Voor AKS-clusters in Azure Local volgt u de stappen voor het implementeren en configureren van de workloadidentiteit op een AKS-cluster dat door Azure Arc is ingeschakeld om een nieuw cluster te maken als u er geen hebt met de vereiste functies.

Voor k3s-clusters in Kubernetes kunt u een bestaand cluster bijwerken. Gebruik de volgende stappen om deze functies in te schakelen en te configureren:

  1. Werk het cluster bij om OIDC-uitgever en workload-identiteit in te schakelen.

    az connectedk8s update -n <CLUSTER_NAME> -g <RESOURCE_GROUP> --enable-oidc-issuer --enable-workload-identity
    

    Als u de OIDC-verlener en workloadidentiteitsfuncties hebt ingeschakeld bij het maken van het cluster, hoeft u de vorige opdracht niet opnieuw uit te voeren. Gebruik de volgende opdracht om de status van de OIDC-uitgever en functies voor werklastidentiteit voor uw cluster te controleren.

    az connectedk8s show -g <RESOURCE_GROUP> -n <CLUSTER_NAME> --query "{ClusterName:name, OIDCIssuerEnabled:oidcIssuerProfile.enabled, WorkloadIdentityEnabled:securityProfile.workloadIdentity.enabled}"
    
  2. Haal de URL van de uitgever van het cluster op.

    az connectedk8s show -g <RESOURCE_GROUP> -n <CLUSTER_NAME> --query oidcIssuerProfile.issuerUrl --output tsv
    

    Noteer de uitvoer van deze opdracht die u in de volgende stappen wilt gebruiken.

  3. Maak het k3s-configuratiebestand op de computer waarop u uw Kubernetes-cluster hebt geïmplementeerd:

    sudo nano /etc/rancher/k3s/config.yaml
    
  4. Voeg de volgende inhoud toe aan het config.yaml bestand, waarbij u de <SERVICE_ACCOUNT_ISSUER> tijdelijke aanduiding vervangt door de URL van de clusteruitgever die u eerder hebt genoteerd:

    kube-apiserver-arg:
    - service-account-issuer=<SERVICE_ACCOUNT_ISSUER>
    - service-account-max-token-expiration=24h
    

    Sla het bestand op en sluit de nano-editor af.

  5. Start de k3s-service opnieuw:

    sudo systemctl restart k3s
    

Geheimenbeheer instellen

Geheimenbeheer voor Azure IoT Operations maakt gebruik van de extensie Secret Store om de geheimen van een Azure Key Vault te synchroniseren en op te slaan op de rand als Kubernetes-geheimen. De Secret Store-extensie vereist een door de gebruiker toegewezen beheerde identiteit met toegang tot de Azure Key Vault waar geheimen worden opgeslagen. Zie Wat zijn beheerde identiteiten voor Azure-resources? voor meer informatie.

Instellen van geheimenbeheer:

  1. Maak een Azure Key Vault die wordt gebruikt voor het opslaan van geheimen en geef uw gebruikersaccount machtigingen voor het beheren van geheimen met de Key Vault Secrets Officer rol.

  2. Maak een door de gebruiker toegewezen beheerde identiteit voor de Secret Store-extensie die moet worden gebruikt voor toegang tot de sleutelkluis.

  3. Gebruik de opdracht az iot ops secretsync enable om het Azure IoT Operations-exemplaar in te stellen voor geheime synchronisatie. Dit commando:

    • Hiermee maakt u een federatieve identiteitsreferentie met behulp van de door de gebruiker toegewezen beheerde identiteit.
    • Voegt een roltoewijzing toe aan de door de gebruiker toegewezen beheerde identiteit voor toegang tot Azure Key Vault.
    • Voegt een minimale geheime providerklasse toe die is gekoppeld aan het Azure IoT Operations-exemplaar.
    # Variable block
    AIO_INSTANCE_NAME="<AIO_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 --instance $AIO_INSTANCE_NAME \
                                 --resource-group $RESOURCE_GROUP \
                                 --mi-user-assigned $USER_ASSIGNED_MI_RESOURCE_ID \
                                 --kv-resource-id $KEYVAULT_RESOURCE_ID
    

Nu het instellen van geheimsynchronisatie is voltooid, kunt u verwijzen naar Geheimen beheren voor uw Azure IoT Operations-implementatie voor informatie over het gebruik van geheimen met Azure IoT Operations.

Een door de gebruiker toegewezen beheerde identiteit instellen voor cloudverbindingen

Sommige Azure IoT Operations-onderdelen, zoals gegevensstroomeindpunten, gebruiken een door de gebruiker toegewezen beheerde identiteit voor cloudverbindingen. U wordt aangeraden een afzonderlijke identiteit te gebruiken van de identiteit die u hebt gebruikt voor het instellen van geheimenbeheer.

  1. Maak een door de gebruiker toegewezen beheerde identiteit die wordt gebruikt voor cloudverbindingen.

    Notitie

    U moet de identiteit machtigen voor de cloudresource waarvoor u de beheerde identiteit gebruikt.

  2. Gebruik de opdracht az iot ops identity assign om de identiteit toe te wijzen aan het Azure IoT Operations-exemplaar. Met deze opdracht maakt u ook een federatieve identiteitsreferentie met behulp van de OIDC-verlener van het aangegeven verbonden cluster en het Azure IoT Operations-serviceaccount.

    # Variable block
    AIO_INSTANCE_NAME="<AIO_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 $AIO_INSTANCE_NAME \
                               --resource-group $RESOURCE_GROUP \
                               --mi-user-assigned $USER_ASSIGNED_MI_RESOURCE_ID
    
  3. Start de schema registry pods opnieuw om de nieuwe configuratie toe te passen.

    kubectl delete pods adr-schema-registry-0 adr-schema-registry-1 -n azure-iot-operations
    

U kunt deze beheerde identiteit nu gebruiken in eindpunten voor gegevensstromen voor cloudverbindingen.