Proteggere la distribuzione di IoTSecure your IoT deployment

L'articolo fornisce una serie di informazioni avanzate per proteggere l'infrastruttura Azure IoT eThis article provides the next level of detail for securing the Azure IoT-based Internet of Things (IoT) infrastructure. fornisce i collegamenti ai dettagli a livello di implementazione per configurare e distribuire ciascun componente.It links to implementation level details for configuring and deploying each component. Offre anche una serie di confronti e scelte tra i vari metodi concorrenti.It also provides comparisons and choices between various competing methods.

La protezione della distribuzione di Azure IoT può essere divisa nelle tre aree di sicurezza seguenti:Securing the Azure IoT deployment can be divided into the following three security areas:

  • Sicurezza del dispositivo: proteggere il dispositivo IoT mentre viene distribuito in circostanze normali.Device Security: Securing the IoT device while it is deployed in the wild.
  • Sicurezza delle connessioni: garantire che tuti i dati trasmessi tra il dispositivo IoT e l'hub IoT siano riservati e a prova di manomissione.Connection Security: Ensuring all data transmitted between the IoT device and IoT Hub is confidential and tamper-proof.
  • Sicurezza del cloud: fornire un mezzo per proteggere i dati duranti il trasferimento e l'archiviazione nel cloud.Cloud Security: Providing a means to secure data while it moves through, and is stored in the cloud.

Tre aree di sicurezza

Proteggere il provisioning dei dispositivi e l'autenticazioneSecure device provisioning and authentication

Azure IoT Suite protegge dispositivi IoT mediante i due metodi seguenti:The Azure IoT Suite secures IoT devices by the following two methods:

  • Fornendo una chiave di identità univoca (token di sicurezza) per ogni dispositivo, che può essere utilizzata dal dispositivo per comunicare con l'hub IoT.By providing a unique identity key (security tokens) for each device, which can be used by the device to communicate with the IoT Hub.
  • Usando un certificato X.509 su dispositivo e la chiave privata come mezzo per autenticare il dispositivo nell'hub IoT.By using an on-device X.509 certificate and private key as a means to authenticate the device to the IoT Hub. Questo metodo di autenticazione assicura che la chiave privata sul dispositivo non sia mai nota all'esterno del dispositivo, garantendo un livello di sicurezza più elevato.This authentication method ensures that the private key on the device is not known outside the device at any time, providing a higher level of security.

Il metodo basato sul token di sicurezza fornisce l'autenticazione per ogni chiamata effettuata dal dispositivo all'hub IoT associando la chiave simmetrica a ciascuna chiamata.The security token method provides authentication for each call made by the device to IoT Hub by associating the symmetric key to each call. L'autenticazione basata sul certificato x.509 consente di autenticare un dispositivo IoT a livello fisico come parte del processo di creazione della connessione TLS.X.509-based authentication allows authentication of an IoT device at the physical layer as part of the TLS connection establishment. Il metodo basato sul token di sicurezza può essere utilizzato senza l'autenticazione tramite certificato x.509, che rappresenta un modello meno sicuro.The security-token-based method can be used without the X.509 authentication which is a less secure pattern. La scelta tra i due metodi dipende principalmente dal livello di protezione richiesto dall'autenticazione del dispositivo e dalla disponibilità di spazio di archiviazione sicura sul dispositivo (per archiviare la chiave privata in modo sicuro).The choice between the two methods is primarily dictated by how secure the device authentication needs to be, and availability of secure storage on the device (to store the private key securely).

Token di sicurezza dell'hub IoTIoT Hub security tokens

Hub IoT usa i token di sicurezza per autenticare i dispositivi e i servizi ed evitare l'invio in rete delle chiavi.IoT Hub uses security tokens to authenticate devices and services to avoid sending keys on the network. Inoltre, i token di sicurezza hanno una validità limitata in termini di tempo e portata.Additionally, security tokens are limited in time validity and scope. Gli Azure IoT SDK generano automaticamente i token senza richiedere una configurazione speciale.Azure IoT SDKs automatically generate tokens without requiring any special configuration. In alcuni scenari, tuttavia, è necessario che l'utente generi e usi direttamente i token di sicurezza.Some scenarios, however, require the user to generate and use security tokens directly. Questi scenari includono l'uso diretto delle superfici MQTT, AMQP o HTTP o l'implementazione del modello di servizio token.These include the direct use of the MQTT, AMQP, or HTTP surfaces, or the implementation of the token service pattern.

