Gestion des certificats pour la communication interne concernant Opérations Azure IoT
Toutes les communications dans Opérations Azure IoT sont chiffrées à l’aide du protocole 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 en 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 nomscert-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 Opérations Azure IoT avec une infrastructure à clé publique d’entreprise pour gérer les certificats et que vous apportez votre propre émetteur 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 la communication interne.
Pour configurer Opérations Azure IoT avec votre propre émetteur, procédez comme suit avant de déployer une instance sur votre cluster :
Suivez les étapes de Préparer votre cluster pour configurer votre cluster.
Installer cert-manager. Le ou la gestionnaire de certificats gère les certificats TLS.
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.
Créez l'espace de noms Opérations Azure IoT.
kubectl create namespace azure-iot-operations
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
ouIssuer
. Si vous utilisezIssuer
, la ressource émetteur doit être créée dans l’espace de noms Opérations Azure IoT.Configurez l’offre groupée d’approbation dans l’espace de noms Opérations Azure IoT.
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.
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.
Créer le ConfigMap. Par exemple :
kubectl create configmap -n azure-iot-operations <YOUR_CONFIGMAP_NAME> --from-file=<CA_CERTIFICATE_FILENAME_PEM_OR_DER>
Suivez les étapes de Déployer Opérations Azure IoT pour déployer, avec quelques modifications.
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
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>