View a markdown version of this page

Publish/Subscribe contoh kebijakan - AWS IoT Core

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

Publish/Subscribe contoh kebijakan

Kebijakan yang Anda gunakan tergantung 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 melakukan otentikasi dengan Signature Version 4 dan Amazon Cognito.

catatan

Untuk perangkat terdaftar, sebaiknya gunakan variabel kebijakan benda untuk Connect tindakan dan melampirkan hal tersebut ke prinsip yang digunakan untuk koneksi.

Menggunakan karakter wildcard di MQTT dan AWS IoT Core kebijakan-kebijakan

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 apa pun dan tanda tanya ? mewakili karakter tunggal. Dalam dokumen kebijakan, karakter wildcard MQTT, + dan # diperlakukan sebagai karakter tanpa makna khusus. Untuk menjelaskan beberapa nama topik dan filter topik dalam resource atribut kebijakan, gunakan karakter * dan ? wildcard sebagai pengganti karakter wildcard MQTT.

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

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

Karakter wildcard Apakah karakter wildcard MQTT Contoh di MQTT Apakah AWS IoT Core karakter wildcard 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 topik to/from tertentu

Berikut ini menunjukkan contoh untuk perangkat terdaftar dan tidak terdaftar untuk menerbitkan, berlangganan, dan menerima pesan to/from topik bernama “some_specific topic”. Contoh-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 di 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 to/from topik pesan dengan awalan tertentu

Berikut ini menunjukkan contoh untuk perangkat terdaftar dan tidak terdaftar untuk menerbitkan, berlangganan, dan menerima to/from topik pesan 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, hal 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 pertimbangan yang 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 di 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 to/from topik pesan khusus untuk setiap perangkat

Berikut ini menunjukkan contoh untuk perangkat terdaftar dan tidak terdaftar untuk mempublikasikan, berlangganan, dan menerima to/from topik pesan yang khusus untuk perangkat 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 menerbitkan ke topik khusus hal (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/device /thing1”. 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 di AWS IoT Core registri, kebijakan berikut memungkinkan perangkat untuk terhubung menggunakan ClientID1, clientID2, atau clientID3. Ini memberikan izin untuk menerbitkan 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 "/clientID1”. sensor/device 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 to/from topik pesan dengan atribut benda dalam nama topik

Berikut ini menunjukkan contoh untuk perangkat terdaftar untuk mempublikasikan, berlangganan, dan menerima to/from topik pesan yang namanya menyertakan atribut benda.

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 menyertakan atribut benda. Jika nama benda dalam registri memiliki version=v1 danlocation=Seattle, perangkat akan dapat mempublikasikan ke topik "sensor/v1“, dan berlangganan dan menerima 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 benda 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 penerbitan pesan ke subtopik nama topik

Berikut ini menunjukkan contoh perangkat terdaftar dan tidak terdaftar untuk menerbitkan 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 menerbitkan ke semua topik yang diawali dengan “departement/” tetapi tidak ke subtopik "department/admins”.

{ "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 di AWS IoT Core registri, kebijakan berikut memungkinkan perangkat untuk terhubung menggunakan ClientID1, clientID2, atau clientID3. Ini memberikan izin untuk menerbitkan ke semua topik yang diawali dengan “departement/” tetapi tidak ke subtopik "department/admins”.

{ "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 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”. NotResourceDengan menggunakan pernyataan untukiot:Receive, kami mengizinkan perangkat menerima pesan dari semua topik yang telah berlangganan 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 di 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”. NotResourceDengan menggunakan pernyataan untukiot:Receive, kami mengizinkan perangkat menerima pesan dari semua topik yang telah berlangganan 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 Karakter pengganti 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 "/karyawan”. department/engineering Demikian pula, perangkat dapat berlangganan topik “location/#” tetapi tidak ke topik "location/Seattle”. Namun, setelah perangkat berlangganan topik “departemen/+/karyawan”, kebijakan akan memungkinkan mereka untuk menerima pesan dari topik "/karyawan”. department/engineering Demikian pula, setelah perangkat berlangganan topik “lokasi/#”, mereka akan menerima pesan dari topik "location/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 di 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 "/karyawan”. department/engineering Demikian pula, perangkat dapat berlangganan topik “location/#” tetapi tidak "location/Seattle”. Namun, setelah perangkat berlangganan topik “departemen/+/karyawan”, kebijakan akan memungkinkan mereka untuk menerima pesan dari topik "/karyawan”. department/engineering Demikian pula, setelah perangkat berlangganan topik “lokasi/#”, mereka akan menerima pesan dari topik "location/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 melakukan otentikasi 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 melakukan otentikasi dengan penyedia identitas. Amazon Cognito menyediakan pengenal dan AWS kredensi unik untuk mendukung identitas yang tidak diautentikasi. Untuk informasi selengkapnya, lihat Otorisasi dengan identitas Amazon Cognito.

Untuk operasi berikut, gunakan AWS IoT Core kebijakan AWS IoT Core yang dilampirkan ke identitas Amazon Cognito melalui AttachPolicy API. 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 API. AWS IoT Core AttachPolicy

Pengguna yang diautentikasi dan tidak diautentikasi adalah jenis identitas yang berbeda. Jika Anda tidak melampirkan AWS IoT kebijakan ke Amazon Cognito Identity, pengguna yang diautentikasi 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 menerbitkan pesan melalui HTTP pada topik khusus untuk 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, per AWS IoT Core timbangkan kedua 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 tersebut tidak sah.

MQTT

Untuk mengizinkan identitas Amazon Cognito yang tidak diautentikasi menerbitkan pesan MQTT WebSocket pada topik khusus untuk 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, per AWS IoT Core timbangkan 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 tersebut tidak sah.