Enkripsi data log di CloudWatch Log menggunakanAWS Key Management Service - CloudWatch Log Amazon

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

Enkripsi data log di CloudWatch Log menggunakanAWS Key Management Service

Data grup log selalu dienkripsi di CloudWatch Logs. Secara default, CloudWatch Logs menggunakan enkripsi sisi server untuk data log saat istirahat. Sebagai alternatif, Anda dapat menggunakannyaAWS Key Management Service untuk enkripsi ini. Jika Anda melakukannya, enkripsi dilakukan menggunakan kunci yang dikelolaAWS KMS pelanggan. Enkripsi menggunakanAWS KMS diaktifkan di tingkat grup log, dengan mengaitkan kunci dengan grup log, baik ketika Anda membuat grup log maupun setelah grup log ada.

penting

CloudWatch Log sekarang mendukung konteks enkripsi, dengan menggunakankms:EncryptionContext:aws:logs:arn sebagai kunci dan ARN grup log sebagai nilai untuk kunci itu. Jika Anda memiliki grup log yang telah Anda enkripsi dengan kunci yang telah Anda enkripsi dengan kunci yang akan digunakan dengan satu akun dan grup log, Anda harus menetapkan kunci yang dikelola oleh pelanggan yang mencakup syarat dalam kebijakan IAM. Untuk informasi selengkapnya, lihat AWS KMSkunci dan konteks enkripsi.

Setelah Anda mengaitkan kunci yang dikelola oleh pelanggan dengan grup log, semua data yang baru diserap untuk grup log akan dienkripsi menggunakan kunci ini. Data ini disimpan dalam format terenkripsi selama periode retensi. CloudWatch Logs akan mendekripsi data ini kapan pun diminta. CloudWatch Log harus memiliki izin untuk kunci yang dikelola pelanggan kapan pun data terenkripsi diminta.

Jika Anda kemudian memisahkan kunci yang dikelola oleh pelanggan dari grup log, CloudWatch Log akan mengenkripsi data yang baru diserap menggunakan metode enkripsi default. CloudWatch Semua data yang diserap sebelumnya yang dienkripsi dengan kunci yang CloudWatch dikelola oleh pelanggan.

penting

CloudWatch Logs hanya mendukung kunci yang dikelola pelanggan simetris. Jangan gunakan kunci asimetris untuk mengenkripsi data di grup log Anda. Untuk informasi selengkapnya, lihat Menggunakan Kunci Simetris dan Asimetris.

Batas

  • Untuk melakukan langkah-langkah berikut, Anda harus memiliki izin berikut: kms:CreateKey, kms:GetKeyPolicy, dan kms:PutKeyPolicy.

  • Setelah Anda mengaitkan atau memisahkan kunci dari grup log, itu dapat memakan waktu hingga lima menit untuk penerapan operasi.

  • Jika Anda mencabut akses CloudWatch Log ke kunci terkait atau menghapus kunci yang dikelola oleh pelanggan terkait, data Anda yang dienkripsi di CloudWatch Log tidak dapat diambil lagi.

  • Anda tidak dapat mengaitkan kunci terkelola pelanggan dengan grup log menggunakan CloudWatch konsol.

Langkah 1: Membuat kunci terkelolaAWS KMS pelanggan

Untuk membuat kunci yang dikelolaAWS KMS pelanggan, gunakan perintah create-key berikut:

aws kms create-key

Outputnya berisi ID kunci dan Amazon Resource Name (ARN) kunci. Berikut ini adalah contoh output:

{ "KeyMetadata": { "Origin": "AWS_KMS", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Description": "", "KeyManager": "CUSTOMER", "Enabled": true, "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "CreationDate": 1478910250.94, "Arn": "arn:aws:kms:us-west-2:123456789012:key/6f815f63-e628-448c-8251-e40cb0d29f59", "AWSAccountId": "123456789012", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] } }

Langkah 2: Tetapkan izin pada kunci yang dikelola pelanggan

Secara default, semua kunci yang dikelolaAWS KMS pelanggan bersifat privat. Hanya pemilik sumber daya yang dapat menggunakannya untuk mengenkripsi dan mendekripsi data. Namun, pemilik sumber daya dapat memberikan izin untuk mengakses kunci ke pengguna dan sumber daya lain. Dengan langkah ini, Anda memberikan izin utama CloudWatch layanan untuk menggunakan kunci. Prinsipal layanan ini harus berada diAWS Wilayah tempat kunci disimpan.

Sebagai praktik terbaik, sebaiknya Anda membatasi penggunaan kunci hanya ke akun AWS atau grup log yang Anda tentukan.

Pertama, simpan kebijakan default untuk kunci yang dikelola pelanggan Anda sepertipolicy.json menggunakan get-key-policyperintah berikut:

aws kms get-key-policy --key-id key-id --policy-name default --output text > ./policy.json

Buka file policy.json di editor teks dan tambahkan bagian dalam huruf tebal dari salah satu pernyataan berikut. Pisahkan pernyataan yang ada dari pernyataan baru dengan koma. Pernyataan ini menggunakan bagian Condition untuk meningkatkan keamanan kunci AWS KMS. Untuk informasi selengkapnya, lihat AWS KMSkunci dan konteks enkripsi.

Bagian Condition dalam contoh ini membatasi kunci pada satu ARN grup log.

{ "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Your_account_ID:root" }, "Action": "kms:*", "Resource": "*" }, { "Effect": "Allow", "Principal": { "Service": "logs.region.amazonaws.com" }, "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "ArnEquals": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:region:account-id:log-group:log-group-name" } } } ] }

