Partager via


Activer les paramètres sécurisés dans un déploiement d’Opérations Azure IoT – Préversion

Important

Opérations Azure IoT Préversion avec Azure Arc est actuellement en préversion. Vous ne devez pas utiliser ce logiciel en préversion dans des environnements de production.

Lorsqu’une version en disponibilité générale sera publiée, vous devrez déployer une nouvelle installation d’Opérations Azure IoT. Vous ne pourrez pas mettre à niveau une installation en préversion.

Pour connaître les conditions juridiques qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou plus généralement non encore en disponibilité générale, consultez l’Avenant aux conditions d’utilisation des préversions de Microsoft Azure.

Les paramètres sécurisés pour Opérations Azure IoT incluent la configuration de la gestion des secrets et 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, si vous avez suivi les instructions de Démarrage rapide : Exécuter Opérations Azure IoT dans Codespaces.

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

  • 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
    

Configurer le cluster pour l’identité de charge de travail

Une identité de charge de travail est une identité que vous attribuez à une charge de travail logicielle (telle qu’une application, un service, un script ou un conteneur) pour vous authentifier et accéder à d’autres services et ressources. La fonctionnalité d’identité de charge de travail doit être activée sur votre cluster, pour que l’extension Magasin des secrets Azure Key Vault pour Kubernetes et Opérations Azure IoT puissent accéder aux ressources protégées par Microsoft Entra ID. Pour plus d’informations, consultez Présentation des identités de charge de travail.

Remarque

Cette étape s’applique seulement aux clusters Ubuntu + K3s. Le script du démarrage rapide pour Azure Kubernetes Service (AKS) Edge Essentials utilisé dans Préparer votre cluster Kubernetes avec Azure Arc active l’identité de charge de travail par défaut. Si vous avez un cluster AKS Edge Essentials, passez à la section suivante.

Si vous ne savez pas si l’identité de charge de travail est ou non activée sur votre cluster K3s, exécutez la commande az connectedk8s show pour le vérifier :

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

Remarque

Vous pouvez ignorer cette section si l’identité de charge de travail est déjà configurée.

Pour activer l’identité de charge de travail sur un cluster K3s connecté existant, procédez comme suit :

  1. Supprimez l’interface CLI k8s connectée existante, le cas échéant.

    az extension remove --name connectedk8s 
    
  2. Téléchargez et installez une préversion de l’extension connectedk8s pour Azure CLI.

    curl -L -o connectedk8s-1.10.0-py2.py3-none-any.whl https://github.com/AzureArcForKubernetes/azure-cli-extensions/raw/refs/heads/connectedk8s/public/cli-extensions/connectedk8s-1.10.0-py2.py3-none-any.whl   
    az extension add --upgrade --source connectedk8s-1.10.0-py2.py3-none-any.whl
    
  3. Utilisez la commande az connectedk8s update pour activer la fonctionnalité d’identité de charge de travail sur le cluster.

    #!/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 
    
  4. Utilisez la commande az connectedk8s show pour obtenir l’URL de l’émetteur du cluster. Prenez-en note pour l’ajouter ultérieurement dans le fichier de configuration K3s.

    #!/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"
    
  5. Créez un fichier de configuration K3s.

    sudo nano /etc/rancher/k3s/config.yaml
    
  6. Ajoutez le contenu suivant au fichier config.yaml :

    kube-apiserver-arg:
     - service-account-issuer=<SERVICE_ACCOUNT_ISSUER>
     - service-account-max-token-expiration=24h 
    
  7. Enregistrez et quittez l’éditeur de fichier.

  8. Redémarrez k3s.

    systemctl restart k3s 
    

Configurer Gestion des secrets

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

Créer un Azure Key Vault

Si vous avez déjà un coffre de clés Azure avec des autorisations Key Vault Secrets Officer, vous pouvez ignorer cette section.

  1. Utilisez la commande az keyvault create pour créer un coffre de clés Azure.

    # Variable block
    KEYVAULT_NAME="<KEYVAULT_NAME>"
    RESOURCE_GROUP="<RESOURCE_GROUP>"
    LOCATION="<LOCATION>"
    
    # Create the Key Vault
    az keyvault create --name $KEYVAULT_NAME --resource-group $RESOURCE_GROUP --location $LOCATION --enable-rbac-authorization
    
  2. Utilisez la commande az role assignment create pour accorder aux utilisateurs actuellement connectés des autorisations Key Vault Secrets Officer sur le coffre de clés.

    # Variable block
    SUBSCRIPTION_ID="<SUBSCRIPTION_ID>"
    RESOURCE_GROUP="<RESOURCE_GROUP>"
    KEYVAULT_NAME="<KEYVAULT_NAME>"
    
    # Get the object ID of the currently logged-in user
    ASSIGNEE_ID=$(az ad signed-in-user show --query id -o tsv)
    
    # Assign the "Key Vault Secrets Officer" role
    az role assignment create --role "Key Vault Secrets Officer" --assignee $ASSIGNEE_ID --scope /subscriptions/$SUBSCRIPTION_ID/resourcegroups/$RESOURCE_GROUP/providers/Microsoft.KeyVault/vaults/$KEYVAULT_NAME
    

Créer une identité managée affectée par l’utilisateur pour l’extension Magasin des secrets

Utilisez la commande az identity create pour créer l’identité managée affectée par l’utilisateur.

# Variable block
USER_ASSIGNED_MI_NAME="<USER_ASSIGNED_MI_NAME>"
RESOURCE_GROUP="<RESOURCE_GROUP>"
LOCATION="LOCATION"

# Create the identity
az identity create --name $USER_ASSIGNED_MI_NAME --resource-group $RESOURCE_GROUP --location $LOCATION

Activer la synchronisation des secrets

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

  • Crée des informations d’identification d’identité fédérée en utilisant l’identité managée affectée par l’utilisateur.
  • Ajoute 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
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

Maintenant que la configuration de la synchronisation des secrets est terminée, vous pouvez vous référer à Gérer les secrets pour découvrir comment utiliser des secrets avec 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. Il est recommandé d’utiliser une identité distincte de celle utilisée pour configurer Gestion des secrets.

  1. Créez une identité managée affectée par l’utilisateur qui peut être utilisée pour les connexions cloud. Utilisez la commande az identity create pour créer l’identité managée affectée par l’utilisateur.

    # Variable block
    USER_ASSIGNED_MI_NAME="<USER_ASSIGNED_MI_NAME FOR CLOUD CONNECTIONS>"
    RESOURCE_GROUP="<RESOURCE_GROUP>"
    LOCATION="LOCATION"
    
    # Create the identity
    az identity create --name $USER_ASSIGNED_MI_NAME --resource-group $RESOURCE_GROUP --location $LOCATION
    

    Remarque

    Vous devez accorder l’autorisation d’identité à la ressource cloud pour laquelle elle sera utilisé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 du compte de service Opérations Azure IoT.

    # 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
    

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