Praktik terbaik untuk menjalankan backend IoT di Google Cloud

Last reviewed 2023-02-08 UTC

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 merupakan bagian dari serangkain dokumen yang memberikan informasi tentang arsitektur IoT di Google Cloud dan tentang migrasi dari IoT Core. Dokumen lain dalam rangkaian ini mencakup hal berikut:

Dokumen ini memberikan praktik terbaik untuk menyediakan dan mengelola kredensial perangkat, mengautentikasi dan mengakses perangkat edge kontrol dan 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 serta memungkinkan 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 backend IoT

Arsitektur ini menunjukkan layanan yang diperlukan untuk tiga proses berikut:

  1. Penyediaan sertifikat merupakan proses yang harus Anda selesaikan untuk menyiapkan perangkat edge untuk konfigurasi.

  2. Autentikasi dan otorisasi mencakup skema autentikasi yang digunakan perangkat edge dan perantara MQTT atau platform IoT digunakan untuk mengautentikasi satu sama lain.

  3. Koneksi antara perangkat edge dan layanan Google Cloud, merupakan tugas yang perlu diselesaikan perangkat edge untuk terhubung kr 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:

Untuk mendapatkan sertifikat perangkat, Anda harus menyelesaikan tugas berikut:

  1. Buat pasangan kunci publik-pribadi menggunakan solusi keamanan berbasis hardware yang didukung oleh perangkat Anda seperti elemen pengaman (SE) atau modul keamanan hardware (HSM). Secara desain, SE atau HSM menyimpan kunci pribadi secara langsung dan kunci pribadi tidak pernah diekspos secara eksternal. Jika Anda tidak menggunakan solusi keamanan berbasis hardware untuk membuat pasangan kunci publik-pribadi, gunakan CA untuk membuat kunci. Untuk informasi selengkapnya, lihat Menggunakan kunci yang dihasilkan secara otomatis.

  2. Daftar dan buat sertifikat perangkat. Setelah Anda membuat pasangan kunci publik-pribadi, download kunci publik, buat permintaan penandatanganan sertifikat (CSR), lalu kirim CSR ke CA untuk ditandatangani. CA menghasilkan sertifikat perangkat yang ditautkan ke root CA. Untuk informasi selengkapnya, lihat Menggunakan CSR. Saat menggunakan kunci yang dibuat secara otomatis, Anda dapat meminta sertifikat perangkat dari CA secara langsung.

  3. Instal sertifikat perangkat yang terdaftar pada perangkat edge, lalu kirim sertifikat tersebut ke repositori sertifikat pusat, seperti Secret Manager.

Untuk informasi selengkapnya, lihat Cara men-deploy infrastruktur kunci publik yang aman dan andal dengan Layanan CA Google Cloud (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 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.

Proses pembuatan sertifikat perangkat.

Dalam diagram ini, terjadi langkah-langkah berikut:

  1. Perangkat edge menghasilkan pasangan kunci publik di hardware.
  2. Download kunci publik Anda dan buat permintaan penandatanganan sertifikat (CSR) untuk kunci tersebut.
  3. Anda mengirim CSR ke CA untuk meminta sertifikat.
  4. CA melakukan tindakan-tindakan berikut:
    1. Menandatangani sertifikat. tersebut.
    2. Menunjukkan sertifikat perangkat kepada penyedia.
  5. Penyedia akan menyelesaikan beberapa langkah berikut:
    1. Mengirim sertifikat ke perangkat edge.
    2. Menyimpan sertifikat di pusat penyimpanan sertifikat.
  6. 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.

Proses pembuatan sertifikat perangkat.

Dalam diagram ini, terjadi langkah-langkah berikut:

  1. Anda membuat CSR lalu mengirimkannya ke CA untuk meminta sertifikat.
  2. CA melakukan tindakan-tindakan berikut:
    1. Menghasilkan sepasang kunci publik dan menandatangani kunci publik.
    2. Menampilkan sertifikat perangkat dan kunci pribadi kepada penyedia.
  3. Anda menyelesaikan tindakan-tindakan berikut:
    1. Kirim sertifikat dan kunci pribadi ke perangkat edge.
    2. Simpan sertifikat dan kunci pribadi di penyimpanan sertifikat pusat.
  4. Perangkat edge menyimpan sertifikat di lokasi yang aman.

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 timbal balik skema autentikasi 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:

  1. Koordinator distribusi memperoleh kredensial akses dari penyimpanan sertifikat.
  2. Koordinator distribusi mengirim kredensial akses sertifikat ke perangkat edge bersama dengan informasi tambahan, seperti URL download.
  3. Dii perangkat pengendali menerima kredensial akses dan menyimpan informasi untuk sementara dan mengkonfirmasi kembali tanda terima.
  4. Pengendali mengkoordinasikan download sertifikat saat perangkat tidak aktif. Pengendali menggunakan kredensial akses untuk mendownload sertifikat dari penyimpanan kredensial.
  5. 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:

  1. Proses rotasi dengan mengirimkan pesan inisialisasi ke perangkat edge untuk memulai rotasi sertifikat
  2. Pengendali rotasi sertifikat perangkat mengkonfirmasi pesan inisialisasi dengan mengirimkan respons kembali ke tugas rotasi.
  3. 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.
  4. 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.
  5. Pengendali rotasi sertifikat perangkat menyimpan sertifikat baru dan menginisialisasi koneksi baru dengan perantara MQTT menggunakan sertifikat baru.
  6. Setelah koneksi baru dibuat, pengendali rotasi sertifikat perangkat akan mengirimkan pesan yang telah selesai ke perantara MQTT.
  7. 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 Client Identifier kolom 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 CONNECTMQTT 5.0 mendukung autentikasi yang ditingkatkan yang memungkingkan Anda membuat tantangan-tanggapan alur autentikasi. MQTT 5.0 memungkinkan beberapa AUTH pertukaran paket 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:

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.

Gunakan akun layanan tujuan tunggal untuk mengakses resource Google Cloud

Akses ke resource Google Cloud dikelola oleh IAM mengizinkan kebijakan 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 workload aplikasi atau 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 resource Google 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 resource Google 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, gunakan workload identity federation, dengan akses ke resource Google Cloud 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 Anda. 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 gabungan ke perangkat edge.
  • Perangkat edge menggunakan token gabungan 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