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

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:

  • Perangkat inti Greengrass

    Perangkat inti Greengrass menggunakan sertifikat dan kebijakan AWS IoT untuk terhubung ke AWS IoT Core dan AWS IoT Greengrass. Sertifikat dan kebijakan juga memungkinkan AWS IoT Greengrass untuk menyebarkan komponen dan konfigurasi ke perangkat inti.

  • Perangkat klien

    Perangkat klien MQTT menggunakan sertifikat dan kebijakan untuk terhubung ke AWS IoT Core dan layanan AWS IoT Greengrass. Hal ini memungkinkan perangkat klien untuk menggunakan penemuan cloud AWS IoT Greengrass untuk menemukan dan terhubung ke perangkat inti Greengrass. Perangkat klien menggunakan sertifikat yang sama untuk terhubung ke layanan cloud AWS IoT Core dan perangkat inti. Perangkat klien juga menggunakan informasi penemuan untuk autentikasi bersama dengan perangkat inti. Untuk informasi selengkapnya, lihat Berinteraksilah dengan perangkat IoT lokal.

Sertifikat X.509

Komunikasi antara perangkat inti dan perangkat 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 lingkungan AWS IoT Greengrass, perangkat menggunakan sertifikat dengan kunci publik dan privat untuk koneksi Keamanan Lapisan Pengangkutan (TLS) berikut:

  • Komponen klien AWS IoT pada perangkat inti Greengrass yang terhubung ke AWS IoT Core dan AWS IoT Greengrass melalui internet.

  • Perangkat klien yang tersambung ke AWS IoT Greengrass melalui internet untuk menemukan perangkat inti.

  • Komponen broker MQTT pada inti Greengrass menghubungkan ke perangkat Greengrass dalam kelompok melalui jaringan lokal.

Perangkat inti AWS IoT Greengrass menyimpan sertifikat dalam folder akar Greengrass.

Sertifikat otoritas sertifikasi (CA)

Perangkat inti Greengrass dan perangkat klien mengunduh sertifikat CA akar yang digunakan untuk autentikasi dengan layanan AWS IoT Core dan AWS IoT Greengrass. 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.

Perangkat klien juga mengunduh sertifikat CA perangkat inti Greengrass. Mereka menggunakan sertifikat ini untuk memvalidasi sertifikat server MQTT pada perangkat inti selama autentikasi bersama.

Rotasi sertifikat pada broker MQTT lokal

Saat Anda mengaktifkan dukungan perangkat klien, perangkat inti Greengrass menghasilkan sertifikat server MQTT lokal yang digunakan perangkat klien untuk otentikasi timbal balik. Sertifikat ini ditandatangani oleh sertifikat CA perangkat inti, yang disimpan oleh perangkat inti di cloud AWS IoT Greengrass. Perangkat klien mengambil sertifikat CA perangkat inti ketika mereka menemukan perangkat inti. Mereka menggunakan sertifikat CA perangkat inti untuk memverifikasi sertifikat server MQTT perangkat inti ketika mereka terhubung ke perangkat inti. Sertifikat CA perangkat inti berakhir setelah 5 tahun.

Sertifikat server MQTT kedaluwarsa setiap 7 hari secara default, dan Anda dapat mengonfigurasi durasi ini menjadi antara 2 dan 10 hari. Periode terbatas ini didasarkan pada praktik keamanan terbaik. Rotasi ini membantu mengurangi ancaman penyerang yang mencuri sertifikat server MQTT dan kunci privat untuk meniru perangkat inti Greengrass.

Perangkat inti Greengrass memutar sertifikat server MQTT 24 jam sebelum kedaluwarsa. Perangkat inti Greengrass menghasilkan sertifikat baru dan memulai ulang broker MQTT lokal. Ketika ini terjadi, semua perangkat klien yang terhubung ke perangkat inti Greengrass terputus. Perangkat klien dapat menyambung kembali ke perangkat inti Greengrass setelah waktu yang singkat.

Kebijakan AWS IoT untuk operasi bidang data

Gunakan kebijakan AWS IoT untuk mengotorisasi akses ke bidang data AWS IoT Core dan AWS IoT Greengrass. Bidang data AWS IoT Core menyediakan operasi untuk perangkat, pengguna, dan aplikasi. Operasi ini mencakup kemampuan untuk terhubung ke AWS IoT Core dan berlangganan topik. Bidang data AWS IoT Greengrass menyediakan operasi untuk perangkat Greengrass. Untuk informasi selengkapnya, lihat AWS IoT Greengrass V2 tindakan kebijakan. Operasi ini mencakup kemampuan untuk menyelesaikan dependensi komponen dan mengunduh artefak komponen publik.

