Autentikasi dan otorisasi perangkat untuk AWS IoT Greengrass - AWS IoT Greengrass

AWS IoT Greengrass Version 1 memasuki fase umur panjang pada 30 Juni 2023. Untuk informasi selengkapnya, lihat kebijakan AWS IoT Greengrass V1 pemeliharaan. Setelah tanggal ini, tidak AWS IoT Greengrass V1 akan merilis pembaruan yang menyediakan fitur, penyempurnaan, perbaikan bug, atau patch keamanan. Perangkat yang berjalan AWS IoT Greengrass V1 tidak akan terganggu dan akan terus beroperasi dan terhubung ke cloud. Kami sangat menyarankan Anda bermigrasi ke AWS IoT Greengrass Version 2, yang menambahkan fitur baru yang signifikan dan dukungan untuk platform tambahan.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Autentikasi dan otorisasi perangkat untuk AWS IoT Greengrass

Perangkat di lingkungan AWS IoT Greengrass menggunakan sertifikat X.509 untuk autentikasi dan kebijakan AWS IoT untuk otorisasi. Sertifikat dan kebijakan memungkinkan perangkat dengan aman terhubung satu sama lain, AWS IoT Core, dan AWS IoT Greengrass.

Sertifikat X.509 adalah sertifikat digital yang menggunakan standar infrastruktur kunci publik X.509 untuk mengaitkan kunci publik dengan identitas yang terdapat dalam sertifikat. Sertifikat X.509 dikeluarkan oleh entitas terpercaya yang disebut otoritas sertifikasi (CA). CA mempertahankan satu atau lebih sertifikat khusus yang disebut sertifikat CA yang digunakannya untuk mengeluarkan sertifikat X.509. Hanya otoritas sertifikat yang memiliki akses ke sertifikat CA.

Kebijakan AWS IoT menentukan serangkaian operasi yang diperbolehkan untuk perangkat AWS IoT. Secara khusus, kebijakan ini mengizinkan dan menolak akses ke operasi bidang data AWS IoT Core dan AWS IoT Greengrass, seperti menerbitkan pesan MQTT dan mengambil bayangan perangkat.

Semua peranti memerlukan entri di AWS IoT Core registri dan sertifikat X.509 yang diaktifkan dengan kebijakan AWS IoT yang dilampirkan. Perangkat dibagi menjadi dua kategori:

  • core Greengrass. Perangkat core Greengrass menggunakan sertifikat dan kebijakan AWS IoT untuk connect ke AWS IoT Core. Sertifikat dan kebijakan juga mengizinkan AWS IoT Greengrass untuk men-deploy informasi konfigurasi, fungsi Lambda, konektor, dan langganan terkelola ke perangkat core.

  • Perangkat klien. Perangkat klien (juga disebut perangkat yang terhubung, perangkat Greengrass, atau perangkat) adalah perangkat yang terhubung ke inti Greengrass melalui MQTT. Mereka menggunakan sertifikat dan kebijakan untuk terhubung ke AWS IoT Core dan AWS IoT Greengrass layanan. Hal ini memungkinkan perangkat klien untuk menggunakan AWS IoT Greengrass Discovery Service untuk menemukan dan terhubung ke perangkat inti. Perangkat klien menggunakan sertifikat yang sama untuk terhubung ke gateway AWS IoT Core perangkat dan perangkat inti. Perangkat klien juga menggunakan informasi penemuan untuk autentikasi bersama dengan perangkat inti. Untuk informasi lebih lanjut, lihat Alur kerja koneksi perangkat dan Mengelola autentikasi perangkat dengan core Greengrass.

Sertifikat X.509

Komunikasi antara perangkat inti dan klien dan antara perangkat dan AWS IoT Core atau AWS IoT Greengrass harus diautentikasi. Autentikasi bersama ini didasarkan pada sertifikat perangkat X.509 terdaftar dan kunci kriptografi.

