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 etaz 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 :
Supprimez l’interface CLI k8s connectée existante, le cas échéant.
az extension remove --name connectedk8s
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
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
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"
Créez un fichier de configuration K3s.
sudo nano /etc/rancher/k3s/config.yaml
Ajoutez le contenu suivant au fichier config.yaml :
kube-apiserver-arg: - service-account-issuer=<SERVICE_ACCOUNT_ISSUER> - service-account-max-token-expiration=24h
Enregistrez et quittez l’éditeur de fichier.
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.
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
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.
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.
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.