Maggiori dettagli sulla struttura del token di sicurezza e il relativo utilizzo sono forniti all'interno degli articoli seguenti:More details on the structure of the security token and its usage can be found in the following articles:

Ogni hub IoT ha un registro di identità che può essere usato per creare risorse per dispositivo nel servizio, ad esempio una coda che contiene messaggi cloud a dispositivo in elaborazione, e per consentire l'accesso agli endpoint per dispositivi.Each IoT Hub has an identity registry that can be used to create per-device resources in the service, such as a queue that contains in-flight cloud-to-device messages, and to allow access to the device-facing endpoints. Il Registro delle identità dell'hub IoT offre l'archiviazione protetta delle identità e delle chiavi di protezione del dispositivo per una soluzione.The IoT Hub identity registry provides secure storage of device identities and security keys for a solution. Le identità dei dispositivi, singolarmente o in gruppo, possono essere aggiunte a un elenco Consenti o Blocca, favorendo il controllo completo dell'accesso al dispositivo.Individual or groups of device identities can be added to an allow list, or a block list, enabling complete control over device access. Gli articoli seguenti illustrano altri dettagli sulla struttura del registro di identità e sulle operazioni supportate.The following articles provide more details on the structure of the identity registry and supported operations.

L'hub IoT supporta protocolli quali MQTT, AMQP e HTTP.IoT Hub supports protocols such as MQTT, AMQP, and HTTP. Ognuno di questi protocolli utilizza i token di sicurezza dal dispositivo all'hub IoT in modo diverso:Each of these protocols use security tokens from the IoT device to IoT Hub differently:

  • AMQP: sicurezza basata su attestazioni AMQP e SASL PLAIN ({policyName}@sas.root.{iothubName} nel caso di token a livello di hub IoT; {deviceId} nel caso di token con ambito dispositivo).AMQP: SASL PLAIN and AMQP Claims-based security ({policyName}@sas.root.{iothubName} in the case of IoT hub-level tokens; {deviceId} in case of device-scoped tokens).
  • MQTT: il pacchetto CONNECT usa {deviceId} come {ClientId}, {IoThubhostname}/{deviceId} nel campo Nome utente e un token di firma di accesso condiviso nel campo Password.MQTT: CONNECT packet uses {deviceId} as the {ClientId}, {IoThubhostname}/{deviceId} in the Username field and a SAS token in the Password field.
  • HTTP: il token valido è contenuto nell'intestazione della richiesta di autorizzazione.HTTP: Valid token is in the authorization request header.

Il registro di identità dell'hub IoT può essere usato per configurare il controllo dell'accesso e le credenziali di sicurezza per dispositivo.IoT Hub identity registry can be used to configure per-device security credentials and access control. Se tuttavia una soluzione IoT presenta già un investimento significativo in un registro personalizzato di identità dei dispositivi e/o in uno schema di autenticazione, è possibile integrarla nell'infrastruttura esistente con l'hub IoT creando un servizio token.However, if an IoT solution already has a significant investment in a custom device identity registry and/or authentication scheme, it can be integrated into an existing infrastructure with IoT Hub by creating a token service.

Autenticazione del dispositivo basata sul certificato x.509X.509 certificate-based device authentication

L'uso di un certificato x.509 basato su dispositivo e la coppia di chiavi pubblica e privata associata consente un'autenticazione aggiuntiva a livello fisico.The use of a device-based X.509 certificate and its associated private and public key pair allows additional authentication at the physical layer. La chiave privata viene archiviata in modo sicuro nel dispositivo e non può essere individuata all'esterno del dispositivo.The private key is stored securely in the device and is not discoverable outside the device. Il certificato x.509 contiene informazioni sul dispositivo (ad esempio l'ID dispositivo) e altri dettagli dell'organizzazione.The X.509 certificate contains information about the device, such as device ID, and other organizational details. Una firma del certificato viene generata utilizzando la chiave privata.A signature of the certificate is generated by using the private key.