Kebijakan AWS IoT adalah 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 selengkapnya, lihat kebijakan AWS IoT dan tindakan kebijakan AWS IoT di Panduan Developer AWS IoT Core.

penting

Variabel kebijakan objek (iot:Connection.Thing.*) tidak didukung untuk kebijakan AWS IoT untuk perangkat inti atau operasi bidang data Greengrass. Sebaliknya, Anda dapat menggunakan wildcard yang cocok dengan beberapa perangkat yang memiliki nama yang sama. Misalnya, Anda dapat menentukan MyGreengrassDevice* untuk cocok dengan MyGreengrassDevice1, MyGreengrassDevice2, dan sebagainya.

catatan

AWS IoT Core memungkinkan Anda untuk melampirkan kebijakan AWS IoT pada grup sesuatu 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 V2 tindakan kebijakan

AWS IoT Greengrass V2mendefinisikan tindakan kebijakan berikut yang dapat digunakan perangkat inti Greengrass dan perangkat klien dalam kebijakan. AWS IoT Untuk menentukan sumber daya untuk tindakan kebijakan, Anda menggunakan Nama Sumber Daya Amazon (ARN) sumber daya.

Tindakan perangkat inti
greengrass:GetComponentVersionArtifact

Memberikan izin untuk mendapatkan URL yang telah ditetapkan sebelumnya untuk mengunduh artefak komponen publik atau artefak komponen Lambda.

Izin ini dievaluasi ketika perangkat inti menerima penerapan yang menentukan komponen publik atau Lambda yang memiliki artefak. Jika perangkat inti sudah memiliki artefak, ia tidak menngunduh artefak lagi.

Jenis sumber daya: componentVersion

Format ARN sumber daya: arn:aws:greengrass:region:account-id:components:component-name:versions:component-version

greengrass:ResolveComponentCandidates

Memberikan izin untuk mengidentifikasi daftar komponen yang memenuhi persyaratan komponen, versi, dan platform untuk deployment. Jika persyaratan tersebut bertentangan, atau tidak ada komponen yang memenuhi persyaratan, operasi ini akan kembali salah dan deployment tersebut gagal pada perangkat itu.

Izin ini dievaluasi ketika perangkat inti menerima deployment yang menentukan komponen publik yang memiliki artefak.

Jenis sumber daya: Tidak ada

Format ARN sumber daya: *

greengrass:GetDeploymentConfiguration

Memberikan izin untuk mendapatkan URL yang telah ditunjuk untuk mengunduh suatu dokumen deployment yang besar.

Izin ini dievaluasi ketika perangkat inti menerima deployment yang menentukan deployment dokumen yang lebih besar dari 7 KB (jika deployment tersebut menargetkan suatu objek) atau 31 KB (jika deployment tersebut menargetkan suatu grup objek). Dokumen deployment ini meliputi konfigurasi komponen, kebijakan deployment, dan metadata deployment. Untuk informasi selengkapnya, lihat Deploy komponen AWS IoT Greengrass ke perangkat.

Fitur ini tersedia untuk v2.3.0 dan versi kemudian dari komponen inti Greengrass.

Jenis sumber daya: Tidak ada

Format ARN sumber daya: *

greengrass:ListThingGroupsForCoreDevice

Memberikan izin untuk mendapatkan hierarki grup hal perangkat inti.

Izin ini diperiksa ketika perangkat inti menerima penerapan dariAWS IoT Greengrass. Perangkat inti menggunakan tindakan ini untuk mengidentifikasi apakah itu dihapus dari grup sesuatu sejak penerapan terakhir. Jika perangkat inti dihapus dari grup benda, dan grup benda itu adalah target penerapan ke perangkat inti, maka perangkat inti menghapus komponen yang diinstal oleh penerapan itu.

Fitur ini digunakan oleh v2.5.0 dan yang lebih baru dari komponen inti Greengrass.

Jenis sumber daya: thing (perangkat inti)

Format ARN sumber daya: arn:aws:iot:region:account-id:thing/core-device-thing-name

greengrass:VerifyClientDeviceIdentity

Memberikan izin untuk memverifikasi identitas perangkat klien yang tersambung ke perangkat inti.

