

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

# 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"
        }
      }
    }
  ]
}
```