Dalam AWS IoT Greengrass lingkungan, perangkat menggunakan sertifikat dengan kunci publik dan privat untuk koneksi Keamanan Lapisan Pengangkutan (TLS) berikut:

  • Komponen klien AWS IoT pada core Greengrass menghubungkan ke AWS IoT Core dan AWS IoT Greengrass melalui internet.

  • Perangkat klien terhubung AWS IoT Greengrass untuk mendapatkan informasi penemuan inti melalui internet.

  • Komponen server MQTT pada inti Greengrass yang terhubung ke perangkat klien dalam grup melalui jaringan lokal.

Perangkat lunak Core AWS IoT Greengrass menyimpan sertifikat di dua lokasi:

  • Sertifikat perangkat Core di /greengrass-root/certs. Biasanya, sertifikat perangkat Core bernama hash.cert.pem (sebagai contoh, 86c84488a5.cert.pem). Sertifikat ini digunakan oleh klien AWS IoT untuk saling mengautentikasi ketika core menghubungkan ke AWS IoT Core dan layanan AWS IoT Greengrass ini.

  • Sertifikat server MTT di /greengrass-root/ggc/var/state/server. Sertifikat server MQTT bernama server.crt. Sertifikat ini digunakan untuk saling mengautentikasi antara server MQTT lokal (pada Core Greengrass) dan perangkat Greengrass.

    catatan

    Greengrass-root mewakili jalur di mana perangkat lunak Core AWS IoT Greengrass diinstal pada perangkat Anda. Biasanya, ini adalah /greengrass direktori.

Untuk informasi selengkapnya, lihat AWS IoT Greengrass prinsip keamanan inti.

Sertifikat Certificate authority (CA)

Perangkat inti dan perangkat klien mengunduh sertifikat CA root yang digunakan untuk otentikasi dengan AWS IoT Core dan AWS IoT Greengrass layanan. Kami merekomendasikan Anda menggunakan sertifikat CA akar Amazon Trust Services (ATS), seperti Amazon Root CA 1. Untuk informasi selengkapnya, lihat Sertifikat CA untuk autentikasi server di Panduan Developer AWS IoT Core.

catatan

Jenis sertifikat CA akar Anda harus sesuai dengan titik akhir Anda. Gunakan sertifikat CA root ATS dengan titik akhir ATS (lebih disukai) atau sertifikat VeriSign root CA dengan titik akhir lama. Hanya beberapa dukungan titik akhir warisan Wilayah Amazon Web Services. Untuk informasi selengkapnya, lihat Titik akhir layanan harus sesuai dengan jenis sertifikat CA root.

Perangkat klien juga mengunduh sertifikat CA grup Greengrass. Ini digunakan untuk memvalidasi sertifikat server MQTT pada core Greengrass selama autentikasi bersama. Untuk informasi selengkapnya, lihat Alur kerja koneksi perangkat. Kedaluwarsa default sertifikat server MQTT adalah tujuh hari.

Rotasi sertifikat pada server MQTT lokal

Perangkat klien menggunakan sertifikat server MQTT lokal untuk otentikasi timbal balik dengan perangkat inti Greengrass. Secara default, sertifikat ini kedaluwarsa dalam tujuh hari. Periode terbatas ini didasarkan pada praktik terbaik keamanan. Sertifikat server MQTT ditandatangani oleh sertifikat CA grup, yang disimpan di cloud.

Agar rotasi sertifikat terjadi, perangkat inti Greengrass Anda harus online dan dapat mengakses layanan secara langsung secara AWS IoT Greengrass teratur. Ketika sertifikat kedaluwarsa, perangkat inti mencoba untuk terhubung ke AWS IoT Greengrass layanan untuk mendapatkan sertifikat baru. Jika koneksi berhasil, perangkat core mengunduh sertifikat server MQTT baru dan memulai ulang layanan MQTT lokal. Pada titik ini, semua perangkat klien yang terhubung ke inti terputus. Jika perangkat inti offline pada saat kedaluwarsa, itu tidak menerima sertifikat pengganti. Upaya baru untuk connect ke perangkat core ditolak. Koneksi yang ada tidak terpengaruh. Perangkat klien tidak dapat terhubung ke perangkat inti sampai koneksi ke AWS IoT Greengrass layanan dipulihkan dan sertifikat server MQTT baru dapat diunduh.

