AWS IoT kebijakan terlalu permisif - AWS IoT Device Defender

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

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

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

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

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

  1. Gunakan CreatePolicyVersionuntuk membuat versi kebijakan yang baru dan sesuai. Atur setAsDefault bendera ke true. (Ini membuat versi baru ini beroperasi untuk semua entitas yang menggunakan kebijakan.)

  2. Gunakan ListTargetsForPolicyuntuk mendapatkan daftar target (sertifikat, grup benda) yang dilampirkan kebijakan dan tentukan perangkat mana yang termasuk dalam grup atau yang menggunakan sertifikat untuk terhubung.

  3. Verifikasi bahwa semua perangkat terkait dapat terhubung AWS IoT. Jika perangkat tidak dapat terhubung, gunakan SetPolicyVersionuntuk 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.

Gunakan variabel AWS IoT Core kebijakan untuk mereferensikan AWS IoT sumber daya secara dinamis dalam kebijakan Anda.

Izin MQTT

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:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:region:account-id:client/${iot:Connection.Thing.ThingName}" ], "Condition": { "Bool": { "iot:Connection.Thing.IsAttached": "true" } } } ] }

    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:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account-id: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:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account-id:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/shadow/*" "arn:aws:iot:region:account-id: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

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:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:DeleteThingShadow", "iot:GetThingShadow", "iot:UpdateThingShadow", "iot:DescribeJobExecution", "iot:GetPendingJobExecutions", "iot:StartNextPendingJobExecution", "iot:UpdateJobExecution" ], "Resource": [ "arn:aws:iot:region:account-id:/thing/MyThing1", "arn:aws:iot:region:account-id:/thing/MyThing2" ] } ] }

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