Pencegahan confused deputy lintas layanan - Amazon Quantum Ledger Database (Amazon QLDB)

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 pemanggilan dapat dimanipulasi menggunakan izinnya untuk bertindak pada sumber daya pelanggan lain dengan cara yang seharusnya tidak dilakukannya kecuali bila memiliki izin untuk mengakses. Untuk mencegah masalah wakil yang membingungkan, AWS sediakan alat yang membantu Anda melindungi data Anda untuk semua layanan dengan prinsip layanan yang telah diberikan akses ke sumber daya di akun Anda.

Sebaiknya gunakan kunci konteks kondisi aws:SourceAccountglobal aws:SourceArndan global dalam kebijakan sumber daya untuk membatasi izin yang diberikan Amazon QLDB layanan lain ke 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.

Tabel berikut mencantumkan kemungkinan nilai aws:SourceArn untuk operasi API QLDB ExportJournalToS3dan StreamsJournalToKinesisQLDB. Operasi ini berada dalam lingkup untuk masalah keamanan ini karena mereka memanggil AWS Security Token Service (AWS STS) untuk mengambil peran IAM yang Anda tentukan.

Operasi API Layanan yang dipanggil aws: SourceArn
ExportJournalToS3 AWS STS (AssumeRole)

Memungkinkan QLDB untuk mengambil peran untuk sumber daya QLDB apa pun di akun:

arn:aws:qldb:us-east-1:123456789012:*

Saat ini, QLDB hanya mendukung ARN wildcard ini untuk ekspor jurnal.

StreamsJournalToKinesis AWS STS (AssumeRole)

Memungkinkan QLDB untuk mengambil peran untuk aliran QLDB tertentu:

arn:aws:qldb:us-east-1:123456789012:stream/myExampleLedger/IiPT4brpZCqCq3f4MTHbYy

Catatan: Anda hanya dapat menentukan ID aliran di ARN setelah sumber daya aliran dibuat. Dengan menggunakan ARN ini, Anda dapat mengizinkan peran hanya digunakan untuk satu aliran QLDB.

Memungkinkan QLDB untuk mengambil peran untuk setiap aliran QLDB dari buku besar:

arn:aws:qldb:us-east-1:123456789012:stream/myExampleLedger/*

Memungkinkan QLDB untuk mengambil peran untuk setiap aliran QLDB di akun:

arn:aws:qldb:us-east-1:123456789012:stream/*

Memungkinkan QLDB untuk mengambil peran untuk sumber daya QLDB apa pun di akun:

arn:aws:qldb:us-east-1:123456789012:*

Cara paling efektif untuk melindungi dari masalah confused deputy adalah dengan menggunakan kunci konteks kondisi global aws:SourceArn dengan ARN lengkap sumber daya. Jika Anda tidak mengetahui ARN lengkap sumber daya atau jika Anda menentukan beberapa sumber daya, gunakan kunci kondisi konteks aws:SourceArn global dengan karakter wildcard (*) untuk bagian ARN yang tidak diketahui—misalnya,. arn:aws:qldb:us-east-1:123456789012:*

Contoh kebijakan kepercayaan berikut untuk peran IAM menunjukkan bagaimana Anda dapat menggunakan kunci konteks kondisi aws:SourceAccount global aws:SourceArn dan untuk mencegah masalah wakil yang membingungkan. Dengan kebijakan kepercayaan ini, QLDB dapat mengambil peran untuk aliran QLDB apa pun di akun untuk buku besar saja. 123456789012 myExampleLedger

Untuk menggunakan kebijakan ini, ganti us-east-1, 123456789012, dan dalam contoh dengan informasi Anda sendiri. myExampleLedger

{ "Version": "2012-10-17", "Statement": { "Sid": "ConfusedDeputyPreventionExamplePolicy", "Effect": "Allow", "Principal": { "Service": "qldb.amazonaws.com" }, "Action": [ "sts:AssumeRole" ], "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:qldb:us-east-1:123456789012:stream/myExampleLedger/*" }, "StringEquals": { "aws:SourceAccount": "123456789012" } } } }