Flusso di provisioning di dispositivi di alto livello:High-level device provisioning flow:

  • Associare un identificatore a un dispositivo fisico: associazione dell'identità del dispositivo e/o del certificato x.509 al dispositivo durante la produzione e la messa in funzione del dispositivo.Associate an identifier to a physical device – device identity and/or X.509 certificate associated to the device during device manufacturing or commissioning.
  • Creare una voce di identità corrispondente nell'hub IoT: l'identità del dispositivo e le informazioni sul dispositivo associato nel registro di identità dell'hub IoT.Create a corresponding identity entry in IoT Hub – device identity and associated device information in the IoT Hub identity registry.
  • Archiviare in modo sicuro l'identificazione personale del certificato x.509 nel registro di identità dell'hub IoT.Securely store X.509 certificate thumbprint in IoT Hub identity registry.

Certificato principale nel dispositivoRoot certificate on device

Durante il tentativo di stabilire una connessione TLS sicura con l'hub IoT, il dispositivo IoT autentica l'hub IoT usando un certificato principale che fa parte dell'SDK per dispositivi.While establishing a secure TLS connection with IoT Hub, the IoT device authenticates IoT Hub using a root certificate which is part of the device SDK. Per l'SDK client dell'unità C, il certificato si trova nella cartella "\c\certs" nella radice del repository.For the C client SDK the certificate is located under the folder "\c\certs" under the root of the repo. Anche se questi certificati sono di lunga durata, possono comunque scadere o essere revocati.Though these root certificates are long-lived, they still may expire or be revoked. Se non esiste alcun modo di aggiornare il certificato sul dispositivo, il dispositivo potrebbe successivamente non essere in grado di connettersi all'hub IoT (o qualsiasi altro servizio cloud).If there is no way of updating the certificate on the device, the device may not be able to subsequently connect to the IoT Hub (or any other cloud service). Questo rischio si riduce efficacemente se si dispone di un mezzo per aggiornare il certificato principale dopo aver distribuito il dispositivo IoT.Having a means to update the root certificate once the IoT device is deployed will effectively mitigate this risk.

Proteggere la connessioneSecuring the connection

La connessione Internet tra il dispositivo IoT e l'hub IoT è protetta mediante lo standard TLS (Transport Layer Security).Internet connection between the IoT device and IoT Hub is secured using the Transport Layer Security (TLS) standard. IoT di Azure supporta gli standardTLS 1.2, TLS 1.1 e TLS 1.0, in questo ordine.Azure IoT supports TLS 1.2, TLS 1.1 and TLS 1.0, in this order. Il supporto per lo standard TLS 1.0 viene fornito soltanto per la compatibilità con le versioni precedenti.Support for TLS 1.0 is provided for backward compatibility only. Si consiglia di usare lo standard TLS 1.2, che fornisce un livello di protezione superiore.It is recommended to use TLS 1.2 since it provides the most security.

Azure IoT Suite supporta, nell'ordine, i pacchetti di crittografia seguenti:Azure IoT Suite supports the following Cipher Suites, in this order.

Pacchetto di crittografiaCipher Suite LengthLength
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028) ECDH secp384r1 (uguale aTLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028) ECDH secp384r1 (eq. RSA a 7680 bit) FS7680 bits RSA) FS 256256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027) ECDH secp256r1 (uguale aTLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027) ECDH secp256r1 (eq. RSA a 3072 bit) FS3072 bits RSA) FS 128128
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) ECDH secp384r1 (uguale aTLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) ECDH secp384r1 (eq. RSA a 7680 bit) FS7680 bits RSA) FS 256256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013) ECDH secp256r1 (uguale aTLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013) ECDH secp256r1 (eq. RSA a 3072 bit) FS3072 bits RSA) FS 128128
TLS_RSA_WITH_AES_256_GCM_SHA384 (0x9d)TLS_RSA_WITH_AES_256_GCM_SHA384 (0x9d) 256256
TLS_RSA_WITH_AES_128_GCM_SHA256 (0x9c)TLS_RSA_WITH_AES_128_GCM_SHA256 (0x9c) 128128
TLS_RSA_WITH_AES_256_CBC_SHA256 (0x3d)TLS_RSA_WITH_AES_256_CBC_SHA256 (0x3d) 256256
TLS_RSA_WITH_AES_128_CBC_SHA256 (0x3c)TLS_RSA_WITH_AES_128_CBC_SHA256 (0x3c) 128128
TLS_RSA_WITH_AES_256_CBC_SHA (0x35)TLS_RSA_WITH_AES_256_CBC_SHA (0x35) 256256
TLS_RSA_WITH_AES_128_CBC_SHA (0x2f)TLS_RSA_WITH_AES_128_CBC_SHA (0x2f) 128128
TLS_RSA_WITH_3DES_EDE_CBC_SHA (0xa)TLS_RSA_WITH_3DES_EDE_CBC_SHA (0xa) 112112

