Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AWS KMS kebijakan kunci dan izin untuk mengenkripsi hasil CloudFormation Hooks saat istirahat
Topik ini menjelaskan cara menyiapkan kebijakan AWS KMS kunci dan izin yang Anda perlukan saat menentukan kunci terkelola pelanggan untuk mengenkripsi data anotasi Hooks yang tersedia dari API. GetHookResult
catatan
CloudFormation Hooks tidak memerlukan otorisasi tambahan untuk menggunakan default Kunci milik AWS untuk mengenkripsi data anotasi di akun Anda.
Topik
Gambaran Umum
Berikut ini AWS KMS keys dapat digunakan untuk mengenkripsi data anotasi Hook:
-
Kunci milik AWS— Secara default, CloudFormation menggunakan Kunci milik AWS untuk mengenkripsi data. Anda tidak dapat melihat, mengelola, atau menggunakan Kunci milik AWS, atau mengaudit penggunaannya. Namun, Anda tidak perlu melakukan konfigurasi eksplisit untuk melindungi kunci yang digunakan untuk mengenkripsi data Anda. Kunci milik AWS disediakan secara gratis (tidak ada biaya bulanan atau biaya penggunaan). Kecuali Anda diminta untuk mengaudit atau mengontrol kunci enkripsi yang melindungi data anotasi Anda, a Kunci milik AWS adalah pilihan yang baik.
-
Kunci terkelola pelanggan — CloudFormation mendukung penggunaan kunci terkelola pelanggan simetris yang Anda buat, miliki, dan kelola untuk menambahkan lapisan enkripsi kedua di atas yang ada Kunci milik AWS. AWS KMS dikenakan biaya. Untuk informasi selengkapnya, lihat Membuat kunci di Panduan AWS Key Management Service Pengembang. Untuk mengelola kunci Anda, gunakan AWS Key Management Service (AWS KMS) di AWS KMS konsol
, the AWS CLI, atau AWS KMS API. Lihat informasi selengkapnya di Panduan Developer AWS Key Management Service.
Anda dapat mengonfigurasi kunci yang dikelola pelanggan saat membuat dan memperbarui Hooks. Saat Anda memberikan kunci terkelola pelanggan Anda, CloudFormation gunakan kunci ini untuk mengenkripsi data anotasi sebelum menyimpannya. Ketika data anotasi kemudian diakses selama operasi GetHookResult API, CloudFormation secara otomatis mendekripsi data tersebut. Untuk informasi tentang mengonfigurasi kunci enkripsi untuk Hooks, lihat. Referensi sintaks skema konfigurasi hook
penting
Perhatikan bahwa KmsKeyId opsi untuk menentukan kunci yang dikelola pelanggan saat ini hanya tersedia saat Anda menggunakan tombol AWS CLI untuk mengonfigurasi Hook Anda.
Menggunakan konteks enkripsi untuk mengontrol akses ke kunci terkelola pelanggan Anda
CloudFormation Hooks secara otomatis menyertakan konteks enkripsi dengan setiap penyimpanan anotasi dan operasi pengambilan. Ini memungkinkan Anda menyetel kondisi konteks enkripsi dalam kebijakan kunci untuk memastikan kunci hanya dapat digunakan untuk Hook tertentu:
-
kms:EncryptionContext:aws:cloudformation:hooks:service— Memastikan kunci hanya digunakan oleh layanan CloudFormation Hooks. -
kms:EncryptionContext:aws:cloudformation:account-id— Mencegah penggunaan kunci lintas akun dengan mencocokkan Akun AWS ID Anda. -
kms:EncryptionContext:aws:cloudformation:arn— Batasi penggunaan untuk Hooks tertentu menggunakan pola ARN.
Kondisi ini memberikan perlindungan tambahan terhadap serangan wakil yang membingungkan dengan mengikat data terenkripsi secara kriptografis ke konteks Hook tertentu.
Kebijakan kunci KMS yang dikelola pelanggan
Saat membuat kunci terkelola pelanggan Anda, Anda harus menentukan kebijakan utamanya untuk memungkinkan layanan CloudFormation Hooks melakukan AWS KMS operasi. Untuk menggunakan kebijakan kunci berikut, ganti placeholder values dengan informasi Anda sendiri.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnableIAMUserDescribeKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "cloudformation.us-east-1.amazonaws.com" } } }, { "Sid": "EnableIAMUserGenerateDataKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "cloudformation.us-east-1.amazonaws.com", "kms:EncryptionContext:aws:cloudformation:hooks:service": "hooks.cloudformation.amazonaws.com", "kms:EncryptionContext:aws:cloudformation:account-id": "111122223333" }, "StringLike": { "kms:EncryptionContext:aws:cloudformation:arn": "arn:aws:cloudformation:*:111122223333:hook/*" } } }, { "Sid": "EnableIAMUserDecrypt", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "cloudformation.us-east-1.amazonaws.com" } } }, { "Sid": "AllowHooksServiceDescribeKey", "Effect": "Allow", "Principal": { "Service": "hooks.cloudformation.amazonaws.com" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "StringLike": { "aws:SourceArn": "arn:aws:cloudformation:*:111122223333:hook/*" } } }, { "Sid": "AllowHooksService", "Effect": "Allow", "Principal": { "Service": "hooks.cloudformation.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "kms:EncryptionContext:aws:cloudformation:hooks:service": "hooks.cloudformation.amazonaws.com", "kms:EncryptionContext:aws:cloudformation:account-id": "111122223333" }, "StringLike": { "aws:SourceArn": "arn:aws:cloudformation:*:111122223333:hook/*", "kms:EncryptionContext:aws:cloudformation:arn": "arn:aws:cloudformation:*:111122223333:hook/*" } } } ] }
Kebijakan ini memberikan izin untuk peran IAM (tiga pernyataan pertama) dan layanan CloudFormation Hooks (dua pernyataan terakhir). Kunci kms:ViaService kondisi memastikan kunci KMS hanya dapat digunakan CloudFormation, mencegah panggilan API KMS langsung. Operasi kuncinya adalah:
-
kms:DescribeKey— Memvalidasi properti utama dan metadata. Operasi ini dalam pernyataan terpisah karena tidak dapat digunakan dengan kondisi konteks enkripsi. -
kms:GenerateDataKey— Menghasilkan kunci enkripsi data untuk mengenkripsi anotasi sebelum penyimpanan. Operasi ini mencakup kondisi konteks enkripsi untuk kontrol akses cakupan. -
kms:Decrypt— Mendekripsi data anotasi yang sebelumnya dienkripsi. Untuk peran IAM, ini termasukkms:ViaServicekondisi. Untuk prinsipal layanan, ini termasuk kondisi konteks enkripsi.
Kunci aws:SourceAccount dan aws:SourceArn kondisi memberikan perlindungan utama terhadap serangan wakil yang membingungkan. Kondisi konteks enkripsi menyediakan lapisan validasi tambahan. Untuk informasi selengkapnya, lihat Menggunakan aws:SourceArn atau aws:SourceAccount mengkondisikan kunci di Panduan AWS Key Management Service Pengembang.
penting
Peran eksekusi hook tidak memerlukan AWS KMS izin. Prinsipal layanan CloudFormation Hooks melakukan semua AWS KMS operasi.
Izin KMS untuk API SetTypeConfiguration
Selama panggilan SetTypeConfigurationAPI, CloudFormation memvalidasi izin pengguna untuk mengenkripsi data anotasi dengan kunci yang ditentukan. AWS KMS Tambahkan kebijakan IAM berikut ke pengguna atau peran yang akan mengonfigurasi enkripsi menggunakan SetTypeConfiguration API. Ganti dengan ARN kunci yang dikelola pelanggan Anda.arn:aws:kms:us-east-1:123456789012:key/abc-123
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloudformation:SetTypeConfiguration", "Resource": "*" }, { "Effect": "Allow", "Action": "kms:DescribeKey", "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc-123" }, { "Effect": "Allow", "Action": "kms:GenerateDataKey", "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc-123", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:cloudformation:hooks:service": "hooks.cloudformation.amazonaws.com", "kms:EncryptionContext:aws:cloudformation:account-id": "123456789012" }, "StringLike": { "kms:EncryptionContext:aws:cloudformation:arn": "arn:aws:cloudformation:*:123456789012:hook/*" } } } ] }
Izin KMS untuk API GetHookResult
GetHookResultUntuk memanggil Hooks yang menggunakan kunci terkelola pelanggan Anda, pengguna harus memiliki kms:Decrypt izin untuk kunci tersebut. Tambahkan kebijakan IAM berikut ke pengguna atau peran yang akan memanggilGetHookResult. Ganti dengan ARN kunci yang dikelola pelanggan Anda.arn:aws:kms:us-east-1:123456789012:key/abc-123
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloudformation:GetHookResult", "Resource": "*" }, { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc-123" } ] }