Gestire i segreti per la distribuzione di Operazioni di Azure IoT

Le operazioni di Azure IoT usano Azure Key Vault come soluzione di gestione delle credenziali sul cloud e utilizzano l'estensione dell'archivio segreti di Azure Key Vault per Kubernetes per sincronizzare i segreti dal cloud e archiviarli sul perimetro come segreti di Kubernetes. Le risorse perimetrali come connettori e flussi di dati possono quindi usare questi segreti per l'autenticazione durante la connessione a sistemi esterni.

Esempi di segreti che è possibile archiviare in Azure Key Vault per l'uso da parte di Operazioni di Azure IoT includono:

  • Nomi utente e password per sistemi esterni su cui devono essere autenticati i connettori o i flussi di dati.
  • Certificati X.509 e chiavi private per dispositivi o servizi che usano tls reciproco (mTLS).

Prerequisiti

Configurare le autorizzazioni di Azure Key Vault

Per poter utilizzare l'esperienza operativa per creare segreti nell'insieme di credenziali, l'utente necessita delle autorizzazioni di Key Vault Secrets Officer a livello di risorsa in Azure.

In un ambiente di test o sviluppo usare la procedura seguente per assegnare il ruolo Key Vault Secrets Officer all'utente a livello di gruppo di risorse in cui vengono distribuite l'istanza di Operazioni di Azure IoT e l'istanza di Azure Key Vault:

  1. Per trovare il nome del gruppo di risorse, passare all'interfaccia utente Web dell'esperienza operativa , passare alla pagina Istanze e trovare l'istanza di Operazioni IoT di Azure. Il nome del gruppo di risorse viene visualizzato nel campo Gruppo di risorse.

  2. Passare al portale di Azure e quindi passare al gruppo di risorse in cui vengono distribuite l'istanza di Operazioni di Azure IoT e l'istanza di Azure Key Vault.

    Suggerimento

    Usare la casella di ricerca nella parte superiore del portale di Azure per trovare rapidamente il gruppo di risorse digitando il nome.

  3. Selezionare Controllo di accesso (IAM) dal menu a sinistra. Seleziona + Aggiungi > assegnazione di ruolo.

  4. Nella scheda Ruolo selezionare Key Vault Secrets Officer nell'elenco dei ruoli e quindi selezionare Avanti.

  5. Nella scheda Membri, selezionare Utente, gruppo o entità servizio, selezionare Seleziona membri, selezionare l'utente a cui assegnare il ruolo Responsabile segreti di Key Vault e quindi selezionare Avanti.

  6. Selezionare Rivedi e assegna per completare l'assegnazione di ruolo.

In un ambiente di produzione seguire le procedure consigliate per proteggere Azure Key Vault usato con le operazioni IoT di Azure. Per altre informazioni, vedere Procedure consigliate per l'uso di Azure Key Vault. Assicurati che il tuo key vault utilizzi il controllo degli accessi basato sui ruoli di Azure come modello di autorizzazione.

Aggiungere e usare segreti

La gestione dei segreti per Operazioni di Azure IoT usa l'estensione Secret Store di Azure Key Vault per sincronizzare i segreti da un Azure Key Vault e archiviarli nella periferia come segreti di Kubernetes. Quando si sono abilitate le impostazioni di protezione durante la distribuzione, è stato selezionato un insieme di credenziali delle chiavi di Azure per la gestione dei segreti. Si trova in questo insieme di credenziali delle chiavi in cui vengono archiviati tutti i segreti da usare in Operazioni di Azure IoT.

Annotazioni

Le istanze di Operazioni IoT di Azure funzionano con un solo insieme di credenziali delle chiavi di Azure, più insiemi di credenziali delle chiavi per ogni istanza non sono supportati.

Al termine della procedura di configurazione della gestione dei segreti , è possibile aggiungere segreti ad Azure Key Vault e sincronizzarli con il cluster Kubernetes da usare negli endpoint in ingresso del dispositivo o negli endpoint del flusso di dati usando l'interfaccia utente Web dell'esperienza operativa . I segreti sono in genere nomi utente, password, certificati o chiavi private necessarie per l'autenticazione a sistemi esterni.

È possibile creare un segreto sincronizzato nel cluster usando l'interfaccia utente Web dell'esperienza operativa o l'interfaccia della riga di comando di Azure. I due flussi si sovrappongono parzialmente: l'esperienza operativa può caricare un nuovo valore per Azure Key Vault e sincronizzarlo con il cluster, mentre il flusso di interfaccia della riga di comando di Azure presuppone che il segreto esista già in Azure Key Vault e gestisca solo la sincronizzazione:

Questa sezione usa gli endpoint in ingresso del dispositivo che usano l'autenticazione con nome utente e password come esempio. Lo stesso processo si applica agli endpoint del flusso di dati.

