Gestire i segreti usando Azure Key Vault o i segreti Kubernetes nell'anteprima mq di Azure IoT
Importante
Anteprima delle operazioni di Azure IoT: abilitata da Azure Arc è attualmente disponibile in ANTEPRIMA. Non è consigliabile usare questo software di anteprima negli ambienti di produzione.
Vedere le condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure per termini legali aggiuntivi che si applicano a funzionalità di Azure in versione beta, in anteprima o in altro modo non ancora disponibili a livello generale.
È possibile usare Azure Key Vault per gestire i segreti per il broker MQ di Anteprima MQ di Azure IoT anziché i segreti Kubernetes. Questo articolo illustra come configurare Key Vault per il broker e usarlo per gestire i segreti.
Prerequisiti
Istanza di Azure Key Vault con un segreto.
Un'entità servizio Microsoft Entra con
get
autorizzazioni elist
per i segreti nell'istanza di Key Vault. Per configurare l'entità servizio per le autorizzazioni di Key Vault, vedere Assegnare un criterio di accesso di Key Vault.Un segreto Kubernetes con le credenziali dell'entità servizio, come questo esempio con il segreto predefinito
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>
Provider di Azure Key Vault per il driver CSI dell'archivio segreti
Usare Azure Key Vault per la gestione dei segreti
Il keyVault
campo è disponibile ovunque vengano usati i segreti Kubernetes (secretName
). Nella tabella seguente vengono descritte le proprietà del keyVault
campo.
Proprietà | Richiesto | Descrizione |
---|---|---|
insieme di credenziali | Sì | Specifica l'insieme di credenziali delle chiavi di Azure che contiene i segreti. |
vault.name | Sì | Specifica il nome dell'insieme di credenziali delle chiavi di Azure. Per ottenere il nome dell'insieme di credenziali delle chiavi da portale di Azure, passare all'istanza di Key Vault e copiare il nome dalla pagina Panoramica. |
vault.directoryId | Sì | Specifica l'ID tenant di Microsoft Entra. Per ottenere l'ID tenant da portale di Azure, passare all'istanza di Key Vault e copiare l'ID tenant dalla pagina Panoramica. |
vault.credentials.servicePrincipalLocalSecretName | Sì | Specifica il nome del segreto che contiene le credenziali dell'entità servizio. |
vaultSecret | Sì, quando si usano i normali segreti di Key Vault | Specifica il segreto in Azure Key Vault. |
vaultSecret.name | Sì | Specifica il nome del segreto. |
vaultSecret.version | No | Specifica la versione del segreto. |
vaultCert | Sì, quando si usano i certificati di Key Vault | Specifica il certificato in Azure Key Vault. |
vaultCert.name | Sì | Specifica il nome del segreto del certificato. |
vaultCert.version | No | Specifica la versione del segreto del certificato. |
vaultCaChainSecret | Sì, quando si usa la catena di certificati | Specifica la catena di certificati nell'insieme di credenziali delle chiavi di Azure. |
vaultCaChainSecret.name | Sì | Specifica il nome della catena di certificati. |
vaultCaChainSecret.version | No | Specifica la versione della catena di certificati. |
username | No | Usato solo per il connettore Kafka di Hub eventi, vedere Inviare e ricevere messaggi tra Azure IoT MQ e Hub eventi o Kafka. |
Il tipo di segreto in uso determina quali dei campi seguenti è possibile usare:
vaultSecret
: usare questo campo quando si usa un segreto normale. Ad esempio, è possibile usare questo campo per configurare una risorsa BrokerAuthentication con ilusernamePassword
campo .vaultCert
: usare questo campo quando si usa il segreto del tipo di certificato con il certificato client e la chiave. Ad esempio, è possibile usare questo campo per abilitare TLS in brokerListener.vaultCaChainSecret
: usare questo campo quando è necessario presentare una catena di certificati completa, con tutti i certificati intermedi o radice aggiuntivi, al server remoto. Ad esempio, è possibile usare questo campo per configurare una risorsa MqttBridge Connessione or con ilremoteBrokerConnection
campo . Per usare questo campo, importare certificati X.509 senza chiavi private in formato PEM come segreto regolare a più righe (non di tipo certificato) in Key Vault. Questo campo deve essere usato oltre avaultCert
che include il certificato client e la chiave privata.
Esempi
Ad esempio, per creare un BrokerListener TLS che usa Azure Key Vault per il certificato del server segreto, usare il codice YAML seguente:
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...
Questo esempio seguente illustra come usare Azure Key Vault per il usernamePassword
campo in una risorsa 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...
Questo esempio illustra come usare Azure Key Vault per le credenziali del broker remoto mqTT bridge:
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...