Proteggere il cloudSecuring the cloud

L'hub IoT di Azure consente la definizione dei criteri di controllo di accesso per ogni chiave di sicurezza,Azure IoT Hub allows definition of access control policies for each security key. usando il set di autorizzazioni seguente per concedere l'accesso agli endpoint dell'hub IoT.It uses the following set of permissions to grant access to each of IoT Hub's endpoints. Le autorizzazioni limitano l'accesso a un hub IoT in base alla funzionalità.Permissions limit the access to an IoT Hub based on functionality.

  • RegistryRead.RegistryRead. Concede l'accesso di sola lettura al registro di identità.Grants read access to the identity registry. Per altre informazioni, vedere Registro di identità.For more information, see identity registry.
  • RegistryReadWrite.RegistryReadWrite. Concede l'accesso di lettura e scrittura al registro di identità.Grants read and write access to the identity registry. Per altre informazioni, vedere Registro di identità.For more information, see identity registry.
  • ServiceConnect.ServiceConnect. Concede l'accesso alle comunicazioni per il servizio cloud e al monitoraggio degli endpoint.Grants access to cloud service-facing communication and monitoring endpoints. Ad esempio, concede ai servizi cloud back-end l'autorizzazione per la ricezione di messaggi da dispositivo a cloud, l'invio di messaggi da cloud a dispositivo e il recupero degli acknowledgment di recapito corrispondenti.For example, it grants permission to back-end cloud services to receive device-to-cloud messages, send cloud-to-device messages, and retrieve the corresponding delivery acknowledgments.
  • DeviceConnect.DeviceConnect. Concede l'accesso agli endpoint per il dispositivo.Grants access to device-facing endpoints. Ad esempio, concede l'autorizzazione per l'invio di messaggi da dispositivo a cloud e la ricezione di messaggi da cloud a dispositivo.For example, it grants permission to send device-to-cloud messages and receive cloud-to-device messages. Questa autorizzazione viene usata dai dispositivi.This permission is used by devices.

Ci sono due modi per ottenere le autorizzazioni DeviceConnect su hub IoT con i token di sicurezza: tramite una chiave di identità dispositivo o tramite una chiave di accesso condiviso.There are two ways to obtain DeviceConnect permissions with IoT Hub with security tokens: using a device identity key, or a shared access key. Inoltre, è importante notare che tutte le funzionalità accessibili dai dispositivi vengono esposte, per impostazione predefinita, sugli endpoint con prefisso /devices/{deviceId}.Moreover, it is important to note that all functionality accessible from devices is exposed by design on endpoints with prefix /devices/{deviceId}.

I componenti del servizio possono generare token di sicurezza solo tramite criteri di accesso condiviso che concedono le autorizzazioni appropriate.Service components can only generate security tokens using shared access policies granting the appropriate permissions.

L'hub IoT di Azure e altri servizi che possono essere parte della soluzione consentono la gestione degli utenti mediante l'Azure Active Directory.Azure IoT Hub and other services which may be part of the solution allow management of users using the Azure Active Directory.

