Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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.53.0 o superiore. Usare
az --version
per controllare la versione eaz upgrade
per aggiornarla, 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'Azure Key Vault Secret Store per sincronizzare i segreti da un Azure Key Vault e archiviarli nell'edge come segreti di 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 nel computer in cui è stato distribuito il cluster Kubernetes:
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 utilizza l'estensione Secret Store per sincronizzare i segreti da un Key Vault di Azure e archiviarli sull'edge come segreti Kubernetes. L'estensione Secret Store richiede un'identità gestita assegnata dall'utente con accesso all'Azure Key Vault, dove 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 Key Vault 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' da usare per l'accesso al Key Vault.
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 ad Azure Key Vault.
- 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.