Izin ini dievaluasi ketika perangkat inti menjalankan komponen autentikasi perangkat klien dan menerima koneksi MQTT dari perangkat klien. Perangkat klien menyajikan AWS IoT sertifikat perangkat. Kemudian, peranti inti mengirimkan sertifikat peranti ke AWS IoT Greengrass layanan cloud untuk memverifikasi identitas perangkat klien. Untuk informasi selengkapnya, lihat Berinteraksilah dengan perangkat IoT lokal.

Jenis sumber daya: Tidak ada

Format ARN sumber daya: *

greengrass:VerifyClientDeviceIoTCertificateAssociation

Memberikan izin untuk memverifikasi apakah perangkat klien dikaitkan dengan AWS IoT sertifikat.

Izin ini dievaluasi ketika perangkat inti menjalankan komponen autentikasi perangkat klien dan mengotorisasi perangkat klien untuk terhubung melalui MQTT. Untuk informasi selengkapnya, lihat Berinteraksilah dengan perangkat IoT lokal.

catatan

Agar perangkat inti bisa menggunakan operasi ini, Peran layanan Greengrass harus dikaitkan dengan Akun AWS dan memungkinkan izin iot:DescribeCertificate.

Jenis sumber daya: thing (perangkat klien)

Format ARN sumber daya: arn:aws:iot:region:account-id:thing/client-device-thing-name

greengrass:PutCertificateAuthorities

Memberikan izin untuk mengunggah sertifikat otoritas sertifikat (CA) bahwa perangkat klien dapat mengunduh untuk memverifikasi perangkat inti.

Izin ini dievaluasi ketika perangkat inti menginstal dan menjalankan komponen auth perangkat klien. Komponen ini menciptakan otoritas sertifikat lokal dan menggunakan operasi ini untuk mengunggah sertifikat CA. Perangkat klien mengunduh sertifikat CA ini ketika mereka menggunakan operasi Temukan untuk menemukan perangkat inti di mana mereka dapat terhubung. Ketika perangkat klien tersambung ke broker MQTT pada perangkat inti, mereka menggunakan sertifikat CA ini untuk memverifikasi identitas perangkat inti. Untuk informasi selengkapnya, lihat Berinteraksilah dengan perangkat IoT lokal.

Jenis sumber daya: Tidak ada

Format ARN: *

greengrass:GetConnectivityInfo

Memberikan izin untuk mendapatkan informasi konektivitas untuk perangkat inti. Informasi ini menjelaskan bagaimana perangkat klien dapat terhubung ke perangkat inti.

Izin ini dievaluasi ketika perangkat inti menginstal dan menjalankan komponen auth perangkat klien. Komponen ini menggunakan informasi konektivitas untuk menghasilkan sertifikat CA yang valid untuk diunggah ke layanan AWS IoT Greengrass cloud dengan PutCertificateAuthoriesoperasi. Perangkat klien menggunakan sertifikat CA ini untuk memverifikasi identitas perangkat inti. Untuk informasi selengkapnya, lihat Berinteraksilah dengan perangkat IoT lokal.

Anda juga dapat menggunakan operasi ini di bidang kendali AWS IoT Greengrass untuk melihat informasi konektivitas untuk perangkat inti. Untuk informasi selengkapnya, lihat GetConnectivityInfo di dalam Referensi API AWS IoT Greengrass V1.

Jenis sumber daya: thing (perangkat inti)

Format ARN sumber daya: arn:aws:iot:region:account-id:thing/core-device-thing-name

greengrass:UpdateConnectivityInfo

Memberikan izin untuk memperbarui informasi konektivitas untuk perangkat inti. Informasi ini menjelaskan bagaimana perangkat klien dapat terhubung ke perangkat inti.

Izin ini dievaluasi ketika perangkat inti menjalankan komponen detektor IP. Komponen ini mengidentifikasi informasi yang memerlukan perangkat klien untuk terhubung ke perangkat inti pada jaringan lokal. Kemudian, komponen ini menggunakan operasi ini untuk mengunggah informasi konektivitas ke layanan cloud AWS IoT Greengrass, sehingga perangkat klien dapat mengambil informasi ini dengan operasi Temukan. Untuk informasi selengkapnya, lihat Berinteraksilah dengan perangkat IoT lokal.

