Partager via


Gérer les secrets en utilisant Azure Key Vault ou les secrets Kubernetes dans Azure IoT MQ (préversion)

Important

Opérations Azure IoT (préversion) – activé parc Azure Arc est actuellement en PRÉVERSION. Vous ne devez pas utiliser ce logiciel en préversion dans des environnements de production.

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.

Vous pouvez utiliser Azure Key Vault pour gérer les secrets destinés à votre répartiteur MQTT distribué Azure IoT MQ (préversion) plutôt que des secrets Kubernetes. Cet article vous montre comment configurer Key Vault pour votre répartiteur et comment l’utiliser pour gérer les secrets.

Prérequis

Utilisez Azure Key Vault pour la gestion des secrets

Le champ keyVault est disponible partout où les secrets Kubernetes (secretName) sont utilisés. Le tableau suivant décrit les propriétés du champ keyVault.

Propriété Obligatoire Description
coffre Oui Précise quel Azure Key Vault contient les secrets.
vault.name Oui Précise le nom de l’Azure Key Vault. Pour obtenir le nom du Key Vault à partir du portail Azure, accédez à l’instance Key Vault et copiez le nom dans la page Vue d’ensemble.
vault.directoryId Oui Précise l’ID du locataire Microsoft Entra. Pour obtenir le nom du Key Vault à partir du portail Azure, accédez à l’instance Key Vault et copiez l’ID du locataire dans la page Vue d’ensemble.
vault.credentials.servicePrincipalLocalSecretName Oui Précise le nom du secret qui contient les informations d’identification du principal de service.
vaultSecret Oui, lors de l’utilisation de secrets Key Vault standard Précise le secret dans Azure Key Vault.
vaultSecret.name Oui Précise le nom du secret.
vaultSecret.version Non Précise la version du secret.
vaultCert Oui, lors de l’utilisation de certificats Key Vault Spécifie le certificat dans Azure Key Vault.
vaultCert.name Oui Spécifie le nom du secret de certificat.
vaultCert.version Non Spécifie la version du secret de certificat.
vaultCaChainSecret Oui, lors de l’utilisation d’une chaîne de certificats Spécifie la chaîne de certificats dans Azure Key Vault.
vaultCaChainSecret.name Oui Spécifie le nom de la chaîne de certificats.
vaultCaChainSecret.version Non Spécifie la version de la chaîne de certificats.
username Non Utilisé uniquement pour le connecteur Event Hubs Kafka. Consultez Envoyer et recevoir des messages entre Azure IoT MQ et Event Hubs ou Kafka.

Le type de secret que vous utilisez détermine lesquels des champs suivants vous pouvez utiliser :

  • vaultSecret : utilisez ce champ lorsque vous utilisez un secret normal. Par exemple, vous pouvez utiliser ce champ pour configurer une ressource BrokerAuthentication avec le champ usernamePassword.
  • vaultCert : utilisez ce champ lorsque vous utilisez le secret de type certificat avec le certificat client et la clé. Par exemple, vous pouvez utiliser ce champ pour activer TLS sur un BrokerListener.
  • vaultCaChainSecret : utilisez ce champ lorsque vous devez présenter une chaîne de certificats complète, avec tous les certificats intermédiaires ou racines supplémentaires, au serveur distant. Par exemple, vous pouvez utiliser ce champ pour configurer une ressource MqttBridgeConnector avec le champ remoteBrokerConnection. Pour utiliser ce champ, importez des certificats X.509 sans clés privées au format PEM en tant que secret standard multiligne (et non de type certificat) dans Key Vault. Ce champ doit être utilisé en plus de vaultCert qui a le certificat client et la clé privée.

Exemples

Par exemple, pour créer un TLS BrokerListener qui utilise Azure Key Vault pour le secret du certificat de serveur, utilisez le YAML suivant :

apiVersion: mq.iotoperations.azure.com/v1beta1
kind: BrokerListener
metadata:
  name: tls-listener-manual
  namespace: azure-iot-operations
spec:
  brokerRef: broker
  authenticationEnabled: true
  authorizationEnabled: false
  port: 8883
  tls:
    keyVault:
      vault:
        name: my-key-vault
        directoryId: <AKV directory ID>
        credentials:
          servicePrincipalLocalSecretName: aio-akv-sp
      vaultCert:
        name: my-server-certificate
        # version: 939ecc2...

Cet exemple montre comment utiliser Azure Key Vault pour le champ usernamePassword dans une ressource BrokerAuthentication :

apiVersion: mq.iotoperations.azure.com/v1beta1
kind: BrokerAuthentication
metadata:
  name: my-authentication
  namespace: azure-iot-operations
spec:
  listenerRef: 
    - tls-listener-manual
  authenicationMethods:
    - usernamePassword:
        keyVault:
          vault:
            name: my-key-vault
            directoryId: <AKV directory ID>
            credentials:
              servicePrincipalLocalSecretName: aio-akv-sp
          vaultSecret:
            name: my-username-password-db
            # version: 939ecc2...

Cet exemple montre comment utiliser Azure Key Vault pour les informations d’identification du répartiteur distant de la passerelle MQTT :

apiVersion: mq.iotoperations.azure.com/v1beta1
kind: MqttBridgeConnector
metadata:
  name: my-bridge
  namespace: azure-iot-operations
spec:
  image:
    repository: mcr.microsoft.com/azureiotoperations/mqttbridge
    tag: 0.4.0-preview
    pullPolicy: IfNotPresent
  protocol: v5
  bridgeInstances: 1
  remoteBrokerConnection:
    endpoint: example.broker.endpoint:8883
    tls:
      tlsEnabled: true
      trustedCaCertificateConfigMap: my-ca-certificate
    authentication:
      x509:
        keyVault:
          vault:
            name: my-key-vault
            directoryId: <AKV directory ID>
            credentials:
              servicePrincipalLocalSecretName: aio-akv-sp
          vaultCaChainSecret:
            name: my-remote-broker-certificate
            # version: 939ecc2...