Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS User Group Cuneo - IoT Core 101

AWS User Group Cuneo - IoT Core 101

Durante questo evento verrà presentato il servizio AWS IoT Core, il suo funzionamento, come creare e gestire i propri dispositivi IoT. Questo evento è adatto a chiunque voglia sperimentare questo servizio, sia per un utilizzo domestico che professionale.

Verranno trattati i concetti principali di Device Shadow, Topics e scambio di messaggi tramite il protocollo MQTT. La sicurezza verrà messa al primo posto, senza condizioni, con una panoramica su certificati X.509, connessione attraverso TLS e Device Defender.

È preferibile una minima conoscenza pregressa della console AWS, alcuni fondamenti su programmazione ad eventi, conoscenza di base di Raspberry Pi/Arduino.

Fabio Gollinucci

February 22, 2020
Tweet

More Decks by Fabio Gollinucci

Other Decks in Programming

Transcript

  1. Internet of things Smart Home Automotive Industria Città ed energia

    Assistenti vocali, controllo di luci, prese, televisori, termostati, tapparelle... Auto a guida autonoma, sensori di sicurezza, monitoraggio dei componenti Linea di produzione, automatizzazione dei processi Monitoraggio ed ottimizzazione dei consumi, controllo delle emissioni di CO2, PM10...
  2. In “IoT”, the ”S” stands for “Security” Piccole dimensioni poco

    spazio per alloggiare una porta ethernet, si preferiscono soluzioni wireless (Bluetooth, Zigbee, NFC..). Basso costo poche risorse computazionali, hardware appena sufficiente per le operazioni smart. Concorrenza di mercato i dispositivi vengono progettati e messi sul mercato velocemente, non viene approfondita la sicurezza. Rete locale viene considerata sicura e non si presta la dovuta attenzione, nessuna autenticazione o valori di default (000000, admin/admin, root/root..). Variabilità di produttori sovente si usano dispositivi di 5/6 produttori diversi, ne basta uno per compromettere gli altri. Aggiornamenti poco frequenti spesso e volentieri non vengono aggiornati e le vulnerabilità persistono per anni.
  3. Servizi AWS IoT AWS offre una vasta gamma di servizi

    IoT pensati per soluzioni industriali, commerciali e dei consumatori. Realizzato su un’infrastruttura di cloud affidabile, sicura e scalabile per miliardi di dispositivi connessi e trilioni di messaggi. AWS IoT si integra inoltre con i principali servizi AWS come Lambda (computazione serverless), Amazon S3 (storage), Amazon SageMaker (machine learning), CloudWatch (metriche e log) consentendo così di creare ogni tipo di soluzione e caso d’uso. Include meccanismi di sicurezza preventiva, come la crittografia e il controllo dell'accesso ai dati del dispositivo. Offre inoltre servizi per monitorare in continuazione e verificare le configurazioni di sicurezza per essere allertati in caso di comportamenti sospetti dei dispositivi.
  4. Servizi AWS IoT - Software dispositivo Amazon FreeRTOS sistema operativo

    per microcontroller che rende semplice programmare, distribuire, proteggere, collegare e gestire dispositivi edge di piccole dimensioni e a basso consumo. AWS IoT Greengrass software che consente di eseguire localmente funzionalità di calcolo, messaggistica, caching dei dati, sincronizzazione e inferenza per machine learning per dispositivi connessi in tutta sicurezza.
  5. Servizi AWS IoT - Connettività e controllo AWS IoT Core

    consente ai dispositivi connessi di interagire in modo semplice e sicuro con le applicazioni cloud e altri dispositivi. AWS IoT Device Defender esegue in modo continuo l'auditing delle configurazioni IoT per garantire la conformità alle best practice sulla sicurezza. AWS IoT Events semplifica il rilevamento e la risposta agli eventi grazie a un gran numero di sensori e applicazioni IoT. AWS IoT Analytics semplifica l'esecuzione di analisi sofisticate su enormi volumi di dati IoT.
  6. AWS IoT Core – Registry AWS IoT registry è dove

    vengono registrati tutti i dispositivi dell’account AWS. Il registro contiene le informazioni del dispositivo (attributi chiave-valore personalizzabili).
  7. AWS IoT Core – Device (Thing) I Devices sono la

    rappresentazione dei dispositivi connessi e controllabili tramite il servizio AWS IoT Core. Può essere una lampadina, un servo, un bottone, un sensore di temperatura o qualsiasi dispositivo elettronico. Vengono anche definiti Things quando aggiunti al registry. È possibile creare un template degli attributi da impostare per un determinato dispositivo usando i Types. I dispositivi possono essere organizzati in gruppi chiamati Thing groups, questo rende più semplice la loro organizzazione e controllo.
  8. AWS IoT Core – Device (Thing) Per creare una nuova

    Thing è sufficiente usare la console web tramite un setup wizard multi-step. Verranno richiesti i dati del dispositivo come il suo nome (chiamato anche ID nelle SDK), il tipo (Thing Type), l’associazione ad un gruppo (Thing Group), gli attributi usati per cercare il dispositivo e la creazione della Thing Shadow. Si possono generare più dispositivi in una volta sola descrivendoli in un file da importare con n righe quanti sono i dispositivi da creare. È possibile generare il certificato X.509 da collegare al dispositivo oppure collegarne uno esistente. TIPS: È consigliabile utilizzare CloudFormation per descrivere e creare i propri dispositivi.
  9. AWS IoT Core – Certificati I dispositivi si collegato a

    AWS IoT Core attraverso una connessione tramite Transport Layer Security (TLS). Questo avviene utilizzando un certificato X.509, generabile dalla console web con un semplice click. È possibile generare il certificato da un chiave privata esistente oppure importarlo.
  10. AWS IoT Core – Policy Una volta generato un certificato

    deve essere collegato ad una Policy, ovvero una serie di regole che permettono di usare il certificato solo per determinate operazioni.
  11. AWS IoT Core – Associazione del certificato Il certificato deve

    poi essere associato ad uno o più device, sarà così possibile collegarsi all’endpoint IoT (MQTT broker) per ricevere ed inviare messaggi.
  12. AWS IoT Core – Topic I Topic sono dei “canali”

    di trasmissione di messaggi, una volta registrati a tale canale si possono ascoltare ed inviare messaggi. Per questa operazione viene usato il protocollo MQTT, una connessione persistente tra Topic e Subscriber che permette di ricevere i messaggi in real-time. Topic (Broker) Subscriber Sender
  13. AWS IoT Core – Topic È possibile modificare il parametro

    Qualità del Servizio (QoS) durante l’operazione di pubblicazione dei messaggi. Qos 0 – default Il messaggio pubblicato nel topic viene inviato senza aspettarsi un ACK, se nessun subscriber è connesso al topic il messaggio andrà perso. Qos 1 Il messaggio pubblicato nel topic ed il broker MQTT aspetta una conferma di ricezione da almeno un subscriber. Se questo non succede il messsaggio continua ad essere ri-pubblicato nel topic.
  14. AWS IoT Core – Jobs I Jobs sono un insieme

    di operazioni che possono essere inviate ed eseguite su uno o più devices collegati ad AWS IoT. Queste operazioni vengono descritti in un file JSON chiamato job document. L’avanzamento dello stato del job viene gestito dal device che esegue l’operazione e può essere controllato tramite la console web.
  15. AWS IoT Core - Device's shadow Dispositivo fisico Device's shadow

    Integrazioni Il vero è proprio dispositivo hardware, può essere un Raspberry Pi come un Arduino o altre schede elettroniche. Rappresentazione del dispositivo nel cloud, memorizza lo stato del dispositivo. Controllo remoto del dispositivo, modifica e accesso ai dati. Tutte le operazioni di modifica o accesso ai dati avvengono sulla Shadow del dispositivo e non su di esso. Il dispositivo ha il compito di mantenersi sincronizzato con le modifiche apportate alla sua Shadow.
  16. AWS IoT Core - Device's shadow Il dispositivo valorizza questa

    parte dello stato per riportare il suo stato attuale. Applicazioni ed integrazioni varie scrivono questa porzione per segnalare lo stato desiderato. Metadati contenenti il timestamp del momento in cui è stato modifico l’ultima volta un determinato attributo. La versione del documento. Il timestamp del momento in cui il messaggio è stato inviato.
  17. AWS IoT Core - Device’s shadow L’integrazione remota riporta lo

    stato desiderato che il dispositivo dovrà avere
  18. AWS IoT Core - Device’s shadow IoT Core rileva una

    differenza tra reported e desired ed invia un messaggio nel topic $aws/things/Led/shadow/update/delta. Topic Il dispositivo (in ascolto sul topic) riceve il messaggio.
  19. AWS IoT Core - Device’s shadow Il dispositivo aggiorna lo

    stato per riportare l’avvenuta modifica (ACK). Inoltre elimina la proprietà desired in modo da ripulire lo stato e permettere il ri- calcolo del delta.
  20. AWS IoT Core - Device’s shadow Nel caso di un

    sensore l’unica operazione sulla shadow può essere l’aggiornamento del reported
  21. AWS IoT Core - SDK • SDK AWS Mobile per

    Android • SDK Arduino Yún • SDK di dispositivo AWS IoT per Embedded C • SDK di dispositivo AWS IoT per C++ • SDK AWS Mobile per iOS • SDK di dispositivo AWS IoT per Java • SDK di dispositivo AWS IoT per JavaScript • SDK di dispositivo AWS IoT per Python
  22. AWS IoT Core - Prezzi Connettività 0,08 USD (per milione

    di minuti di connessione) Messaggistica (per milione di messaggi) Fino a 1 miliardo di messaggi: 1,00 USD Successivi 4 miliardi di messaggi: 0,80 USD Oltre 5 miliardi di messaggi: 0,70 USD Dispositivi ombra e registro 1,25 USD (per milione di operazioni) Motore delle regole Regole attivate: 0,15 USD (per milione di regole attivate/per milione di azioni eseguite) Azioni eseguite: 0,15 USD (per milione di regole attivate/per milione di azioni eseguite) I costi per connettere 10.000 dispositivi ad AWS IoT Core per 30 giorni vengono calcolati come segue: Minuti di connessione = 10.000 connessioni * 60 minuti in un'ora * 24 ore in un giorno * 30 giorni = 432.000.000 minuti di connessione Costi di connettività totali = 432.000.000 di minuti di connessione * 0,08 USD/1.000.000 = 34,56 USD
  23. AWS IoT Core - Piano gratuito 2.250.000 minuti di connessione

    500.000 messaggi 225.000 operazioni di registro o dispositivi ombra 250.000 attivazioni di regole e 250.000 esecuzione di operazioni Il piano gratuito permette ad esempio di eseguire un carico di lavoro con 50 dispositivi, in cui ogni dispositivo: Rimane collegato 24 ore al giorno Scambia 300 messaggi al giorno (ogni messaggio di dimensioni inferiori ai 5 KB) Esegue 130 operazioni di registro o shadow dei dispositivi al giorno (con record di dimensioni inferiori a 1 KB) Attiva 150 esecuzioni di regole al giorno che eseguono un'operazione (ogni messaggio elaborato di dimensioni inferiori ai 5 KB)