

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

# Otorisasi
<a name="iot-authorization"></a>

Otorisasi adalah proses pemberian izin untuk identitas yang diautentikasi. Anda memberikan izin dalam AWS IoT Core menggunakan AWS IoT Core dan kebijakan IAM. Topik ini mencakup AWS IoT Core kebijakan. Untuk informasi selengkapnya tentang kebijakan IAM, lihat [Identitas dan manajemen akses untuk AWS IoT](security-iam.md) dan[Bagaimana AWS IoT bekerja dengan IAM](security_iam_service-with-iam.md).

AWS IoT Core kebijakan menentukan apa yang dapat dilakukan identitas yang diautentikasi. Identitas yang diautentikasi digunakan oleh perangkat, aplikasi seluler, aplikasi web, dan aplikasi desktop. Identitas yang diautentikasi bahkan bisa menjadi pengguna yang mengetik perintah AWS IoT Core CLI. Identitas dapat menjalankan AWS IoT Core operasi hanya jika memiliki kebijakan yang memberinya izin untuk operasi tersebut.

 AWS IoT Core Kebijakan dan kebijakan IAM digunakan AWS IoT Core untuk mengontrol operasi yang dapat dilakukan oleh identitas (juga disebut *prinsipal*). Jenis kebijakan yang Anda gunakan bergantung pada jenis identitas yang Anda gunakan untuk mengautentikasi. AWS IoT Core

AWS IoT Core operasi dibagi menjadi dua kelompok: 
+ Control plane API memungkinkan Anda untuk melakukan tugas-tugas administratif seperti membuat atau memperbarui sertifikat, hal-hal, aturan, dan sebagainya.
+ Data plane API memungkinkan Anda mengirim data ke dan menerima data dari AWS IoT Core. 

Jenis kebijakan yang Anda gunakan bergantung pada apakah Anda menggunakan bidang kontrol atau API bidang data.

Tabel berikut menunjukkan tipe identitas, protokol yang mereka gunakan, dan jenis kebijakan yang dapat digunakan untuk otorisasi.


**AWS IoT Core API pesawat data dan tipe kebijakan**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot/latest/developerguide/iot-authorization.html)


**AWS IoT Core API bidang kontrol dan jenis kebijakan**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot/latest/developerguide/iot-authorization.html)

AWS IoT Core kebijakan dilampirkan ke sertifikat X.509, identitas Amazon Cognito, atau grup hal. Kebijakan IAM dilampirkan ke pengguna, grup, atau peran IAM. Jika Anda menggunakan AWS IoT konsol atau AWS IoT Core CLI untuk melampirkan kebijakan (ke sertifikat, Identitas Amazon Cognito, atau grup hal), Anda menggunakan kebijakan. AWS IoT Core Jika tidak, Anda menggunakan kebijakan IAM. AWS IoT Core kebijakan yang dilampirkan pada grup sesuatu berlaku untuk apa pun dalam kelompok benda itu. Agar AWS IoT Core kebijakan berlaku, nama `clientId` dan benda harus cocok.

Otorisasi berbasis kebijakan adalah alat yang ampuh. Ini memberi Anda kontrol penuh atas apa yang dapat dilakukan perangkat, pengguna, atau aplikasi AWS IoT Core. Misalnya, pertimbangkan perangkat yang terhubung AWS IoT Core dengan sertifikat. Anda dapat mengizinkan perangkat mengakses semua topik MQTT, atau Anda dapat membatasi aksesnya ke satu topik. Dalam contoh lain, pertimbangkan pengguna mengetik perintah CLI di baris perintah. Dengan menggunakan kebijakan, Anda dapat mengizinkan atau menolak akses ke perintah atau AWS IoT Core sumber daya apa pun untuk pengguna. Anda juga dapat mengontrol akses aplikasi ke AWS IoT Core sumber daya.

Perubahan yang dilakukan pada kebijakan dapat memakan waktu beberapa menit untuk menjadi efektif karena cara menyimpan dokumen kebijakan dalam AWS IoT cache. Artinya, mungkin perlu beberapa menit untuk mengakses sumber daya yang baru-baru ini diberikan akses, dan sumber daya dapat diakses selama beberapa menit setelah aksesnya dicabut.

## AWS pelatihan dan sertifikasi
<a name="iot-authorization-training"></a>

