Contoh kebijakan Publikasi/Berlangganan - AWS IoT Core

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

Contoh kebijakan Publikasi/Berlangganan

Kebijakan yang Anda gunakan bergantung pada cara Anda terhubung AWS IoT Core. Anda dapat terhubung AWS IoT Core dengan menggunakan klien MQTT, HTTP, atau. WebSocket Saat Anda terhubung dengan klien MQTT, Anda mengautentikasi dengan sertifikat X.509. Saat Anda terhubung melalui HTTP atau WebSocket protokol, Anda mengautentikasi dengan Signature Version 4 dan Amazon Cognito.

catatan

Untuk perangkat terdaftar, kami menyarankan Anda menggunakan variabel kebijakan hal untuk Connect tindakan dan melampirkan benda ke prinsipal yang digunakan untuk koneksi.

Menggunakan karakter wildcard di MQTT dan kebijakan AWS IoT Core

MQTT dan AWS IoT Core kebijakan memiliki karakter wildcard yang berbeda dan Anda harus memilihnya setelah mempertimbangkan dengan cermat. Di MQTT, karakter wildcard + dan # digunakan dalam filter topik MQTT untuk berlangganan beberapa nama topik. AWS IoT Core kebijakan menggunakan * dan ? sebagai karakter wildcard dan mengikuti konvensi kebijakan IAM. Dalam dokumen kebijakan, * mewakili kombinasi karakter dan tanda tanya ? mewakili karakter tunggal apa pun. Dalam dokumen kebijakan, karakter wildcard MQTT, + dan # diperlakukan sebagai karakter tanpa arti khusus. Untuk menjelaskan beberapa nama topik dan filter topik dalam resource atribut kebijakan, gunakan karakter * dan ? wildcard sebagai pengganti karakter wildcard MQTT.

Saat Anda memilih karakter wildcard yang akan digunakan dalam dokumen kebijakan, pertimbangkan bahwa * karakter tersebut tidak terbatas pada satu tingkat topik. +Karakter terbatas pada tingkat topik tunggal dalam filter topik MQTT. Untuk membantu membatasi spesifikasi wildcard ke satu tingkat filter topik MQTT, pertimbangkan untuk menggunakan beberapa karakter. ? Untuk informasi selengkapnya tentang penggunaan karakter wildcard dalam sumber daya kebijakan dan contoh lainnya tentang apa yang cocok, lihat Menggunakan wildcard di ARN sumber daya.

Tabel di bawah ini menunjukkan karakter wildcard berbeda yang digunakan dalam MQTT dan AWS IoT Core kebijakan untuk klien MQTT.

Karakter wildcard Apakah karakter wildcard MQTT Contoh di MQTT Apakah karakter wildcard AWS IoT Core kebijakan Contoh dalam AWS IoT Core kebijakan untuk klien MQTT
# Ya some/# Tidak N/A
+ Ya some/+/topic Tidak N/A
* Tidak N/A Ya

topicfilter/some/*/topic

topicfilter/some/sensor*/topic

? Tidak N/A Ya

topic/some/?????/topic

topicfilter/some/sensor???/topic

Kebijakan untuk mempublikasikan, berlangganan, dan menerima pesan ke/dari topik tertentu

Berikut ini menunjukkan contoh untuk perangkat terdaftar dan tidak terdaftar untuk menerbitkan, berlangganan dan menerima pesan ke/dari topik bernama “some_specific_topic”. Contoh juga menyoroti itu Publish dan Receive menggunakan “topik” sebagai sumber daya, dan Subscribe menggunakan “topicfilter” sebagai sumber daya.

Registered devices

Untuk perangkat yang terdaftar di AWS IoT Core registri, kebijakan berikut memungkinkan perangkat terhubung dengan ClientID yang cocok dengan nama sesuatu di registri. Ini juga menyediakanPublish, Subscribe dan Receive izin untuk topik bernama “some_specific_topic”.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}" ], "Condition": { "Bool": { "iot:Connection.Thing.IsAttached": "true" } } }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/some_specific_topic" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topicfilter/some_specific_topic" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/some_specific_topic" ] } ] }
Unregistered devices

Untuk perangkat yang tidak terdaftar dalam AWS IoT Core registri, kebijakan berikut memungkinkan perangkat untuk terhubung menggunakan ClientID1, ClientId2 atau ClientID3. Ini juga menyediakanPublish, Subscribe dan Receive izin untuk topik bernama “some_specific_topic”.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/clientId1", "arn:aws:iot:us-east-1:123456789012:client/clientId2", "arn:aws:iot:us-east-1:123456789012:client/clientId3" ] }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/some_specific_topic" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topicfilter/some_specific_topic" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/some_specific_topic" ] } ] }