Anda juga dapat menggunakan operasi ini di AWS IoT Greengrass bidang kontrol untuk secara manual memperbarui informasi konektivitas untuk perangkat inti. Untuk informasi selengkapnya, lihat UpdateConnectivityInfo di dalam Referensi API AWS IoT Greengrass V1.

Jenis sumber daya: thing (perangkat inti)

Format ARN sumber daya: arn:aws:iot:region:account-id:thing/core-device-thing-name

Tindakan perangkat klien
greengrass:Discover

Memberikan izin untuk menemukan informasi konektivitas untuk perangkat inti di mana perangkat klien dapat terhubung. Informasi ini menjelaskan bagaimana perangkat klien dapat terhubung ke perangkat inti. Perangkat klien hanya dapat menemukan perangkat inti yang telah Anda kaitkan dengan menggunakan BatchAssociateClientDeviceWithCoreDeviceoperasi. Untuk informasi selengkapnya, lihat Berinteraksilah dengan perangkat IoT lokal.

Jenis sumber daya: thing (perangkat klien)

Format ARN sumber daya: arn:aws:iot:region:account-id:thing/client-device-thing-name

Memperbarui AWS IoT kebijakan perangkat inti

Anda dapat menggunakan AWS IoT Greengrass dan AWS IoT konsol atau AWS IoT API untuk melihat dan memperbarui AWS IoT kebijakan perangkat inti.

catatan