Bagian Condition dalam contoh ini membatasi penggunaan kunci AWS KMS pada akun tertentu, tetapi dapat digunakan untuk grup log apa pun.

{ "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Your_account_ID:root" }, "Action": "kms:*", "Resource": "*" }, { "Effect": "Allow", "Principal": { "Service": "logs.region.amazonaws.com" }, "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "ArnLike": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:region:account-id:*" } } } ] }

Terakhir, tambahkan kebijakan terbaru menggunakan put-key-policyperintah berikut:

aws kms put-key-policy --key-id key-id --policy-name default --policy file://policy.json

Langkah 3: Mengaitkan grup log dengan kunci yang dikelola pelanggan

Anda dapat mengaitkan kunci yang dikelola pelanggan dengan grup log saat Anda membuatnya atau setelah grup log ada.

Untuk menemukan apakah grup log sudah dikaitkan dengan kunci yang dikelola oleh pelanggan, gunakan describe-log-groupsperintah berikut:

aws logs describe-log-groups --log-group-name-prefix "log-group-name-prefix"

Jika outputnya mencakup bidang kmsKeyId, grup log terkait dengan kunci yang ditampilkan untuk nilai bidang tersebut.

Untuk mengaitkan kunci yang dikelola pelanggan dengan grup log saat Anda membuatnya

Gunakan create-log-groupperintah sebagai berikut:

aws logs create-log-group --log-group-name my-log-group --kms-key-id "key-arn"
Untuk mengaitkan kunci yang dikelola pelanggan dengan grup log yang sudah ada

Gunakan associate-kms-keyperintah sebagai berikut:

aws logs associate-kms-key --log-group-name my-log-group --kms-key-id "key-arn"

Langkah 4: Pisahkan grup log dari CMK

Untuk memisahkan kunci yang dikelola pelanggan yang dikaitkan dengan grup log, gunakan disassociate-kms-keyperintah berikut:

aws logs disassociate-kms-key --log-group-name my-log-group

AWS KMSkunci dan konteks enkripsi

Untuk meningkatkan keamananAWS Key Management Service kunci dan grup log terenkripsi, CloudWatch log kini menempatkan ARN grup log sebagai bagian dari konteks enkripsi yang digunakan untuk mengenkripsi data log. Konteks enkripsi adalah seperangkat pasangan nilai-kunci yang digunakan sebagai data terautentikasi tambahan. Konteks enkripsi memungkinkan Anda untuk menggunakan syarat kebijakan IAM untuk membatasi akses ke kunci AWS KMS berdasarkan akun AWS dan grup log. Untuk informasi selengkapnya, lihat Konteks enkripsi and Elemen Kebijakan JSON IAM: Syarat.

Sebaiknya Anda menggunakan kunci terkelola pelanggan yang berbeda untuk setiap grup log terenkripsi.

Jika Anda memiliki grup log yang Anda enkripsi sebelumnya dan sekarang Anda ingin mengubah grup log agar menggunakan kunci yang dikelola oleh pelanggan yang baru yang bekerja hanya untuk grup log tersebut, ikuti langkah-langkah berikut.

Untuk mengonversi grup log terenkripsi agar menggunakan kunci terkelola pelanggan dengan kebijakan yang membatasinya ke grup log tersebut
  1. Masukkan perintah berikut untuk menemukan ARN grup log kunci saat ini:

    aws logs describe-log-groups

    Outputnya mencakup baris berikut. Perhatikan ARN. Anda perlu menggunakannya di langkah 7.

    ... "kmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/01234567-89ab-cdef-0123-456789abcdef" ...
  2. Masukkan perintah berikut untuk membuat kunci terkelola pelanggan baru:

    aws kms create-key
  3. Masukkan perintah berikut untuk menyimpan kebijakan kunci baru ke file policy.json:

    aws kms get-key-policy --key-id new-key-id --policy-name default --output text > ./policy.json
  4. Gunakan editor teks untuk membuka policy.json dan menambahkan ekspresi Condition ke kebijakan:

    { "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT-ID:root" }, "Action": "kms:*", "Resource": "*" }, { "Effect": "Allow", "Principal": { "Service": "logs.region.amazonaws.com" }, "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "ArnLike": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:REGION:ACCOUNT-ID:log- group:LOG-GROUP-NAME" } } } ] }
  5. Masukkan perintah berikut untuk menambahkan kebijakan terbaru ke kunci terkelola pelanggan baru:

    aws kms put-key-policy --key-id new-key-ARN --policy-name default --policy file://policy.json
  6. Masukkan perintah berikut untuk mengaitkan kebijakan dengan grup log Anda:

    aws logs associate-kms-key --log-group-name my-log-group --kms-key-id new-key-ARN

    CloudWatch Log kini mengenkripsi semua data baru menggunakan kunci baru.

  7. Selanjutnya, cabut semua izin kecualiDecrypt dari kunci lama. Pertama, masukkan perintah berikut untuk mengambil kebijakan lama:

    aws kms get-key-policy --key-id old-key-ARN --policy-name default --output text > ./policy.json
  8. Gunakan editor teks untuk membuka policy.json dan hapus semua nilai dari daftar Action, kecuali untuk kms:Decrypt*

    { "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Your_account_ID:root" }, "Action": "kms:*", "Resource": "*" }, { "Effect": "Allow", "Principal": { "Service": "logs.region.amazonaws.com" }, "Action": [ "kms:Decrypt*" ], "Resource": "*" } ] }
  9. Masukkan perintah berikut untuk menambahkan kebijakan terbaru ke kunci lama:

    aws kms put-key-policy --key-id old-key-ARN --policy-name default --policy file://policy.json