Anda dapat mengatur kedaluwarsa untuk setiap nilai antara 7 dan 30 hari, tergantung pada kebutuhan Anda. Rotasi yang lebih sering memerlukan koneksi cloud yang lebih sering. Rotasi yang kurang sering dapat menimbulkan masalah keamanan. Jika Anda ingin mengatur sertifikat kedaluwarsa ke nilai yang lebih tinggi dari 30 hari, kontak AWS Support.

Dalam konsol AWS IoT tersebut, Anda dapat mengelola sertifikat pada halaman grup pengaturan ini. Di AWS IoT Greengrass API, Anda dapat menggunakan UpdateGroupCertificateConfigurationtindakan.

Ketika sertifikat server MQTT berakhir, setiap upaya untuk memvalidasi sertifikat gagal. Perangkat klien harus dapat mendeteksi kegagalan dan mengakhiri koneksi.

Kebijakan AWS IoT untuk operasi bidang data

Gunakan AWS IoT kebijakan untuk mengesahkan akses ke AWS IoT Core dan AWS IoT Greengrass bidang data. Bidang data AWS IoT Core terdiri dari operasi untuk perangkat, pengguna, dan aplikasi, seperti menghubungkan ke AWS IoT Core dan melanggan topik. Bidang data AWS IoT Greengrass terdiri dari operasi untuk perangkat Greengrass, seperti mengambil deployment dan update informasi konektivitas.

Sebuah kebijakan AWS IoT adalah sebuah dokumen JSON yang mirip dengan Kebijakan IAM. Ini berisi satu atau lebih pernyataan kebijakan yang menentukan properti berikut:

  • Effect. Mode akses, yang bisa jadi Allow atau Deny.

  • Action. Daftar tindakan yang diperbolehkan atau ditolak oleh kebijakan tersebut.

  • Resource. Daftar sumber daya tempat tindakan tersebut diizinkan atau ditolak.