Jika Anda menggunakan Penginstal perangkat lunak inti AWS IoT Greengrass untuk penyediaan sumber daya, perangkat inti Anda memiliki kebijakan AWS IoT yang mengizinkan akses ke semua tindakan AWS IoT Greengrass (greengrass:*). Anda dapat mengikuti langkah-langkah ini untuk membatasi akses hanya ke tindakan yang digunakan oleh perangkat inti.

  1. Di menu navigasi konsol AWS IoT Greengrass tersebut, pilih Perangkat inti.

  2. Pada halaman Perangkat inti, pilih perangkat inti yang akan diperbarui.

  3. Pada halaman detail perangkat inti, pilih tautan ke Objek perangkat inti. Tautan ini membuka halaman rincian hal di AWS IoT konsol.

  4. Pada halaman detail objek, pilih Sertifikat.

  5. Di tab Sertifikat, pilih sertifikat aktif objek.

  6. Pada halaman detail sertifikat, pilih Kebijakan.

  7. Di tab Kebijakan, pilih kebijakan AWS IoT yang akan ditinjau dan diperbarui. Anda dapat menambahkan izin yang diperlukan untuk kebijakan yang dilampirkan ke sertifikat aktif perangkat inti.

    catatan

    Jika Anda menggunakan Penginstal perangkat lunak inti AWS IoT Greengrass untuk menyediakan sumber daya, Anda memiliki dua kebijakan AWS IoT. Kami menyarankan Anda memilih kebijakan yang diberi nama GreengrassV2IoTThingPolicy, jika ada. Perangkat inti yang Anda buat dengan penginstal cepat menggunakan nama kebijakan ini secara default. Jika Anda menambahkan izin untuk kebijakan ini, Anda juga memberikan izin ini ke perangkat inti lain yang menggunakan kebijakan ini.

  8. Dalam ikhtisar kebijakan, pilih Edit versi aktif.

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

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

  11. Pilih Simpan sebagai versi baru.

  1. Buat daftar prinsipal untuk hal perangkat inti. AWS IoT Prinsipal hal dapat berupa sertifikat perangkat X.509 atau identifikasi lainnya. Jalankan perintah berikut, dan ganti MyGreengrassCoredengan nama perangkat inti.

    aws iot list-thing-principals --thing-name MyGreengrassCore

    Operasi mengembalikan respons yang mencantumkan prinsip hal perangkat inti.

    { "principals": [ "arn:aws:iot:us-west-2:123456789012:cert/certificateId" ] }
  2. Identifikasi sertifikat aktif perangkat inti. Jalankan perintah berikut, dan ganti CertificateId dengan ID setiap sertifikat dari langkah sebelumnya hingga Anda menemukan sertifikat aktif. ID sertifikat adalah string heksadesimal di akhir sertifikat ARN. --queryArgumen menentukan untuk output hanya status sertifikat.

    aws iot describe-certificate --certificate-id certificateId --query 'certificateDescription.status'

    Operasi mengembalikan status sertifikat sebagai string. Misalnya, jika sertifikat aktif, output "ACTIVE" operasi ini.

  3. Buat daftar AWS IoT kebijakan yang dilampirkan pada sertifikat. Jalankan perintah berikut, dan ganti sertifikat ARN dengan ARN sertifikat.

    aws iot list-principal-policies --principal arn:aws:iot:us-west-2:123456789012:cert/certificateId

    Operasi mengembalikan respons yang mencantumkan AWS IoT kebijakan yang dilampirkan pada sertifikat.

    { "policies": [ { "policyName": "GreengrassTESCertificatePolicyMyGreengrassCoreTokenExchangeRoleAlias", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassTESCertificatePolicyMyGreengrassCoreTokenExchangeRoleAlias" }, { "policyName": "GreengrassV2IoTThingPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy" } ] }
  4. Pilih kebijakan yang akan dilihat dan diperbarui.

    catatan

    Jika Anda menggunakan Penginstal perangkat lunak inti AWS IoT Greengrass untuk menyediakan sumber daya, Anda memiliki dua kebijakan AWS IoT. Kami menyarankan Anda memilih kebijakan yang diberi nama GreengrassV2IoTThingPolicy, jika ada. Perangkat inti yang Anda buat dengan penginstal cepat menggunakan nama kebijakan ini secara default. Jika Anda menambahkan izin untuk kebijakan ini, Anda juga memberikan izin ini ke perangkat inti lain yang menggunakan kebijakan ini.

  5. Dapatkan dokumen kebijakan. Jalankan perintah berikut, dan ganti GreenGrassV2IoT ThingPolicy dengan nama kebijakan.

    aws iot get-policy --policy-name GreengrassV2IoTThingPolicy

    Operasi mengembalikan respons yang berisi dokumen kebijakan dan informasi lain tentang kebijakan tersebut. Dokumen kebijakan adalah objek JSON yang diserialisasikan sebagai string.

    { "policyName": "GreengrassV2IoTThingPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy", "policyDocument": "{\ \\"Version\\": \\"2012-10-17\\",\ \\"Statement\\": [\ {\ \\"Effect\\": \\"Allow\\",\ \\"Action\\": [\ \\"iot:Connect\\",\ \\"iot:Publish\\",\ \\"iot:Subscribe\\",\ \\"iot:Receive\\",\ \\"greengrass:*\\"\ ],\ \\"Resource\\": \\"*\\"\ }\ ]\ }", "defaultVersionId": "1", "creationDate": "2021-02-05T16:03:14.098000-08:00", "lastModifiedDate": "2021-02-05T16:03:14.098000-08:00", "generationId": "f19144b798534f52c619d44f771a354f1b957dfa2b850625d9f1d0fde530e75f" }
  6. Gunakan konverter online atau alat lain untuk mengonversi string dokumen kebijakan menjadi objek JSON, lalu simpan ke file bernamaiot-policy.json.

    Misalnya, jika Anda menginstal alat jq, Anda dapat menjalankan perintah berikut untuk mendapatkan dokumen kebijakan, mengubahnya menjadi objek JSON, dan menyimpan dokumen kebijakan sebagai objek JSON.

    aws iot get-policy --policy-name GreengrassV2IoTThingPolicy --query 'policyDocument' | jq fromjson >> iot-policy.json
  7. Tinjau dokumen kebijakan, dan tambahkan, hapus, atau edit izin sesuai kebutuhan.

    Misalnya, pada sistem berbasis Linux, Anda dapat menjalankan perintah berikut untuk menggunakan GNU nano untuk membuka file.

    nano iot-policy.json

    Setelah selesai, dokumen kebijakan mungkin terlihat mirip dengan AWS IoTkebijakan minimal untuk perangkat inti.

  8. Simpan perubahan sebagai versi baru kebijakan. Jalankan perintah berikut, dan ganti GreenGrassV2IoT ThingPolicy dengan nama kebijakan.

    aws iot create-policy-version --policy-name GreengrassV2IoTThingPolicy --policy-document file://iot-policy.json --set-as-default

    Operasi mengembalikan respon mirip dengan contoh berikut jika berhasil.

    { "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy", "policyDocument": "{\ \\"Version\\": \\"2012-10-17\\",\ \\"Statement\\": [\ {\ \\"Effect\\": \\"Allow\\",\ \\"Action\\": [\ \\t\\t\\"iot:Connect\\",\ \\t\\t\\"iot:Publish\\",\ \\t\\t\\"iot:Subscribe\\",\ \\t\\t\\"iot:Receive\\",\ \\t\\t\\"greengrass:*\\"\ ],\ \\"Resource\\": \\"*\\"\ }\ ]\ }", "policyVersionId": "2", "isDefaultVersion": true }

Kebijakan AWS IoT minimal untuk perangkat inti AWS IoT Greengrass V2

penting

Versi selanjutnya dari komponen inti Greengrass memerlukan izin tambahan pada kebijakan minimal. AWS IoT Anda mungkin perlu memperbarui AWS IoT kebijakan perangkat inti Anda untuk memberikan izin tambahan.

  • Perangkat inti yang menjalankan Greengrass nucleus v2.5.0 dan yang lebih baru menggunakan greengrass:ListThingGroupsForCoreDevice izin untuk menghapus komponen saat Anda menghapus perangkat inti dari grup benda.

  • Perangkat inti yang menjalankan Greengrass nucleus v2.3.0 dan yang lebih baru menggunakan greengrass:GetDeploymentConfiguration izin untuk mendukung dokumen konfigurasi penerapan besar.

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

  • ConnectKebijakan ini menyertakan * wildcard setelah nama perangkat inti (misalnya,core-device-thing-name*). Perangkat inti menggunakan sertifikat perangkat yang sama untuk membuat beberapa langganan bersamaanAWS IoT Core, tetapi ID klien dalam koneksi mungkin tidak sama persis dengan nama perangkat inti. Setelah 50 langganan pertama, perangkat inti menggunakan core-device-thing-name#number sebagai ID klien, di mana number kenaikan untuk setiap tambahan 50 langganan. Misalnya, ketika perangkat inti bernama MyCoreDevice membuat 150 langganan bersamaan, ia menggunakan ID klien berikut:

    • Langganan 1 hingga 50: MyCoreDevice

    • Langganan 51 hingga 100: MyCoreDevice#2

    • Langganan 101 hingga 150: MyCoreDevice#3

    Wildcard memungkinkan perangkat inti untuk terhubung ketika menggunakan ID klien ini yang memiliki akhiran.

  • Kebijakan ini mencantumkan topik MQTT dan filter topik yang perangkat inti dapat publikasikan, berlangganan, dan menerima pesan, termasuk topik yang digunakan untuk keadaan bayangan. Untuk mendukung pertukaran pesan antara AWS IoT Core, komponen Greengrass, dan perangkat klien, tentukan topik dan topik filter yang ingin Anda izinkan. Untuk informasi selengkapnya, lihat contoh kebijakan Publikasi/Berlangganan di Panduan Developer AWS IoT Core.

  • Kebijakan tersebut memberikan izin untuk mempublikasikan topik berikut untuk data telemetri.

    $aws/things/core-device-thing-name/greengrass/health/json

    Anda dapat menghapus izin ini untuk perangkat inti di mana Anda menonaktifkan telemetri. Untuk informasi selengkapnya, lihat Kumpulkan data telemetri kondisi sistem dari perangkat inti AWS IoT Greengrass.

  • Kebijakan ini memberikan izin untuk meneruskan IAM role melalui alias peran AWS IoT. Perangkat inti menggunakan peran ini, yang disebut peran pertukaran token, untuk memperoleh AWS kredensial yang dapat digunakan untuk mengautentikasi AWS permintaan. Untuk informasi selengkapnya, lihat Otorisasi perangkat inti untuk berinteraksi dengan AWS layanan.

    Ketika Anda menginstal AWS IoT Greengrass Perangkat lunak inti, Anda membuat dan melampirkan kedua AWS IoT kebijakan yang hanya mencakup izin ini. Jika Anda menyertakan izin ini di kebijakan AWS IoT primer perangkat inti Anda, Anda dapat melepaskan dan menghapus kebijakan AWS IoT lainnya.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": "arn:aws:iot:region:account-id:client/core-device-thing-name*" }, { "Effect": "Allow", "Action": [ "iot:Receive", "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name/greengrass/health/json", "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name/greengrassv2/health/json", "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name/jobs/*", "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name/shadow/*" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account-id:topicfilter/$aws/things/core-device-thing-name/jobs/*", "arn:aws:iot:region:account-id:topicfilter/$aws/things/core-device-thing-name/shadow/*" ] }, { "Effect": "Allow", "Action": "iot:AssumeRoleWithCertificate", "Resource": "arn:aws:iot:region:account-id:rolealias/token-exchange-role-alias-name" }, { "Effect": "Allow", "Action": [ "greengrass:GetComponentVersionArtifact", "greengrass:ResolveComponentCandidates", "greengrass:GetDeploymentConfiguration", "greengrass:ListThingGroupsForCoreDevice" ], "Resource": "*" } ] }

Kebijakan AWS IoT minimal untuk mendukung perangkat klien

Kebijakan contoh berikut mencakup serangkaian tindakan minimum yang diperlukan untuk mendukung interaksi dengan perangkat klien pada perangkat inti. Untuk mendukung perangkat klien, perangkat inti harus memiliki izin pada kebijakan AWS IoT ini selain Kebijakan AWS IoT minimal untuk operasi dasar.

  • Kebijakan ini memungkinkan perangkat inti untuk memperbarui informasi konektivitasnya sendiri. Izin (greengrass:UpdateConnectivityInfo) ini hanya diperlukan jika Anda menyebarkan komponen detektor IP ke perangkat inti.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name-gci/shadow/get" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account-id:topicfilter/$aws/things/core-device-thing-name-gci/shadow/update/delta", "arn:aws:iot:region:account-id:topicfilter/$aws/things/core-device-thing-name-gci/shadow/get/accepted" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name-gci/shadow/update/delta", "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name-gci/shadow/get/accepted" ] }, { "Effect": "Allow", "Action": [ "greengrass:PutCertificateAuthorities", "greengrass:VerifyClientDeviceIdentity" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "greengrass:VerifyClientDeviceIoTCertificateAssociation" ], "Resource": "arn:aws:iot:region:account-id:thing/*" }, { "Effect": "Allow", "Action": [ "greengrass:GetConnectivityInfo", "greengrass:UpdateConnectivityInfo" ], "Resource": [ "arn:aws:iot:region:account-id:thing/core-device-thing-name" ] } ] }

Kebijakan AWS IoT minimal untuk perangkat klien

Kebijakan contoh berikut mencakup serangkaian tindakan minimum yang diperlukan untuk perangkat klien untuk menemukan perangkat inti di mana mereka terhubung dan berkomunikasi melalui MQTT. Kebijakan AWS IoT perangkat klien harus mencakup greengrass:Discover tindakan untuk memungkinkan perangkat menemukan informasi konektivitas untuk perangkat inti Greengrass yang terkait. Di bagian Resource, tentukan Amazon Resource Name (ARN) perangkat klien, bukan ARN perangkat inti Greengrass.

  • Kebijakan ini memungkinkan komunikasi pada semua topik MQTT. Untuk mengikuti praktik keamanan terbaik, batasi iot:Publish, iot:Subscribe, dan iot:Receive ke set minimal perangkat klien yang tersambung ke perangkat inti untuk kasus penggunaan Anda.

  • Kebijakan ini memungkinkan hal untuk menemukan perangkat inti untuk semua AWS IoT hal. Untuk mengikuti praktik keamanan terbaik, batasi izin greengrass:Discover ke objek AWS IoT perangkat klien atau wildcard yang cocok dengan satu rangkaian objek AWS IoT.

    penting

    Variabel kebijakan objek (iot:Connection.Thing.*) tidak didukung untuk di kebijakan AWS IoT untuk perangkat inti atau operasi bidang data Greengrass. Sebaliknya, Anda dapat menggunakan wildcard yang cocok dengan beberapa perangkat yang memiliki nama yang sama. Misalnya, Anda dapat menentukan MyGreengrassDevice* untuk cocok dengan MyGreengrassDevice1, MyGreengrassDevice2, dan sebagainya.

  • Kebijakan AWS IoT perangkat klien biasanya tidak memerlukan izin untuk tindakan iot:GetThingShadow, iot:UpdateThingShadow, atau iot:DeleteThingShadow, karena perangkat inti Greengrass tersebut menangani operasi sinkronisasi bayangan untuk perangkat klien. Untuk mengaktifkan perangkat inti untuk menangani bayangan perangkat klien, periksa bahwa AWS IoT kebijakan perangkat inti memungkinkan tindakan ini, dan bahwa bagian Resource termasuk ARN perangkat klien.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account-id:topic/*" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account-id:topicfilter/*" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account-id:topic/*" ] }, { "Effect": "Allow", "Action": [ "greengrass:Discover" ], "Resource": [ "arn:aws:iot:region:account-id:thing/*" ] } ] }