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
Eine Azure Key Vault-Instanz mit einem Geheimnis.
Ein Microsoft Entra-Dienstprinzipal mit
get
undlist
Berechtigungen für geheime Schlüssel in der Key Vault-Instanz. Informationen zum Konfigurieren des Dienstprinzipals für Key Vault-Berechtigungen finden Sie unter Zuweisen einer Key Vault-Zugriffsrichtlinie.Ein Kubernetes-Geheimnis mit den Anmeldeinformationen des Dienstprinzipals, wie in diesem Beispiel mit dem Standardgeheimnis
aio-akv-sp
:apiVersion: v1 kind: Secret metadata: name: aio-akv-sp namespace: azure-iot-operations type: Opaque data: clientid: <base64 encoded client id> clientsecret: <base64 encoded client secret>
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 FeldusernamePassword
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 FeldremoteBrokerConnection
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 zuvaultCert
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...
Zugehöriger Inhalt
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für