Untuk informasi tentang otorisasi AWS IoT Core, ikuti kursus [Deep Dive into AWS IoT Core Authentication and Authorization](https://www.aws.training/Details/Curriculum?id=42335) di situs web AWS Pelatihan dan Sertifikasi.

# AWS IoT Core kebijakan
<a name="iot-policies"></a>

AWS IoT Core Kebijakan adalah dokumen JSON. Mereka mengikuti konvensi yang sama dengan kebijakan IAM. AWS IoT Core mendukung kebijakan bernama sehingga banyak identitas dapat mereferensikan dokumen kebijakan yang sama. Kebijakan bernama diberi versi sehingga dapat dengan mudah diputar kembali.

AWS IoT Core kebijakan memungkinkan Anda untuk mengontrol akses ke bidang AWS IoT Core data. Bidang AWS IoT Core data terdiri dari operasi yang memungkinkan Anda terhubung ke broker AWS IoT Core pesan, mengirim dan menerima pesan MQTT, dan mendapatkan atau memperbarui Device Shadow sesuatu.

 AWS IoT Core Kebijakan adalah dokumen JSON yang berisi satu atau beberapa pernyataan kebijakan. Setiap pernyataan berisi:
+ `Effect`, yang menentukan apakah tindakan tersebut diizinkan atau ditolak.
+ `Action`, yang menentukan tindakan yang diizinkan atau ditolak oleh kebijakan.
+ `Resource`, yang menentukan sumber daya atau sumber daya tempat tindakan diizinkan atau ditolak.

Perubahan yang dilakukan pada kebijakan dapat memakan waktu antara 6 dan 8 menit untuk menjadi efektif karena cara AWS IoT menyimpan dokumen kebijakan. Artinya, mungkin perlu beberapa menit untuk mengakses sumber daya yang baru-baru ini diberikan akses, dan sumber daya dapat diakses selama beberapa menit setelah aksesnya dicabut.

AWS IoT Core kebijakan dapat dilampirkan ke sertifikat X.509, identitas Amazon Cognito, dan grup hal. Kebijakan yang dilampirkan pada grup sesuatu berlaku untuk apa pun dalam grup itu. Agar kebijakan berlaku, nama `clientId` dan benda harus cocok. AWS IoT Core kebijakan mengikuti logika evaluasi kebijakan yang sama dengan kebijakan IAM. Secara default, semua kebijakan ditolak secara implisit. Izin eksplisit dalam kebijakan berbasis identitas atau berbasis sumber daya akan mengesampingkan perilaku default. Penolakan secara tegas dalam kebijakan apa pun akan mengesampingkan izin apa pun. Untuk informasi selengkapnya, lihat [Logika evaluasi kebijakan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow) di *Panduan AWS Identity and Access Management Pengguna*.

**Topics**
+ [AWS IoT Core tindakan kebijakan](iot-policy-actions.md)
+ [AWS IoT Core sumber daya aksi](iot-action-resources.md)
+ [AWS IoT Core variabel kebijakan](iot-policy-variables.md)
+ [Pencegahan "confused deputy" lintas layanan](cross-service-confused-deputy-prevention.md)
+ [AWS IoT Core contoh kebijakan](example-iot-policies.md)
+ [Otorisasi dengan identitas Amazon Cognito](cog-iot-policies.md)

# AWS IoT Core tindakan kebijakan
<a name="iot-policy-actions"></a>

Tindakan kebijakan berikut ditentukan oleh AWS IoT Core:Tindakan Kebijakan MQTT

`iot:Connect`  
Merupakan izin untuk terhubung ke broker AWS IoT Core pesan. `iot:Connect`Izin diperiksa setiap kali `CONNECT` permintaan dikirim ke broker. Broker pesan tidak mengizinkan dua klien dengan ID klien yang sama untuk tetap terhubung pada saat yang sama. Setelah klien kedua terhubung, broker menutup koneksi yang ada. Gunakan `iot:Connect` izin untuk memastikan hanya klien yang berwenang menggunakan ID klien tertentu yang dapat terhubung.

`iot:DeleteConnection`  
Merupakan izin untuk memutuskan sambungan klien MQTT yang terhubung dari. AWS IoT Core`iot:DeleteConnection`Izin diperiksa setiap kali permintaan dibuat untuk memutuskan sambungan klien secara paksa. Saat Anda memutuskan sambungan klien, AWS IoT Core menutup koneksi jaringan klien dan secara opsional membersihkan status sesi.

`iot:GetRetainedMessage`  
Merupakan izin untuk mendapatkan isi dari satu pesan yang dipertahankan. Pesan yang disimpan adalah pesan yang diterbitkan dengan tanda RETAIN yang disetel dan disimpan oleh AWS IoT Core. Untuk izin mendapatkan daftar semua pesan yang disimpan akun, lihat[iot:ListRetainedMessages](#action_listretainedmessages).

`iot:ListRetainedMessages`  
Merupakan izin untuk mengambil informasi ringkasan tentang pesan yang disimpan akun, tetapi bukan isi pesan. Pesan yang disimpan adalah pesan yang diterbitkan dengan tanda RETAIN yang disetel dan disimpan oleh AWS IoT Core. Sumber daya ARN yang ditentukan untuk tindakan ini harus. `*` Untuk izin mendapatkan isi dari satu pesan yang disimpan, lihat[iot:GetRetainedMessage](#action_getretainpublish).

`iot:Publish`  
Merupakan izin untuk menerbitkan topik MQTT. Izin ini diperiksa setiap kali permintaan PUBLISH dikirim ke broker. Anda dapat menggunakan ini untuk memungkinkan klien mempublikasikan ke pola topik tertentu.  
Untuk memberikan `iot:Publish` izin, Anda juga harus memberikan `iot:Connect` izin.

`iot:Receive`  
Merupakan izin untuk menerima pesan dari AWS IoT Core. `iot:Receive`Izin dikonfirmasi setiap kali pesan dikirimkan ke klien. Karena izin ini diperiksa pada setiap pengiriman, Anda dapat menggunakannya untuk mencabut izin ke klien yang saat ini berlangganan topik.

`iot:RetainPublish`  
Merupakan izin untuk mempublikasikan pesan MQTT dengan set flag RETAIN.  
Untuk memberikan `iot:RetainPublish` izin, Anda juga harus memberikan `iot:Publish` izin.

`iot:Subscribe`  
Merupakan izin untuk berlangganan filter topik. Izin ini diperiksa setiap kali permintaan SUBSCRIBE dikirim ke broker. Gunakan untuk memungkinkan klien berlangganan topik yang sesuai dengan pola topik tertentu.  
Untuk memberikan `iot:Subscribe` izin, Anda juga harus memberikan `iot:Connect` izin.Tindakan Kebijakan Device Shadow

`iot:DeleteThingShadow`  
Merupakan izin untuk menghapus Device Shadow sesuatu. `iot:DeleteThingShadow`Izin dicentang setiap kali permintaan dibuat untuk menghapus konten Device Shadow sesuatu.

`iot:GetThingShadow`  
Merupakan izin untuk mengambil Device Shadow sesuatu. `iot:GetThingShadow`Izin diperiksa setiap kali permintaan dibuat untuk mengambil konten Device Shadow sesuatu.

`iot:ListNamedShadowsForThing`  
Merupakan izin untuk membuat daftar sesuatu bernama Shadows. `iot:ListNamedShadowsForThing`Izin diperiksa setiap kali permintaan dibuat untuk mencantumkan sesuatu yang bernama Shadows.

`iot:UpdateThingShadow`  
Merupakan izin untuk memperbarui bayangan perangkat. `iot:UpdateThingShadow`Izin diperiksa setiap kali permintaan dibuat untuk memperbarui konten Device Shadow sesuatu.

**catatan**  
Tindakan kebijakan eksekusi pekerjaan hanya berlaku untuk titik akhir HTTP TLS. Jika Anda menggunakan titik akhir MQTT, Anda harus menggunakan tindakan kebijakan MQTT yang ditentukan dalam topik ini.  
Untuk contoh kebijakan pelaksanaan pekerjaan yang menunjukkan hal ini, lihat [Contoh kebijakan pekerjaan dasar](basic-jobs-example.md) yang berfungsi dengan protokol MQTT.Tindakan AWS IoT Core Kebijakan Eksekusi Job

`iotjobsdata:DescribeJobExecution`  
Merupakan izin untuk mengambil eksekusi pekerjaan untuk hal tertentu. `iotjobsdata:DescribeJobExecution`Izin diperiksa setiap kali permintaan dibuat untuk mendapatkan eksekusi pekerjaan.

`iotjobsdata:GetPendingJobExecutions`  
Merupakan izin untuk mengambil daftar pekerjaan yang tidak dalam status terminal untuk suatu hal. `iotjobsdata:GetPendingJobExecutions`Izin diperiksa setiap kali permintaan dibuat untuk mengambil daftar. 

`iotjobsdata:UpdateJobExecution`  
Merupakan izin untuk memperbarui eksekusi pekerjaan. `iotjobsdata:UpdateJobExecution`Izin diperiksa setiap kali permintaan dibuat untuk memperbarui status eksekusi pekerjaan.

`iotjobsdata:StartNextPendingJobExecution`  
Merupakan izin untuk mendapatkan dan memulai eksekusi pekerjaan tertunda berikutnya untuk suatu hal. (Yaitu, untuk memperbarui eksekusi pekerjaan dengan status QUEUED ke IN\$1PROGRESS.) `iotjobsdata:StartNextPendingJobExecution`Izin diperiksa setiap kali permintaan dibuat untuk memulai eksekusi pekerjaan tertunda berikutnya.AWS IoT Core Tindakan Kebijakan Penyedia Kredensyal

`iot:AssumeRoleWithCertificate`  
Merupakan izin untuk memanggil penyedia AWS IoT Core kredensi untuk mengambil peran IAM dengan otentikasi berbasis sertifikat. `iot:AssumeRoleWithCertificate`Izin diperiksa setiap kali permintaan dibuat ke penyedia AWS IoT Core kredensi untuk mengambil peran.

# AWS IoT Core sumber daya aksi
<a name="iot-action-resources"></a>

Untuk menentukan sumber daya untuk tindakan AWS IoT Core kebijakan, gunakan Nama Sumber Daya Amazon (ARN) sumber daya. Semua sumber daya ARNs mengikuti format berikut:

```
arn:partition:iot:region:AWS-account-ID:Resource-type/Resource-name
```

Tabel berikut menunjukkan sumber daya untuk menentukan untuk setiap jenis tindakan. Contoh ARN adalah untuk ID akun`123456789012`, di partisi`aws`, dan khusus untuk wilayah tersebut. `us-east-1` Untuk informasi selengkapnya tentang format ARNs, lihat [Amazon Resource Names (ARNs)](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference-arns.html) dari Panduan AWS Identity and Access Management Pengguna.


| Tindakan | Tipe sumber daya | Nama sumber daya | Contoh ARN | 
| --- | --- | --- | --- | 
| iot:Connect | client |  ID klien  | arn:aws:iot:us-east-1:123456789012:client/myClientId | 
| iot:DeleteConnection | client |  ID klien  | arn:aws:iot:us-east-1:123456789012:client/myClientId | 
| iot:DeleteThingShadow | thing |  Nama benda, dan nama bayangan, jika berlaku  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne arn:aws:iot:us-east-1:123456789012:thing/thingOne/shadowOne  | 
| iotjobsdata:DescribeJobExecution | thing |  Nama benda itu  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne  | 
| iotjobsdata:GetPendingJobExecutions | thing |  Nama benda itu  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne  | 
| iot:GetRetainedMessage | topic |  Topik pesan yang dipertahankan  |  arn:aws:iot:us-east-1:123456789012:topic/myTopicName  | 
| iot:GetThingShadow | thing |  Nama benda, dan nama bayangan, jika berlaku  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne arn:aws:iot:us-east-1:123456789012:thing/thingOne/shadowOne  | 
| iot:ListNamedShadowsForThing | Semua | Semua |  \$1 | 
| iot:ListRetainedMessages | Semua | Semua |  \$1 | 
| iot:Publish | topic |  String topik  | arn:aws:iot:us-east-1:123456789012:topic/myTopicName | 
| iot:Receive | topic |  String topik  | arn:aws:iot:us-east-1:123456789012:topic/myTopicName | 
| iot:RetainPublish | topic |  Topik untuk dipublikasikan dengan set bendera RESTAIN  |  arn:aws:iot:us-east-1:123456789012:topic/myTopicName  | 
| iotjobsdata:StartNextPendingJobExecution | thing |  Nama benda itu  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne  | 
| iot:Subscribe | topicfilter | String filter topik | arn:aws:iot:us-east-1:123456789012:topicfilter/myTopicFilter | 
| iotjobsdata:UpdateJobExecution | thing |  Nama benda itu  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne  | 
| iot:UpdateThingShadow | thing |  Nama benda, dan nama bayangan, jika berlaku  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne arn:aws:iot:us-east-1:123456789012:thing/thingOne/shadowOne  | 
| iot:AssumeRoleWithCertificate | rolealias |  Alias peran yang menunjuk ke peran ARN  |  arn:aws:iot:us-east-1:123456789012:rolealias/CredentialProviderRole\$1alias | 

# AWS IoT Core variabel kebijakan
<a name="iot-policy-variables"></a>

AWS IoT Core mendefinisikan variabel kebijakan yang dapat digunakan dalam AWS IoT Core kebijakan di `Resource` atau `Condition` blok. Ketika kebijakan dievaluasi, variabel kebijakan diganti dengan nilai aktual. Misalnya, jika perangkat terhubung ke broker AWS IoT Core pesan dengan ID klien 100-234-3456, variabel `iot:ClientId` kebijakan diganti dalam dokumen kebijakan dengan 100-234-3456.

AWS IoT Core kebijakan dapat menggunakan karakter wildcard dan mengikuti konvensi serupa dengan kebijakan IAM. Memasukkan `*` (asterik) dalam string dapat diperlakukan sebagai wildcard, cocok dengan karakter apa pun. Misalnya, Anda dapat menggunakan `*` untuk mendeskripsikan beberapa nama topik MQTT dalam `Resource` atribut kebijakan. Karakter `+` dan `#` diperlakukan sebagai string literal dalam kebijakan. Untuk contoh kebijakan yang menunjukkan cara menggunakan wildcard, lihat[Menggunakan karakter wildcard di MQTT dan kebijakan AWS IoT Core](pub-sub-policy.md#pub-sub-policy-cert).

Anda juga dapat menggunakan variabel kebijakan yang telah ditentukan dengan nilai tetap untuk mewakili karakter yang memiliki arti khusus. Karakter khusus ini termasuk`$(*)`,`$(?)`, dan`$($)`. Untuk informasi selengkapnya tentang variabel kebijakan dan karakter khusus, lihat [Elemen Kebijakan IAM: Variabel dan tag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html) dan [Membuat kondisi dengan beberapa kunci atau nilai](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html).

**Topics**
+ [Variabel AWS IoT Core kebijakan dasar](basic-policy-variables.md)
+ [Variabel kebijakan hal](thing-policy-variables.md)
+ [Variabel kebijakan Sertifikat X.509 AWS IoT Core](cert-policy-variables.md)

# Variabel AWS IoT Core kebijakan dasar
<a name="basic-policy-variables"></a>

AWS IoT Core mendefinisikan variabel kebijakan dasar berikut:
+ `aws:SourceIp`: Alamat IP klien yang terhubung ke broker AWS IoT Core pesan.
+ `iot:ClientId`: ID klien yang digunakan untuk terhubung ke broker AWS IoT Core pesan.
+ `iot:DomainName`: Nama domain klien yang terhubung ke AWS IoT Core.

**Topics**
+ [Contoh `ClientId` dan variabel `SourceIp` kebijakan](#basic-policy-variables-example)
+ [Contoh variabel `iot:DomainName` kebijakan](#basic-policy-variables-example-domain)

## Contoh `ClientId` dan variabel `SourceIp` kebijakan
<a name="basic-policy-variables-example"></a>

 AWS IoT Core Kebijakan berikut menunjukkan kebijakan yang menggunakan variabel kebijakan. `aws:SourceIp`dapat digunakan dalam elemen Kondisi kebijakan Anda untuk mengizinkan prinsipal membuat permintaan API hanya dalam rentang alamat tertentu. Sebagai contoh, lihat [Mengotorisasi pengguna dan layanan cloud untuk menggunakan AWS IoT Jobs](iam-policy-users-jobs.md).

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/clientid1"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/my/topic/${iot:ClientId}"
			],
			"Condition": {
				"IpAddress": {
					"aws:SourceIp": "123.45.167.89"
				}
			}
		}
	]
}
```

Dalam contoh `${iot:ClientId}` ini, diganti dengan ID klien yang terhubung ke broker AWS IoT Core pesan ketika kebijakan dievaluasi. Bila Anda menggunakan variabel kebijakan seperti`${iot:ClientId}`, Anda dapat secara tidak sengaja membuka akses ke topik yang tidak diinginkan. Misalnya, jika Anda menggunakan kebijakan yang digunakan `${iot:ClientId}` untuk menentukan filter topik:

```
{
	"Effect": "Allow",
	"Action": [
		"iot:Subscribe"
	],
	"Resource": [
		"arn:aws:iot:us-east-1:123456789012:topicfilter/my/${iot:ClientId}/topic"
	]
}
```

Klien dapat terhubung menggunakan `+` sebagai ID klien. Ini akan memungkinkan pengguna untuk berlangganan topik apa pun yang cocok dengan filter topik`my/+/topic`. Untuk melindungi dari kesenjangan keamanan tersebut, gunakan tindakan `iot:Connect` kebijakan untuk mengontrol klien mana yang IDs dapat terhubung. Misalnya, kebijakan ini hanya mengizinkan klien yang ID kliennya `clientid1` terhubung:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/clientid"
			]
		}
	]
}
```

**catatan**  
Menggunakan variabel kebijakan `${iot:ClientId}` dengan tidak `Connect` disarankan. Tidak ada pemeriksaan pada nilai`ClientId`, sehingga lampiran dengan ID klien yang berbeda dapat lulus validasi tetapi menyebabkan pemutusan. Karena `ClientId` ada yang diizinkan, menyetel ID klien acak dapat melewati kebijakan grup hal.

## Contoh variabel `iot:DomainName` kebijakan
<a name="basic-policy-variables-example-domain"></a>

Anda dapat menambahkan variabel `iot:DomainName` kebijakan untuk membatasi domain mana yang diizinkan untuk digunakan. Menambahkan variabel `iot:DomainName` kebijakan memungkinkan perangkat untuk terhubung hanya ke titik akhir tertentu yang dikonfigurasi.

Kebijakan berikut memungkinkan perangkat untuk terhubung ke domain yang ditentukan.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": {
		"Sid": "AllowConnectionsToSpecifiedDomain",
		"Effect": "Allow",
		"Action": [
			"iot:Connect"
		],
		"Resource": "arn:aws:iot:us-east-1:123456789012:client/clientid",
		"Condition": {
			"StringEquals": {
				"iot:DomainName": "d1234567890abcdefghij-ats.iot.us-east-1.amazonaws.com"
			}
		}
	}
}
```

Kebijakan berikut menolak perangkat untuk terhubung ke domain yang ditentukan.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": {
		"Sid": "DenyConnectionsToSpecifiedDomain",
		"Effect": "Deny",
		"Action": [
			"iot:Connect"
		],
		"Resource": "arn:aws:iot:us-east-1:123456789012:client/clientid",
		"Condition": {
			"StringEquals": {
				"iot:DomainName": "d1234567890abcdefghij-ats.iot.us-east-1.amazonaws.com"
			}
		}
	}
}
```

Untuk informasi selengkapnya tentang operator bersyarat kebijakan, lihat [elemen kebijakan IAM JSON:](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) Operator kondisi. Untuk informasi selengkapnya tentang konfigurasi domain, lihat [Apa itu konfigurasi domain?](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html) .

# Variabel kebijakan hal
<a name="thing-policy-variables"></a>

Variabel kebijakan hal memungkinkan Anda menulis AWS IoT Core kebijakan yang memberikan atau menolak izin berdasarkan properti benda seperti nama benda, tipe benda, dan nilai atribut benda. Anda dapat menggunakan variabel kebijakan hal untuk menerapkan kebijakan yang sama untuk mengontrol banyak AWS IoT Core perangkat. Untuk informasi selengkapnya tentang penyediaan perangkat, lihat Penyediaan [Perangkat](iot-provision.html).

Jika Anda menggunakan asosiasi hal non-eksklusif, sertifikat yang sama dapat dilampirkan ke banyak hal. Untuk mempertahankan asosiasi yang jelas dan untuk menghindari potensi konflik, Anda harus mencocokkan ID klien Anda dengan nama benda. Dalam hal ini, Anda mendapatkan nama benda dari ID klien dalam `Connect` pesan MQTT yang dikirim ketika sesuatu terhubung ke. AWS IoT Core

Ingatlah hal berikut saat menggunakan variabel kebijakan hal dalam AWS IoT Core kebijakan.
+ Gunakan [AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html)API untuk melampirkan sertifikat atau prinsipal (identitas Amazon Cognito yang diautentikasi) ke suatu hal.
+ Jika asosiasi hal non-eksklusif ada, saat Anda mengganti nama benda dengan variabel kebijakan hal, nilai `clientId` dalam pesan koneksi MQTT atau koneksi TLS harus sama persis dengan nama benda.

Variabel kebijakan hal berikut tersedia:
+ `iot:Connection.Thing.ThingName`

  Ini menyelesaikan nama benda dalam AWS IoT Core registri yang kebijakannya sedang dievaluasi. AWS IoT Core menggunakan sertifikat yang disajikan perangkat saat mengautentikasi untuk menentukan hal mana yang akan digunakan untuk memverifikasi koneksi. Variabel kebijakan ini hanya tersedia jika perangkat terhubung melalui MQTT atau MQTT melalui protokol. WebSocket 