AWS IoT dukungan kebijakan * sebagai karakter wildcard, dan memperlakukan karakter wildcard MQTT (+ dan #) sebagai string literal. Untuk informasi selengkapnya tentang wildcard *, lihat Menggunakan wildcard di ARN sumber daya di Panduan Pengguna AWS Identity and Access Management.

Untuk informasi lebih lanjut, lihat AWS IoT kebijakan dan AWS IoT tindakan kebijakan di AWS IoT Core Panduan Developer.

catatan

AWS IoT Core mengizinkan Anda untuk melampirkan AWS IoT kebijakan untuk grup hal untuk menentukan izin untuk grup perangkat. Kebijakan grup objek tidak mengizinkan akses ke operasi bidang data AWS IoT Greengrass. Untuk mengizinkan suatu objek untuk mengakses operasi bidang data AWS IoT Greengrass, tambahkan izin pada kebijakan AWS IoT yang Anda lampirkan ke sertifikat objek tersebut.

AWS IoT Greengrass tindakan kebijakan

Tindakan Greengrass Core

AWS IoT Greengrass mendefinisikan tindakan kebijakan berikut bahwa perangkat core Greengrass dapat digunakan dalam AWS IoT kebijakan:

greengrass:AssumeRoleForGroup

Izin untuk perangkat core Greengrass untuk mengambil kredensial menggunakan fungsi sistem Token Exchange Service (TES) Lambda. Izin yang terkait dengan kredensial diambil didasarkan pada kebijakan yang dilampirkan ke peran grup yang dikonfigurasi.

Izin ini diperiksa ketika perangkat core Greengrass mencoba untuk mengambil kredensial (dengan asumsi kredensial tidak di-cache secara lokal).

greengrass:CreateCertificate

Izin untuk perangkat core Greengrass untuk membuat sertifikat server sendiri.

Izin ini diperiksa ketika perangkat core Greengrass menciptakan sertifikat. Perangkat core Greengrass mencoba untuk membuat sertifikat server pada pertama dijalankan, ketika informasi konektivitas perubahan core, dan pada periode rotasi yang ditunjuk.

greengrass:GetConnectivityInfo

Izin untuk perangkat core Greengrass untuk mengambil informasi konektivitas sendiri.

Izin ini diperiksa ketika perangkat core Greengrass mencoba untuk mengambil informasi konektivitas dari AWS IoT Core.

greengrass:GetDeployment

Izin untuk perangkat core Greengrass untuk mengambil deployment.

Izin ini diperiksa ketika perangkat core Greengrass mencoba untuk mengambil deployment dan deployment status dari cloud.

greengrass:GetDeploymentArtifacts

Izin untuk perangkat core Greengrass untuk mengambil artefak deployment seperti informasi grup atau fungsi Lambda.

Izin ini diperiksa ketika perangkat Greengrass grup menerima deployment lalu mencoba untuk mengambil artefak deployment.

greengrass:UpdateConnectivityInfo

Izin untuk perangkat core Greengrass untuk update informasi konektivitas sendiri dengan IP atau informasi hostname.

Izin ini diperiksa ketika perangkat core Greengrass mencoba untuk memperbarui informasi konektivitasnya di cloud.

greengrass:UpdateCoreDeploymentStatus

Izin untuk perangkat core Greengrass untuk memperbarui status deployment.

Izin ini diperiksa ketika perangkat core Greengrass menerima deployment lalu mencoba untuk memperbarui status deployment.

 

Tindakan Perangkat Greengrass

AWS IoT Greengrassmendefinisikan tindakan kebijakan berikut yang dapat digunakan perangkat klien dalam AWS IoT kebijakan:

greengrass:Discover

Izin untuk perangkat klien untuk menggunakan Discovery API untuk mengambil informasi konektivitas inti grup dan otoritas sertifikat grup.

Izin ini diperiksa ketika perangkat klien memanggil Discovery API dengan otentikasi timbal balik TLS.

Minimal AWS IoT kebijakan untuk AWS IoT Greengrass perangkat core

Kebijakan contoh berikut mencakup serangkaian tindakan minimum yang diperlukan untuk mendukung fungsi Greengrass dasar untuk perangkat core Anda.

  • Kebijakan mencantumkan topik MQTT dan filter topik yang dapat diterbitkan oleh perangkat core, berlangganan, dan menerima pesan, termasuk topik yang digunakan untuk status bayangan. Untuk mendukung pertukaran pesan antaraAWS IoT Core, fungsi Lambda, konektor, dan perangkat klien di grup Greengrass, tentukan topik dan filter topik yang ingin Anda izinkan. Untuk informasi lebih lanjut, lihat contoh kebijakan Terbitkan/Berlangganan di AWS IoT Core Panduan Developer.

  • Kebijakan ini mencakup bagian yang mengizinkan AWS IoT Core Untuk mendapatkan, memperbarui, dan menghapus bayangan perangkat core. Untuk mengizinkan sinkronisasi bayangan untuk perangkat klien di grup Greengrass, tentukan target Nama Sumber Daya Amazon (ARN) dalam Resource daftar (misalnya,). arn:aws:iot:region:account-id:thing/device-name

  • Penggunaan variabel kebijakan hal (iot:Connection.Thing.*) di kebijakan AWS IoT untuk perangkat core tidak didukung. Core menggunakan sertifikat perangkat yang sama untuk membuat banyak koneksi ke AWS IoT Core tetapi ID klien dalam koneksi mungkin tidak sama persis dengan nama core.

  • Untuk greengrass:UpdateCoreDeploymentStatus izin, segmen akhir dalam Resource ARN adalah ARN URL-dikodekan dari perangkat core.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:region:account-id:client/core-name-*" ] }, { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/things/core-name-*" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account-id:topicfilter/$aws/things/core-name-*" ] }, { "Effect": "Allow", "Action": [ "iot:GetThingShadow", "iot:UpdateThingShadow", "iot:DeleteThingShadow" ], "Resource": [ "arn:aws:iot:region:account-id:thing/core-name-*" ] }, { "Effect": "Allow", "Action": [ "greengrass:AssumeRoleForGroup", "greengrass:CreateCertificate" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "greengrass:GetDeployment" ], "Resource": [ "arn:aws:greengrass:region:account-id:/greengrass/groups/group-id/deployments/*" ] }, { "Effect": "Allow", "Action": [ "greengrass:GetDeploymentArtifacts" ], "Resource": [ "arn:aws:greengrass:region:account-id:/greengrass/groups/group-id/deployments/*" ] }, { "Effect": "Allow", "Action": [ "greengrass:UpdateCoreDeploymentStatus" ], "Resource": [ "arn:aws:greengrass:region:account-id:/greengrass/groups/group-id/deployments/*/cores/arn%3Aaws%3Aiot%3Aregion%3Aaccount-id%3Athing%2Fcore-name" ] }, { "Effect": "Allow", "Action": [ "greengrass:GetConnectivityInfo", "greengrass:UpdateConnectivityInfo" ], "Resource": [ "arn:aws:iot:region:account-id:thing/core-name-*" ] } ] }
catatan

AWS IoTkebijakan untuk perangkat klien biasanya memerlukan izin serupa untukiot:Connect,, iot:Publishiot:Receive, dan iot:Subscribe tindakan.

Untuk memungkinkan perangkat klien mendeteksi informasi konektivitas secara otomatis untuk inti dalam grup Greengrass tempat perangkat tersebut berada, kebijakan untuk perangkat klien harus menyertakan tindakan AWS IoT tersebut. greengrass:Discover Di Resource bagian ini, tentukan ARN perangkat klien, bukan ARN dari perangkat inti Greengrass. Sebagai contoh:

{ "Effect": "Allow", "Action": [ "greengrass:Discover" ], "Resource": [ "arn:aws:iot:region:account-id:thing/device-name" ] }

AWS IoTKebijakan untuk perangkat klien biasanya tidak memerlukan izin untukiot:GetThingShadow,, atau iot:DeleteThingShadow tindakaniot:UpdateThingShadow, karena inti Greengrass menangani operasi sinkronisasi bayangan untuk perangkat klien. Dalam hal ini, pastikan bahwa Resource bagian untuk tindakan bayangan dalam AWS IoT kebijakan inti mencakup ARN perangkat klien.

 

Di AWS IoT konsol, Anda dapat melihat dan mengedit kebijakan yang dilampirkan ke sertifikat core Anda.

  1. Di panel navigasi, di bawah Kelola, perluas Semua perangkat, lalu pilih Things.

  2. Pilih inti Anda.

  3. Pada halaman konfigurasi inti Anda, pilih tab Sertifikat.

  4. Di tab Sertifikat, pilih sertifikat Anda.

  5. Pada halaman konfigurasi sertifikat, pilih Kebijakan, lalu pilih kebijakan.

    Jika Anda ingin mengedit kebijakan, pilih Edit versi aktif.

  6. Tinjau kebijakan dan tambahkan, hapus, atau edit izin sesuai kebutuhan.

  7. Untuk menetapkan versi kebijakan baru sebagai versi aktif, di bawah Status versi Kebijakan, pilih Setel versi yang diedit sebagai versi aktif untuk kebijakan ini.

  8. Pilih Simpan sebagai versi baru.