View a markdown version of this page

Cross-service pencegahan wakil yang bingung - AWS IoT Core

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

Cross-service pencegahan wakil yang bingung

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. Cross-service peniruan diri dapat terjadi ketika satu layanan (layanan panggilan) memanggil layanan lain (layanan yang disebut). Layanan panggilan dapat dimanipulasi untuk menggunakan izinnya untuk bertindak pada 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 aws:SourceAccount global aws:SourceArn dan 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 atauarn:aws:iot:region:account-id:*. Resource-id dapat berupa nama atau ID sumber daya yang diizinkan, atau pernyataan wildcard dari ID sumber daya yang diizinkan. Pastikan bahwa itu region cocok dengan Wil AWS IoT ayah Anda dan account-id cocok dengan ID akun pelanggan Anda.

Contoh berikut menunjukkan cara mencegah masalah wakil yang membingungkan dengan menggunakan kunci konteks kondisi aws:SourceAccount global aws:SourceArn dan dalam kebijakan kepercayaan AWS IoT peran. Untuk contoh lainnya, lihat Contoh terperinci pencegahan wakil yang membingungkan.

{ "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, bisa jadi karena integrasi layanan dengan Layanan Token AWS Keamanan (STS) tidak mendukung kunci aws:SourceAccount konteks aws:SourceArn dan.

Contoh terperinci pencegahan wakil yang membingungkan

Bagian ini memberikan contoh terperinci tentang cara mencegah masalah wakil yang membingungkan aws:SourceArn dengan menggunakan kunci konteks kondisi aws:SourceAccount global dalam kebijakan kepercayaan AWS IoT peran.

Penyediaan armada

Anda dapat mengonfigurasi penye diaan armada menggunakan sumber daya templat penyediaan. Ketika templat penyediaan mereferensikan peran penyediaan, kebijakan kepercayaan peran tersebut dapat menyertakan kunci aws:SourceArn dan aws:SourceAccount kondisi. 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 dalamSourceArn.

{ "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" } } } ] }

GELISAH

Dalam penyediaan just-in-time (JITP), Anda dapat menggunakan templat penyediaan sebagai sumber daya yang terpisah dari CA atau menentukan badan template dan peran sebagai bagian dari konfigurasi sertifikat CA. Nilai aws:SourceArn dalam kebijakan kepercayaan AWS IoT peran tergantung pada cara Anda mendefinisikan template penyediaan.

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 diPenyediaan armada.

Jika Anda menentukan template penyediaan dalam sumber daya sertifikat CA, nilainya aws:SourceArn bisa "arn:aws:iot:region:account-id:cacert/cert_id" atau"arn:aws:iot:region:account-id:cacert/*". Anda dapat menggunakan wildcard ketika 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 dalamSourceArn.

{ "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 peran tersebut dapat diasumsikan. Namun, selama panggilan RegisterCACertificate awal untuk mendaftarkan sertifikat CA, Anda tidak akan memiliki ARN sertifikat CA untuk ditentukan dalam kondisi tersebut. aws:SourceArn

Untuk mengatasinya, misalnya, untuk menentukan kebijakan kepercayaan peran penyediaan ke sertifikat CA tertentu yang terdaftar AWS IoT Core, Anda dapat melakukan hal berikut:

  • Pertama, panggil registerCACertificate tanpa memberikan parameter. RegistrationConfig

  • Setelah sertifikat CA terdaftar AWS IoT Core, panggil up dateCacertificate di atasnya.

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

Penyedia kredensi

Untuk penyedia AWS IoT Core kredensia, gunakan yang sama yang Akun AWS Anda gunakan untuk membuat alias peran diaws:SourceAccount, dan tentukan pernyataan yang cocok dengan ARN sumber daya dari jenis sumber daya rolealias di. aws:SourceArn Saat membuat peran IAM untuk digunakan dengan penyedia AWS IoT Core kredensia, Anda harus menyertakan dalam aws:SourceArn kondisi ARN dari alias peran apa pun yang mungkin perlu mengambil peran tersebut, sehingga mengotorisasi permintaan lintas layanan. sts:AssumeRole

Peran dengan kebijakan kepercayaan berikut hanya dapat diasumsikan oleh prinsipal penyedia AWS IoT Core kredensia (credentials.iot.amazonaws.com) untuk RoleAlias yang ditentukan dalam. SourceArn Jika kepala sekolah mencoba mengambil kredentif untuk alias peran selain yang ditentukan dalam aws:SourceArn kondisi, permintaan akan ditolak, bahkan jika alias peran lainnya mereferensikan 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" } } } ] }