+ `iot:Connection.Thing.ThingTypeName`

  Ini menyelesaikan jenis hal yang terkait dengan hal yang kebijakan sedang dievaluasi. ID klien WebSocket MQTT/koneksi harus sama dengan nama benda. Variabel kebijakan ini hanya tersedia saat menghubungkan melalui MQTT atau MQTT melalui protokol. WebSocket
+ `iot:Connection.Thing.Attributes[attributeName]`

  Ini menyelesaikan nilai atribut tertentu yang terkait dengan hal yang kebijakan sedang dievaluasi. Sesuatu dapat memiliki hingga 50 atribut. Setiap atribut tersedia sebagai variabel kebijakan: `iot:Connection.Thing.Attributes[attributeName]` di mana *attributeName* adalah nama atribut. ID klien MQTT/WebSocket koneksi harus sama dengan nama benda. Variabel kebijakan ini hanya tersedia saat menghubungkan melalui MQTT atau MQTT melalui protokol. WebSocket 
+ `iot:Connection.Thing.IsAttached`

  `iot:Connection.Thing.IsAttached: ["true"]`Menegakkan bahwa hanya perangkat yang terdaftar AWS IoT dan dilampirkan pada prinsipal yang dapat mengakses izin di dalam kebijakan. Anda dapat menggunakan variabel ini untuk mencegah perangkat terhubung AWS IoT Core jika menunjukkan sertifikat yang tidak dilampirkan ke benda IoT di AWS IoT Core registri.Variabel ini memiliki nilai `true` atau `false` menunjukkan bahwa hal yang menghubungkan dilampirkan ke sertifikat atau identitas Amazon Cognito di registri menggunakan API. [AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html) Nama benda diambil sebagai ID klien. 

