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
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 aws:SourceAccount
global aws: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:
untuk izin khusus sumber daya atauaws
:iot:region
:account-id
:resource-type/resource-id
arn:
. Resource-id dapat berupa nama atau ID sumber daya yang diizinkan, atau pernyataan wildcard dari sumber daya yang diizinkan. IDs Pastikan bahwa aws
:iot:region
:account-id
:*
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:
Anda dapat menggunakan contoh kebijakan yang sama diPenyediaan armada.region
:account-id
:provisioningtemplate/example_template
"
Jika Anda menentukan templat penyediaan Anda dalam sumber daya sertifikat CA, nilai aws:SourceArn
dapat berupa "arn:aws:iot:
atau. region
:account-id
:cacert/cert_id
""arn:aws:iot:
Anda dapat menggunakan wildcard saat pengenal sumber daya, seperti ID sertifikat CA, tidak diketahui pada saat pembuatan.region
:account-id
:cacert/*
"
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 awal untuk mendaftarkan sertifikat CA, Anda tidak akan memiliki ARN sertifikat CA untuk menentukan dalam kondisi tersebutaws: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 tanpa memberikan
RegistrationConfig
parameter. -
Setelah sertifikat CA terdaftar AWS IoT Core, hubungi Perbarui CACertificate di atasnya.
Dalam CACertificate panggilan Perbarui, berikan
RegistrationConfig
yang menyertakan kebijakan kepercayaan peran penyediaan denganaws:SourceArn
disetel ke ARN sertifikat CA yang baru terdaftar.
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 di. 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 mengotorisasi 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
" } } } ] }