L'esperienza operativa può caricare un nuovo valore per un nome utente o una password per Azure Key Vault e sincronizzarla con il cluster in un unico passaggio oppure sincronizzare un Key Vault segreto esistente nel cluster.

  1. Passare alla pagina Endpoint in ingresso del dispositivo nell'interfaccia Web dell'esperienza operativa.

  2. Per aggiungere un nuovo riferimento segreto, selezionare Aggiungi riferimento quando si crea un nuovo endpoint in ingresso del dispositivo:

    Screenshot che mostra le opzioni Aggiungi da Azure Key Vault e Crea nuovo quando si seleziona un segreto nell'esperienza di gestione delle operazioni.

    • Creare un nuovo segreto: crea un segreto in Azure Key Vault e sincronizza il segreto fino al cluster usando l'estensione dell'archivio segreti.

    • Aggiungi da Azure Key Vault: sincronizza un segreto esistente nell'insieme di credenziali delle chiavi fino al cluster se non è stato sincronizzato in precedenza. Selezionando questa opzione viene visualizzato l'elenco dei segreti nel vault delle chiavi selezionato. Solo la versione più recente del segreto viene sincronizzata con il cluster.

  3. Quando si aggiungono i riferimenti nome utente e password agli endpoint del flusso di dati o dei dispositivi, è necessario assegnare un nome al segreto sincronizzato. I riferimenti al segreto vengono salvati nel cluster con il nome specificato come una risorsa di sincronizzazione dei segreti. Nell'esempio riportato nello screenshot seguente i riferimenti a nome utente e password vengono salvati nel cluster come edp1secrets.

    Screenshot che mostra il campo nome segreto sincronizzato quando la password del nome utente è selezionata per la modalità di autenticazione nell'esperienza operativa.

Sincronizzare un certificato client e una chiave privata per TLS reciproco

Diversi connettori supportano l'autenticazione mTLS per le origini dati southbound. Con mTLS, il connettore presenta un certificato client e una chiave privata all'endpoint southbound per autenticarsi, oltre a convalidare il certificato TLS del server. I seguenti connettori supportano attualmente mTLS per le origini dati southbound:

Altri connettori, ad esempio il connettore per i contenuti multimediali e il connettore per ONVIF, attualmente non supportano mTLS per le origini dati southbound.

È possibile configurare mTLS nell'endpoint in ingresso del dispositivo facendo riferimento a un segreto sincronizzato nel cluster che contiene il certificato client e la chiave privata. È possibile creare il segreto sincronizzato usando l'esperienza operativa o il interfaccia della riga di comando di Azure. Selezionare la scheda corrispondente allo strumento da usare.

Quando si crea l'endpoint in ingresso e si sceglie il certificato X509 modalità di autenticazione, è possibile caricare un nuovo certificato e una chiave privata (l'esperienza operativa li carica in Azure Key Vault e li sincronizza) oppure selezionare i segreti Key Vault esistenti da sincronizzare.

Gestire i segreti sincronizzati

Questa sezione usa gli endpoint in ingresso del dispositivo come esempio. Lo stesso processo può essere applicato agli endpoint del flusso di dati:

  1. Passare alla pagina Dispositivi nell'interfaccia utente Web Esperienza di Operazioni.

  2. Per visualizzare l'elenco dei segreti, selezionare Gestisci certificati e segreti e quindi Segreti:

    Screenshot che mostra l'elenco dei segreti sincronizzati nella pagina dei segreti dell'esperienza operativa.

È possibile usare la pagina Segreti per visualizzare i segreti sincronizzati nei dispositivi e negli endpoint del flusso di dati. La pagina Segreti mostra l'elenco di tutti i segreti sincronizzati correnti nel bordo della risorsa visualizzata. Un segreto sincronizzato rappresenta uno o più riferimenti segreti, a seconda della risorsa che ne fa uso. Qualsiasi operazione applicata a un segreto sincronizzato si applica a tutti i riferimenti segreti contenuti nel segreto sincronizzato.

È possibile eliminare i segreti sincronizzati dalla pagina Segreti . Quando si elimina il segreto sincronizzato, elimina solo il segreto sincronizzato dal cluster Kubernetes e non elimina il riferimento del segreto contenuto da Azure Key Vault. È necessario eliminare manualmente il secret del certificato dal Key Vault.

È anche possibile usare il interfaccia della riga di comando di Azure per visualizzare i segreti sincronizzati nel cluster:

Avvertimento

La modifica diretta delle risorse personalizzate SecretProviderClass e SecretSync nel cluster Kubernetes potrebbe interrompere il flusso dei segreti in Operazioni di Azure IoT. Per qualsiasi operazione correlata ai segreti, usare l'interfaccia utente Web dell'esperienza operativa.

Prima di eliminare un segreto sincronizzato, assicurarsi che tutti i riferimenti al segreto da componenti di Operazioni di Azure IoT vengano rimossi.

Aggiungere segreti ad Azure Key Vault

Se si usa l'esperienza operativa per selezionare i segreti esistenti aggiunti in precedenza ad Azure Key Vault, assicurarsi che i segreti siano in un formato e una codifica supportati dalle operazioni IoT di Azure.

Per aggiungere un segreto del certificato PEM ad Azure Key Vault, è possibile usare un comando simile all'esempio seguente:

az keyvault secret set \
  --vault-name <your-key-vault-name> \
  --name client-cert-pem \
  --file ./client-cert.pem \
  --encoding hex \
  --content-type 'application/x-pem-file'

Per aggiungere un segreto certificato DER binario ad Azure Key Vault, è possibile usare un comando simile all'esempio seguente:

az keyvault secret set \
  --vault-name <your-key-vault-name> \
  --name cert-file-der \
  --file ./cert-file.der \
  --encoding hex \
  --content-type 'application/pkix-cert'