Jika ID klien Anda cocok dengan nama item Anda, atau jika Anda melampirkan sertifikat Anda ke sesuatu secara eksklusif, menggunakan variabel kebijakan dalam definisi kebijakan dapat menyederhanakan manajemen kebijakan. Alih-alih membuat kebijakan individual untuk setiap hal IoT, Anda dapat menentukan satu kebijakan menggunakan variabel kebijakan hal. Kebijakan ini dapat diterapkan ke semua perangkat secara dinamis. Berikut ini adalah contoh kebijakan untuk menunjukkan cara kerjanya. Untuk informasi selengkapnya, lihat [Mengaitkan AWS IoT sesuatu dengan koneksi klien MQTT](exclusive-thing.md).

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Condition": {
				"StringLike": {
					"iot:ClientId": "*${iot:Connection.Thing.Attributes[envType]}"
				}
			},
			"Effect": "Allow",
			"Action": "iot:Connect",
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/*"
		}
	]
}
```

Contoh kebijakan ini memungkinkan hal-hal untuk terhubung AWS IoT Core jika ID klien mereka diakhiri dengan nilai `envType` atribut mereka. Hanya hal-hal dengan pola ID klien yang cocok yang akan diizinkan untuk terhubung.

# Variabel kebijakan Sertifikat X.509 AWS IoT Core
<a name="cert-policy-variables"></a>

Variabel kebijakan sertifikat X.509 membantu dengan kebijakan penulisan. AWS IoT Core Kebijakan ini memberikan izin berdasarkan atribut sertifikat X.509. Bagian berikut menjelaskan cara menggunakan variabel kebijakan sertifikat ini.

**penting**  
Jika sertifikat X.509 Anda tidak menyertakan atribut sertifikat tertentu tetapi variabel kebijakan sertifikat terkait digunakan dalam dokumen kebijakan Anda, evaluasi kebijakan dapat menyebabkan perilaku yang tidak terduga.

## CertificateId
<a name="cert-policy-variables-certid"></a>

Di [RegisterCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCertificate.html)API, `certificateId` muncul di badan respons. Untuk mendapatkan informasi tentang sertifikat Anda, gunakan `certificateId` in [DescribeCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeCertificate.html).

## Atribut penerbit
<a name="issuer-attributes"></a>

Variabel AWS IoT Core kebijakan berikut mendukung mengizinkan atau menolak izin, berdasarkan atribut sertifikat yang ditetapkan oleh penerbit sertifikat.
+ `iot:Certificate.Issuer.DistinguishedNameQualifier`
+ `iot:Certificate.Issuer.Country`
+ `iot:Certificate.Issuer.Organization`
+ `iot:Certificate.Issuer.OrganizationalUnit`
+ `iot:Certificate.Issuer.State`
+ `iot:Certificate.Issuer.CommonName`
+ `iot:Certificate.Issuer.SerialNumber`
+ `iot:Certificate.Issuer.Title`
+ `iot:Certificate.Issuer.Surname`
+ `iot:Certificate.Issuer.GivenName`
+ `iot:Certificate.Issuer.Initials`
+ `iot:Certificate.Issuer.Pseudonym`
+ `iot:Certificate.Issuer.GenerationQualifier` 

## Atribut subjek
<a name="subject-attributes"></a>

Variabel AWS IoT Core kebijakan berikut mendukung pemberian atau penolakan izin, berdasarkan atribut subjek sertifikat yang ditetapkan oleh penerbit sertifikat.
+ `iot:Certificate.Subject.DistinguishedNameQualifier`
+ `iot:Certificate.Subject.Country`
+ `iot:Certificate.Subject.Organization`
+ `iot:Certificate.Subject.OrganizationalUnit`
+ `iot:Certificate.Subject.State`
+ `iot:Certificate.Subject.CommonName`
+ `iot:Certificate.Subject.SerialNumber`
+ `iot:Certificate.Subject.Title`
+ `iot:Certificate.Subject.Surname`
+ `iot:Certificate.Subject.GivenName`
+ `iot:Certificate.Subject.Initials`
+ `iot:Certificate.Subject.Pseudonym`
+ `iot:Certificate.Subject.GenerationQualifier` 

Sertifikat X.509 menyediakan atribut ini dengan opsi untuk memuat satu atau lebih nilai. Secara default, variabel kebijakan untuk setiap atribut multi-nilai mengembalikan nilai pertama. Misalnya, `Certificate.Subject.Country` atribut mungkin berisi daftar nama negara, tetapi ketika dievaluasi dalam kebijakan, `iot:Certificate.Subject.Country` akan diganti dengan nama negara pertama.

Anda dapat meminta nilai atribut tertentu selain nilai pertama dengan menggunakan indeks berbasis satu. Misalnya, `iot:Certificate.Subject.Country.1` diganti dengan nama negara kedua di `Certificate.Subject.Country` atribut. Jika Anda menentukan nilai indeks yang tidak ada (misalnya, jika Anda meminta nilai ketiga ketika hanya ada dua nilai yang ditetapkan ke atribut), tidak ada substitusi yang dibuat dan otorisasi gagal. Anda dapat menggunakan `.List` akhiran pada nama variabel kebijakan untuk menentukan semua nilai atribut.

## Atribut nama alternatif penerbit
<a name="issuer-alternate-name-attributes"></a>

Variabel AWS IoT Core kebijakan berikut mendukung pemberian atau penolakan izin, berdasarkan atribut nama alternatif penerbit yang ditetapkan oleh penerbit sertifikat.
+ `iot:Certificate.Issuer.AlternativeName.RFC822Name`
+ `iot:Certificate.Issuer.AlternativeName.DNSName`
+ `iot:Certificate.Issuer.AlternativeName.DirectoryName`
+ `iot:Certificate.Issuer.AlternativeName.UniformResourceIdentifier`
+ `iot:Certificate.Issuer.AlternativeName.IPAddress`

## Atribut nama alternatif subjek
<a name="subject-alternate-name-attributes"></a>

Variabel AWS IoT Core kebijakan berikut mendukung pemberian atau penolakan izin, berdasarkan atribut nama alternatif subjek yang ditetapkan oleh penerbit sertifikat.
+ `iot:Certificate.Subject.AlternativeName.RFC822Name`
+ `iot:Certificate.Subject.AlternativeName.DNSName`
+ `iot:Certificate.Subject.AlternativeName.DirectoryName`
+ `iot:Certificate.Subject.AlternativeName.UniformResourceIdentifier`
+ `iot:Certificate.Subject.AlternativeName.IPAddress`

## Atribut lainnya
<a name="other-attributes"></a>

Anda dapat menggunakan `iot:Certificate.SerialNumber` untuk mengizinkan atau menolak akses ke AWS IoT Core sumber daya, berdasarkan nomor seri sertifikat. Variabel `iot:Certificate.AvailableKeys` kebijakan berisi nama semua variabel kebijakan sertifikat yang berisi nilai.

# Menggunakan variabel kebijakan sertifikat X.509
<a name="use-policy-variables"></a>

Topik ini memberikan rincian tentang cara menggunakan variabel kebijakan sertifikat. Variabel kebijakan sertifikat X.509 sangat penting saat Anda membuat AWS IoT Core kebijakan yang memberikan izin berdasarkan atribut sertifikat X.509. Jika sertifikat X.509 Anda tidak menyertakan atribut sertifikat tertentu tetapi variabel kebijakan sertifikat terkait digunakan dalam dokumen kebijakan Anda, evaluasi kebijakan dapat menyebabkan perilaku yang tidak terduga. Ini karena variabel kebijakan yang hilang tidak dievaluasi dalam pernyataan kebijakan.

**Topics**
+ [Contoh sertifikat X.509](#certificate-example)
+ [Menggunakan atribut penerbit sertifikat sebagai variabel kebijakan sertifikat](#issuer-attributes-policy)
+ [Menggunakan atribut subjek sertifikat sebagai variabel kebijakan sertifikat](#subject-attributes-policy)
+ [Menggunakan atribut nama alternatif Penerbit sertifikat sebagai variabel kebijakan sertifikat](#issuer-alternate-name-attributes-policy)
+ [Menggunakan atribut nama alternatif subjek sertifikat sebagai variabel kebijakan sertifikat](#subject-alternate-name-attributes-policy)
+ [Menggunakan atribut sertifikat lain sebagai variabel kebijakan sertifikat](#other-attributes-policy)
+ [X.509 Keterbatasan variabel kebijakan sertifikat](#policy-limits)
+ [Contoh kebijakan menggunakan variabel kebijakan sertifikat](#example-attributes-policy)

## Contoh sertifikat X.509
<a name="certificate-example"></a>

Sertifikat X.509 yang khas mungkin muncul sebagai berikut. Sertifikat contoh ini mencakup atribut sertifikat. Selama evaluasi AWS IoT Core kebijakan, atribut sertifikat berikut akan diisi sebagai variabel kebijakan sertifikat:`Serial Number`,,`Issuer`, `Subject``X509v3 Issuer Alternative Name`, dan`X509v3 Subject Alternative Name`.

```
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            92:12:85:cb:b7:a5:e0:86
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, O=IoT Devices, OU=SmartHome, ST=WA, CN=IoT Devices Primary CA, 
				GN=Primary CA1/initials=XY/dnQualifier=Example corp,
				SN=SmartHome/ title=CA1/pseudonym=Primary_CA/generationQualifier=2/serialNumber=987		
        Validity
            Not Before: Mar 26 03:25:40 2024 GMT
            Not After : Apr 28 03:25:40 2025 GMT
        Subject: C=US, O=IoT Devices, OU=LightBulb, ST=NY, CN=LightBulb Device Cert, 
				GN=Bulb/initials=ZZ/dnQualifier=Bulb001, 
				SN=Multi Color/title=RGB/pseudonym=RGB Device/generationQualifier=4/serialNumber=123
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    << REDACTED >>
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            X509v3 Key Usage: 
                Digital Signature, Non Repudiation, Key Encipherment
            X509v3 Subject Alternative Name: 
                DNS:example.com, IP Address:1.2.3.4, URI:ResourceIdentifier001, email:device1@example.com, DirName:/C=US/O=IoT/OU=SmartHome/CN=LightBulbCert
            X509v3 Issuer Alternative Name: 
                DNS:issuer.com, IP Address:5.6.7.8, URI:PrimarySignerCA, email:primary@issuer.com, DirName:/C=US/O=Issuer/OU=IoT Devices/CN=Primary Issuer CA
    Signature Algorithm: sha256WithRSAEncryption
         << REDACTED >>
```

## Menggunakan atribut penerbit sertifikat sebagai variabel kebijakan sertifikat
<a name="issuer-attributes-policy"></a>

Tabel berikut memberikan rincian tentang bagaimana atribut penerbit sertifikat akan diisi dalam kebijakan. AWS IoT Core 


**Atribut penerbit yang akan diisi dalam kebijakan**  

| Atribut penerbit sertifikat | Variabel kebijakan sertifikat | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot/latest/developerguide/use-policy-variables.html)  | 

## Menggunakan atribut subjek sertifikat sebagai variabel kebijakan sertifikat
<a name="subject-attributes-policy"></a>

Tabel berikut memberikan rincian tentang bagaimana atribut subjek sertifikat akan diisi dalam AWS IoT Core kebijakan.


**Atribut subjek yang akan diisi dalam kebijakan**  

| Atribut subjek sertifikat | Variabel kebijakan sertifikat | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot/latest/developerguide/use-policy-variables.html)  | 

## Menggunakan atribut nama alternatif Penerbit sertifikat sebagai variabel kebijakan sertifikat
<a name="issuer-alternate-name-attributes-policy"></a>

Tabel berikut memberikan rincian tentang bagaimana atribut nama alternatif penerbit sertifikat akan diisi dalam kebijakan. AWS IoT Core 


**Atribut nama alternatif penerbit yang akan diisi dalam kebijakan**  

| Nama Alternatif Penerbit X509v3 | Atribut dalam kebijakan | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot/latest/developerguide/use-policy-variables.html)  | 

## Menggunakan atribut nama alternatif subjek sertifikat sebagai variabel kebijakan sertifikat
<a name="subject-alternate-name-attributes-policy"></a>

Tabel berikut memberikan rincian tentang bagaimana atribut nama alternatif subjek sertifikat akan diisi dalam AWS IoT Core kebijakan.


**Atribut nama alternatif subjek yang akan diisi dalam kebijakan**  

| X509v3 Nama Alternatif Subjek | Atribut dalam kebijakan | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot/latest/developerguide/use-policy-variables.html)  | 

## Menggunakan atribut sertifikat lain sebagai variabel kebijakan sertifikat
<a name="other-attributes-policy"></a>

Tabel berikut memberikan rincian tentang bagaimana atribut sertifikat lainnya akan diisi dalam AWS IoT Core kebijakan.


**Atribut lain yang akan diisi dalam kebijakan**  

| Atribut sertifikat lainnya | Variabel kebijakan sertifikat | 
| --- | --- | 
|  `Serial Number: 92:12:85:cb:b7:a5:e0:86`  |  `iot:Certificate.SerialNumber = 10525622389124227206`  | 

## X.509 Keterbatasan variabel kebijakan sertifikat
<a name="policy-limits"></a>

Batasan berikut berlaku untuk variabel kebijakan sertifikat X.509:

Variabel kebijakan yang hilang  
Jika sertifikat X.509 Anda tidak menyertakan atribut sertifikat tertentu tetapi variabel kebijakan sertifikat terkait digunakan dalam dokumen kebijakan Anda, evaluasi kebijakan dapat menyebabkan perilaku yang tidak terduga. Ini karena variabel kebijakan yang hilang tidak dievaluasi dalam pernyataan kebijakan.

 SerialNumber Format sertifikat  
AWS IoT Core memperlakukan nomor seri sertifikat sebagai representasi string dari bilangan bulat desimal. Misalnya, jika kebijakan hanya mengizinkan koneksi dengan ID Klien yang cocok dengan nomor seri sertifikat, ID klien harus berupa nomor seri dalam format desimal.

Wildcard  
Jika karakter wildcard hadir dalam atribut sertifikat, variabel kebijakan tidak diganti dengan nilai atribut sertifikat. Ini akan meninggalkan `${policy-variable}` teks dalam dokumen kebijakan. Hal ini dapat menyebabkan kegagalan otorisasi. Karakter wildcard berikut dapat digunakan:`*`,,`$`, `+``?`, dan`#`.

Bidang array  
Atribut sertifikat yang berisi array dibatasi hingga lima item. Item tambahan diabaikan.

Panjang tali  
Semua nilai string dibatasi hingga 1024 karakter. Jika atribut sertifikat berisi string yang lebih panjang dari 1024 karakter, variabel kebijakan tidak diganti dengan nilai atribut sertifikat. Ini akan meninggalkan `${policy-variable}` dokumen kebijakan. Hal ini dapat menyebabkan kegagalan otorisasi.

Karakter khusus  
Setiap karakter khusus, seperti`,`,,`"`,`\`,`+`, `=``<`, `>` dan `;` harus diawali dengan garis miring terbalik (`\`) bila digunakan dalam variabel kebijakan. Misalnya, `Amazon Web Services O=Amazon.com Inc. L=Seattle ST=Washington C=US` menjadi `Amazon Web Service O\=Amazon.com Inc. L\=Seattle ST\=Washington C\=US`.

## Contoh kebijakan menggunakan variabel kebijakan sertifikat
<a name="example-attributes-policy"></a>

Dokumen kebijakan berikut memungkinkan koneksi dengan ID klien yang cocok dengan nomor seri sertifikat dan penerbitan ke topik yang cocok dengan pola:`${iot:Certificate.Subject.Organization}/device-stats/${iot:ClientId}/*`. 

**penting**  
Jika sertifikat X.509 Anda tidak menyertakan atribut sertifikat tertentu tetapi variabel kebijakan sertifikat terkait digunakan dalam dokumen kebijakan Anda, evaluasi kebijakan dapat menyebabkan perilaku yang tidak terduga. Ini karena variabel kebijakan yang hilang tidak dievaluasi dalam pernyataan kebijakan. Misalnya, jika Anda melampirkan dokumen kebijakan berikut ke sertifikat yang tidak berisi `iot:Certificate.Subject.Organization` atribut, variabel kebijakan `iot:Certificate.Subject.Organization` sertifikat tidak akan diisi selama evaluasi kebijakan.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Certificate.SerialNumber}"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/${iot:Certificate.Subject.Organization}/device-stats/${iot:ClientId}/*"
			]
		}
	]
}
```

Anda juga dapat menggunakan [operator kondisi Null](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Null) untuk memastikan bahwa variabel kebijakan sertifikat yang digunakan dalam kebijakan diisi selama evaluasi kebijakan. Dokumen kebijakan berikut mengizinkan `iot:Connect` sertifikat hanya jika terdapat atribut Nama umum Sertifikat Sertifikat dan Subjek Sertifikat.

Semua variabel kebijakan sertifikat memiliki nilai String, sehingga semua [operator kondisi String](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String) didukung.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/*"
			],
			"Condition": {
				"Null": {
					"iot:Certificate.SerialNumber": "false",
					"iot:Certificate.Subject.CommonName": "false"
				}
			}
		}
	]
}
```

# Pencegahan "confused deputy" lintas layanan
<a name="cross-service-confused-deputy-prevention"></a>

*Masalah confused deputy* adalah masalah keamanan saat entitas yang tidak memiliki izin untuk melakukan suatu tindakan dapat memaksa entitas yang lebih berhak untuk melakukan tindakan tersebut. Pada tahun AWS, peniruan lintas layanan dapat mengakibatkan masalah wakil yang membingungkan. Peniruan identitas lintas layanan dapat terjadi ketika satu layanan (*layanan yang dipanggil*) memanggil layanan lain (*layanan yang dipanggil*). Layanan panggilan dapat dimanipulasi untuk menggunakan izinnya untuk bertindak atas sumber daya pelanggan lain dengan cara yang seharusnya tidak memiliki izin untuk mengakses. Untuk mencegah hal ini, AWS menyediakan alat yang membantu Anda melindungi data untuk semua layanan dengan principal layanan yang telah diberi akses ke sumber daya di akun Anda. 

Untuk membatasi izin yang AWS IoT memberikan layanan lain ke sumber daya, sebaiknya gunakan kunci konteks kondisi [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)global [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)dan global dalam kebijakan sumber daya. Jika Anda menggunakan kedua kunci konteks kondisi global, `aws:SourceAccount` nilai dan akun dalam `aws:SourceArn` nilai harus menggunakan ID akun yang sama saat digunakan dalam pernyataan kebijakan yang sama.

Cara paling efektif untuk melindungi dari masalah wakil yang membingungkan adalah dengan menggunakan kunci konteks kondisi `aws:SourceArn` global dengan Nama Sumber Daya Amazon (ARN) lengkap dari sumber daya. Untuk AWS IoT, Anda `aws:SourceArn` harus mematuhi format: `arn:aws:iot:region:account-id:resource-type/resource-id` untuk izin khusus sumber daya atau`arn:aws:iot:region:account-id:*`. Resource-id dapat berupa nama atau ID sumber daya yang diizinkan, atau pernyataan wildcard dari sumber daya yang diizinkan. IDs Pastikan bahwa *region* cocok dengan AWS IoT Wilayah Anda dan *account-id* cocok dengan ID akun pelanggan Anda. 

Contoh berikut menunjukkan bagaimana mencegah masalah wakil yang bingung dengan menggunakan kunci konteks kondisi `aws:SourceAccount` global `aws:SourceArn` dan dalam kebijakan kepercayaan AWS IoT peran. Untuk contoh lainnya, lihat [Contoh terperinci dari pencegahan wakil yang membingungkan](#cross-service-confused-deputy-prevention-examples).

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "Service":"iot.amazonaws.com"
         },
         "Action":"sts:AssumeRole",
         "Condition":{
            "StringEquals":{
               "aws:SourceAccount":"123456789012"
        },
            "ArnLike":{
               "aws:SourceArn":"arn:aws:iot:us-east-1:123456789012:*"
        }
         }
      }
   ]
}
```

**catatan**  
Jika Anda mendapatkan kesalahan penolakan akses, itu bisa jadi karena integrasi layanan dengan AWS Security Token Service (STS) tidak mendukung kunci `aws:SourceAccount` konteks `aws:SourceArn` dan.

## Contoh terperinci dari pencegahan wakil yang membingungkan
<a name="cross-service-confused-deputy-prevention-examples"></a>

**Bagian ini memberikan contoh rinci tentang bagaimana mencegah masalah wakil yang membingungkan dengan menggunakan kunci konteks kondisi `aws:SourceAccount` global `aws:SourceArn` dan dalam kebijakan kepercayaan AWS IoT peran.**
+ [Penyediaan armada](#cross-service-confused-deputy-prevention-fleet-provision)
+ [JITP](#cross-service-confused-deputy-prevention-JITP)
+ [Penyedia kredensi](#cross-service-confused-deputy-prevention-credential-provider)

### Penyediaan armada
<a name="cross-service-confused-deputy-prevention-fleet-provision"></a>

Anda dapat [mengonfigurasi penyediaan armada](https://docs.aws.amazon.com/iot/latest/developerguide/iot-provision.html) menggunakan sumber daya templat penyediaan. Saat templat penyediaan mereferensikan peran penyediaan, kebijakan kepercayaan peran tersebut dapat menyertakan kunci dan kondisi. `aws:SourceArn` `aws:SourceAccount` Kunci-kunci ini membatasi sumber daya yang konfigurasi dapat memanggil `sts:AssumeRole` permintaan.

Peran dengan kebijakan kepercayaan berikut hanya dapat diasumsikan oleh IoT principal (`iot.amazonaws.com`) untuk template penyediaan yang ditentukan dalam. `SourceArn`

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "Service":"iot.amazonaws.com"
         },
         "Action":"sts:AssumeRole",
         "Condition":{
            "StringEquals":{
               "aws:SourceAccount":"123456789012"
        },
            "ArnLike":{
               "aws:SourceArn":"arn:aws:iot:us-east-1:123456789012:provisioningtemplate/example_template"
        }
         }
      }
   ]
}
```

### JITP
<a name="cross-service-confused-deputy-prevention-JITP"></a>

Dalam [just-in-time provisioning (JITP)](https://docs.aws.amazon.com//iot/latest/developerguide/jit-provisioning.html), Anda dapat menggunakan template penyediaan sebagai sumber daya yang terpisah dari CA atau menentukan isi template dan peran sebagai bagian dari konfigurasi sertifikat CA. Nilai `aws:SourceArn` dalam kebijakan kepercayaan AWS IoT peran bergantung pada cara Anda menentukan templat penyediaan.

#### Mendefinisikan template penyediaan sebagai sumber daya terpisah
<a name="cross-service-confused-deputy-prevention-JITP-template"></a>

Jika Anda mendefinisikan template penyediaan Anda sebagai sumber daya terpisah, nilainya `aws:SourceArn` bisa. `"arn:aws:iot:region:account-id:provisioningtemplate/example_template"` Anda dapat menggunakan contoh kebijakan yang sama di[Penyediaan armada](#cross-service-confused-deputy-prevention-fleet-provision).

#### Mendefinisikan template penyediaan dalam sertifikat CA
<a name="cross-service-confused-deputy-prevention-JITP-CA"></a>

Jika Anda menentukan templat penyediaan Anda dalam sumber daya sertifikat CA, nilai `aws:SourceArn` dapat berupa `"arn:aws:iot:region:account-id:cacert/cert_id"` atau. `"arn:aws:iot:region:account-id:cacert/*"` Anda dapat menggunakan wildcard saat pengenal sumber daya, seperti ID sertifikat CA, tidak diketahui pada saat pembuatan.

Peran dengan kebijakan kepercayaan berikut hanya dapat diasumsikan oleh prinsipal IoT (`iot.amazonaws.com`) untuk sertifikat CA yang ditentukan dalam. `SourceArn`

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "Service":"iot.amazonaws.com"
         },
         "Action":"sts:AssumeRole",
         "Condition":{
            "StringEquals":{
               "aws:SourceAccount":"123456789012"
        },
            "ArnLike":{
               "aws:SourceArn":"arn:aws:iot:us-east-1:123456789012:cacert/8ecde6884f3d87b1125ba31ac3fcb13d7016de7f57cc904fe1cb97c6ae98196e"
        }
         }
      }
   ]
}
```

Saat membuat sertifikat CA, Anda dapat mereferensikan peran penyediaan dalam konfigurasi pendaftaran. Kebijakan kepercayaan dari peran penyediaan dapat digunakan `aws:SourceArn` untuk membatasi sumber daya apa yang dapat diasumsikan untuk peran tersebut. Namun, selama CACertificate panggilan [Register](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCACertificate.html) awal untuk mendaftarkan sertifikat CA, Anda tidak akan memiliki ARN sertifikat CA untuk menentukan dalam kondisi tersebut`aws:SourceArn`.

Untuk mengatasi hal ini, yaitu, untuk menentukan kebijakan kepercayaan peran penyediaan ke sertifikat CA tertentu yang terdaftar AWS IoT Core, Anda dapat melakukan hal berikut:
+ Pertama, hubungi [Register CACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCACertificate.html) tanpa memberikan `RegistrationConfig` parameter.
+ Setelah sertifikat CA terdaftar AWS IoT Core, hubungi [Perbarui CACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCACertificate.html) di atasnya.

  Dalam CACertificate panggilan Perbarui, berikan `RegistrationConfig` yang menyertakan kebijakan kepercayaan peran penyediaan dengan `aws:SourceArn` disetel ke ARN sertifikat CA yang baru terdaftar.

### Penyedia kredensi
<a name="cross-service-confused-deputy-prevention-credential-provider"></a>

Untuk [penyedia AWS IoT Core kredensyal](https://docs.aws.amazon.com//iot/latest/developerguide/authorizing-direct-aws.html), gunakan yang sama yang Akun AWS Anda gunakan untuk membuat alias peran`aws:SourceAccount`, dan tentukan pernyataan yang cocok dengan ARN sumber daya dari jenis sumber daya rolealias. `aws:SourceArn` Saat membuat peran IAM untuk digunakan dengan penyedia AWS IoT Core kredensi, Anda harus menyertakan dalam `aws:SourceArn` kondisi alias peran apa pun yang mungkin perlu mengambil peran tersebut, sehingga mengizinkan permintaan lintas layanan. ARNs `sts:AssumeRole`

Peran dengan kebijakan kepercayaan berikut hanya dapat diasumsikan oleh kepala penyedia AWS IoT Core kredensi (`credentials.iot.amazonaws.com`) untuk RoleAlias yang ditentukan dalam. `SourceArn` Jika prinsipal mencoba untuk mengambil kredensi untuk alias peran selain yang ditentukan dalam `aws:SourceArn` kondisi, permintaan akan ditolak, bahkan jika alias peran lain tersebut merujuk peran IAM yang sama.

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "credentials.iot.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:iot:us-east-1:123456789012:rolealias/example_rolealias"
        }
      }
    }
  ]
}
```

# AWS IoT Core contoh kebijakan
<a name="example-iot-policies"></a>

Contoh kebijakan di bagian ini menggambarkan dokumen kebijakan yang digunakan untuk menyelesaikan tugas-tugas umum di AWS IoT Core bagian ini. Anda dapat menggunakannya sebagai contoh untuk memulai saat membuat kebijakan untuk solusi Anda.<a name="example-iot-policies-elements"></a>

Contoh di bagian ini menggunakan elemen kebijakan ini:
+ [AWS IoT Core tindakan kebijakan](iot-policy-actions.md)
+ [AWS IoT Core sumber daya aksi](iot-action-resources.md)
+ [AWS IoT contoh kebijakan berbasis identitas](security_iam_id-based-policy-examples.md)
+ [Variabel AWS IoT Core kebijakan dasar](basic-policy-variables.md)
+ [Variabel kebijakan Sertifikat X.509 AWS IoT Core](cert-policy-variables.md)

**Topics**
+ [Contoh kebijakan Connect](connect-policy.md)
+ [Contoh kebijakan Publikasi/Berlangganan](pub-sub-policy.md)
+ [Connect dan publikasikan contoh kebijakan](connect-and-pub.md)
+ [Contoh kebijakan pesan yang dipertahankan](retained-message-policy-examples.md)
+ [Contoh kebijakan sertifikat](certificate-policy-examples.md)
+ [Contoh kebijakan hal](thing-policy-examples.md)
+ [Contoh kebijakan pekerjaan dasar](basic-jobs-example.md)

# Contoh kebijakan Connect
<a name="connect-policy"></a>

Kebijakan berikut menolak izin ke klien IDs `client1` dan `client2` untuk terhubung AWS IoT Core, sementara memungkinkan perangkat untuk terhubung menggunakan ID klien. ID klien cocok dengan nama benda yang terdaftar di AWS IoT Core registri dan dilampirkan ke prinsipal yang digunakan untuk koneksi:

**catatan**  
Untuk perangkat terdaftar, kami menyarankan Anda menggunakan [variabel kebijakan hal](thing-policy-variables.md) untuk `Connect` tindakan dan melampirkan benda ke prinsipal yang digunakan untuk koneksi.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Deny",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/client1",
				"arn:aws:iot:us-east-1:123456789012:client/client2"
			]
		},
		{
			"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"
				}
			}
		}
	]
}
```

Kebijakan berikut memberikan izin untuk terhubung AWS IoT Core dengan ID `client1` klien. Contoh kebijakan ini untuk perangkat yang tidak terdaftar.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/client1"
			]
		}
	]
}
```

## Contoh kebijakan sesi persisten MQTT
<a name="persistent-sessions-examples"></a>

`connectAttributes`memungkinkan Anda untuk menentukan atribut apa yang ingin Anda gunakan dalam pesan connect Anda dalam kebijakan IAM Anda seperti `PersistentConnect` dan`LastWill`. Untuk informasi selengkapnya, lihat [Menggunakan ConnectAttributes](mqtt.md#connect-attribute).

Kebijakan berikut memungkinkan terhubung dengan `PersistentConnect` fitur:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect"
					]
				}
			}
		}
	]
}
```

Kebijakan berikut ini melarang`PersistentConnect`, fitur lain diperbolehkan:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringNotEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect"
					]
				}
			}
		}
	]
}
```

Kebijakan di atas juga dapat dinyatakan menggunakan`StringEquals`, fitur lain termasuk fitur baru diperbolehkan:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1"
        },
        {
            "Effect": "Deny",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:ConnectAttributes": [
                        "PersistentConnect"
                    ]
            }
        }
        }
    ]
}
```

Kebijakan berikut memungkinkan koneksi oleh keduanya `PersistentConnect` dan`LastWill`, fitur baru lainnya tidak diperbolehkan:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect",
						"LastWill"
					]
				}
			}
		}
	]
}
```

Kebijakan berikut memungkinkan koneksi bersih oleh klien dengan atau tanpa`LastWill`, tidak ada fitur lain yang diizinkan:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "iot:Connect"
        ],
        "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
        "Condition": {
            "StringEquals": {
                "iot:ConnectAttributes": "LastWill"
        }
        }
    }]
}
```

Kebijakan berikut hanya mengizinkan koneksi menggunakan fitur default:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": []
				}
			}
		}
	]
}
```

Kebijakan berikut hanya mengizinkan koneksi dengan`PersistentConnect`, fitur baru apa pun diizinkan selama koneksi menggunakan`PersistentConnect`:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:ConnectAttributes": [
                        "PersistentConnect"
                    ]
            }
        }
        }
    ]
}
```

Kebijakan berikut menyatakan koneksi harus memiliki keduanya `PersistentConnect` dan `LastWill` penggunaan, tidak ada fitur baru yang diizinkan:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect",
						"LastWill"
					]
				}
			}
		},
		{
			"Effect": "Deny",
			"Action": [
				"iot:Connect"
			],
			"Resource": "*",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect"
					]
				}
			}
		},
		{
			"Effect": "Deny",
			"Action": [
				"iot:Connect"
			],
			"Resource": "*",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"LastWill"
					]
				}
			}
		},
		{
			"Effect": "Deny",
			"Action": [
				"iot:Connect"
			],
			"Resource": "*",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": []
				}
			}
		}
	]
}
```

Kebijakan berikut tidak boleh dimiliki `PersistentConnect` tetapi dapat dimiliki`LastWill`, fitur baru lainnya tidak diperbolehkan:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:ConnectAttributes": [
                        "PersistentConnect"
                    ]
            }
        }
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
            "Condition": {
                "ForAllValues:StringEquals": {
                    "iot:ConnectAttributes": [
                        "LastWill"
                    ]
            }
        }
        }
    ]
}
```

Kebijakan berikut memungkinkan terhubung hanya oleh klien yang memiliki topik `LastWill` dengan`"my/lastwill/topicName"`, fitur apa pun diizinkan selama menggunakan `LastWill` topik:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
            "Condition": {
                "ArnEquals": {
                "iot:LastWillTopic": "arn:aws:iot:us-east-1:123456789012:topic/my/lastwill/topicName"
            }
        }
        }
    ]
}
```

Kebijakan berikut hanya mengizinkan koneksi bersih menggunakan fitur tertentu`LastWillTopic`, fitur apa pun diizinkan selama menggunakan`LastWillTopic`:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
            "Condition": {
                "ArnEquals": {
                "iot:LastWillTopic": "arn:aws:iot:us-east-1:123456789012:topic/my/lastwill/topicName"
            }
        }
        },
        {
            "Effect": "Deny",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:ConnectAttributes": [
                        "PersistentConnect"
                    ]
            }
        }
        }
    ]
}
```

# Contoh kebijakan Publikasi/Berlangganan
<a name="pub-sub-policy"></a>

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](thing-policy-variables.md) untuk `Connect` tindakan dan melampirkan benda ke prinsipal yang digunakan untuk koneksi. 

**Topics**
+ [Menggunakan karakter wildcard di MQTT dan kebijakan AWS IoT Core](#pub-sub-policy-cert)
+ [Kebijakan untuk mempublikasikan, berlangganan, dan menerima pesan topik to/from tertentu](#pub-sub-specific-topic)
+ [Kebijakan untuk mempublikasikan, berlangganan, dan menerima to/from topik pesan dengan awalan tertentu](#pub-sub-policy-specific-topic-prefix)
+ [Kebijakan untuk mempublikasikan, berlangganan, dan menerima to/from topik pesan khusus untuk setiap perangkat](#pub-sub-specific-topic-device)
+ [Kebijakan untuk mempublikasikan, berlangganan, dan menerima to/from topik pesan dengan atribut hal dalam nama topik](#pub-sub-topic-attribute)
+ [Kebijakan untuk menolak mempublikasikan pesan ke subtopik dari nama topik](#pub-sub-deny-publish)
+ [Kebijakan untuk menolak menerima pesan dari subtopik nama topik](#pub-sub-deny-receive)
+ [Kebijakan untuk berlangganan topik menggunakan karakter wildcard MQTT](#pub-sub-topic-wildcard)
+ [Kebijakan untuk HTTP dan WebSocket klien](#pub-sub-policy-cognito)

## Menggunakan karakter wildcard di MQTT dan kebijakan AWS IoT Core
<a name="pub-sub-policy-cert"></a>

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](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html#topicfilters). AWS IoT Core kebijakan menggunakan `*` dan `?` sebagai karakter wildcard dan mengikuti konvensi kebijakan [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html#policies-grammar-json). 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 resource kebijakan dan contoh lainnya tentang apa yang cocok, lihat [Menggunakan wildcard di](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_resource.html#reference_policies_elements_resource_wildcards) resource. ARNs

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 | 
| --- | --- | --- | --- | --- | 
| \$1 | Ya | some/\$1 | Tidak | N/A | 
| \$1 | Ya | some/\$1/topic | Tidak | N/A | 
| \$1 | 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
<a name="pub-sub-specific-topic"></a>

Berikut ini menunjukkan contoh untuk perangkat terdaftar dan tidak terdaftar untuk menerbitkan, berlangganan dan menerima pesan to/from topik bernama “some\$1specific\$1topic”. 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 menyediakan`Publish`, `Subscribe` dan `Receive` izin untuk topik bernama “some\$1specific\$1topic”.

****  

```
{
	"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 menyediakan`Publish`, `Subscribe` dan `Receive` izin untuk topik bernama “some\$1specific\$1topic”.

****  

```
{
    "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
<a name="pub-sub-policy-specific-topic-prefix"></a>

Berikut ini menunjukkan contoh untuk perangkat terdaftar dan tidak terdaftar untuk menerbitkan, berlangganan, dan menerima to/from topik pesan yang diawali dengan “topic\$1prefix”.

**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 menyediakan`Publish`, `Subscribe` dan `Receive` izin untuk topik yang diawali dengan “topic\$1prefix”.

****  

```
{
	"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 menyediakan`Publish`, `Subscribe` dan `Receive` izin untuk topik yang diawali dengan “topic\$1prefix”.

****  

```
{
    "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
<a name="pub-sub-specific-topic-device"></a>

Berikut ini menunjukkan contoh untuk perangkat terdaftar dan tidak terdaftar untuk menerbitkan, berlangganan, dan menerima to/from topik pesan 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/device/thing1". The device will also be able to subscribe to and receive from the topic "command/device/thing 1".

****  

```
{
	"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 "1". sensor/device/clientId Perangkat juga akan dapat berlangganan dan menerima dari topik`device/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 hal dalam nama topik
<a name="pub-sub-topic-attribute"></a>

Berikut ini menunjukkan contoh untuk perangkat terdaftar untuk menerbitkan, berlangganan dan menerima pesan to/from 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` dan`location=Seattle`, perangkat akan dapat mempublikasikan ke topik "sensor/v1", and subscribe to and receive from the topic "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
<a name="pub-sub-deny-publish"></a>

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
<a name="pub-sub-deny-receive"></a>

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\$1prefix”. Dengan menggunakan `NotResource` dalam pernyataan untuk`iot:Receive`, kami mengizinkan perangkat menerima pesan dari semua topik yang telah dilanggani perangkat, kecuali topik yang diawali dengan “prefix/restricted". For example, with this policy, devices can subscribe to "topic\$1prefix/topic1" and even "topic\$1prefix/restricted", however, they will only receive messages from the topic "topic\$1prefix/topic1" and no messages from the topic "topic\$1prefix/restrictedtopik\$1”.

****  

```
{
	"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\$1prefix”. Dengan menggunakan `NotResource` dalam pernyataan untuk`iot:Receive`, kami mengizinkan perangkat menerima pesan dari semua topik yang telah dilanggani perangkat, kecuali topik yang diawali dengan “prefix/restricted". For example, with this policy, devices can subscribe to "topic\$1prefix/topic1" and even "topic\$1prefix/restricted". However, they will only receive messages from the topic "topic\$1prefix/topic1" and no messages from the topic "topic\$1prefix/restrictedtopik\$1”.

****  

```
{
    "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
<a name="pub-sub-topic-wildcard"></a>

Karakter wildcard MQTT \$1 dan \$1 diperlakukan sebagai string literal, tetapi mereka tidak diperlakukan sebagai wildcard saat digunakan dalam kebijakan. AWS IoT Core Di MQTT, \$1 dan \$1 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/\$1/karyawan” dan “lokasi/\$1”. Karena \$1 dan \$1 diperlakukan sebagai string literal dalam AWS IoT Core kebijakan, perangkat dapat berlangganan topik “departemen/\$1/karyawan” tetapi tidak ke topik "" juga. department/engineering/employees". Similarly, devices can subscribe to the topic "location/\$1" but not to the topic "location/Seattle". However, once the device subscribes to the topic "department/\$1/employees", the policy will allow them to receive messages from the topic "department/engineering/employees". Similarly, once the device subscribes to the topic "location/\$1", they will receive messages from the topic "location/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: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/\$1/karyawan” dan “lokasi/\$1”. Karena \$1 dan \$1 diperlakukan sebagai string literal dalam AWS IoT Core kebijakan, perangkat dapat berlangganan topik “departemen/\$1/karyawan” tetapi tidak ke topik "" juga. department/engineering/employees". Similarly, devices can subscribe to the topic "location/\$1" but not "location/Seattle". However, once the device subscribes to the topic "department/\$1/employees", the policy will allow them to receive messages from the topic "department/engineering/employees". Similarly, once the device subscribes to the topic "location/\$1", they will receive messages from the topic "location/Seattle

****  

```
{
    "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
<a name="pub-sub-policy-cognito"></a>

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](cog-iot-policies.md).

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](https://docs.aws.amazon.com//iot/latest/apireference/API_AttachPolicy.html)

**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](https://docs.aws.amazon.com//iot/latest/apireference/API_AttachPolicy.html)

**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.

# Connect dan publikasikan contoh kebijakan
<a name="connect-and-pub"></a>

Untuk perangkat yang terdaftar sebagai benda dalam AWS IoT Core registri, kebijakan berikut memberikan izin untuk terhubung dengan ID klien yang cocok AWS IoT Core dengan nama benda dan membatasi perangkat untuk dipublikasikan pada ID Klien atau topik MQTT khusus nama benda. Agar koneksi berhasil, nama benda harus terdaftar di AWS IoT Core registri dan diautentikasi menggunakan identitas atau prinsipal yang dilampirkan pada benda tersebut:

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:topic/${iot:Connection.Thing.ThingName}"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iot:Connect"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
      ]
    }
  ]
}
```

Untuk perangkat yang tidak terdaftar sebagai benda dalam AWS IoT Core registri, kebijakan berikut memberikan izin untuk terhubung AWS IoT Core dengan ID klien `client1` dan membatasi perangkat untuk dipublikasikan pada topik MQTT khusus Klien:

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:topic/${iot:ClientId}"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iot:Connect"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:client/client1"
      ]
    }
  ]
}
```

# Contoh kebijakan pesan yang dipertahankan
<a name="retained-message-policy-examples"></a>

Menggunakan [pesan yang disimpan](mqtt.md#mqtt-retain) memerlukan kebijakan khusus. Pesan yang disimpan adalah pesan MQTT yang diterbitkan dengan tanda RETAIN disetel dan disimpan oleh. AWS IoT Core Bagian ini menyajikan contoh kebijakan yang memungkinkan penggunaan umum pesan yang disimpan.

**Topics**
+ [Kebijakan untuk menghubungkan dan memublikasikan pesan yang disimpan](#retained-message-policy-examples-publish)
+ [Kebijakan untuk menghubungkan dan mempublikasikan pesan Will yang disimpan](#retained-message-policy-examples-publish-lwt)
+ [Kebijakan untuk membuat daftar dan mendapatkan pesan yang disimpan](#retained-message-policy-examples-list-get)

## Kebijakan untuk menghubungkan dan memublikasikan pesan yang disimpan
<a name="retained-message-policy-examples-publish"></a>

Agar perangkat dapat memublikasikan pesan yang disimpan, perangkat harus dapat terhubung, menerbitkan (pesan MQTT apa pun), dan memublikasikan pesan yang disimpan MQTT. Kebijakan berikut memberikan izin ini untuk topik: `device/sample/configuration` kepada klien. **device1** Untuk contoh lain yang memberikan izin untuk terhubung, lihat[Connect dan publikasikan contoh kebijakan](connect-and-pub.md).

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/device1"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish",
				"iot:RetainPublish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/device/sample/configuration"
			]
		}
	]
}
```

## Kebijakan untuk menghubungkan dan mempublikasikan pesan Will yang disimpan
<a name="retained-message-policy-examples-publish-lwt"></a>

Klien dapat mengonfigurasi pesan yang AWS IoT Core akan dipublikasikan ketika klien terputus secara tak terduga. [http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Will_Flag](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Will_Flag) Klien harus memiliki kondisi tambahan yang ditambahkan ke izin sambungannya untuk memasukkannya. 

Dokumen kebijakan berikut memberikan izin kepada semua klien untuk menghubungkan dan menerbitkan pesan Will, yang diidentifikasi berdasarkan topiknya`will`, yang juga AWS IoT Core akan disimpan.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/device1"
			],
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"LastWill"
					]
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish",
				"iot:RetainPublish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/will"
			]
		}
	]
}
```

## Kebijakan untuk membuat daftar dan mendapatkan pesan yang disimpan
<a name="retained-message-policy-examples-list-get"></a>

Layanan dan aplikasi dapat mengakses pesan yang disimpan tanpa perlu mendukung klien MQTT dengan menelepon dan. [https://docs.aws.amazon.com//iot/latest/apireference/API_iotdata_ListRetainedMessages.html](https://docs.aws.amazon.com//iot/latest/apireference/API_iotdata_ListRetainedMessages.html) Layanan dan aplikasi yang memanggil tindakan ini harus diotorisasi dengan menggunakan kebijakan seperti contoh berikut.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:ListRetainedMessages"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/device1"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:GetRetainedMessage"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/foo"
            ]
        }
    ]
}
```

# Contoh kebijakan sertifikat
<a name="certificate-policy-examples"></a>

Untuk perangkat yang terdaftar di AWS IoT Core registri, kebijakan berikut memberikan izin untuk terhubung AWS IoT Core dengan ID klien yang cocok dengan nama benda, dan memublikasikan ke topik yang namanya sama dengan sertifikat yang digunakan perangkat untuk mengautentikasi dirinya sendiri: `certificateId`

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:CertificateId}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"]
        }
    ]
}
```

Untuk perangkat yang tidak terdaftar dalam AWS IoT Core registri, kebijakan berikut memberikan izin untuk terhubung AWS IoT Core dengan klien IDs,, `client1``client2`, `client3` dan untuk mempublikasikan ke topik yang namanya sama dengan sertifikat perangkat yang digunakan untuk mengotentikasi dirinya sendiri: `certificateId`

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:CertificateId}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1",
                "arn:aws:iot:us-east-1:123456789012:client/client2",
                "arn:aws:iot:us-east-1:123456789012:client/client3"
            ]
        }
    ]
}
```

Untuk perangkat yang terdaftar di AWS IoT Core registri, kebijakan berikut memberikan izin untuk terhubung AWS IoT Core dengan ID klien yang cocok dengan nama benda, dan memublikasikan ke topik yang namanya sama dengan `CommonName` bidang subjek sertifikat yang digunakan perangkat untuk mengautentikasi dirinya sendiri:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:Certificate.Subject.CommonName}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"]
        }
    ]
}
```

**catatan**  
Dalam contoh ini, nama umum subjek sertifikat digunakan sebagai pengidentifikasi topik, dengan asumsi bahwa nama umum subjek unik untuk setiap sertifikat terdaftar. Jika sertifikat dibagikan di beberapa perangkat, nama umum subjek sama untuk semua perangkat yang berbagi sertifikat ini, sehingga memungkinkan hak istimewa publikasi ke topik yang sama dari beberapa perangkat (tidak disarankan).

Untuk perangkat yang tidak terdaftar dalam AWS IoT Core registri, kebijakan berikut memberikan izin untuk terhubung AWS IoT Core dengan klien IDs,, `client1``client2`, `client3` dan untuk mempublikasikan ke topik yang namanya sama dengan `CommonName` bidang subjek sertifikat yang digunakan perangkat untuk mengautentikasi dirinya sendiri:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:Certificate.Subject.CommonName}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1",
                "arn:aws:iot:us-east-1:123456789012:client/client2",
                "arn:aws:iot:us-east-1:123456789012:client/client3"
            ]
        }
    ]
}
```

**catatan**  
Dalam contoh ini, nama umum subjek sertifikat digunakan sebagai pengidentifikasi topik, dengan asumsi bahwa nama umum subjek unik untuk setiap sertifikat terdaftar. Jika sertifikat dibagikan di beberapa perangkat, nama umum subjek sama untuk semua perangkat yang berbagi sertifikat ini, sehingga memungkinkan hak istimewa publikasi ke topik yang sama dari beberapa perangkat (tidak disarankan).

Untuk perangkat yang terdaftar di AWS IoT Core registri, kebijakan berikut memberikan izin untuk terhubung dengan ID klien yang cocok AWS IoT Core dengan nama benda, dan memublikasikan ke topik yang namanya diawali `admin/` saat sertifikat yang digunakan untuk mengautentikasi perangkat memiliki `Subject.CommonName.2` bidang yang disetel ke: `Administrator`

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/admin/*"],
            "Condition": {
                "StringEquals": {
                    "iot:Certificate.Subject.CommonName.2": "Administrator"
            }
        }
        }
    ]
}
```

Untuk perangkat yang tidak terdaftar di AWS IoT Core registri, kebijakan berikut memberikan izin untuk terhubung AWS IoT Core dengan klien IDs `client1``client2`, `client3` dan memublikasikan ke topik yang namanya diawali `admin/` ketika sertifikat yang digunakan untuk mengautentikasi perangkat memiliki `Subject.CommonName.2` bidangnya disetel ke: `Administrator`

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1",
                "arn:aws:iot:us-east-1:123456789012:client/client2",
                "arn:aws:iot:us-east-1:123456789012:client/client3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/admin/*"],
            "Condition": {
                "StringEquals": {
                    "iot:Certificate.Subject.CommonName.2": "Administrator"
            }
        }
        }
    ]
}
```

Untuk perangkat yang terdaftar di AWS IoT Core registri, kebijakan berikut memungkinkan perangkat menggunakan nama benda untuk dipublikasikan pada topik tertentu yang terdiri dari `admin/` diikuti oleh `ThingName` ketika sertifikat yang digunakan untuk mengautentikasi perangkat memiliki salah satu `Subject.CommonName` bidangnya yang disetel ke`Administrator`:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/admin/${iot:Connection.Thing.ThingName}"],
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:Certificate.Subject.CommonName.List": "Administrator"
            }
        }
        }
    ]
}
```

Untuk perangkat yang tidak terdaftar dalam AWS IoT Core registri, kebijakan berikut memberikan izin untuk terhubung AWS IoT Core dengan klien IDs `client1``client2`, `client3` dan untuk memublikasikan ke topik `admin` ketika sertifikat yang digunakan untuk mengautentikasi perangkat memiliki salah satu `Subject.CommonName` bidangnya yang disetel ke: `Administrator`

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1",
                "arn:aws:iot:us-east-1:123456789012:client/client2",
                "arn:aws:iot:us-east-1:123456789012:client/client3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/admin"],
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:Certificate.Subject.CommonName.List": "Administrator"
            }
        }
        }
    ]
}
```

# Contoh kebijakan hal
<a name="thing-policy-examples"></a>

Kebijakan berikut memungkinkan perangkat untuk terhubung jika sertifikat yang digunakan untuk mengautentikasi AWS IoT Core dilampirkan pada hal yang sedang dievaluasi kebijakan:

****  

```
{  
    "Version":"2012-10-17",		 	 	 
    "Statement":[
        {  
            "Effect":"Allow",
            "Action":["iot:Connect"],
            "Resource":[ "*" ],
            "Condition": {
                "Bool": {
                    "iot:Connection.Thing.IsAttached": ["true"]
            }
        }
        }
    ]
}
```

Kebijakan berikut memungkinkan perangkat untuk mempublikasikan jika sertifikat dilampirkan ke sesuatu dengan jenis hal tertentu dan jika benda tersebut memiliki atribut `attributeName` dengan nilai`attributeValue`. Untuk informasi selengkapnya tentang variabel kebijakan hal, lihat [Variabel kebijakan Thing](thing-policy-variables.md).

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish"
      ],
      "Resource": "arn:aws:iot:us-east-1:123456789012:topic/device/stats",
      "Condition": {
        "StringEquals": {
          "iot:Connection.Thing.Attributes[attributeName]": "attributeValue",
          "iot:Connection.Thing.ThingTypeName": "Thing_Type_Name"
        },
        "Bool": {
          "iot:Connection.Thing.IsAttached": "true"
        }
      }
    }
  ]
}
```

Kebijakan berikut memungkinkan perangkat untuk memublikasikan ke topik yang dimulai dengan atribut benda tersebut. Jika sertifikat perangkat tidak terkait dengan hal tersebut, variabel ini tidak akan diselesaikan dan akan mengakibatkan kesalahan akses ditolak. Untuk informasi selengkapnya tentang variabel kebijakan hal, lihat [Variabel kebijakan Thing](thing-policy-variables.md).

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish"
      ],
      "Resource": "arn:aws:iot:us-east-1:123456789012:topic/${iot:Connection.Thing.Attributes[attributeName]}/*"
    }
  ]
}
```

# Contoh kebijakan pekerjaan dasar
<a name="basic-jobs-example"></a>

Contoh ini menunjukkan statment kebijakan yang diperlukan untuk target pekerjaan yang merupakan perangkat tunggal untuk menerima permintaan pekerjaan dan mengkomunikasikan status pelaksanaan pekerjaan dengan AWS IoT.

Ganti *us-west-2:57EXAMPLE833* dengan Anda Wilayah AWS, karakter titik dua (:), dan Akun AWS nomor 12 digit Anda, lalu ganti *uniqueThingName* dengan nama sumber daya benda yang mewakili perangkat. AWS IoT

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:client/uniqueThingName"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:topic/test/dc/pubtopic",
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/job/*",
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/jobExecution/*",
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName/jobs/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:topicfilter/test/dc/subtopic",
                "arn:aws:iot:us-west-2:123456789012:topicfilter/$aws/events/jobExecution/*",
                "arn:aws:iot:us-west-2:123456789012:topicfilter/$aws/things/uniqueThingName/jobs/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:topic/test/dc/subtopic",
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName/jobs/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iotjobsdata:DescribeJobExecution",
                "iotjobsdata:GetPendingJobExecutions",
                "iotjobsdata:StartNextPendingJobExecution",
                "iotjobsdata:UpdateJobExecution"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName"
            ]
        }
    ]
}
```

# Otorisasi dengan identitas Amazon Cognito
<a name="cog-iot-policies"></a>

Ada dua jenis identitas Amazon Cognito: tidak diautentikasi dan diautentikasi. Jika aplikasi Anda mendukung identitas Amazon Cognito yang tidak diautentikasi, tidak ada autentikasi yang dilakukan, sehingga Anda tidak tahu siapa pengguna tersebut. 

Identitas **Tidak Diautentikasi: Untuk identitas** Amazon Cognito yang tidak diautentikasi, Anda memberikan izin dengan melampirkan peran IAM ke kumpulan identitas yang tidak diautentikasi. Kami menyarankan Anda hanya memberikan akses ke sumber daya yang Anda inginkan tersedia untuk pengguna yang tidak dikenal.

**penting**  
Untuk pengguna Amazon Cognito yang tidak diautentikasi yang terhubung AWS IoT Core ke, kami menyarankan Anda memberikan akses ke sumber daya yang sangat terbatas dalam kebijakan IAM.

**Identitas Terautentikasi:** Untuk identitas Amazon Cognito yang diautentikasi, Anda perlu menentukan izin di dua tempat: 
+ Lampirkan kebijakan IAM ke kumpulan Identitas Amazon Cognito yang diautentikasi dan
+ Lampirkan AWS IoT Core kebijakan ke Identitas Amazon Cognito (pengguna yang diautentikasi).

## Contoh kebijakan untuk pengguna Amazon Cognito yang tidak diautentikasi dan diautentikasi yang terhubung AWS IoT Core
<a name="cog-iot-policies-auth-unauth-examples"></a>

Contoh berikut menunjukkan izin dalam kebijakan IAM dan kebijakan IoT dari identitas Amazon Cognito. Pengguna yang diautentikasi ingin mempublikasikan ke topik khusus perangkat (mis.device/DEVICE\$1ID/status).

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/Client_ID"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/device/Device_ID/status"
            ]
        }
    ]
}
```

Contoh berikut menunjukkan izin dalam kebijakan IAM dari peran Amazon Cognito yang tidak diautentikasi. Pengguna yang tidak diautentikasi ingin mempublikasikan ke topik khusus non-perangkat yang tidak memerlukan otentikasi.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/non_device_specific_topic"
            ]
        }
    ]
}
```

## GitHub contoh
<a name="cog-iot-policies-github"></a>

Contoh aplikasi web berikut GitHub menunjukkan cara menggabungkan lampiran kebijakan ke pengguna yang diautentikasi ke dalam proses pendaftaran dan otentikasi pengguna.
+ [MQTT publish/subscribe React menggunakan aplikasi web dan AWS AmplifyAWS IoT Device SDK for JavaScript](https://github.com/aws-samples/aws-amplify-react-iot-pub-sub-using-cp)
+ [Aplikasi web MQTT publish/subscribe React menggunakan AWS Amplify, fungsi AWS IoT Device SDK for JavaScript, dan Lambda](https://github.com/aws-samples/aws-amplify-react-iot-pub-sub-using-lambda)

Amplify adalah seperangkat alat dan layanan yang membantu Anda membangun aplikasi web dan seluler yang terintegrasi dengan AWS layanan. Untuk informasi selengkapnya tentang Amplify, lihat Amplify Framework [Documentation](https://docs.amplify.aws/),.

Kedua contoh melakukan langkah-langkah berikut.

1. Saat pengguna mendaftar untuk akun, aplikasi akan membuat kumpulan pengguna dan identitas Amazon Cognito.

1. Ketika pengguna mengautentikasi, aplikasi membuat dan melampirkan kebijakan ke identitas. Ini memberi pengguna izin mempublikasikan dan berlangganan.

1. Pengguna dapat menggunakan aplikasi untuk mempublikasikan dan berlangganan topik MQTT.

Contoh pertama menggunakan operasi `AttachPolicy` API langsung di dalam operasi otentikasi. Contoh berikut menunjukkan bagaimana menerapkan panggilan API ini di dalam aplikasi web React yang menggunakan Amplify dan. AWS IoT Device SDK for JavaScript

```
function attachPolicy(id, policyName) {
    var Iot = new AWS.Iot({region: AWSConfiguration.region, apiVersion: AWSConfiguration.apiVersion, endpoint: AWSConfiguration.endpoint});
    var params = {policyName: policyName, target: id};

    console.log("Attach IoT Policy: " + policyName + " with cognito identity id: " + id);
    Iot.attachPolicy(params, function(err, data) {
         if (err) {
               if (err.code !== 'ResourceAlreadyExistsException') {
                  console.log(err);
               }
          }
         else  {
            console.log("Successfully attached policy with the identity", data);
         }
     });
}
```

Kode ini muncul di [AuthDisplayfile.js](https://github.com/aws-samples/aws-amplify-react-iot-pub-sub-using-cp/blob/d1c307b36357be934db9dda020140fa337709cd9/src/AuthDisplay.js#L45).

Contoh kedua mengimplementasikan operasi `AttachPolicy` API dalam fungsi Lambda. Contoh berikut menunjukkan bagaimana Lambda menggunakan panggilan API ini.

```
iot.attachPolicy(params, function(err, data) {
     if (err) {
           if (err.code !== 'ResourceAlreadyExistsException') {
              console.log(err);
              res.json({error: err, url: req.url, body: req.body});
           }
      }
     else  {
        console.log(data);
        res.json({success: 'Create and attach policy call succeed!', url: req.url, body: req.body});
     }
 });
```

Kode ini muncul di dalam `iot.GetPolicy` fungsi dalam file [app.js](https://github.com/aws-samples/aws-amplify-react-iot-pub-sub-using-lambda/blob/e493039581d2aff0faa3949086deead20a2c5385/amplify/backend/function/amplifyiotlambda/src/app.js#L50).

**catatan**  
Saat Anda memanggil fungsi dengan AWS kredensyal yang Anda peroleh melalui kumpulan Identitas Amazon Cognito, objek konteks dalam fungsi Lambda Anda berisi nilai untuk. `context.cognito_identity_id` Untuk informasi selengkapnya, lihat hal berikut.   
[AWS Lambda objek konteks di Node.js](https://docs.aws.amazon.com/lambda/latest/dg/nodejs-context.html)
[AWS Lambda objek konteks dengan Python](https://docs.aws.amazon.com/lambda/latest/dg/python-context.html)
[AWS Lambda objek konteks di Ruby](https://docs.aws.amazon.com/lambda/latest/dg/ruby-context.html)
[AWS Lambda objek konteks di Jawa](https://docs.aws.amazon.com/lambda/latest/dg/java-context.html)
[AWS Lambda objek konteks di Go](https://docs.aws.amazon.com/lambda/latest/dg/golang-context.html)
[AWS Lambda objek konteks dalam C \$1](https://docs.aws.amazon.com/lambda/latest/dg/csharp-context.html)
[AWS Lambda objek konteks di PowerShell](https://docs.aws.amazon.com/lambda/latest/dg/powershell-context.html)

# Mengotorisasi panggilan langsung ke AWS layanan menggunakan penyedia AWS IoT Core kredensi
<a name="authorizing-direct-aws"></a>

Perangkat dapat menggunakan sertifikat X.509 untuk terhubung AWS IoT Core menggunakan protokol otentikasi timbal balik TLS. AWS [Layanan lain tidak mendukung otentikasi berbasis sertifikat, tetapi mereka dapat dipanggil menggunakan AWS kredensyal dalam format Signature Version 4.AWS](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) [Algoritma Signature Version 4](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) biasanya mengharuskan penelepon untuk memiliki ID kunci akses dan kunci akses rahasia. AWS IoT Core memiliki penyedia kredensyal yang memungkinkan Anda menggunakan [sertifikat X.509](x509-client-certs.html) bawaan sebagai identitas perangkat unik untuk mengautentikasi permintaan. AWS Ini menghilangkan kebutuhan untuk menyimpan ID kunci akses dan kunci akses rahasia di perangkat Anda.

Penyedia kredensyal mengautentikasi pemanggil menggunakan sertifikat X.509 dan mengeluarkan token keamanan hak istimewa terbatas sementara. Token dapat digunakan untuk menandatangani dan mengotentikasi AWS permintaan apa pun. Cara mengautentikasi AWS permintaan ini mengharuskan Anda untuk membuat dan mengonfigurasi [peran AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/service-authorization/latest/reference/id_roles.html) dan melampirkan kebijakan IAM yang sesuai ke peran tersebut sehingga penyedia kredensyal dapat mengambil peran atas nama Anda. Untuk informasi lebih lanjut tentang AWS IoT Core dan IAM, lihat[Identitas dan manajemen akses untuk AWS IoT](security-iam.md).

 AWS IoT memerlukan perangkat untuk mengirim [ekstensi Server Name Indication (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) ke protokol Transport Layer Security (TLS) dan memberikan alamat endpoint lengkap di lapangan. `host_name` `host_name`Bidang harus berisi titik akhir yang Anda panggil, dan itu harus:
+ Yang `endpointAddress` dikembalikan oleh`aws iot [describe-endpoint](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-endpoint.html) --endpoint-type iot:CredentialProvider`.

Koneksi yang dicoba oleh perangkat tanpa `host_name` nilai yang benar akan gagal.

Diagram berikut mengilustrasikan alur kerja penyedia kredensyal.

![\[AWS IoT Core alur kerja penyedia kredensyal.\]](http://docs.aws.amazon.com/id_id/iot/latest/developerguide/images/credentials-provider-diagram.png)


1.  AWS IoT Core Perangkat membuat permintaan HTTPS ke penyedia kredensyal untuk token keamanan. Permintaan termasuk sertifikat perangkat X.509 untuk otentikasi.

1. Penyedia kredensyal meneruskan permintaan ke modul AWS IoT Core otentikasi dan otorisasi untuk memvalidasi sertifikat dan memverifikasi bahwa perangkat memiliki izin untuk meminta token keamanan.

1. Jika sertifikat valid dan memiliki izin untuk meminta token keamanan, modul AWS IoT Core otentikasi dan otorisasi mengembalikan keberhasilan. Jika tidak, ia mengirimkan pengecualian ke perangkat.

1. Setelah berhasil memvalidasi sertifikat, penyedia kredensyal memanggil [AWS Security Token Service (AWS STS)](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) untuk mengambil peran IAM yang Anda buat untuknya.

1. AWS STS mengembalikan token keamanan hak istimewa terbatas sementara ke penyedia kredensyal.

1. Penyedia kredensyal mengembalikan token keamanan ke perangkat.

1. Perangkat menggunakan token keamanan untuk menandatangani AWS permintaan dengan AWS Signature Version 4.

1. Layanan yang diminta memanggil IAM untuk memvalidasi tanda tangan dan mengotorisasi permintaan terhadap kebijakan akses yang dilampirkan pada peran IAM yang Anda buat untuk penyedia kredensyal.

1. Jika IAM berhasil memvalidasi tanda tangan dan mengotorisasi permintaan, permintaan berhasil. Jika tidak, IAM mengirimkan pengecualian.

Bagian berikut menjelaskan cara menggunakan sertifikat untuk mendapatkan token keamanan. Itu ditulis dengan asumsi bahwa Anda telah [mendaftarkan perangkat](register-device.html) [dan membuat serta mengaktifkan sertifikat Anda sendiri](device-certs-your-own.html) untuk itu.

## Cara menggunakan sertifikat untuk mendapatkan token keamanan
<a name="authorizing-direct-aws.walkthrough"></a>

1. Konfigurasikan peran IAM yang diasumsikan oleh penyedia kredensyal atas nama perangkat Anda. Lampirkan kebijakan kepercayaan berikut ke peran tersebut.   
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Principal": {"Service": "credentials.iot.amazonaws.com"},
           "Action": "sts:AssumeRole"
       }
   }
   ```

   Untuk setiap AWS layanan yang ingin Anda panggil, lampirkan kebijakan akses ke peran tersebut. Penyedia kredensyal mendukung variabel kebijakan berikut:
   + `credentials-iot:ThingName`
   + `credentials-iot:ThingTypeName`
   + `credentials-iot:AwsCertificateId`

   Ketika perangkat memberikan nama benda dalam permintaannya ke AWS layanan, penyedia kredensyal menambahkan `credentials-iot:ThingName` dan `credentials-iot:ThingTypeName` sebagai variabel konteks ke token keamanan. Penyedia kredensyal menyediakan `credentials-iot:AwsCertificateId` sebagai variabel konteks meskipun perangkat tidak memberikan nama benda dalam permintaan. Anda meneruskan nama benda sebagai nilai header permintaan `x-amzn-iot-thingname` HTTP.

   Ketiga variabel ini hanya berfungsi untuk kebijakan IAM, bukan AWS IoT Core kebijakan.

1. Pastikan bahwa pengguna yang melakukan langkah berikutnya (membuat alias peran) memiliki izin untuk meneruskan peran yang baru dibuat. AWS IoT Core Kebijakan berikut memberikan keduanya `iam:GetRole` dan `iam:PassRole` izin kepada AWS pengguna. `iam:GetRole`Izin memungkinkan pengguna untuk mendapatkan informasi tentang peran yang baru saja Anda buat. `iam:PassRole`Izin memungkinkan pengguna untuk meneruskan peran ke AWS layanan lain.  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": [
               "iam:GetRole",
               "iam:PassRole"
           ],
           "Resource": "arn:aws:iam::123456789012:role/your role name"
       }
   }
   ```

1. Buat alias AWS IoT Core peran. Perangkat yang akan melakukan panggilan langsung ke AWS layanan harus tahu peran ARN mana yang akan digunakan saat menghubungkan. AWS IoT Core Hard-coding peran ARN bukanlah solusi yang baik karena mengharuskan Anda untuk memperbarui perangkat setiap kali peran ARN berubah. Solusi yang lebih baik adalah dengan menggunakan `CreateRoleAlias` API untuk membuat alias peran yang menunjuk ke peran ARN. Jika peran ARN berubah, Anda cukup memperbarui alias peran. Tidak ada perubahan yang diperlukan pada perangkat. API ini mengambil parameter berikut:  
`roleAlias`  
Wajib. String arbitrer yang mengidentifikasi alias peran. Ini berfungsi sebagai kunci utama dalam model data alias peran. Ini berisi 1-128 karakter dan harus menyertakan hanya karakter alfanumerik dan simbol =, @, dan -. Karakter alfabet huruf besar dan kecil diperbolehkan. Nama alias peran peka huruf besar/kecil.  
`roleArn`  
Wajib. ARN dari peran yang dirujuk alias peran.  
`credentialDurationSeconds`  
Tidak wajib. Berapa lama (dalam hitungan detik) kredensialnya valid. Nilai minimum adalah 900 detik (15 menit). Nilai maksimumnya adalah 43.200 detik (12 jam). Nilai default adalah 3.600 detik (1 jam).   
Penyedia AWS IoT Core Kredensyal dapat mengeluarkan kredensi dengan masa pakai maksimum adalah 43.200 detik (12 jam). Memiliki kredensi yang valid hingga 12 jam dapat membantu mengurangi jumlah panggilan ke penyedia kredensi dengan menyimpan kredensi lebih lama.  
`credentialDurationSeconds`Nilai harus kurang dari atau sama dengan durasi sesi maksimum peran IAM yang dirujuk alias peran. Untuk informasi selengkapnya, lihat [Memodifikasi durasi sesi maksimum peran (AWS API)](https://docs.aws.amazon.com//IAM/latest/UserGuide/roles-managingrole-editing-api.html#roles-modify_max-session-duration-api) dari Panduan Pengguna AWS Identity and Access Management.

   Untuk informasi selengkapnya tentang API ini, lihat [CreateRoleAlias](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateRoleAlias.html). 

1. Lampirkan kebijakan ke sertifikat perangkat. Kebijakan yang dilampirkan pada sertifikat perangkat harus memberikan izin perangkat untuk mengambil peran. Anda melakukan ini dengan memberikan izin untuk `iot:AssumeRoleWithCertificate` tindakan ke alias peran, seperti pada contoh berikut.  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "iot:AssumeRoleWithCertificate",
               "Resource": "arn:aws:iot:us-east-1:123456789012:rolealias/your role alias"
           }
       ]
   }
   ```

1. Buat permintaan HTTPS ke penyedia kredensi untuk mendapatkan token keamanan. Berikan informasi berikut:
   + *Sertifikat*: Karena ini adalah permintaan HTTP melalui otentikasi timbal balik TLS, Anda harus memberikan sertifikat dan kunci pribadi kepada klien Anda saat membuat permintaan. Gunakan sertifikat dan kunci pribadi yang sama dengan yang Anda gunakan saat mendaftarkan sertifikat Anda AWS IoT Core.

     Untuk memastikan perangkat Anda berkomunikasi dengan AWS IoT Core (dan bukan layanan yang menirunya), lihat [Otentikasi Server](x509-client-certs.html#server-authentication), ikuti tautan untuk mengunduh sertifikat CA yang sesuai, lalu salin ke perangkat Anda.
   + *RoleAlias*: Nama alias peran yang Anda buat untuk penyedia kredensyal. Nama alias peran peka huruf besar/kecil dan harus cocok dengan alias peran yang dibuat. AWS IoT Core
   + *ThingName*: Nama benda yang Anda buat ketika Anda mendaftarkan AWS IoT Core barang Anda. Ini diteruskan sebagai nilai header `x-amzn-iot-thingname` HTTP. Nilai ini diperlukan hanya jika Anda menggunakan atribut benda sebagai variabel kebijakan dalam AWS IoT Core atau kebijakan IAM.
**catatan**  
*ThingName*Yang Anda berikan `x-amzn-iot-thingname` harus cocok dengan nama sumber daya AWS IoT Thing yang ditetapkan ke sertifikat. Jika tidak cocok, kesalahan 403 dikembalikan.

   Jalankan perintah berikut di AWS CLI untuk mendapatkan titik akhir penyedia kredensyal untuk Anda. Akun AWS Untuk informasi selengkapnya tentang API ini, lihat [DescribeEndpoint](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeEndpoint.html). Untuk titik akhir yang mendukung FIPS, lihat. [AWS IoT Core- titik akhir penyedia kredensyal](iot-connect-fips.md#iot-connect-fips-credential)

   ```
   aws iot describe-endpoint --endpoint-type iot:CredentialProvider
   ```

   Objek JSON berikut adalah contoh output dari **describe-endpoint** perintah. Ini berisi `endpointAddress` yang Anda gunakan untuk meminta token keamanan.

   ```
   {
       "endpointAddress": "your_aws_account_specific_prefix.credentials.iot.your region.amazonaws.com"
   }
   ```

   Gunakan titik akhir untuk membuat permintaan HTTPS ke penyedia kredensyal untuk mengembalikan token keamanan. Contoh perintah berikut menggunakan`curl`, tetapi Anda dapat menggunakan klien HTTP apa pun.
**catatan**  
Nama *RoleAlias* peka huruf besar/kecil dan harus cocok dengan alias peran yang dibuat. AWS IoT

   ```
   curl --cert your certificate --key your private key -H "x-amzn-iot-thingname: your thing name" --cacert AmazonRootCA1.pem https://your endpoint /role-aliases/your role alias/credentials
   ```

   Perintah ini mengembalikan objek token keamanan yang berisi`accessKeyId`, a, a `secretAccessKey``sessionToken`, dan kedaluwarsa. Objek JSON berikut adalah contoh output dari `curl` perintah.

   ```
       {"credentials":{"accessKeyId":"access key","secretAccessKey":"secret access key","sessionToken":"session token","expiration":"2018-01-18T09:18:06Z"}}
   ```

   Anda kemudian dapat menggunakan`accessKeyId`,`secretAccessKey`, dan `sessionToken` nilai untuk menandatangani permintaan ke AWS layanan. *Untuk end-to-end demonstrasi, lihat [Cara Menghilangkan Kebutuhan AWS Kredensyal Hard-Coded di Perangkat dengan Menggunakan posting blog Penyedia AWS IoT Kredensyal di](https://aws.amazon.com/blogs/security/how-to-eliminate-the-need-for-hardcoded-aws-credentials-in-devices-by-using-the-aws-iot-credentials-provider/) Blog Keamanan.AWS *

# Akses lintas akun dengan IAM
<a name="cross-account-access"></a>

AWS IoT Core memungkinkan Anda untuk mengaktifkan kepala sekolah untuk menerbitkan atau berlangganan topik yang didefinisikan dalam Akun AWS tidak dimiliki oleh kepala sekolah. Anda mengonfigurasi akses lintas akun dengan membuat kebijakan IAM dan peran IAM, lalu melampirkan kebijakan ke peran tersebut.

Pertama, buat kebijakan IAM yang dikelola pelanggan seperti yang dijelaskan dalam [Membuat Kebijakan IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_create.html), seperti yang Anda lakukan untuk pengguna dan sertifikat lain di Anda. Akun AWS

Untuk perangkat yang terdaftar di AWS IoT Core registri, kebijakan berikut memberikan izin untuk perangkat terhubung AWS IoT Core menggunakan ID klien yang cocok dengan nama perangkat dan memublikasikan ke `my/topic/thing-name ` tempat *thing-name* nama perangkat:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/my/topic/${iot:Connection.Thing.ThingName}"
            ]
        }
    ]
}
```

Untuk perangkat yang tidak terdaftar di AWS IoT Core registri, kebijakan berikut memberikan izin kepada perangkat untuk menggunakan nama benda yang `client1` terdaftar di AWS IoT Core registri akun Anda (123456789012) untuk terhubung ke AWS IoT Core dan mempublikasikan ke topik khusus ID klien yang namanya diawali dengan: `my/topic/`

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/my/topic/${iot:ClientId}"
            ]
        }
    ]
}
```

Selanjutnya, ikuti langkah-langkah dalam [Membuat peran untuk mendelegasikan izin ke pengguna IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html). Masukkan ID akun yang ingin Anda bagikan aksesnya. Akun AWS Kemudian, pada langkah terakhir, lampirkan kebijakan yang baru saja Anda buat ke peran tersebut. Jika, di lain waktu, Anda perlu mengubah ID AWS akun yang Anda berikan akses, Anda dapat menggunakan format kebijakan kepercayaan berikut untuk melakukannya: 

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": { 
                "AWS": "arn:aws:iam::567890123456:user/MyUser"
        },
            "Action": "sts:AssumeRole"
        }
    ]
}
```