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 MQTT klien,HTTP, atau WebSocket. Saat Anda terhubung dengan MQTT klien, Anda mengautentikasi dengan sertifikat X.509. Saat Anda terhubung HTTP atau WebSocket protokol, Anda mengautentikasi dengan Signature Version 4 dan Amazon Cognito.
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 dalam MQTT dan kebijakan AWS IoT Core
MQTTdan AWS IoT Core kebijakan memiliki karakter wildcard yang berbeda dan Anda harus memilihnya setelah mempertimbangkan dengan cermat. DiMQTT, karakter wildcard +
dan #
digunakan dalam filter MQTT topik 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 MQTT wildcard, +
dan #
diperlakukan sebagai karakter tanpa arti khusus. Untuk mendeskripsikan beberapa nama topik dan filter topik dalam resource
atribut kebijakan, gunakan karakter *
dan ?
wildcard sebagai pengganti karakter MQTT wildcard.
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 MQTT topik. Untuk membantu membatasi spesifikasi wildcard ke tingkat filter MQTT topik tunggal, pertimbangkan untuk menggunakan beberapa ?
karakter. Untuk informasi selengkapnya tentang penggunaan karakter wildcard dalam resource kebijakan dan contoh lainnya tentang apa yang cocok, lihat Menggunakan wildcard di resource. ARNs
Tabel di bawah ini menunjukkan karakter wildcard berbeda yang digunakan MQTT dan AWS IoT Core kebijakan untuk MQTT klien.
Karakter wildcard |
Apakah MQTT karakter wildcard |
Contoh di MQTT |
Apakah karakter wildcard AWS IoT Core kebijakan |
Contoh dalam AWS IoT Core kebijakan untuk MQTT klien |
# |
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 clientId 1, clientId 2 atau clientId 3. 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”.
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 clientId 1, clientId 2 atau clientId 3. 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 ini 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 clientId 1, clientId 2 atau clientId 3. 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 clientId 1, itu akan dapat mempublikasikan ke topik “clientIdsensor/perangkat/ 1". 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.
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 dari 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 clientId 1, clientId 2 atau clientId 3. 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 clientId 1, clientId 2 atau clientId 3. 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 MQTT karakter wildcard
MQTTkarakter wildcard + dan # diperlakukan sebagai string literal, tetapi mereka tidak diperlakukan sebagai wildcard saat digunakan dalam kebijakan. AWS IoT Core InMQTT, + dan # diperlakukan sebagai wildcard hanya saat berlangganan filter topik tetapi sebagai string literal di semua konteks lainnya. Kami menyarankan Anda hanya menggunakan MQTT wildcard ini sebagai bagian dari AWS IoT Core kebijakan setelah mempertimbangkan dengan cermat.
Berikut ini menunjukkan contoh untuk hal-hal terdaftar dan tidak terdaftar menggunakan MQTT wildcard dalam AWS IoT Core kebijakan. 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 clientId 1, clientId 2 atau clientId 3. 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 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. 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 IAM peran dan kebijakan tersebut. AWS IoT Core Anda melampirkan kebijakan IAM peran 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.
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 HTTP tentang topik khusus Identitas Amazon Cognito, lampirkan kebijakan berikut IAM 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. AWS IoT Core AttachPolicyAPI
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 MQTT memublikasikan pesan WebSocket tentang topik khusus Identitas Amazon Cognito di akun Anda, lampirkan kebijakan berikut IAM 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. AWS IoT Core AttachPolicyAPI
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.