Kebijakan untuk mempublikasikan, berlangganan, dan menerima pesan ke/dari topik dengan awalan tertentu

Berikut ini menunjukkan contoh untuk perangkat terdaftar dan tidak terdaftar untuk menerbitkan, berlangganan dan menerima pesan ke/dari topik yang diawali dengan “topic_prefix”.

catatan

Perhatikan penggunaan karakter wildcard * dalam contoh ini. Meskipun * berguna untuk memberikan izin untuk beberapa nama topik dalam satu pernyataan, ini dapat menyebabkan konsekuensi yang tidak diinginkan dengan memberikan lebih banyak hak istimewa ke perangkat daripada yang diperlukan. Jadi kami menyarankan Anda hanya menggunakan karakter wildcard * setelah mempertimbangkan dengan cermat.

Registered devices

Untuk perangkat yang terdaftar di AWS IoT Core registri, kebijakan berikut memungkinkan perangkat terhubung dengan ClientID yang cocok dengan nama sesuatu di registri. Ini juga menyediakanPublish, Subscribe dan Receive izin untuk topik yang diawali dengan “topic_prefix”.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}" ], "Condition": { "Bool": { "iot:Connection.Thing.IsAttached": "true" } } }, { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/topic_prefix*" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topicfilter/topic_prefix*" ] } ] }
Unregistered devices

Untuk perangkat yang tidak terdaftar dalam AWS IoT Core registri, kebijakan berikut memungkinkan perangkat untuk terhubung menggunakan ClientID1, ClientId2 atau ClientID3. Ini juga menyediakanPublish, Subscribe dan Receive izin untuk topik yang diawali dengan “topic_prefix”.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/clientId1", "arn:aws:iot:us-east-1:123456789012:client/clientId2", "arn:aws:iot:us-east-1:123456789012:client/clientId3" ] }, { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/topic_prefix*" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topicfilter/topic_prefix*" ] } ] }

Kebijakan untuk mempublikasikan, berlangganan, dan menerima pesan ke/dari topik khusus untuk setiap perangkat

Berikut ini menunjukkan contoh untuk perangkat terdaftar dan tidak terdaftar untuk menerbitkan, berlangganan dan menerima pesan ke/dari topik yang khusus untuk perangkat yang diberikan.

Registered devices

Untuk perangkat yang terdaftar di AWS IoT Core registri, kebijakan berikut memungkinkan perangkat terhubung dengan ClientID yang cocok dengan nama sesuatu di registri. Ini memberikan izin untuk mempublikasikan ke topik spesifik (sensor/device/${iot:Connection.Thing.ThingName}) dan juga berlangganan dan menerima dari topik khusus hal (). command/device/${iot:Connection.Thing.ThingName} Jika nama benda dalam registri adalah “thing1", perangkat akan dapat mempublikasikan ke topik “sensor/perangkat/halang1". Perangkat juga akan dapat berlangganan dan menerima dari topik “command/device/thing1".

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}" ], "Condition": { "Bool": { "iot:Connection.Thing.IsAttached": "true" } } }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/sensor/device/${iot:Connection.Thing.ThingName}" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topicfilter/command/device/${iot:Connection.Thing.ThingName}" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/command/device/${iot:Connection.Thing.ThingName}" ] } ] }
Unregistered devices

Untuk perangkat yang tidak terdaftar dalam AWS IoT Core registri, kebijakan berikut memungkinkan perangkat untuk terhubung menggunakan ClientID1, ClientId2 atau ClientID3. Ini memberikan izin untuk mempublikasikan ke topik khusus klien (sensor/device/${iot:ClientId}), dan juga berlangganan dan menerima dari topik khusus klien (). command/device/${iot:ClientId} Jika perangkat terhubung dengan ClientID sebagai ClientId1, itu akan dapat mempublikasikan ke topik “Sensor/perangkat/clientid1". Perangkat juga akan dapat berlangganan dan menerima dari topikdevice/clientId1/command.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/clientId1", "arn:aws:iot:us-east-1:123456789012:client/clientId2", "arn:aws:iot:us-east-1:123456789012:client/clientId3" ] }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/sensor/device/${iot:Connection.Thing.ThingName}" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topicfilter/command/device/${iot:Connection.Thing.ThingName}" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/command/device/${iot:Connection.Thing.ThingName}" ] } ] }

Kebijakan untuk mempublikasikan, berlangganan, dan menerima pesan ke/dari topik dengan atribut benda dalam nama topik

