Partager via


Activer les paramètres sécurisés dans les Opérations Azure IoT

Les paramètres sécurisés pour Opérations Azure IoT incluent la configuration de la gestion des secrets et de l’identité managée affectée par l’utilisateur pour les connexions cloud, par exemple un serveur OPC UA ou des points de terminaison de flux de données.

Cet article fournit des instructions pour activer les paramètres sécurisés si vous ne l’avez pas fait lors de votre déploiement initial.

Prérequis

  • Une instance d’Opérations Azure IoT déployée avec des paramètres de test. Par exemple, vous avez choisi les Paramètres de test lors de la procédure de Déploiement d’Opérations Azure IoT sur un cluster Kubernetes avec Arc.

  • Azure CLI installé sur votre ordinateur de développement. Ce scénario nécessite Azure CLI version 2.64.0 ou ultérieure. Utilisez az --version pour vérifier votre version et az upgrade pour effectuer une mise à jour si nécessaire. Si vous souhaitez en savoir plus, veuillez consulter la rubrique Installation de l’interface de ligne de commande Azure.

  • Dernière version de l’extension connectedk8s pour Azure CLI. Utilisez la commande suivante pour ajouter l’extension ou la mettre à jour vers la dernière version :

    az extension add --upgrade --name connectedk8s
    
  • Extension Opérations Azure IoT pour Azure CLI. Utilisez la commande suivante pour ajouter l’extension ou la mettre à jour vers la dernière version :

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

Activer le cluster pour les paramètres sécurisés

Pour activer la synchronisation des secrets pour votre instance Azure IoT Operations, votre cluster doit être activé en tant qu’émetteur OIDC et pour la fédération des identités de charge de travail. Cette configuration est requise pour que l’extension magasin de secrets synchronise les secrets à partir d’un coffre de clés Azure et les stocke sur la périphérie en tant que secrets Kubernetes.

Pour les clusters Azure Kubernetes Service (AKS), les fonctionnalités d’identité de l’émetteur et de la charge de travail OIDC ne peuvent être activées qu’au moment de la création du cluster. Pour les clusters sur AKS Edge Essentials, le script automatisé active ces fonctionnalités par défaut. Pour les clusters AKS sur Azure Local, suivez les étapes de déploiement et de configuration de l’identité de charge de travail sur un cluster AKS activé par le cluster Azure Arc pour créer un cluster si vous n’en avez pas avec les fonctionnalités requises.

Pour les clusters k3s sur Kubernetes, vous pouvez mettre à jour un cluster existant. Pour activer et configurer ces fonctionnalités, procédez comme suit :

  1. Mettez à jour le cluster pour activer l’identité de l’émetteur et de la charge de travail OIDC.

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

    Si vous avez activé les fonctionnalités d’identité de l’émetteur et de la charge de travail OIDC lorsque vous avez créé le cluster, vous n’avez pas besoin d’exécuter à nouveau la commande précédente. Utilisez la commande suivante pour vérifier l’état des fonctionnalités d’identité de l’émetteur OIDC et de la charge de travail pour votre cluster :

    az connectedk8s show -g <RESOURCE_GROUP> -n <CLUSTER_NAME> --query "{ClusterName:name, OIDCIssuerEnabled:oidcIssuerProfile.enabled, WorkloadIdentityEnabled:securityProfile.workloadIdentity.enabled}"
    
  2. Obtenez l’URL de l’émetteur du cluster.

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

    Notez la sortie de cette commande à utiliser dans les étapes suivantes.

  3. Créez le fichier de configuration k3s :

    sudo nano /etc/rancher/k3s/config.yaml
    
  4. Ajoutez le contenu suivant au fichier config.yaml, en remplaçant l’espace réservé <SERVICE_ACCOUNT_ISSUER> par l’URL de l’émetteur de cluster que vous avez notée précédemment :

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

    Enregistrez le fichier et quittez l’éditeur nano.

  5. Redémarrez le service k3s :

    sudo systemctl restart k3s
    

Configurer la gestion des secrets

La gestion des secrets pour Opérations Azure IoT utilise l’extension Magasin des secrets pour synchroniser les secrets d’un coffre de clés Azure et les stocker en périphérie en tant que secrets Kubernetes. L’extension Magasin des secrets nécessite une identité managée affectée par l’utilisateur avec un accès au coffre de clés Azure où les secrets sont stockés. Pour plus d’informations, consultez Présentation des identités managées pour les ressources Azure.

Pour configurer la gestion des secrets :

  1. Créez un coffre de clés Azure utilisé pour stocker des secrets et accordez à votre compte d’utilisateur l’autorisation de gérer les secrets avec le rôle Key Vault Secrets Officer.

  2. Créez une Identité managée affectée par l’utilisateur pour l’extension Magasin des secrets.

  3. Utilisez la commande az iot ops secretsync enable pour configurer l’instance Opérations Azure IoT pour la synchronisation des secrets. Cette commande :

    • Permet de créer des informations d’identification d’identité fédérée en utilisant l’identité managée affectée par l’utilisateur.
    • Permet d’ajouter une attribution de rôle à l’identité managée affectée par l’utilisateur pour l’accès au coffre de clés Azure.
    • Ajoute une classe de fournisseur de secrets minimale associée à l’instance Opérations Azure IoT.
    # 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
    

Maintenant que la configuration de la synchronisation des secrets est terminée, vous pouvez vous référer à Gérer les secrets pour votre déploiement d’Opérations Azure IoT afin de découvrir comment utiliser des secrets avec les Opérations Azure IoT.

Configurer une identité managée affectée par l’utilisateur pour les connexions cloud

Certains composants d’Opérations Azure IoT, comme les points de terminaison de flux de données, utilisent une identité managée affectée par l’utilisateur pour les connexions cloud. Nous vous recommandons d’utiliser une identité distincte de celle utilisée pour configurer la gestion des secrets.

  1. Créez une identité managée affectée par l’utilisateur utilisée pour les connexions cloud.

    Remarque

    Vous devrez accorder l’autorisation d’identité à la ressource cloud pour laquelle vous utiliserez l’identité managée.

  2. Utilisez la commande az iot ops identity assign pour affecter l’identité à l’instance Opérations Azure IoT. Cette commande crée également des informations d’identification d’identité fédérée en utilisant l’émetteur OIDC du cluster connecté indiqué et le compte de service Opérations Azure IoT.

    # 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
    

Vous pouvez maintenant utiliser cette identité managée dans les points de terminaison de flux de données pour les connexions cloud.