

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

# AWS IoT kebijakan terlalu permisif
<a name="audit-chk-iot-policy-permissive"></a>

 AWS IoT Kebijakan memberikan izin yang terlalu luas atau tidak dibatasi. Ini memberikan izin untuk mengirim atau menerima pesan MQTT untuk serangkaian perangkat yang luas, atau memberikan izin untuk mengakses atau memodifikasi bayangan dan data eksekusi pekerjaan untuk serangkaian perangkat yang luas. 

Secara umum, kebijakan untuk perangkat harus memberikan akses ke sumber daya yang terkait hanya dengan perangkat itu dan tidak ada atau sangat sedikit perangkat lain. Dengan beberapa pengecualian, menggunakan wildcard (misalnya, “\*”) untuk menentukan sumber daya dalam kebijakan semacam itu dianggap terlalu luas atau tidak dibatasi.

Pemeriksaan ini muncul seperti `IOT_POLICY_OVERLY_PERMISSIVE_CHECK` pada CLI dan API.

Tingkat keparahan: **Kritis**

## Detail
<a name="audit-chk-iot-policy-permissive-details"></a>

Kode alasan berikut dikembalikan saat pemeriksaan ini menemukan kebijakan yang tidak sesuai AWS IoT :
+ ALLOWS\_BROAD\_ACCESS\_TO\_IOT\_DATA\_PLANE\_ACTIONS

## Mengapa itu penting
<a name="audit-chk-iot-policy-permissive-why-it-matters"></a>

Sertifikat, identitas Amazon Cognito, atau grup benda dengan kebijakan yang terlalu permisif dapat, jika dikompromikan, memengaruhi keamanan seluruh akun Anda. Penyerang dapat menggunakan akses luas tersebut untuk membaca atau memodifikasi bayangan, pekerjaan, atau eksekusi pekerjaan untuk semua perangkat Anda. Atau penyerang dapat menggunakan sertifikat yang disusupi untuk menghubungkan perangkat berbahaya atau meluncurkan serangan DDOS di jaringan Anda.

## Bagaimana cara memperbaikinya
<a name="audit-chk-iot-policy-permissive-how-to-fix"></a>

Ikuti langkah-langkah ini untuk memperbaiki kebijakan yang tidak patuh yang melekat pada hal-hal, grup benda, atau entitas lain:

1. Gunakan [CreatePolicyVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePolicyVersion.html)untuk membuat versi kebijakan yang baru dan sesuai. Atur `setAsDefault` bendera ke true. (Ini membuat versi baru ini beroperasi untuk semua entitas yang menggunakan kebijakan.)