Berikut ini menunjukkan contoh untuk perangkat terdaftar untuk menerbitkan, berlangganan dan menerima pesan ke/dari topik yang namanya termasuk atribut hal.

catatan

Atribut benda hanya ada untuk perangkat yang terdaftar di AWS IoT Core Registry. Tidak ada contoh yang sesuai untuk perangkat yang tidak terdaftar.

Registered devices

Untuk perangkat yang terdaftar di AWS IoT Core registri, kebijakan berikut memungkinkan perangkat terhubung dengan ClientID yang cocok dengan nama sesuatu di registri. Ini memberikan izin untuk mempublikasikan ke topik (sensor/${iot:Connection.Thing.Attributes[version]}), dan berlangganan dan menerima dari topik (command/${iot:Connection.Thing.Attributes[location]}) di mana nama topik mencakup atribut hal. Jika nama benda dalam registri memiliki version=v1 danlocation=Seattle, perangkat akan dapat mempublikasikan ke topik “sensor/v1", dan berlangganan dan terima dari topik “Command/Seattle”.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}" ], "Condition": { "Bool": { "iot:Connection.Thing.IsAttached": "true" } } }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/sensor/${iot:Connection.Thing.Attributes[version]}" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topicfilter/command/${iot:Connection.Thing.Attributes[location]}" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/command/${iot:Connection.Thing.Attributes[location]}" ] } ] }
Unregistered devices

Karena atribut thing hanya ada untuk perangkat yang terdaftar di AWS IoT Core registri, tidak ada contoh yang sesuai untuk hal-hal yang tidak terdaftar.

Kebijakan untuk menolak mempublikasikan pesan ke subtopik nama topik

Berikut ini menunjukkan contoh untuk perangkat terdaftar dan tidak terdaftar untuk mempublikasikan pesan ke semua topik kecuali subtopik tertentu.

Registered devices

Untuk perangkat yang terdaftar di AWS IoT Core registri, kebijakan berikut memungkinkan perangkat terhubung dengan ClientID yang cocok dengan nama sesuatu di registri. Ini memberikan izin untuk mempublikasikan ke semua topik yang diawali dengan “departemen/” tetapi tidak ke subtopik “departemen/admin”.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}" ], "Condition": { "Bool": { "iot:Connection.Thing.IsAttached": "true" } } }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/department/*" ] }, { "Effect": "Deny", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/department/admins" ] } ] }
Unregistered devices

Untuk perangkat yang tidak terdaftar dalam AWS IoT Core registri, kebijakan berikut memungkinkan perangkat untuk terhubung menggunakan ClientID1, ClientId2 atau ClientID3. Ini memberikan izin untuk mempublikasikan ke semua topik yang diawali dengan “departemen/” tetapi tidak ke subtopik “departemen/admin”.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/clientId1", "arn:aws:iot:us-east-1:123456789012:client/clientId2", "arn:aws:iot:us-east-1:123456789012:client/clientId3" ] }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/department/*" ] }, { "Effect": "Deny", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/department/admins" ] } ] }

Kebijakan untuk menolak menerima pesan dari subtopik nama topik

Berikut ini menunjukkan contoh untuk perangkat terdaftar dan tidak terdaftar untuk berlangganan dan menerima pesan dari topik dengan awalan tertentu kecuali subtopik tertentu.

Registered devices

Untuk perangkat yang terdaftar di AWS IoT Core registri, kebijakan berikut memungkinkan perangkat terhubung dengan ClientID yang cocok dengan nama sesuatu di registri. Kebijakan ini memungkinkan perangkat untuk berlangganan topik apa pun yang diawali dengan “topic_prefix”. Dengan menggunakan NotResource dalam pernyataan untukiot:Receive, kami mengizinkan perangkat menerima pesan dari semua topik yang telah dilanggani perangkat, kecuali topik yang diawali dengan “topic_prefix/restricted”. Misalnya, dengan kebijakan ini, perangkat dapat berlangganan “topic_prefix/topic1" dan bahkan “topic_prefix/restricted”, namun, mereka hanya akan menerima pesan dari topik “topic_prefix/topic1" dan tidak ada pesan dari topik “topic_prefix/restricted”.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}" ], "Condition": { "Bool": { "iot:Connection.Thing.IsAttached": "true" } } }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/topic_prefix/*" }, { "Effect": "Allow", "Action": "iot:Receive", "NotResource": "arn:aws:iot:us-east-1:123456789012:topic/topic_prefix/restricted/*" } ] }
Unregistered devices

