View a markdown version of this page

Cross-service pencegahan wakil 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 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 identitas dapat terjadi ketika satu layanan (layanan panggilan) memanggil layanan lain (layanan yang disebut). 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 aws:SourceAccountglobal aws:SourceArndan 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 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 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 rinci 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, itu bisa jadi karena integrasi layanan dengan AWS Security Token Service (STS) tidak mendukung kunci aws:SourceAccount konteks aws:SourceArn dan.

Contoh rinci pencegahan wakil yang membingungkan

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

Anda dapat mengonfigurasi penyediaan armada 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

Dalam just-in-time provisioning (JITP), 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.

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 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 panggilan RegisterCacertificate awal untuk mendaftarkan sertifikat CA, Anda tidak akan memiliki ARN sertifikat CA untuk ditentukan dalam kondisi. 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, panggil registerCacertificate tanpa memberikan parameter. RegistrationConfig

  • Setelah sertifikat CA terdaftar, hubungi UpdateCacertificate di atasnya. AWS IoT Core

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

Penyedia kredensi

Untuk penyedia AWS IoT Core kredensyal, gunakan yang sama yang Akun AWS Anda gunakan untuk membuat alias peranaws: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 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 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" } } } ] }