Partager via


Gérer les certificats pour votre déploiement Azure IoT Operations

Azure IoT Operations utilise TLS pour chiffrer la communication entre tous les composants. Cet article explique comment gérer les certificats pour les communications internes et externes, et comment apporter votre propre émetteur d’autorité de certification pour les communications internes dans un déploiement de production.

Conditions préalables

Pour gérer les certificats pour les communications externes, vous avez besoin d’une instance Azure IoT Operations déployée avec des paramètres sécurisés. Si vous avez déployé Azure IoT Operations avec des paramètres de test, vous devez d’abord activer les paramètres sécurisés.

Gérer les certificats pour les communications internes

Toutes les communications au sein d’Azure IoT Operations sont chiffrées à l’aide de TLS. Pour vous aider à démarrer, Opérations Azure IoT est déployé avec une autorité de certification racine « démarrage rapide » par défaut et un émetteur pour les certificats de serveur TLS. Vous pouvez utiliser la configuration par défaut à des fins de développement et de test. Pour un déploiement de production, nous vous recommandons d’utiliser votre propre émetteur d’autorité de certification et une solution PKI d’entreprise.

Émetteur auto-signé par défaut et certificat d’autorité de certification racine pour les certificats de serveur TLS

Pour vous aider à démarrer, Opérations Azure IoT est déployé avec un émetteur auto-signé par défaut et un certificat d'autorité de certification racine pour les certificats de serveur TLS. Vous pouvez utiliser cet émetteur pour le développement et le test. Azure IoT Operations utilise cert-manager pour gérer les certificats TLS et trust-manager pour distribuer des offres groupées de confiance aux composants.

  • Le certificat d’autorité de certification est auto-signé et non approuvé par des clients en dehors d’Opérations Azure IoT. Le sujet du certificat d’autorité de certification est CN=Azure IoT Operations Quickstart Root CA - Not for Production. Le certificat d’autorité de certification est automatiquement mis en rotation par cert-manager.

  • Le certificat d’autorité de certification racine est stocké dans un secret Kubernetes appelé azure-iot-operations-aio-ca-certificate sous l’espace de noms cert-manager.

  • La partie publique du certificat d’autorité de certification racine est stockée dans une carte ConfigMap appelée azure-iot-operations-aio-ca-trust-bundle sous l’espace de nomsazure-iot-operations. Vous pouvez récupérer le certificat d’autorité de certification à partir de ConfigMap et l’inspecter avec kubectl et openssl. La carte ConfigMap est mise à jour par trust-manager lorsque le certificat d’autorité de certification est mis en rotation par cert-manager.

    kubectl get configmap azure-iot-operations-aio-ca-trust-bundle -n azure-iot-operations -o "jsonpath={.data['ca\.crt']}" | openssl x509 -text -noout
    
    Certificate: 
        Data: 
            Version: 3 (0x2) 
            Serial Number: 
                <SERIAL-NUMBER> 
            Signature Algorithm: sha256WithRSAEncryption 
            Issuer: O=Microsoft, CN=Azure IoT Operations Quickstart Root CA - Not for Production 
            Validity 
                Not Before: Sep 18 20:42:19 2024 GMT 
                Not After : Sep 18 20:42:19 2025 GMT 
            Subject: O=Microsoft, CN=Azure IoT Operations Quickstart Root CA - Not for Production 
            Subject Public Key Info: 
                Public Key Algorithm: rsaEncryption 
                    Public-Key: (2048 bit) 
                    Modulus: <MODULUS> 
                                        Exponent: 65537 (0x10001) 
            X509v3 extensions: 
                X509v3 Key Usage: critical 
                    Certificate Sign, CRL Sign 
                X509v3 Basic Constraints: critical 
                    CA:TRUE 
                X509v3 Subject Key Identifier: 
                    <SUBJECT-KEY-IDENTIFIER> 
        Signature Algorithm: sha256WithRSAEncryption 
    [Signature] 
    
  • Par défaut, il existe déjà un émetteur configuré dans le système azure-iot-operations namespace appelé azure-iot-operations-aio-certificate-issuer. Il est utilisé comme émetteur commun pour tous les certificats de serveur TLS pour les opérations IoT. L’agent MQTT utilise un émetteur créé à partir du même certificat CA qui est signé par l'émetteur auto-signé pour émettre des certificats de serveur TLS pour l'auditeur TLS par défaut sur le port 18883. Vous pouvez inspecter l’émetteur avec la commande suivante :

    kubectl get clusterissuer azure-iot-operations-aio-certificate-issuer -o yaml
    
    apiVersion: cert-manager.io/v1 
    kind: ClusterIssuer 
    metadata: 
      creationTimestamp: "2024-09-18T20:42:17Z" 
      generation: 1 
      name: azure-iot-operations-aio-certificate-issuer 
      resourceVersion: "36665" 
      uid: 592700a6-95e0-4788-99e4-ea93934bd330 
    spec: 
      ca: 
        secretName: azure-iot-operations-aio-ca-certificate 
    status: 
      conditions: 
      - lastTransitionTime: "2024-09-18T20:42:22Z" 
        message: Signing CA verified 
        observedGeneration: 1 
        reason: KeyPairVerified 
        status: "True" 
        type: Ready 
    

