Abilitare le impostazioni sicure nelle operazioni IoT di Azure
Le impostazioni sicure per le operazioni IoT di Azure includono la configurazione della gestione dei segreti e un'identità gestita assegnata dall'utente per le connessioni cloud; ad esempio, un server OPC UA o endpoint del flusso di dati.
Questo articolo fornisce istruzioni per abilitare le impostazioni sicure se non è stato fatto durante la distribuzione iniziale.
Prerequisiti
Un'istanza di Azure IoT Operations distribuita con le impostazioni di test. Ad esempio, si è scelto Impostazioni di test quando si seguono le istruzioni in Distribuire le operazioni di Azure IoT in un cluster Kubernetes abilitato per Arc.
Interfaccia della riga di comando di Azure installata nel computer di sviluppo. Questo scenario richiede l'interfaccia della riga di comando di Azure versione 2.64.0 o successiva. Usare
az --version
per controllare la versione eaz upgrade
per aggiornare, se necessario. Per altre informazioni, vedere Installare l'interfaccia della riga di comando di Azure.Versione più recente dell'estensione connectedk8s per l'interfaccia della riga di comando di Azure. Usare il comando seguente per aggiungere l'estensione o aggiornarla alla versione più recente:
az extension add --upgrade --name connectedk8s
Estensione Operazioni di Azure IoT per l'interfaccia della riga di comando di Azure. Usare il comando seguente per aggiungere l'estensione o aggiornarla alla versione più recente:
az extension add --upgrade --name azure-iot-ops
Abilitare il cluster per le impostazioni sicure
Per abilitare la sincronizzazione dei segreti per l'istanza di Operazioni IoT di Azure, il cluster deve essere abilitato come emittente OIDC e per la federazione delle identità del carico di lavoro. Questa configurazione è necessaria per l'estensione Dell'archivio segreti per sincronizzare i segreti da un insieme di credenziali delle chiavi di Azure e archiviarli nel perimetro come segreti Kubernetes.
Per i cluster servizio Azure Kubernetes (servizio Azure Kubernetes), è possibile abilitare le funzionalità di identità dell'autorità emittente OIDC e dell'identità del carico di lavoro solo al momento della creazione del cluster. Per i cluster in AKS Edge Essentials, lo script automatizzato abilita queste funzionalità per impostazione predefinita. Per i cluster del servizio Azure Kubernetes in locale di Azure, seguire la procedura per distribuire e configurare l'identità del carico di lavoro in un cluster del servizio Azure Kubernetes abilitato dal cluster Azure Arc per creare un nuovo cluster, se non ne è disponibile uno con le funzionalità necessarie.
Per i cluster k3s in Kubernetes, è possibile aggiornare un cluster esistente. Per abilitare e configurare queste funzionalità, seguire questa procedura:
Aggiornare il cluster per abilitare l'identità dell'autorità emittente OIDC e del carico di lavoro.
az connectedk8s update -n <CLUSTER_NAME> -g <RESOURCE_GROUP> --enable-oidc-issuer --enable-workload-identity
Se sono state abilitate le funzionalità di identità dell'autorità emittente OIDC e dell'identità del carico di lavoro al momento della creazione del cluster, non è necessario eseguire di nuovo il comando precedente. Usare il comando seguente per controllare lo stato delle funzionalità di identità del carico di lavoro e dell'autorità emittente OIDC per il cluster:
az connectedk8s show -g <RESOURCE_GROUP> -n <CLUSTER_NAME> --query "{ClusterName:name, OIDCIssuerEnabled:oidcIssuerProfile.enabled, WorkloadIdentityEnabled:securityProfile.workloadIdentity.enabled}"
Ottenere l'URL dell'autorità di certificazione del cluster.
az connectedk8s show -g <RESOURCE_GROUP> -n <CLUSTER_NAME> --query oidcIssuerProfile.issuerUrl --output tsv
Prendere nota dell'output di questo comando da usare nei passaggi successivi.
Creare il file di configurazione k3s:
sudo nano /etc/rancher/k3s/config.yaml
Aggiungere il contenuto seguente al
config.yaml
file, sostituendo il<SERVICE_ACCOUNT_ISSUER>
segnaposto con l'URL dell'autorità di certificazione del cluster annotato in precedenza:kube-apiserver-arg: - service-account-issuer=<SERVICE_ACCOUNT_ISSUER> - service-account-max-token-expiration=24h
Salvare il file e uscire dall'editor nano.
Riavviare il servizio k3s:
sudo systemctl restart k3s
Configurare la gestione dei segreti
La gestione dei segreti per le operazioni di Azure IoT usa l'estensione Secret Store per sincronizzare i segreti da un insieme di credenziali delle chiavi di Azure e archiviarli nel perimetro come segreti Kubernetes. L'estensione Secret Store richiede un'identità gestita assegnata dall'utente con accesso all'insieme di credenziali delle chiavi di Azure in cui sono archiviati i segreti. Per altre informazioni, vedere Che cosa sono le identità gestite per le risorse di Azure?
Per configurare la gestione dei segreti:
Creare un insieme di credenziali delle chiavi di Azure usato per archiviare i segreti e concedere all'account utente le autorizzazioni per gestire i segreti con il
Key Vault Secrets Officer
ruolo .Creare un'identità gestita assegnata dall'utente per l'estensione Secret Store.
Usare il comando az iot ops secretsync enable per configurare l'istanza di Operazioni IoT di Azure per la sincronizzazione dei segreti. Questo comando:
- Crea una credenziale di identità federata usando l'identità gestita assegnata dall'utente.
- Aggiunge un'assegnazione di ruolo all'identità gestita assegnata dall'utente per l'accesso all'insieme di credenziali delle chiavi di Azure.
- Aggiunge una classe di provider di segreti minima associata all'istanza di Operazioni IoT di Azure.
# Variable block AIO_INSTANCE_NAME="<AIO_INSTANCE_NAME>" RESOURCE_GROUP="<RESOURCE_GROUP>" USER_ASSIGNED_MI_NAME="<USER_ASSIGNED_MI_NAME>" KEYVAULT_NAME="<KEYVAULT_NAME>" #Get the resource ID of the user-assigned managed identity USER_ASSIGNED_MI_RESOURCE_ID=$(az identity show --name $USER_ASSIGNED_MI_NAME --resource-group $RESOURCE_GROUP --query id --output tsv) #Get the resource ID of the key vault KEYVAULT_RESOURCE_ID=$(az keyvault show --name $KEYVAULT_NAME --resource-group $RESOURCE_GROUP --query id --output tsv) #Enable secret synchronization az iot ops secretsync enable --instance $AIO_INSTANCE_NAME \ --resource-group $RESOURCE_GROUP \ --mi-user-assigned $USER_ASSIGNED_MI_RESOURCE_ID \ --kv-resource-id $KEYVAULT_RESOURCE_ID
Ora che la configurazione della sincronizzazione dei segreti è stata completata, è possibile fare riferimento a Gestire i segreti per la distribuzione di Operazioni IoT di Azure per informazioni su come usare i segreti con le operazioni IoT di Azure.
Configurare un'identità gestita assegnata dall'utente per le connessioni cloud
Alcuni componenti di Operazioni IoT di Azure, ad esempio gli endpoint del flusso di dati, usano un'identità gestita assegnata dall'utente per le connessioni cloud. È consigliabile usare un'identità separata da quella usata per configurare la gestione dei segreti.
Creare un'identità gestita assegnata dall'utente usata per le connessioni cloud.
Nota
Sarà necessario concedere l'autorizzazione di identità a qualsiasi risorsa cloud per cui si userà l'identità gestita.
Usare il comando az iot ops identity assign per assegnare l'identità all'istanza di Operazioni IoT di Azure. Questo comando crea anche una credenziale di identità federata usando l'autorità di certificazione OIDC del cluster connesso indicato e l'account del servizio Operazioni IoT di Azure.
# Variable block AIO_INSTANCE_NAME="<AIO_INSTANCE_NAME>" RESOURCE_GROUP="<RESOURCE_GROUP>" USER_ASSIGNED_MI_NAME="<USER_ASSIGNED_MI_NAME FOR CLOUD CONNECTIONS>" #Get the resource ID of the user-assigned managed identity USER_ASSIGNED_MI_RESOURCE_ID=$(az identity show --name $USER_ASSIGNED_MI_NAME --resource-group $RESOURCE_GROUP --query id --output tsv) #Assign the identity to the Azure IoT Operations instance az iot ops identity assign --name $AIO_INSTANCE_NAME \ --resource-group $RESOURCE_GROUP \ --mi-user-assigned $USER_ASSIGNED_MI_RESOURCE_ID
È ora possibile usare questa identità gestita negli endpoint del flusso di dati per le connessioni cloud.