Untuk perangkat yang tidak terdaftar dalam AWS IoT Core registri, kebijakan berikut memungkinkan perangkat untuk terhubung menggunakan ClientID1, ClientId2 atau ClientID3. Kebijakan ini memungkinkan perangkat untuk berlangganan topik apa pun yang diawali dengan “topic_prefix”. Dengan menggunakan NotResource dalam pernyataan untukiot:Receive, kami mengizinkan perangkat menerima pesan dari semua topik yang telah dilanggani perangkat, kecuali topik yang diawali dengan “topic_prefix/restricted”. Misalnya, dengan kebijakan ini, perangkat dapat berlangganan “topic_prefix/topic1" dan bahkan “topic_prefix/restricted”. Namun, mereka hanya akan menerima pesan dari topik “topic_prefix/topic1" dan tidak ada pesan dari topik “topic_prefix/restricted”.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/clientId1", "arn:aws:iot:us-east-1:123456789012:client/clientId2", "arn:aws:iot:us-east-1:123456789012:client/clientId3" ] }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/topic_prefix/*" }, { "Effect": "Allow", "Action": "iot:Receive", "NotResource": "arn:aws:iot:us-east-1:123456789012:topic/topic_prefix/restricted/*" } ] }

Kebijakan untuk berlangganan topik menggunakan karakter wildcard MQTT

Karakter wildcard MQTT + dan # diperlakukan sebagai string literal, tetapi mereka tidak diperlakukan sebagai wildcard saat digunakan dalam kebijakan. AWS IoT Core Di MQTT, + dan # diperlakukan sebagai wildcard hanya saat berlangganan filter topik tetapi sebagai string literal di semua konteks lainnya. Kami menyarankan Anda hanya menggunakan wildcard MQTT ini sebagai bagian dari AWS IoT Core kebijakan setelah mempertimbangkan dengan cermat.

Berikut ini menunjukkan contoh untuk hal-hal terdaftar dan tidak terdaftar menggunakan wildcard MQTT dalam kebijakan. AWS IoT Core Wildcard ini diperlakukan sebagai string literal.

Registered devices

Untuk perangkat yang terdaftar di AWS IoT Core registri, kebijakan berikut memungkinkan perangkat terhubung dengan ClientID yang cocok dengan nama sesuatu di registri. Kebijakan ini memungkinkan perangkat untuk berlangganan topik “departemen/+/karyawan” dan “lokasi/#”. Karena + dan # diperlakukan sebagai string literal dalam AWS IoT Core kebijakan, perangkat dapat berlangganan topik “departemen/+/karyawan” tetapi tidak ke topik “departemen/teknik/karyawan”. Demikian pula, perangkat dapat berlangganan topik “lokasi/#” tetapi tidak ke topik “Lokasi/Seattle”. Namun, setelah perangkat berlangganan topik “departemen/+/karyawan”, kebijakan akan memungkinkan mereka untuk menerima pesan dari topik “departemen/teknik/karyawan”. Demikian pula, setelah perangkat berlangganan topik “lokasi/#”, mereka akan menerima pesan dari topik “Lokasi/Seattle” juga.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}" ], "Condition": { "Bool": { "iot:Connection.Thing.IsAttached": "true" } } }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/department/+/employees" }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/location/#" }, { "Effect": "Allow", "Action": "iot:Receive", "Resource": "arn:aws:iot:us-east-1:123456789012:topic/*" } ] }
Unregistered devices

Untuk perangkat yang tidak terdaftar dalam AWS IoT Core registri, kebijakan berikut memungkinkan perangkat untuk terhubung menggunakan ClientID1, ClientId2 atau ClientID3. Kebijakan ini memungkinkan perangkat untuk berlangganan topik “departemen/+/karyawan” dan “lokasi/#”. Karena + dan # diperlakukan sebagai string literal dalam AWS IoT Core kebijakan, perangkat dapat berlangganan topik “departemen/+/karyawan” tetapi tidak ke topik “departemen/teknik/karyawan”. Demikian pula, perangkat dapat berlangganan topik “lokasi/#” tetapi tidak “lokasi/Seattle”. Namun, setelah perangkat berlangganan topik “departemen/+/karyawan”, kebijakan akan memungkinkan mereka untuk menerima pesan dari topik “departemen/teknik/karyawan”. Demikian pula, setelah perangkat berlangganan topik “lokasi/#”, mereka akan menerima pesan dari topik “Lokasi/Seattle” juga.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/clientId1", "arn:aws:iot:us-east-1:123456789012:client/clientId2", "arn:aws:iot:us-east-1:123456789012:client/clientId3" ] }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/department/+/employees" }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/location/#" }, { "Effect": "Allow", "Action": "iot:Receive", "Resource": "arn:aws:iot:us-east-1:123456789012:topic/*" } ] }

