Freigeben über


Verwalten von Geheimnissen mithilfe von Azure Key Vault- oder Kubernetes-Geheimnissen in Azure IoT MQ Preview

Wichtig

Die von Azure Arc aktivierte Azure IoT Operations Preview befindet sich derzeit in der VORSCHAU. Sie sollten diese Vorschausoftware nicht in Produktionsumgebungen verwenden.

Die zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen enthalten rechtliche Bedingungen. Sie gelten für diejenigen Azure-Features, die sich in der Beta- oder Vorschauversion befinden oder aber anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind.

Sie können Azure Key Vault verwenden, um Geheimnisse für Ihren verteilten MQTT Vermittler von Azure IoT MQ Preview anstelle von Kubernetes-Geheimnissen zu verwalten. In diesem Artikel erfahren Sie, wie Sie Key Vault für Ihren Broker einrichten und zum Verwalten von geheimen Schlüsseln verwenden.

Voraussetzungen

Verwenden von Azure Key Vault für die Geheimnis-Verwaltung

Das keyVault Feld ist überall verfügbar, wo Kubernetes Geheimnisse (secretName) verwendet werden. In der folgenden Tabelle werden die Eigenschaften des Felds keyVault beschrieben.

Eigenschaft Erforderlich Beschreibung
Tresor Ja Gibt den Azure Key Vault an, der die Geheimnisse enthält.
vault.name Ja Gibt den Namen des Azure Key Vault an. Um den Key Vault-Namen aus dem Azure-Portal abzurufen, navigieren Sie zur Key Vault-Instanz, und kopieren Sie den Namen von der Übersichtsseite.
vault.directoryId Ja Gibt die Microsoft Entra-Mandanten-ID an. Um die Mandanten-ID aus dem Azure-Portal abzurufen, navigieren Sie zur Key Vault-Instanz, und kopieren Sie die Mandanten-ID von der Übersichtsseite.
vault.credentials.servicePrincipalLocalSecretName Ja Gibt den Namen des Geheimnisses an, der die Anmeldeinformationen des Dienstprinzipals enthält.
vaultSecret Ja, wenn reguläre Key Vault-Geheimnisse verwendet werden Gibt das Geheimnis im Azure Key Vault an.
vaultSecret.name Ja Gibt den Namen des Geheimnisses an.
vaultSecret.version Nein Gibt die Version des Geheimnisses an.
vaultCert Ja, bei Verwendung von Key Vault-Zertifikaten Gibt das Zertifikat in Azure Key Vault an.
vaultCert.name Ja Gibt den Namen des Zertifikatgeheimnisses an.
vaultCert.version No Gibt die Version des Zertifikatgeheimnisses an.
vaultCaChainSecret Ja, wenn Sie die Zertifikatkette verwenden Gibt die Zertifikatkette in Azure Key Vault an.
vaultCaChainSecret.name Ja Gibt den Namen der Zertifikatkette an.
vaultCaChainSecret.version No Gibt die Version der Zertifikatkette an.
username No Wird nur für den Event Hubs-Kafka-Connector verwendet (siehe Senden und Empfangen von Nachrichten zwischen Azure IoT MQ und Event Hubs oder Kafka).

Der verwendete Geheimnistyp bestimmt, welche der folgenden Felder Sie verwenden können:

  • vaultSecret: Verwenden Sie dieses Feld, wenn Sie ein reguläres Geheimnis verwenden. Sie können mit diesem Feld beispielsweise eine BrokerAuthentication-Ressource mit dem Feld usernamePassword konfigurieren.
  • vaultCert: Verwenden Sie dieses Feld, wenn Sie ein Zertifikattypgeheimnis mit Clientzertifikat und Schlüssel verwenden. Sie können dieses Feld beispielsweise zum Aktivieren von TLS für einen BrokerListener verwenden.
  • vaultCaChainSecret: Verwenden Sie dieses Feld, wenn Sie eine vollständige Zertifikatkette mit allen zusätzlichen Zwischen- oder Stammzertifikaten auf dem Remoteserver präsentieren müssen. Sie können dieses Feld beispielsweise zum Konfigurieren einer MqttBridgeConnector-Ressource mit dem Feld remoteBrokerConnection verwenden. Um dieses Feld zu verwenden, importieren Sie X.509-Zertifikate ohne private Schlüssel im PEM-Format als mehrzeiliges reguläres Geheimnis (nicht Zertifikattyp) in Key Vault. Dieses Feld sollte zusätzlich zu vaultCert verwendet werden, das das Clientzertifikat und den privaten Schlüssel enthält.

Beispiele

Um z. B. ein TLS BrokerListener zu erstellen, das Azure Key Vault für das Serverzertifikat verwendet, verwenden Sie folgendes YAML:

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

Im nächsten Beispiel wird gezeigt, wie Sie Azure Key Vault für das Feld usernamePassword in einer BrokerAuthentication-Ressource verwenden:

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

In diesem Beispiel wird gezeigt, wie Sie Azure Key Vault für Remotebrokeranmeldeinformationen für MQTT-Brücke verwenden:

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