Apporter votre propre émetteur

Pour les déploiements de production, nous vous recommandons de configurer Azure IoT Operations avec une infrastructure à clé publique d’entreprise pour gérer les certificats et que vous apportez votre propre émetteur d’autorité de certification qui fonctionne avec votre infrastructure à clé publique d’entreprise, au lieu d’utiliser l’émetteur auto-signé par défaut pour émettre des certificats TLS pour les communications internes.

Pour configurer Azure IoT Operations avec votre propre émetteur pour les communications internes, procédez comme suit avant de déployer une instance sur votre cluster :

  1. Suivez les étapes de Préparer votre cluster pour configurer votre cluster.

  2. Installer cert-manager. Le ou la gestionnaire de certificats gère les certificats TLS.

  3. Installer trust-manager. Lors de l’installation du ou de la gestionnaire de confiance, définissez la trust namespace sur cert-manager. Par exemple:

    helm upgrade trust-manager jetstack/trust-manager --install --namespace cert-manager --set app.trust.namespace=cert-manager --wait
    

    Le ou la gestionnaire de confiance est utilisé pour distribuer un ensemble d’approbations aux composants.

  4. Créez l'espace de noms Opérations Azure IoT.

    kubectl create namespace azure-iot-operations
    
  5. Déployez un(e) émetteur(-trice) qui fonctionne avec cert-manager. Pour obtenir la liste de tous les émetteurs pris en charge, consultez émetteurs de gestionnaire de certificats.

    L’émetteur(-trice) peut être de type ClusterIssuer ou Issuer. Si vous utilisez Issuer, la ressource émetteur doit être créée dans l’espace de noms Opérations Azure IoT.

  6. Configurez l’offre groupée d’approbation dans l’espace de noms Opérations Azure IoT.

    1. Pour configurer le faisceau de confiance, créez un ConfigMap dans l'espace de noms Opérations Azure IoT. Placez la partie clé publique de votre certificat d’autorité de certification dans la carte de configuration avec un nom de clé de votre choix.

    2. Obtenez la partie clé publique de votre certificat d’autorité de certification. Les étapes d’acquisition de la clé publique dépendent de l’émetteur(-trice) que vous choisissez.

    3. Créer le ConfigMap. Par exemple:

      kubectl create configmap -n azure-iot-operations <YOUR_CONFIGMAP_NAME> --from-file=<CA_CERTIFICATE_FILENAME_PEM_OR_DER>
      
  7. Suivez les étapes de Déployer Opérations Azure IoT pour déployer, avec quelques modifications.

    1. Ajoutez le paramètre --user-trust lors de la préparation du cluster. Par exemple:

      az iot ops init --subscription <SUBSCRIPTION_ID> --cluster <CLUSTER_NAME>  -g <RESOURCE_GROUP> --user-trust
      
    2. Ajoutez le paramètre --trust-settings avec les informations nécessaires lors du déploiement d’Opérations Azure IoT. Par exemple:

      az iot ops create --subscription <SUBSCRIPTION_ID> -g <RESOURCE_GROUP> --cluster <CLUSTER_NAME> --custom-location <CUSTOM_LOCATION> -n <INSTANCE_NAME> --sr-resource-id <SCHEMAREGISTRY_RESOURCE_ID> --trust-settings configMapName=<CONFIGMAP_NAME> configMapKey=<CONFIGMAP_KEY_WITH_PUBLICKEY_VALUE> issuerKind=<CLUSTERISSUER_OR_ISSUER> issuerName=<ISSUER_NAME>
      

    Remarque

    Le nom de l’emplacement personnalisé a une longueur maximale de 63 caractères.

Gérer les certificats pour les communications externes

Opérations Azure IoT utilise Azure Key Vault comme solution de coffre managée sur le cloud et utilise l’extension Magasin des secrets Azure Key Vault pour Kubernetes pour synchroniser les secrets à partir du cloud et les stocker à la périphérie en tant que secrets Kubernetes. Vous ajoutez vos certificats à Azure Key Vault en tant que secrets, et l’extension les synchronise avec la périphérie en tant que secrets Kubernetes.

Configurer les autorisations Azure Key Vault

Pour utiliser l’expérience opérationnelle pour créer des secrets dans le coffre de clés, l’utilisateur requiert des autorisations d’agent de secrets Key Vault au niveau de la ressource dans Azure.

