Share via


Gestire i segreti per la distribuzione di Azure IoT Operations Preview

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.

La gestione dei segreti in Azure IoT Operations Preview usa Azure Key Vault come soluzione di insieme di credenziali gestita nel cloud e usa il driver CSI dell'archivio segreti per eseguire il pull dei segreti dal cloud e archiviarli nei dispositivi perimetrali.

Prerequisiti

Configurare un archivio segreto nel cluster

Le operazioni di Azure IoT supportano Key Vault per l'archiviazione di segreti e certificati. Il comando dell'interfaccia az iot ops init della riga di comando di Azure automatizza i passaggi per configurare un'entità servizio per concedere l'accesso all'insieme di credenziali delle chiavi e configurare i segreti necessari per l'esecuzione delle operazioni di Azure IoT.

Per altre informazioni, vedere Distribuire le estensioni di Anteprima operazioni IoT di Azure in un cluster Kubernetes.

Configurare manualmente l'entità servizio e Key Vault

Se l'account Azure che esegue il az iot ops init comando non dispone delle autorizzazioni necessarie per eseguire query su Microsoft Graph e creare entità servizio, è possibile preparare questi argomenti iniziali e usare argomenti aggiuntivi quando si esegue il comando dell'interfaccia della riga di comando come descritto in Distribuire le estensioni delle operazioni di Azure IoT.

Configurare l'entità servizio per interagire con Key Vault tramite Microsoft Entra ID

Seguire questa procedura per creare una nuova registrazione dell'applicazione per l'applicazione Azure IoT Operations da usare per l'autenticazione in Key Vault.

Prima di tutto, registrare un'applicazione con Microsoft Entra ID:

  1. Nella barra di ricerca portale di Azure cercare e selezionare Microsoft Entra ID.

  2. Selezionare Registrazioni app dalla sezione Gestisci del menu Microsoft Entra ID.

  3. Seleziona Nuova registrazione.

  4. Nella pagina Registra un'applicazione specificare le informazioni seguenti:

    Campo Valore
    Nome Specificare un nome per l'applicazione.
    Tipi di account supportati Assicurarsi che l'opzione Account in questa directory organizzativa (<solo YOUR_TENANT_NAME> - Tenant singolo) sia selezionata.
    URI di reindirizzamento Selezionare Web come piattaforma. È possibile lasciare vuoto l'indirizzo Web.
  5. Selezionare Registra.

    Quando l'applicazione viene creata, si viene indirizzati alla relativa pagina delle risorse.

  6. Copiare l'ID applicazione (client) dalla pagina di panoramica della registrazione dell'app. Questo valore verrà usato come argomento quando si esegue la distribuzione di Operazioni IoT di Azure con il az iot ops init comando .

Assegnare quindi all'applicazione le autorizzazioni per Key Vault:

  1. Nella pagina delle risorse per l'app selezionare Autorizzazioni API nella sezione Gestisci del menu dell'app.

  2. Seleziona Aggiungi autorizzazione.

  3. Nella pagina Richiedi autorizzazioni API scorrere verso il basso e selezionare Azure Key Vault.

  4. Seleziona Autorizzazioni delegate.

  5. Selezionare la casella per selezionare user_impersonation autorizzazioni.

  6. Selezionare Aggiungi autorizzazioni.

Creare un segreto client aggiunto al cluster Kubernetes per l'autenticazione nell'insieme di credenziali delle chiavi:

  1. Nella pagina delle risorse per l'app selezionare Certificati e segreti nella sezione Gestisci del menu dell'app.

  2. Selezionare Nuovo segreto client.

  3. Specificare una descrizione facoltativa per il segreto, quindi selezionare Aggiungi.

  4. Copiare il valore dal nuovo segreto. Questo valore verrà usato in un secondo momento quando si esegue az iot ops init.

Recuperare l'ID oggetto dell'entità servizio:

  1. Nella pagina Panoramica dell'app, nella sezione Informazioni di base selezionare il collegamento Nome applicazione in Applicazione gestita nella directory locale. Verranno visualizzate le proprietà dell'applicazione aziendale. Copiare l'ID oggetto da usare quando si esegue az iot ops init.

Creare un insieme di credenziali delle chiavi

Creare una nuova istanza di Azure Key Vault e assicurarsi che il modello di autorizzazione sia impostato sui criteri di accesso dell'insieme di credenziali.

az keyvault create --enable-rbac-authorization false --name "<your unique key vault name>" --resource-group "<the name of the resource group>"

Se si dispone di un insieme di credenziali delle chiavi esistente, è possibile modificare il modello di autorizzazione eseguendo quanto segue:

az keyvault update --name "<your unique key vault name>" --resource-group "<the name of the resource group>" --enable-rbac-authorization false 

Quando si esegue az iot ops init, sarà necessario l'ID risorsa key vault. Per recuperare l'ID risorsa, eseguire:

az keyvault show --name "<your unique key vault name>" --resource-group "<the name of the resource group>" --query id  -o tsv

Impostare i criteri di accesso dell'entità servizio in Key Vault

L'entità servizio appena creata richiede criteri di accesso e get segretilist per consentire alle operazioni di Azure IoT di usare l'archivio segreti.

Per gestire i criteri di accesso di Key Vault, l'entità che ha eseguito l'accesso all'interfaccia della riga di comando necessita di autorizzazioni di Azure sufficienti. Nel modello RBAC (Role Based Controllo di accesso) questa autorizzazione è inclusa nei ruoli collaboratore di Key Vault o versione successiva.

Suggerimento

Se è stata usata l'entità dell'interfaccia della riga di comando con accesso per creare l'insieme di credenziali delle chiavi, probabilmente si dispone già delle autorizzazioni appropriate. Tuttavia, se si punta a un insieme di credenziali delle chiavi diverso o esistente, è necessario verificare di disporre di autorizzazioni sufficienti per impostare i criteri di accesso.

Eseguire il comando seguente per assegnare il segretolist e get le autorizzazioni all'entità servizio.

az keyvault set-policy --name "<your unique key vault name>" --resource-group "<the name of the resource group>" --object-id <Object ID copied from Enterprise Application SP in Microsoft Entra ID> --secret-permissions get list

Passare gli argomenti dell'entità servizio e dell'insieme di credenziali delle chiavi alla distribuzione di Operazioni IoT di Azure

Quando si segue la guida Distribuire le estensioni per le operazioni IoT di Azure, passare flag aggiuntivi al comando per usare l'entità servizio preconfigurata e l'insieme az iot ops init di credenziali delle chiavi.

L'esempio seguente illustra come preparare il cluster per le operazioni IoT di Azure senza distribuirlo completamente usando il --no-deploy flag . È anche possibile eseguire il comando senza questo argomento per una distribuzione predefinita di Operazioni IoT di Azure.

az iot ops init --name "<your unique key vault name>" --resource-group "<the name of the resource group>" \
    --kv-id <Key Vault Resource ID> \
    --sp-app-id <Application registration App ID (client ID) from Microsoft Entra ID> \
    --sp-object-id <Object ID copied from Enterprise Application in Microsoft Entra ID> \
    --sp-secret "<Client Secret from App registration in Microsoft Entra ID>" \
    --no-deploy

Un passaggio eseguito dal init comando consiste nel garantire che tutte le classi di provider segreti (SPC) richieste dalle operazioni IoT di Azure abbiano un segreto predefinito configurato nell'insieme di credenziali delle chiavi. Se non esiste init un valore per il segreto predefinito, ne verrà creato uno. Questo passaggio richiede che l'entità che ha eseguito l'accesso all'interfaccia della riga di comando disponga delle autorizzazioni segrete set . Se si vuole usare un segreto esistente come segreto SPC predefinito, è possibile specificarlo con il --kv-sat-secret-name parametro , nel qual caso l'entità registrata richiede solo autorizzazioni segrete get .

Aggiungere un segreto a un componente Operazioni IoT di Azure

Dopo aver configurato l'archivio segreto nel cluster, è possibile creare e aggiungere segreti di Key Vault.

  1. Creare il segreto in Key Vault con qualsiasi nome e valore necessario. È possibile creare un segreto usando il portale di Azure o il comando az keyvault secret set.

  2. Nel cluster identificare la classe SPC (Secret Provider Class) per il componente a cui si vuole aggiungere il segreto. Ad esempio: aio-default-spc. Usare il comando seguente per elencare tutti i controller di servizio nel cluster:

    kubectl get secretproviderclasses -A
    
  3. Aprire il file nell'editor di testo preferito. Se si usa k9s, digitare e per modificare.

  4. Aggiungere l'oggetto segreto all'elenco in spec.parameters.objects.array. Ad esempio:

    spec:
      parameters:
        keyvaultName: my-key-vault
        objects: |
          array:
            - |
              objectName: PlaceholderSecret
              objectType: secret
              objectVersion: ""
    
  5. Salvare le modifiche e applicarle al cluster. Se si utilizza k9s, le modifiche vengono applicate automaticamente.

Il driver CSI aggiorna i segreti usando un intervallo di polling, pertanto il nuovo segreto non è disponibile per il pod fino all'intervallo di polling successivo. Per aggiornare immediatamente un componente, riavviare i pod per il componente. Ad esempio, per riavviare il componente Responsabile del trattamento dei dati, eseguire i comandi seguenti:

kubectl delete pod aio-dp-reader-worker-0 -n azure-iot-operations
kubectl delete pod aio-dp-runner-worker-0 -n azure-iot-operations

Segreti dell'anteprima mq di Azure IoT

I passaggi per gestire i segreti con Azure Key Vault per l'anteprima mq di Azure IoT sono diversi. Per altre informazioni, vedere Gestire i segreti MQ con Key Vault.