Dokumen ini memberikan praktik keamanan terbaik untuk mengelola dan menjalankan backend Internet of Things (IoT) di Google Cloud. Dalam solusi IoT, backend IoT menghubungkan perangkat edge ke resource lain. Dokumen ini berfokus pada backend IoT berikut: broker Message Queuing Telemetry Transport (MQTT) dan platform IoT.
Dokumen ini adalah bagian dari serangkaian dokumen yang memberikan informasi tentang arsitektur IoT di Google Cloud dan tentang migrasi dari IoT Core. Dokumen lain dalam rangkaian ini mencakup hal berikut:
- Ringkasan Google Cloud arsitektur perangkat terhubung
- Arsitektur broker MQTT mandiri di Google Cloud
- Arsitektur produk platform IoT di Google Cloud
- Praktik terbaik untuk menjalankan backend IoT di Google Cloud (dokumen ini)
- Perangkat pada arsitektur Pub/Sub ke Google Cloud
- Praktik terbaik untuk menyediakan dan mengonfigurasi sistem serta server edge dan bare metal secara otomatis
Dokumen ini memberikan praktik terbaik untuk menyediakan dan mengelola kredensial perangkat, mengautentikasi dan mengakses perangkat edge kontrol, serta mengizinkan perangkat edge IoT mengakses resource Google Cloud .
Arsitektur IoT
Arsitektur IoT mencakup layanan yang memungkinkan Anda menyediakan dan mengelola kredensial perangkat, mengautentikasi dan mengakses perangkat edge kontrol, serta mengizinkan perangkat edge mengakses resource Google Cloud . Dokumen ini membahas dua arsitektur backend IoT satu menggunakan perantara MQTT dan satu lagi menggunakan platform IoT. Perbedaan keamanan utama antara kedua backend ini adalah identitas perangkat dan pengelolaan perangkat. Platform IoT menyediakan kemampuan IoT sebagai bagian dari sistem mereka, sedangkan perantara MQTT mewajibkan Anda menyediakan kemampuan MQTT.
Diagram berikut menjelaskan arsitektur IoT.
Arsitektur ini menunjukkan layanan yang diperlukan untuk tiga proses berikut:
Penyediaan sertifikat merupakan proses yang harus Anda selesaikan untuk menyiapkan perangkat edge untuk konfigurasi.
Autentikasi dan otorisasi mencakup skema autentikasi yang digunakan perangkat edge dan perantara MQTT atau platform IoT digunakan untuk mengautentikasi satu sama lain.
Koneksi antara perangkat edge dan Google Cloud layanan, yang merupakan tugas yang perlu diselesaikan perangkat edge untuk terhubung ke resource cloud dan mengupload atau mendownload data.
Dokumen ini berfokus utama pada praktik terbaik keamanan untuk penyediaan dan autentikasi.
Arsitektur ini menggunakan kombinasi layanan dan fitur berikut:
- Perangkat edge (seperti perangkat medis) yang Anda terapkan di lingkungan Anda dan yang secara geografis dekat dengan data yang ingin Anda proses. Perangkat edge terhubung secara dua arah dengan backend IoT Anda, yang berarti perangkat dapat mengirim pesan ke danmenerima pesan dari backend IoT.
- Backend IoT dapat berupa perantara MQTT atau platform IoT.
- Perantara MQTT menyediakan keamanan antarmuka untuk perangkat edge agar terhubung menggunakan protokol MQTT. Perantara MQTT tidak memiliki kemampuan untuk pengelolaan perangkat dan identitas perangkat serta mengandalkan sistem eksternal untuk menyediakannya.
- Platform IoT adalah aplikasi cloud yang terhubung dan berkomunikasi dengan perangkat edge. Platform IoT menyediakan keamanan antarmuka bagi perangkat edge agar dapat terhubung menggunakan protokol MQTT. Setiap platform IoT memiliki implementasi keamanan tersendiri yang menentukan cara mengautentikasi dan memberi otorisasi perangkat edge, serta cara mengelola identitas perangkat.
- Pusat penyimpanan sertifikat yang menghosting sertifikat untuk semua perangkat edge.
- Resource Cloud yang harus di akses oleh perangkat edge.
Menyediakan perangkat edge
Sebelum perangkat edge dapat terhubung ke beban kerja backend, Anda harus menyediakan sertifikat untuk perangkat edge. Ada dua skenario utama yang memutuskan Anda mendapatkan sertifikat:
Jika solusi Anda berdasarkan pada perangkat generik dan komersial, Anda memiliki kontrol penuh atas proses penyediaan setelah membeli perangkat.
Jika Anda menggunakan perangkat yang dibuat khusus, proses penyediaan awal akan terjadi selama pembuatan perangkat dan Anda harus mengintegrasikan proses penyediaan dengan vendor dan produsen.
Dalam kedua skenario tersebut Anda harus membuat sertifikat dengan rantai kepercayaan yang terhubung ke root certificate authority (CA). Sertifikat ini mengautentikasi identitas perangkat dan membantu memastikan bahwa pembaruan dan modifikasi yang dilakukan pada perangkat dilakukan oleh pihak terpercaya. Gunakan CA seperti Certificate Authority Service untuk menyelesaikan tugas berikut:
- Buat dan simpan sertifikat CA root dengan cara yang aman.
- Buat dan simpan sertifikat CA subordinat untuk menandatangani sertifikat perangkat, jika perlu.
- Minta dan tanda tangani sertifikat perangkat.
- Konfigurasi dan distribusikan izin untuk subordinasi CA ke vendor dan produsen Anda, jika perlu.
- Cabut sertifikat perangkat jika tidak diperlukan lagi atau Anda menduga perangkat telah dibobol.
Untuk mendapatkan sertifikat perangkat, Anda harus menyelesaikan tugas berikut:
Jika perangkat Anda memiliki solusi keamanan berbasis hardware yang tahan modifikasi tidak sah, seperti elemen pengaman (SE) atau modul keamanan hardware (HSM) yang menyimpan kunci pribadi secara lokal dan kunci pribadi tidak pernah diekspos secara eksternal, lakukan hal berikut:
- Buat pasangan kunci publik-pribadi menggunakan solusi keamanan berbasis hardware yang didukung oleh perangkat Anda.
- Minta sertifikat menggunakan permintaan penandatanganan sertifikat (CSR).
Jika Anda tidak menggunakan solusi keamanan berbasis hardware untuk membuat pasangan kunci publik-pribadi, gunakan CA untuk membuat kunci dan sertifikat sebagai gantinya. Untuk informasi selengkapnya, lihat Menggunakan kunci yang dihasilkan secara otomatis. Sertifikat yang Anda download menggunakan metode ini sudah ditandatangani.
Setelah membuat dan menandatangani sertifikat perangkat, Anda harus menginstal sertifikat perangkat yang ditandatangani di perangkat edge dan menyimpan sertifikat tersebut di repositori sertifikat pusat, seperti Secret Manager.
Untuk informasi selengkapnya, lihat Cara men-deploy infrastruktur kunci publik yang aman dan andal dengan Google Cloud Layanan CA (PDF).
Untuk informasi tentang praktik terbaik penyediaan lainnya, lihat Praktik terbaik untuk menyediakan dan mengonfigurasi sistem serta server edge dan bare metal secara otomatis.
Tiga jenis sertifikat digunakan untuk membantu mengamankan solusi IoT:
Sertifikat root CA memberikan root untuk rantai kepercayaan semua sertifikat lain di sistem Anda. Beban kerja backend menggunakan root certificate untuk memvalidasi sertifikat client dan perangkat edge menggunakan root certificate untuk memvalidasi sertifikat server. Anda harus mendistribusikan root certificate ke backend IoT dan ke perangkat edge.
Sertifikat CA perantara memberikan rantai kepercayaan yang berakar ke root CA. Anda dapat menggunakan CA perantara untuk penyediaan, atau untuk kebutuhan operasional, seperti memberikan akses ke CA perantara kepada produsen, atau untuk menerapkan proses pengelolaan CA yang fleksibel.
Sertifikat server digunakan untuk mengamankan endpoint yang diekspos oleh backend IoT. Anda memiliki sertifikat server untuk berbagai algoritma enkripsi yang perlu di dukung oleh endpoint Anda. sertifikat server ditautkan ke root CA. Secret manager mengelola dan menyimpan bagian pribadi dan publik dari sertifikat server. Anda harus mengonfigurasi backend IoT dengan sertifikat server dan kunci pribadinya yang sesuai.
Sertifikat klien digunakan untuk mengidentifikasi perangkat edge. Setiap perangkat edge memiliki setidaknya satu sertifikat klien, yang berarti jumlah sertifikat yang Anda miliki akan meningkat seiring dengan bertambahnya jumlah perangkat edge di lingkungan Anda. Sertifikat klien ditautkan ke root CA. Anda harus mendistribusikan sertifikat klien ke perangkat edge dan ke backend IoT.
Proses untuk membuat sertifikat perangkat menggunakan HSM atau SE
Diagram berikut menunjukkan cara sertifikat perangkat disediakan saat menggunakan HSM atau SE.
Dalam diagram ini, terjadi langkah-langkah berikut:
- Perangkat edge menghasilkan pasangan kunci publik di hardware.
- Download kunci publik Anda dan buat permintaan penandatanganan sertifikat (CSR) untuk kunci tersebut.
- Anda mengirim CSR ke CA untuk meminta sertifikat.
- CA melakukan tindakan-tindakan berikut:
- Menandatangani sertifikat. tersebut.
- Menampilkan sertifikat yang ditandatangani kepada penyedia.
- Penyedia akan menyelesaikan beberapa langkah berikut:
- Mengirim sertifikat yang ditandatangani ke perangkat edge.
- Menyimpan sertifikat yang ditandatangani di penyimpanan sertifikat pusat.
- Perangkat edge menyimpan sertifikat di lokasi yang aman.
Proses pembuatan sertifikat perangkat menggunakan CA
Diagram berikut ini menunjukkan cara penyediaan sertifikat perangkat saat menggunakan CA.
Dalam diagram ini, terjadi langkah-langkah berikut:
- Penyedia meminta CA untuk mengirim sertifikat yang ditandatangani untuk perangkat.
- CA melakukan tindakan-tindakan berikut:
- Menghasilkan pasangan kunci publik-pribadi dan menandatangani kunci publik.
- Menampilkan sertifikat perangkat dan kunci pribadi kepada penyedia.
- Penyedia akan menyelesaikan beberapa langkah berikut:
- Mengirim sertifikat dan kunci pribadi ke perangkat edge.
- Menyimpan sertifikat dan kunci pribadi di penyimpanan sertifikat pusat.
- Perangkat edge menyimpan sertifikat dan kunci pribadi di lokasi yang aman.
Jika ingin menyimpan kunci pribadi di satu tempat (perangkat), Anda harus menghindari penyimpanan kunci pribadi di penyimpanan rahasia pusat. Namun, jika Anda menyimpan kunci pribadi di luar penyimpanan rahasia pusat dan Anda kehilangan akses ke kunci pribadi, perangkat harus melalui proses penyediaan lagi.
Mengautentikasi perangkat sebelum menandatangani sertifikat
Proses untuk membuat sertifikat perangkat (baik di perangkat, maupun dengan menggunakan CA) memerlukan perangkat dan CA untuk berkomunikasi dan mengautentikasi satu sama lain.
Tanpa autentikasi yang tepat, CA Anda mungkin keliru memercayai perangkat jahat. Misalnya, penyerang yang memiliki pengetahuan tentang cara menjangkau infrastruktur penandatanganan sertifikat CA Anda dapat men-deploy perangkat berbahaya yang meminta CA Anda untuk menandatangani sertifikat. Jika Anda tidak memiliki autentikasi perangkat, CA Anda mungkin menandatangani sertifikat yang ditampilkan perangkat berbahaya. Jika CA Anda menandatangani sertifikat, perangkat berbahaya kemudian dapat berkomunikasi dengan backend Anda sebagai perangkat tepercaya.
Untuk membantu Anda mencegah perangkat berbahaya berkomunikasi dengan CA, sebaiknya Anda melakukan tindakan berikut:
- Terapkan mekanisme autentikasi untuk perangkat yang belum tepercaya.
- Menetapkan keaslian perangkat yang meminta autentikasi.
- Menetapkan keaslian perangkat sebelum perangkat meminta CA untuk membuat sertifikat baru atau menandatangani sertifikat yang ada.
Mengimplementasikan mekanisme autentikasi pada tahap proses penyediaan ini merupakan tantangan. Anda tidak dapat mengandalkan sertifikat perangkat untuk mengautentikasi perangkat karena perangkat belum memiliki sertifikat yang ditandatangani dari CA. Kurangnya sertifikat yang ditandatangani ini dapat terjadi karena alasan berikut:
- Perangkat belum membuat sertifikat.
- Perangkat belum mengirimkan CSR ke CA.
- CA belum mengirimkan sertifikat yang ditandatangani kembali ke perangkat.
Salah satu cara untuk mengatasi masalah ini adalah dengan memperluas proses penyediaan perangkat untuk melakukan hal berikut untuk setiap perangkat yang ingin Anda autentikasi atau perlu diautentikasi:
- Buat sertifikat penyediaan yang hanya Anda gunakan untuk mengautentikasi perangkat terhadap infrastruktur penandatanganan sertifikat.
- Tanda tangani sertifikat penyediaan dengan CA Anda.
- Simpan sertifikat penyediaan yang ditandatangani di SE atau HSM di perangkat.
- Simpan sertifikat penyediaan yang ditandatangani di backend Google CloudAnda.
Sebelum perangkat diberi akses ke infrastruktur penandatanganan sertifikat CA Anda, perangkat harus menunjukkan sertifikat penyediaan. Sertifikat tersebut harus menampilkan sertifikat sehingga Anda dapat memverifikasi integritas dan autentisi, dan menentukan apakah sertifikat cocok dengan salah satu sertifikat penyediaan yang disimpan di backend Google Cloud . Jika verifikasi berhasil, perangkat dapat mengakses infrastruktur penandatanganan sertifikat CA Anda dan proses penyediaan sertifikat dapat dilanjutkan.
Ada perbedaan antara sertifikat penyediaan dan sertifikat yang sepenuhnya dipercaya. Sertifikat penyediaan hanya memberikan akses ke layanan dan infrastruktur dalam jumlah minimal. Membuat sertifikat penyediaan memungkinkan CA memverifikasi bahwa perangkat tersebut asli sebelum menganggapnya sepenuhnya tepercaya dan mengeluarkan sertifikat yang sepenuhnya tepercaya.
Perluasan untuk proses ini adalah Anda dapat menggunakan CA subordinat yang dapat diakses oleh produsen perangkat, bersama dengan CA Anda, untuk menandatangani sertifikat penyediaan. Misalnya, produsen mungkin menandatangani sertifikat penyediaan perangkat setelah menyelesaikan proses pembuatan untuk perangkat tersebut. Kemudian, Anda dapat memverifikasi tanda tangan ini untuk membantu memvalidasi bahwa perangkat tersebut asli.
Jika perangkat disusupi sebelum disediakan, sebaiknya Anda menghapus sertifikat penyediaan yang sesuai dari backend Google Cloud, sehingga perangkat tidak dapat memulai proses untuk mendapatkan sertifikat yang sepenuhnya tepercaya karena tidak akan dapat mengautentikasi terhadap CA Anda.
Praktik terbaik untuk identitas perangkat
Bagian ini menjelaskan praktik terbaik untuk identitas perangkat.
Menggunakan penyedia identitas dengan perantara MQTT
Perantara MQTT mengautentikasi perangkat edge dengan menggunakan kredensial perangkat yang disediakan oleh plugin, database, dan file. Untuk mengelola identitas perangkat Anda secara sistematis dan skalabel, gunakan penyedia identitas (IdP). IdP mengelola identitas dan kredensial untuk semua perangkat dan bertindak sebagai sumber terpercaya untuk identitas perangkat.
Agar identitas perangkat tetap terupdate di perantara MQTT, terapkan lapisan integrasi sistem yang spesifik. Untuk informasi lebih lengkap tentang mengelola kredensial perangkat, lihat Menyediakan sebuah perangkat edge.
Menggunakan identitas digital platform IoT sebagai sumber terpercaya
Platform IoT memiliki fitur keamanan yang mengelola identitas perangkat dan kredensial perangkat, serta mengautentikasi dan memberi otorisasi pada perangkat yang mencoba mengakses platform. Fitur keamanan ini membantu memastikan bahwa hanya perangkat resmi yang diizinkan untuk mengakses platform IoT dan membantu memastikan integritas data.
Pastikan identitas perangkat yang dikelola oleh platform IoT mewakili sumber terpercaya dari semua perangkat yang dikelola platform IoT. Komponen lain dalam solusi IoT yang memerlukan informasi identitas perangkat harus mengandalkan sistem keamanan platform IoT. Platform IoT memberikan hak akses ke perangkat dan menerapkan setiap perubahan keamanan di seluruh solusi IoT.
Praktik terbaik untuk konektivitas jaringan
Penting mengamankan konektivitas jaringan karena beberapa alasan berikut:
- Jaringan yang aman membantu memastikan perangkat terhubung ke backend yang tepat. Misalnya, jaringan yang aman dapat mencegah DNS spoofing, yaitu serangan yang mencoba mengalihkan perangkat agar terhubung ke backend buruk yang dikontrol oleh penyerang.
- Jaringan yang aman membantu memastikan pihak ketiga tidak dapat membaca traffic data Anda. Misalnya, jaringan yang aman dapat mencegah serangan-in-the-middle dari penyerang, saat penyerang membaca traffic antara perangkat Anda dan backend.
Gunakan Transport Layer Security (TLS) untuk melindungi komunikasi jaringan antara perangkat edge Anda dan backend yang workload.
Perluas TLS dengan mTLS untuk menerapkan skema autentikasi timbal balik yang memungkinkan kedua pihak terhubung untuk saling membangun identitas.
Untuk mengetahui petunjuk cara menggunakan TLS, lihat Arsitektur perantara MQTT mandiri di Google Cloud dan Arsitektur produk platform IoT di Google Cloud.
Praktik terbaik pengelolaan sertifikat untuk perantara MQTT
Bagian ini menjelaskan praktik terbaik untuk mengelola sertifikat saat menggunakan perantara MQTT.
Menyimpan sertifikat secara terpusat
Simpan serta kelola sertifikat server dan sertifikat perangkat di lokasi pusat. Secara khusus, pastikan Anda memiliki beberapa kontrol berikut:
- Inventaris semua perangkat Anda beserta sertifikatnya, dan endpoint server beserta sertifikatnya.
- Informasi tambahan tentang sertifikat yaitu tentang validitasnya.
- Kemampuan untuk menambahkan dan menghapus sertifikat untuk perangkat sehingga perangkat dapat terhubung dengan sertifikat baru.
- Hak akses ke penyimpanan sertifikat pusat Anda, untuk membatasi apa yang dapat dilakukan berbagai peran di backend Anda dengan sertifikat.
Gunakan solusi penyimpanan dan pengelolaan rahasia seperti Secret Manager atau HashiCorp Vault. Dengan Secret Manager, Anda dapat membuat, memperbarui, dan membatalkan kredensial perangkat, serta untuk mengelola kebijakan akses ke kredensial Anda.
Untuk platform IoT, terapkan akses ke kredensial menggunakan Akses Secret Manager API.
Melindungi sertifikat pada perangkat edge
Untuk menyimpan sertifikat dan kunci di perangkat edge, gunakan trusted execution environment lokal atau penyimpanan sertifikat untuk melindungi kredensial dan memblokir akses tidak resmi. Jika Anda perlu menyimpan informasi rahasia di perangkat, enkripsi informasi tersebut menggunakan teknik seperti enkripsi flash, dan simpan pada elemen anti-modifikasi untuk membantu mencegah ekstraksi data yang tidak resmi.
Menyinkronkan penyimpanan sertifikat pusat dengan penyimpanan sertifikat perantara MQTT
Perantara MQTT harus mengakses sertifikat klien untuk proses autentikasi berbasis sertifikat, sehingga Anda harus menyinkronkan penyimpanan sertifikat perantara MQTT dengan penyimpanan sertifikat pusat. Pastikan perubahan pada penyimpanan sertifikat pusat, seperti penambahan, pembaruan, dan hapus sertifikat, disinkronkan dengan penyimpanan sertifikat perantara MQTT. Perantara MQTT menggunakan penyimpanan sertifikat seperti MySQL, PostgresDB, dan Java Key Store. Bergantung pada penyimpanan sertifikat yang digunakan oleh perantara MQTT Anda, pastikan terdapat proses berikut:
- Proses yang memantau perubahan dalam penyimpanan sertifikat pusat dan memberi notifikasi proses sinkronisasi.
- Proses yang mengambil perubahan di penyimpanan sertifikat pusat dan menyinkronkan perubahan di penyimpanan sertifikat pusat dengan penyimpanan sertifikat yang digunakan oleh perantara MQTT.
Saat menggunakan Secret Manager sebagai penyimpanan sertifikat, Anda dapat menggunakan notifikasi peristiwa sebagai proses pemantauan. Anda dapat menerapkan proses sinkronisasi sebagai pemroses notifikasi peristiwa.
Mendistribusikan sertifikat ke perangkat edge dengan aman
Saat menggunakan perantara MQTT, distribusikan root certificate dan sertifikat klien ke perangkat edge Anda. Saat mendistribusikan sertifikat, Anda harus mengamankan saluran komunikasi agar traffic tidak disadap.
Berikut adalah saluran komunikasi utama untuk distribusi sertifikat:
- Jalur langsung dari backend IoT ke perangkat edge melalui saluran komunikasi yang ada.
- Jalur tidak langsung yaitu perangkat edge meminta dan mendownload sertifikat.
Selama distribusi sertifikat, Anda memerlukan komponen berikut:
- Penyimpanan sertifikat tempat sertifikat dikelola secara terpusat.
- Koordinator distribusi yang mengirimkan sertifikat dan melacak proses distribusi untuk setiap perangkat edge.
- Pengendali pembaruan di perangkat edge yang menerima atau mendownload sertifikat dan menyimpannya di perangkat.
Distribusikan sertifikat selama proses penyediaan perangkat edge, dan saat Anda perlu merotasi sertifikat.
Selama proses penyediaan, pastikan penyedia memiliki akses langsung ke perangkat edge melalui saluran terenkripsi seperti SSH dan menggunakan alat seperti SCP. Karena perangkat tidak sedang beroperasi, Anda dapat mengirim sertifikat langsung ke perangkat edge.
Saat merotasi sertifikat, gunakan perantara MQTT sebagai saluran komunikasi antara koordinator distribusi dan perangkat edge. Gunakan saluran lain untuk mendownload sertifikat ke perangkat. Untuk mencegah gangguan pada perangkat edge dalam operasi, gunakan jalur tidak langsung untuk distribusi sertifikat. Proses ini akan terdiri dari langkah logis berikut:
- Koordinator distribusi memperoleh kredensial akses dari penyimpanan sertifikat.
- Koordinator distribusi mengirim kredensial akses sertifikat ke perangkat edge bersama dengan informasi tambahan, seperti URL download.
- Dii perangkat pengendali menerima kredensial akses dan menyimpan informasi untuk sementara dan mengkonfirmasi kembali tanda terima.
- Pengendali mengkoordinasikan download sertifikat saat perangkat tidak aktif. Pengendali menggunakan kredensial akses untuk mendownload sertifikat dari penyimpanan kredensial.
- Setelah sertifikat didownload, pengendali akan melanjutkan proses rotasi sertifikat yang dijelaskan di bagian rotasi sertifikat.
Saat menggunakan Secret Manager sebagai penyimpanan sertifikat utama, Anda dapat membuat token akses berdurasi singkat untuk memberikan dan membatasi akses ke sertifikat. Untuk informasi lebih lengkap, lihat Mendistribusikan token akses ke perangkat dengan aman.
Untuk membantu mencegah sertifikat terekspos selama pengiriman, enkripsi koneksi antara perangkat edge Anda dan perantara MQTT. Untuk informasi lebih lengkap, lihat Praktik terbaik untuk konektivitas jaringan.
Merotasi sertifikat secara otomatis
Untuk membatasi kerusakan yang dapat disebabkan oleh sertifikat yang terekspos, buat sertifikat dengan masa berlaku terbatas dan rotasikan sertifikat sebelum masa berlakunya habis. Untuk deployment IoT berskala besar, terapkan prosedur rotasi sertifikat otomatis agar secara konsisten mengupdate perangkat Anda dengan sertifikat baru sebelum sertifikat lama berakhir masa berlakunya. Perangkat yang di-deploy tanpa sertifikat yang valid berarti perangkat tersebut dapat berhenti berfungsi, yang berdampak pada keseluruhan fungsi solusi IoT Anda dan memerlukan biaya mahal untuk memperbaikinya.
Perangkat edge Anda harus terhubung secara dua arah dengan perantara MQTT untuk memastikan bahwa perangkat tersebut dapat mengirim pesan ke perantara MQTT dan dapat menerima pesan dari perantara MQTT.
Selama rotasi sertifikat, Anda memerlukan beberapa komponen berikut:
- Proses pemantauan berulang untuk memindai inventaris sertifikat Anda dan mencari sertifikat yang akan habis masa berlakunya. Proses pemantauan akan memicu rotasi sertifikat untuk sertifikat yang akan habis masa berlakunya.
- Proses rotasi yang melakukan inisialisasi dan mengawasi rotasi sertifikat.
- Pengendali rotasi sertifikat perangkat pada perangkat edge yang berkomunikasi dengan perantara MQTT dan menjalankan langkah-langkah rotasi sertifikat pada perangkat.
Untuk merotasi sertifikat, adapun solusi IoT menyelesaikan langkah-langkah berikut:
- Proses rotasi dengan mengirimkan pesan inisialisasi ke perangkat edge untuk memulai rotasi sertifikat
- Pengendali rotasi sertifikat perangkat mengkonfirmasi pesan inisialisasi dengan mengirimkan respons kembali ke tugas rotasi.
- Proses rotasi meminta sertifikat baru dari CA. Permintaan ini mirip dengan permintaan penyediaan sertifikat, hanya saja kunci dan CSR yang dikirim sebagai pesan perantara MQTT.
- Setelah menerima sertifikat baru dari CA, tugas rotasi mendistribusikan sertifikat ke penyimpanan sertifikat pusat dan ke perangkat edge. Perintah ini juga menyinkronkan sertifikat ke penyimpanan sertifikat pada perantara MQTT.
- Pengendali rotasi sertifikat perangkat menyimpan sertifikat baru dan menginisialisasi koneksi baru dengan perantara MQTT menggunakan sertifikat baru.
- Setelah koneksi baru dibuat, pengendali rotasi sertifikat perangkat akan mengirimkan pesan yang telah selesai ke perantara MQTT.
- Setelah menerima pesan yang telah selesai, proses rotasi akan membatalkan validasi sertifikat lama di penyimpanan sertifikat pusat.
Untuk membantu melindungi sertifikat yang dikirim selama proses rotasi gunakan topik MQTT khusus untuk rotasi sertifikat. Batasi akses ke topik ini hanya untuk tugas rotasi dan edge device.
Untuk melindungi proses rotasi sertifikat dari kegagalan runtime, aktifkan persistensi untuk perubahan dan progres.
Untuk informasi selengkapnya tentang merotasi secret menggunakan Secret Manager, lihat Rotasi secret.
Praktik terbaik pengelolaan sertifikat untuk platform IoT
Jika Anda menggunakan platform IoT, gunakan sertifikat terupdate dan mekanisme distribusi yang disediakan oleh platform tersebut. Untuk tujuan pencadangan, Anda dapat secara rutin mengekspor kredensial dari platform IoT Anda ke penyimpanan rahasia sekunder, seperti Secret Manager.
Praktik terbaik untuk autentikasi dengan perantara MQTT
Selama proses autentikasi timbal balik, workload backend memverifikasi identitas perangkat edge, dan perangkat edge memverifikasi identitas workload backend. Setelah workload backend mengonfrmasi identitas perangkat edge, workload backend akan mengizinkan akses perangkat ke resource.
Bagian berikut memberikan praktik terbaik untuk metode autentikasi saat menggunakan perantara MQTT.
Memilih metode autentikasi untuk perantara MQTT
Backend IoT yang berbeda mendukung metode autentikasi yang berbeda. Metode yang umum digunakan adalah sebagai berikut:
- Autentikasi nama pengguna dan sandi, tempat perangkat edge menampilkan nama pengguna dan sandi tersebut untuk memverifikasi identitasnya.
- Autentikasi berbasis token, tempat token keamanan yang dienkripsi digunakan untuk memverifikasi identitas perangkat edge.
- Skema autentikasi yang disesuaikan, tempat Anda menerapkan mekanisme khusus untuk memverifikasi identitas perangkat edge.
Sebagai bagian dari
standar MQTT,
perantara MQTT mendukung autentikasi nama pengguna dan sandi sebagai default untuk
MQTT CONNECT
paket.
Paket MQTT CONNECT
juga berisi
kolom Client Identifier
yang dapat Anda gunakan untuk mengidentifikasi klien secara unik ke perantara MQTT. Perangkat edge
mengirim MQTT CONNECT
paket ke perantara MQTT saat keduanya terhubung.
Selain kolom nama pengguna, sandi, dan ID klien di dalam paket, MQTT
CONNECT
MQTT 5.0 mendukung
autentikasi yang ditingkatkan
yang memungkinkan Anda membuat
tantangan-tanggapan
alur autentikasi. MQTT 5.0 memungkinkan beberapa
pertukaran paket AUTH
antara perangkat edge dan perantara MQTT.
Gunakan penyimpanan sandi dengan autentikasi nama pengguna dan sandi
Untuk autentikasi nama pengguna dan sandi, konfigurasikan perantara MQTT untuk menggunakan
penyimpanan sandi.
Penyimpanan sandi menyediakan lokasi terpusat untuk mengelola
sandi bagi semua perangkat edge yang terhubung ke perantara MQTT.
Secara default,
kolom nama pengguna, sandi, dan ID klien bersifat opsional dalam spesifikasi MQTT
Oleh karena itu, desain mekanisme autentikasi Anda untuk memverifikasi bahwa
kolom nama pengguna, sandi, dan ID klien ada di dalam MQTT
CONNECT
paket.
Pastikan sandi dienkripsi saat dalam penyimpanan dan transit, seperti berikut:
Dalam penyimpanan, simpan hash sandi yang kuat secara kriptografis dan tidak dapat dibatalkan. Untuk informasi selengkapnya tentang cara melakukan hashing sandi, lihat Praktik terbaik autentikasi akun dan pengelolaan sandi.
Saat transit, enkripsi koneksi antara perangkat edge Anda dan perantara MQTT. Untuk informasi selengkapnya, lihat Praktik terbaik untuk konektivitas jaringan.
Pertimbangkan autentikasi berbasis token
Dengan autentikasi berbasis token, perangkat edge akan mengirim token ke perantara MQTT untuk melakukan autentikasi. Perangkat dapat membuat tokennya sendiri atau mendapatkan token dari layanan autentikasi lainnya. Dibandingkan dengan sandi, token berumur pendek: token hanya valid untuk periode dengan tanggal habis masa berlaku yang eksplisit. Selalu periksa masa berlaku saat memvalidasi token.
Token Web JSON (JWT) adalah cara untuk menerapkan autentikasi berbasis token. Perangkat edge dapat menghasilkan JWT dan melakukan autentikasi dengan perantara MQTT. JWT disematkan ke paket MQTT CONNECT sebagai kolom sandi.
Kelebihan JWT adalah sebagai berikut:
- JWT memberi Anda pilihan pada algoritma enkripsi yang digunakan untuk menandatangani token. JWT berfungsi efektif dengan perangkat edge yang terbatas, di mana Anda dapat menggunakan algoritma enkripsi yang tidak terlalu menguras resource, seperti ECC untuk menandatangani token.
- Dengan menggunakan kriptografi kunci publik, kunci pribadi hanya digunakan di perangkat edge dan tidak pernah dibagikan dengan pihak lain. Kunci pribadi membantu menjadikan metode ini lebih aman daripada autentikasi nama pengguna dan sandi, dengan kredensial dikirim melalui koneksi dan memerlukan enkripsi data.
Pertimbangkan skema autentikasi khusus
Beberapa perantara MQTT mendukung mekanisme dan protokol autentikasi yang berbeda. Misalnya, jika perantara MQTT mendukung skema autentikasi yang disesuaikan, Anda dapat mengonfigurasinya untuk mendukung hal-hal berikut:
- Protokol autentikasi standar industri seperti OpenID Connect, Security Assertion Markup Language (SAML), LDAP, Kerberos, dan Simple Authentication and Security Layer (SASL). Protokol ini mendelegasikan autentikasi perangkat ke penyedia identitas Anda yang ada. Beberapa perantara MQTT mendukung mekanisme dan autentikasi yang ditingkatkan dan dapat diperluas sehingga dapat Anda gunakan untuk memperluas perantara MQTT guna mendukung protokol dan penyedia identitas baru.
- Autentikasi timbal balik berbasis sertifikat. Beberapa perantara MQTT mendukung skema autentikasi timbal balik, seperti autentikasi berbasis mTLS.
Praktik terbaik untuk kontrol dan otorisasi akses perangkat
Karena pola komunikasi penayang dan pelanggan dari protokol MQTT, kontrol akses perangkat ditentukan menggunakan topik MQTT. Topik MQTT mengontrol cara perangkat berkomunikasi dengan backend IoT Anda. Setiap backend IoT memiliki implementasi yang berbeda untuk kontrol akses dan otorisasi, jadi baca dokumentasi backend IoT Anda untuk mengetahui opsi tentang cara menyiapkan topik MQTT.
Menggunakan akun layanan tujuan tunggal untuk mengakses resource Google Cloud
Akses ke Google Cloud resource dikelola oleh kebijakan izin IAM yang mengikat izin akses resource dengan sekumpulan akun utama. Akun utama yang umum adalah akun pengguna, akun layanan, dan grup. Akun layanan biasanya digunakan oleh aplikasi atau workload komputasi untuk melakukan panggilan API yang diotorisasi untuk resource cloud. Akun layanan memungkinkan perangkat edge IoT mengakses resource cloud.
Karena identitas perangkat dikelola oleh backend IoT, Anda harus memetakan identitas antara backend IoT dan IAM sehingga perangkat edge dapat mengakses resourceGoogle Cloud .
Jika Anda mengelola perangkat dalam jumlah besar, batas jumlah akun layanan untuk setiap project Google Cloud membuat Anda tidak mungkin melakukan pemetaan antara perangkat dan akun layanan.
Sebagai gantinya, buat akun layanan yang ditautkan ke resource cloud yang perlu diakses oleh solusi IoT Anda, seperti yang dijelaskan dalam membuat akun layanan tujuan tunggal. Misalnya, buat akun layanan yang unik untuk setiap kasus penggunaan berikut:
- Mendownload paket software terupdate
- Mengupload file media yang besar
- Menyerap data dari aliran latensi
Untuk menerapkan hak istimewa terendah, pastikan setiap akun layanan hanya memiliki hak akses yang memadai untuk mendukung kasus penggunaannya. Misalnya, untuk akun layanan yang digunakan untuk mendownload paket software, hanya berikan akses baca ke bucket Cloud Storage.
Mendistribusikan token akses ke perangkat dengan aman
Biasanya, perangkat edge Anda berkomunikasi dengan platform IoT menggunakan MQTT. Namun, untuk kasus penggunaan tertentu, perangkat Anda mungkin memerlukan akses langsung ke resourceGoogle Cloud . Misalnya, pertimbangkan hal berikut:
- Untuk mendownload konten, perangkat edge memerlukan akses hanya baca ke bucket Cloud Storage selama proses download saja.
- Untuk mengupload data ke bucket Cloud Storage, perangkat edge memerlukan akses tulis ke bucket.
Untuk kasus penggunaan ini, gunakan workload identity federation, dengan akses ke Google Cloud resource yang diberikan melalui token akses. Workload identity federation menghilangkan kebutuhan untuk menyediakan kredensial khusus cloud- pada perangkat edge dan distribusi akses dilakukan secara dinamis sesuai permintaan.
Untuk mendistribusikan token akses resource cloud ke perangkat Anda, konfigurasikan workload identity federation antara penyedia identitas perangkat dan Google Cloud. Untuk mendukung workload identity federation, pastikan backend IoT Anda memenuhi persyaratan workload identity federation dan mengikuti praktik terbaik keamanan yang cocok dengan kasus penggunaan Anda.
Untuk mengakses resource Google Cloud menggunakan workload identity federation, perangkat edge Anda harus menerapkan alur kerja Pertukaran Token OAuth 2.0 yang melibatkan langkah-langkah berikut:
- Perangkat memanggil Layanan Token Keamanan dan memberikan kredensial perangkatnya sendiri.
- Layanan Token Keamanan memverifikasi identitas perangkat edge dengan memvalidasi kredensial yang diberikan perangkat edge dengan penyedia identitas perangkat.
- Jika verifikasi identitas berhasil, Layanan Token Keamanan akan menampilkan kembali token akses ke perangkat edge.
- Perangkat edge menggunakan token tersebut untuk meniru identitas akun layanan satu tujuan dan mendapatkan token akses OAuth 2.0 sementara.
- Perangkat menggunakan token akses OAuth 2.0 sementara untuk melakukan autentikasi dengan Google Cloud API dan mendapatkan akses ke resource cloud yang diperlukan.
Untuk membatasi akses dari token akses sementara ke bucket dan objek tertentu di Cloud Storage, gunakan Batas Akses Kredensial. Batas Akses Kredensial memungkinkan Anda membatasi akses kredensial sementara dan meminimalkan jumlah resource yang diekspos dalam bucket Cloud Storage Anda saat token akses disusupi.
Workload Identity Federation adalah cara yang skalabel untuk mendistribusikan akses cloud ke perangkat edge dengan aman. Untuk informasi selengkapnya tentang autentikasi, lihat Autentikasi di Google.
Memantau dan mengaudit akses ke resource cloud
Aktifkan Cloud Audit Logs untuk membuat entri log saat perangkat edge Anda mengakses resource cloud melalui permintaan API yang diautentikasi. Cloud Audit Logs memungkinkan Anda memantau tindakan penting yang dilakukan oleh perangkat edge Anda di Google Cloud. Selain itu, Cloud Audit Logs membuat log dan jejak aktivitas audit yang diperlukan untuk menyelidiki masalah apa pun. Untuk informasi selengkapnya, lihat Meniru identitas akun layanan untuk mengakses Google Cloud.
Langkah selanjutnya
- Pelajari lebih lanjut Ringkasan teknis Internet of Things.
Baca dokumen lainnya dalam seri:
Pelajari lebih lanjutpraktik terbaik untuk menggunakan akun layanan
Kontributor
Penulis:
- Charlie Wang | Cloud Solutions Architect
- Marco Ferrari | Cloud Solutions Architect