Dans un environnement de test ou de développement, procédez comme suit pour affecter le rôle Agent de secrets Key Vault à votre utilisateur au niveau du groupe de ressources où l’instance Azure IoT Operations et l’instance Azure Key Vault sont déployées :

  1. Pour trouver le nom du groupe de ressources, accédez à l’interface utilisateur web de l’expérience des opérations , accédez à la page Instances et recherchez votre instance Azure IoT Operations. Le nom du groupe de ressources est affiché dans le champ Groupe de ressources .

  2. Accédez au portail Azure , puis accédez au groupe de ressources où votre instance Azure IoT Operations et votre instance Azure Key Vault sont déployées.

    Conseil / Astuce

    Utilisez la zone de recherche en haut du portail Azure pour rechercher rapidement le groupe de ressources en tapant le nom.

  3. Sélectionnez Contrôle d’accès (IAM) dans le menu de gauche. Sélectionnez ensuite + Ajouter > ajoutez une attribution de rôle.

  4. Sous l’onglet Rôle , sélectionnez Agent des secrets Key Vault dans la liste des rôles, puis sélectionnez Suivant.

  5. Sous l’onglet Membres , sélectionnez Utilisateur, groupe ou principal de service, sélectionnez Sélectionner des membres, sélectionnez l’utilisateur auquel vous souhaitez attribuer le rôle Agent de secrets Key Vault , puis sélectionnez Suivant.

  6. Sélectionnez Vérifier + attribuer pour terminer l’attribution du rôle.

Dans un environnement de production, suivez les bonnes pratiques pour sécuriser Azure Key Vault que vous utilisez avec Azure IoT Operations. Pour plus d’informations, consultez les meilleures pratiques pour l’utilisation d’Azure Key Vault.

Ajouter et utiliser des certificats

Les connecteurs utilisent l’expérience de gestion des certificats pour configurer l’authentification des applications clientes sur des serveurs externes. Pour en savoir plus sur la façon dont les connecteurs utilisent des certificats pour établir une approbation mutuelle avec des serveurs externes, consultez la documentation de gestion des certificats spécifique au connecteur.

Lorsque vous déployez Opérations Azure IoT avec des paramètres sécurisés, vous pouvez commencer à ajouter des certificats à Azure Key Vault et les synchroniser avec le cluster Kubernetes à utiliser dans la Liste de confiance et les magasins de listes d’émetteurs pour les connexions externes.

Pour gérer les certificats pour les communications externes, procédez comme suit :

  1. Accédez à l’expérience Opérations Azure IoT, puis choisissez votre site et votre instance Opérations Azure IoT.

  2. Dans le volet de navigation gauche, sélectionnez Appareils.

  3. Cliquez sur Gérer les certificats et les secrets.

    Capture d’écran montrant l’option Gérer les certificats et les secrets dans le volet de navigation gauche.

  4. Sur la page Certificats et secrets, sélectionnez Ajouter un nouveau certificat.

    Capture d’écran montrant le bouton Ajouter un nouveau certificat à la page des appareils.

  5. Vous pouvez ajouter un nouveau certificat de deux façons :

    • Charger le certificat : charge un certificat qui est ensuite ajouté en tant que secret à Azure Key Vault et synchronisé automatiquement avec le cluster à l’aide de l’extension Secret Store.

      • Affichez les détails du certificat une fois chargés, pour vous assurer que vous disposez du certificat approprié avant d’ajouter à Azure Key Vault et de synchroniser le cluster.
      • Utilisez un nom intuitif pour vous permettre de reconnaître le secret qui représente votre secret à l’avenir.
      • Sélectionnez le magasin de certificats approprié pour le connecteur qui utilise le certificat. Par exemple, liste de confiance OPC UA.

      Capture d’écran montrant l’option Charger un certificat lors de l’ajout d’un nouveau certificat sur la page des appareils.

      Remarque

      Le simple chargement du certificat n'ajoutera pas le secret à Azure Key Vault ni ne le synchronisera avec le cluster; vous devez sélectionner Appliquer pour que les modifications soient prises en compte.

    • Ajouter à partir d’Azure Key Vault : ajoutez un secret existant à partir du coffre De clés Azure à synchroniser avec le cluster.

      Capture d’écran montrant l’option Ajouter à partir d’Azure Key Vault lors de l’ajout d’un nouveau certificat à la page des appareils.

      Remarque

      Veillez à sélectionner le secret qui contient le certificat que vous souhaitez synchroniser avec le cluster. La sélection d’un secret qui n’est pas le certificat approprié provoque l’échec de la connexion.

  6. À l’aide de l’affichage liste, vous pouvez gérer les certificats synchronisés. Vous pouvez afficher tous les certificats synchronisés et le magasin de certificats avec lequel il est synchronisé :

    Capture d’écran montrant la liste des certificats dans la page des appareils et comment filtrer par liste de confiance et liste d’émetteurs.

Pour en savoir plus sur la gestion des certificats d’approbation pour des connecteurs spécifiques, consultez la documentation de gestion des certificats spécifique au connecteur.

Vous pouvez également supprimer des certificats synchronisés. Lorsque vous supprimez un certificat synchronisé, il supprime uniquement le certificat synchronisé du cluster Kubernetes et ne supprime pas la référence de secret contenu d’Azure Key Vault. Vous devez supprimer manuellement le secret de certificat du coffre de clés.