Kebijakan untuk HTTP dan WebSocket klien

Saat Anda terhubung melalui HTTP atau WebSocket protokol, Anda mengautentikasi dengan Signature Version 4 dan Amazon Cognito. Identitas Amazon Cognito dapat diautentikasi atau tidak diautentikasi. Identitas terautentikasi adalah milik pengguna yang diautentikasi oleh penyedia identitas yang didukung. Identitas yang tidak diautentikasi biasanya milik pengguna tamu yang tidak mengautentikasi dengan penyedia identitas. Amazon Cognito menyediakan pengenal dan AWS kredensyal unik untuk mendukung identitas yang tidak diautentikasi. Untuk informasi selengkapnya, lihat Otorisasi dengan identitas Amazon Cognito.

Untuk operasi berikut, AWS IoT Core gunakan AWS IoT Core kebijakan yang dilampirkan pada identitas Amazon Cognito melalui API. AttachPolicy Ini mencakup izin yang dilampirkan ke kumpulan Identitas Amazon Cognito dengan identitas yang diautentikasi.

  • iot:Connect

  • iot:Publish

  • iot:Subscribe

  • iot:Receive

  • iot:GetThingShadow

  • iot:UpdateThingShadow

  • iot:DeleteThingShadow

Itu berarti Identitas Amazon Cognito memerlukan izin dari kebijakan peran IAM dan kebijakan tersebut. AWS IoT Core Anda melampirkan kebijakan peran IAM ke kumpulan dan AWS IoT Core kebijakan ke Identitas Amazon Cognito melalui AWS IoT Core AttachPolicy API.

Pengguna yang diautentikasi dan tidak diautentikasi adalah jenis identitas yang berbeda. Jika Anda tidak melampirkan AWS IoT kebijakan ke Identitas Amazon Cognito, pengguna yang diautentikasi akan gagal melakukan otorisasi AWS IoT dan tidak memiliki akses ke AWS IoT sumber daya dan tindakan.

catatan

Untuk AWS IoT Core operasi lain atau untuk identitas yang tidak diautentikasi, AWS IoT Core tidak mencakup izin yang dilampirkan ke peran kumpulan identitas Amazon Cognito. Untuk identitas yang diautentikasi dan tidak diautentikasi, ini adalah kebijakan paling permisif yang kami sarankan Anda lampirkan ke peran kumpulan Amazon Cognito.

HTTP

Untuk mengizinkan identitas Amazon Cognito yang tidak diautentikasi memublikasikan pesan melalui HTTP pada topik khusus Identitas Amazon Cognito, lampirkan kebijakan IAM berikut ke peran kumpulan Identitas Amazon Cognito:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", ], "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${cognito-identity.amazonaws.com:sub}"] } ] }

Untuk mengizinkan pengguna yang diautentikasi, lampirkan kebijakan sebelumnya ke peran kumpulan Identitas Amazon Cognito dan ke Identitas Amazon Cognito menggunakan API. AWS IoT Core AttachPolicy

catatan

Saat mengotorisasi identitas Amazon Cognito AWS IoT Core , pertimbangkan kebijakan dan berikan hak istimewa paling sedikit yang ditentukan. Tindakan hanya diperbolehkan jika kedua kebijakan mengizinkan tindakan yang diminta. Jika salah satu kebijakan melarang tindakan, tindakan itu tidak sah.

MQTT

Untuk mengizinkan identitas Amazon Cognito yang tidak diautentikasi memublikasikan pesan WebSocket MQTT tentang topik khusus Identitas Amazon Cognito di akun Anda, lampirkan kebijakan IAM berikut ke peran kumpulan Identitas Amazon Cognito:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${cognito-identity.amazonaws.com:sub}"] }, { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${cognito-identity.amazonaws.com:sub}"] } ] }

Untuk mengizinkan pengguna yang diautentikasi, lampirkan kebijakan sebelumnya ke peran kumpulan Identitas Amazon Cognito dan ke Identitas Amazon Cognito menggunakan API. AWS IoT Core AttachPolicy

catatan

Saat mengotorisasi identitas Amazon Cognito AWS IoT Core , pertimbangkan keduanya dan berikan hak istimewa paling sedikit yang ditentukan. Tindakan hanya diperbolehkan jika kedua kebijakan mengizinkan tindakan yang diminta. Jika salah satu kebijakan melarang tindakan, tindakan itu tidak sah.