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 Operazioni di Azure IoT 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 gli 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 Operazioni di Azure IoT distribuita con le impostazioni di test.
Il interfaccia della riga di comando di Azure installato nel computer di sviluppo. Controlla le estensioni interfaccia della riga di comando di Azure disponibili per la versione minima richiesta per utilizzare l'estensione azure-iot-ops. Usare
az --versionper controllare la versione eaz upgradeper aggiornarla, se necessario. Per altre informazioni, vedere Installare il interfaccia della riga di comando di Azure.Estensione Operazioni di Azure IoT per il 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
Versione più recente dell'estensione connectedk8s per 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
Gli esempi interfaccia della riga di comando di Azure in questo articolo usano variabili di ambiente così puoi impostare ogni valore una volta e poi copiare e incollare i comandi as-is. Se stai usando l'ambiente Operazioni di Azure IoT Codespaces dal quickstart, queste variabili sono già impostate per te e puoi saltare questo passaggio. Altrimenti, imposta le seguenti variabili di ambiente nella tua shell prima di eseguire i comandi.
I seguenti script impostano le variabili di ambiente più comunemente utilizzate:
| Variabile di ambiente | Description |
|---|---|
SUBSCRIPTION_ID |
L'ID della sottoscrizione che contiene l'istanza di Operazioni di Azure IoT. |
RESOURCE_GROUP |
Il nome del gruppo di risorse che contiene la tua istanza Operazioni di Azure IoT. |
AIO_INSTANCE_NAME |
Il nome dell'istanza di Operazioni di Azure IoT. Per elencare le tue istanze, esegui az iot ops list -o table. |
CLUSTER_NAME |
Il nome del cluster Kubernetes abilitato Azure Arc che ospita la tua istanza. |
LOCATION |
La regione Azure da utilizzare per nuove risorse, ad esempio eastus. |
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
AIO_INSTANCE_NAME=<instance-name>
CLUSTER_NAME=<cluster-name>
LOCATION=<region>
Devi solo impostare le variabili utilizzate in questo articolo. Questo articolo potrebbe utilizzare variabili ambientali aggiuntive per i nomi delle risorse che scegli. L'articolo spiega come posizionarli dove vengono introdotti.
Abilitare il cluster per le impostazioni sicure
Per abilitare la sincronizzazione dei segreti per l'istanza di Operazioni di Azure IoT, è necessario abilitare le funzionalità OIDC e workload identity federation nel cluster. Questa configurazione è necessaria per l'estensione Azure Key Vault secret store per sincronizzare i segreti da un Azure Key Vault e archiviarli nella rete perimetrale come segreti Kubernetes.
Per i cluster Servizio Azure Kubernetes (AKS), puoi abilitare le funzionalità OIDC di emittente e identità del carico di lavoro quando crei il cluster o su un cluster esistente. Per maggiori informazioni, consulta Distribuire e configurare ID dei carichi di lavoro di Microsoft Entra su un cluster AKS. Per i cluster in .NET Aspire, 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-identitySe 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à dell'identità dell'autorità emittente OIDC e del carico di lavoro 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'emittente del cluster.
az connectedk8s show -g $RESOURCE_GROUP -n $CLUSTER_NAME --query oidcIssuerProfile.issuerUrl --output tsvPrendere 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.yamlAggiungere il contenuto seguente al
config.yamlfile, 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=24hSalvare 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 Operazioni di Azure IoT utilizza l'estensione "Secret Store" per sincronizzare i segreti da un Azure Key Vault e memorizzarli all'edge come segreti di 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:
Crea un Azure Key Vault per memorizzare i segreti e dai al tuo account utente i permessi di gestire i segreti assegnando il
Key Vault Secrets Officerruolo. Assicurarsi che l'insieme di credenziali delle chiavi utilizzi il controllo degli accessi in base al ruolo di Azure come modello di autorizzazioni. Per verificare questa impostazione nel portale di Azure, seleziona il tuo insieme di credenziali delle chiavi e quindi seleziona Impostazioni>Configurazione di accesso.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 di Azure IoT 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 minima di provider di segreti associata all'istanza di Operazioni di Azure IoT.
# 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 Operazioni di Azure IoT per informazioni su come usare i segreti con Operazioni di Azure IoT.
Configurare un'identità gestita assegnata dall'utente per le connessioni cloud
Alcuni componenti Operazioni di Azure IoT, 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.
Note
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 di Azure IoT. Questo comando crea anche una credenziale di identità federata usando l'emittente OIDC del cluster connesso indicato e l'account del servizio Operazioni di Azure IoT.
Importante
La versione predefinita di questo comando assegna un'identità per i flussi di dati. Se si prevede di usare grafici del flusso di dati, includere il
--usageparametro con il valorewasm-graph.# 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_IDRiavviare i pod del registro schemi per applicare la nuova identità.
kubectl rollout restart statefulset adr-schema-registry -n azure-iot-operations
È ora possibile usare questa identità gestita negli endpoint del flusso di dati per le connessioni cloud.
Bloccare l'accesso dei pod al servizio metadati dell'istanza di Azure
Quando si distribuisce Operazioni di Azure IoT con configurazioni sicure su AKS, Microsoft consiglia di bloccare l'accesso dei pod all'endpoint del servizio di metadati delle istanze di Azure. Per informazioni su come abilitare questa funzionalità, vedere Block pod access to the Azure Instance Metadata Service (IMDS) endpoint.