1. Gunakan [ListTargetsForPolicy](https://docs.aws.amazon.com/iot/latest/apireference/API_ListTargetsForPolicy.html)untuk mendapatkan daftar target (sertifikat, grup benda) yang dilampirkan kebijakan dan tentukan perangkat mana yang termasuk dalam grup atau yang menggunakan sertifikat untuk terhubung.

1. Verifikasi bahwa semua perangkat terkait dapat terhubung AWS IoT. Jika perangkat tidak dapat terhubung, gunakan [ SetPolicyVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_SetPolicyVersion.html)untuk memutar kembali kebijakan default ke versi sebelumnya, merevisi kebijakan, dan coba lagi. 

Anda dapat menggunakan tindakan mitigasi untuk:
+ Terapkan tindakan `REPLACE_DEFAULT_POLICY_VERSION` mitigasi pada temuan audit Anda untuk membuat perubahan ini. 
+ Terapkan tindakan `PUBLISH_FINDINGS_TO_SNS` mitigasi jika Anda ingin menerapkan respons khusus sebagai respons terhadap pesan Amazon SNS. 

Untuk informasi selengkapnya, lihat [Tindakan mitigasi](dd-mitigation-actions.md). 

Gunakan [variabel AWS IoT Core kebijakan](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policy-variables.html) untuk mereferensikan AWS IoT sumber daya secara dinamis dalam kebijakan Anda.

## Izin MQTT
<a name="audit-chk-iot-policy-permissive-mqtt-permissions"></a>

Pesan MQTT dikirim melalui broker AWS IoT pesan dan digunakan oleh perangkat untuk melakukan banyak tindakan, termasuk mengakses dan memodifikasi status bayangan dan status eksekusi pekerjaan. Kebijakan yang memberikan izin ke perangkat untuk menghubungkan, menerbitkan, atau berlangganan pesan MQTT harus membatasi tindakan ini ke sumber daya tertentu sebagai berikut:

**Hubungkan**  
+ tidak patuh:

  ```
  arn:aws:iot:{{region}}:{{account-id}}:client/*
  ```

  Wildcard \* memungkinkan perangkat apa pun untuk AWS IoT terhubung.

  ```
  arn:aws:iot:{{region}}:{{account-id}}:client/${iot:ClientId}
  ```

  Kecuali `iot:Connection.Thing.IsAttached` disetel ke true dalam kunci kondisi, ini setara dengan wildcard \* seperti pada contoh sebelumnya.
+ sesuai:

------
#### [ JSON ]

****  

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

------

  Spesifikasi sumber daya berisi variabel yang cocok dengan nama perangkat yang digunakan untuk menghubungkan. Pernyataan kondisi selanjutnya membatasi izin dengan memeriksa bahwa sertifikat yang digunakan oleh klien MQTT cocok dengan yang dilampirkan pada benda dengan nama yang digunakan.

**Publikasikan**  
+ tidak patuh:

  ```
  arn:aws:iot:{{region}}:{{account-id}}:topic/$aws/things/*/shadow/update
  ```

  Ini memungkinkan perangkat untuk memperbarui bayangan perangkat apa pun (\* = semua perangkat).

  ```
  arn:aws:iot:{{region}}:{{account-id}}:topic/$aws/things/*
  ```

  Ini memungkinkan perangkat untuk membaca, memperbarui, atau menghapus bayangan perangkat apa pun.
+ sesuai:

------
#### [ JSON ]

****  

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

------

  Spesifikasi sumber daya berisi wildcard, tetapi hanya cocok dengan topik terkait bayangan untuk perangkat yang namanya digunakan untuk terhubung.

**Langganan**  
+ tidak patuh:

  ```
  arn:aws:iot:{{region}}:{{account-id}}:topicfilter/$aws/things/*
  ```

  Ini memungkinkan perangkat untuk berlangganan bayangan cadangan atau topik pekerjaan untuk semua perangkat.

  ```
  arn:aws:iot:{{region}}:{{account-id}}:topicfilter/$aws/things/*
  ```

  Sama seperti contoh sebelumnya, tetapi menggunakan wildcard \#.

  ```
  arn:aws:iot:{{region}}:{{account-id}}:topicfilter/$aws/things/+/shadow/update
  ```

  Ini memungkinkan perangkat untuk melihat pembaruan bayangan pada perangkat apa pun (\+ = semua perangkat).
+ sesuai:

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iot:Subscribe"
              ],
              "Resource": [
                  "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/shadow/*",
                  "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/jobs/*"
              ]
          }
      ]
  }
  ```

------

  Spesifikasi sumber daya berisi wildcard, tetapi hanya cocok dengan topik terkait bayangan dan topik terkait pekerjaan apa pun untuk perangkat yang namanya digunakan untuk terhubung.

**Menerima**  
+ sesuai:

  ```
  arn:aws:iot:{{region}}:{{account-id}}:topic/$aws/things/*
  ```

  Ini sesuai karena perangkat hanya dapat menerima pesan dari topik yang memiliki izin untuk berlangganan.

## Izin bayangan dan pekerjaan
<a name="shadow-job-permissions"></a>

Kebijakan yang memberikan izin kepada perangkat untuk melakukan tindakan API guna mengakses atau memodifikasi bayangan perangkat atau data eksekusi pekerjaan harus membatasi tindakan ini ke sumber daya tertentu. Berikut ini adalah tindakan API:
+ `DeleteThingShadow`
+ `GetThingShadow`
+ `UpdateThingShadow`
+ `DescribeJobExecution`
+ `GetPendingJobExecutions`
+ `StartNextPendingJobExecution`
+ `UpdateJobExecution`

**Contoh**
+ tidak patuh:

  ```
  arn:aws:iot:{{region}}:{{account-id}}:thing/*
  ```

  Ini memungkinkan perangkat untuk melakukan tindakan yang ditentukan pada hal apa pun.
+ sesuai:

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [ 
            "iot:DeleteThingShadow",
            "iot:GetThingShadow",
            "iot:UpdateThingShadow",
            "iotjobsdata:DescribeJobExecution",
            "iotjobsdata:GetPendingJobExecutions",
            "iotjobsdata:StartNextPendingJobExecution",
            "iotjobsdata:UpdateJobExecution"
        ],
        "Resource": [
          "arn:aws:iot:us-east-1:123456789012:thing/MyThing1",
          "arn:aws:iot:us-east-1:123456789012:thing/MyThing2"
        ]
      }
    ]
  }
  ```

------

  Ini memungkinkan perangkat untuk melakukan tindakan yang ditentukan hanya pada dua hal.