I dati inseriti dall'Hub IoT di Azure possono essere usati da una serie di servizi, ad esempio Analisi di flusso di Azure, Archiviazione BLOB e così via.Data ingested by Azure IoT Hub can be consumed by a variety of services such as Azure Stream Analytics and Azure blob storage. Questi servizi consentono l'accesso di gestione.These services allow management access. Ulteriori informazioni su questi servizi e sulle opzioni disponibili riportate di seguito:Read more about these services and available options below:

  • Azure Cosmos DB: un servizio di database scalabile e completamente indicizzato per i dati semistrutturati che gestiscono metadati per i dispositivi di cui si effettua il provisioning, ad esempio attributi, configurazione e proprietà di sicurezza.Azure Cosmos DB: A scalable, fully-indexed database service for semi-structured data that manages metadata for the devices you provision, such as attributes, configuration, and security properties. Cosmos DB offre l'elaborazione ad alte prestazioni e velocità effettiva elevata, indicizzazione dei dati senza schema e una ricca interfaccia di query SQL.Cosmos DB offers high-performance and high-throughput processing, schema-agnostic indexing of data, and a rich SQL query interface.
  • Analisi di flusso di Azure: elaborazione del flusso in tempo reale nel cloud per sviluppare e distribuire rapidamente una soluzione di analisi a basso costo che consenta di rilevare informazioni approfondite in tempo reale da dispositivi, sensori, infrastruttura e applicazioni.Azure Stream Analytics: Real-time stream processing in the cloud that enables you to rapidly develop and deploy a low-cost analytics solution to uncover real-time insights from devices, sensors, infrastructure, and applications. I dati di questo servizio completamente gestito possono raggiungere qualsiasi volume anche in condizioni di velocità effettiva elevata, bassa latenza e resilienza.The data from this fully-managed service can scale to any volume while still achieving high throughput, low latency, and resiliency.
  • Servizi app di Azure: piattaforma cloud per compilare efficaci app mobili e Web che si connettono ai dati ovunque si trovino: nel cloud o localmente.Azure App Services: A cloud platform to build powerful web and mobile apps that connect to data anywhere; in the cloud or on-premises. Creare app per dispositivi mobili coinvolgenti per iOS, Android e Windows.Build engaging mobile apps for iOS, Android, and Windows. Eseguire l'integrazione con applicazioni Software as a Service (SaaS) e aziendali, grazie a connettività integrata a dozzine di applicazioni aziendali e servizi basati sul cloud.Integrate with your Software as a Service (SaaS) and enterprise applications with out-of-the-box connectivity to dozens of cloud-based services and enterprise applications. Scrivere codice usando IDE e il linguaggio preferito, .NET, Node.js, PHP, Python o Java, per creare app Web e API più rapidamente che mai.Code in your favorite language and IDE (.NET, Node.js, PHP, Python, or Java) to build web apps and APIs faster than ever.
  • App per la logica: la funzionalità App per la logica del servizio app di Azure consente di integrare la soluzione IoT con i sistemi line-of-business esistenti e automatizzare i processi del flusso di lavoro.Logic Apps: The Logic Apps feature of Azure App Service helps integrate your IoT solution to your existing line-of-business systems and automate workflow processes. App per la logica consente agli sviluppatori di progettare flussi di lavoro che vengono avviati da un trigger e quindi di eseguire una serie di passaggi, regole e azioni che usano potenti connettori per l'integrazione con i processi aziendali.Logic Apps enables developers to design workflows that start from a trigger and then execute a series of steps—rules and actions that use powerful connectors to integrate with your business processes. App per la logica offre connettività integrata per un vasto ecosistema di applicazioni SaaS, basate sul cloud e locali.Logic Apps offers out-of-the-box connectivity to a vast ecosystem of SaaS, cloud-based, and on-premises applications.
  • Archiviazione BLOB di Azure: archiviazione cloud affidabile ed economica per i dati che i dispositivi inviano al cloud.Azure blob storage: Reliable, economical cloud storage for the data that your devices send to the cloud.

ConclusioneConclusion

Questo articolo fornisce una panoramica a livello di implementazione per progettare e distribuire un'infrastruttura mediante Azure IoT.This article provides overview of implementation level details for designing and deploying an IoT infrastructure using Azure IoT. Per una protezione complessiva dell'infrastruttura IoT è fondamentale configurare la sicurezza di ciascun componente.Configuring each component to be secure is key in securing the overall IoT infrastructure. Le scelte di progettazione disponibili in Azure IoT forniscono un certo livello di flessibilità e scelta; tuttavia, ogni scelta può avere determinate implicazioni di sicurezza.The design choices available in Azure IoT provide some level of flexibility and choice; however, each choice may have security implications. Si consiglia di vagliare entrambe le opzioni secondo il criterio di una valutazione dei costi e del rischio.It is recommended that each of these choices be evaluated through a risk/cost assessment.

Vedere ancheSee also

È anche possibile esplorare alcune altre funzionalità delle soluzioni preconfigurate di IoT Suite:You can also explore some of the other features and capabilities of the IoT Suite preconfigured solutions:

Informazioni sulla protezione dell'hub IoT sono disponibili in Controllare l'accesso all'hub IoT nella guida per gli sviluppatori dell'hub IoT.You can read about IoT Hub security in Control access to IoT Hub in the IoT Hub developer guide.