Enkripsi data log di CloudWatch Log menggunakan AWS 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 menggunakan AWS Key Management Service

Data grup log selalu dienkripsi di CloudWatch Log. Secara default, CloudWatch Log menggunakan enkripsi sisi server dengan 256-bit Advanced Encryption Standard Galois/Counter Mode (AES-) untuk mengenkripsi data log saat istirahat. GCM Sebagai alternatif, Anda dapat menggunakan AWS Key Management Service untuk enkripsi ini. Jika Anda melakukannya, enkripsi dilakukan dengan menggunakan AWS KMS kunci. Enkripsi menggunakan AWS KMS diaktifkan di tingkat grup log, dengan mengaitkan KMS kunci dengan grup log, baik saat Anda membuat grup log atau setelah itu ada.

penting

CloudWatch Log sekarang mendukung konteks enkripsi, menggunakan kms:EncryptionContext:aws:logs:arn sebagai kunci dan grup log sebagai nilai untuk kunci itu. ARN Jika Anda memiliki grup log yang telah dienkripsi dengan KMS kunci, dan Anda ingin membatasi kunci yang akan digunakan dengan satu akun dan grup log, Anda harus menetapkan KMS kunci baru yang menyertakan kondisi dalam kebijakan. IAM Untuk informasi selengkapnya, lihat AWS KMS kunci dan konteks enkripsi.

Setelah Anda mengaitkan KMS kunci dengan grup log, semua data yang baru dicerna untuk grup log dienkripsi menggunakan kunci ini. Data ini disimpan dalam format terenkripsi selama periode retensi. CloudWatch Log mendekripsi data ini setiap kali diminta. CloudWatch Log harus memiliki izin untuk KMS kunci setiap kali data terenkripsi diminta.

Jika Anda kemudian memisahkan KMS kunci dari grup CloudWatch log, Log mengenkripsi data yang baru dicerna menggunakan metode enkripsi default CloudWatch Log. Semua data yang dicerna sebelumnya yang dienkripsi dengan KMS kunci tetap dienkripsi dengan kunci. KMS CloudWatch Log masih dapat mengembalikan data tersebut setelah KMS kunci dipisahkan, karena CloudWatch Log masih dapat terus mereferensikan kunci. Namun, jika kunci kemudian dinonaktifkan, maka CloudWatch Log tidak dapat membaca log yang dienkripsi dengan kunci itu.

penting

CloudWatch Log hanya mendukung KMS kunci simetris. Jangan gunakan kunci asimetris untuk mengenkripsi data dalam 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, diperlukan waktu hingga lima menit agar operasi diterapkan.

  • Jika Anda mencabut akses CloudWatch Log ke kunci terkait atau menghapus KMS kunci terkait, data terenkripsi Anda di CloudWatch Log tidak dapat diambil lagi.

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

Langkah 1: Buat AWS KMS kunci

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

aws kms create-key

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

{ "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 KMS

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

Sebagai praktik terbaik, kami menyarankan Anda membatasi penggunaan KMS kunci hanya untuk itu AWS akun atau grup log yang Anda tentukan.

Pertama, simpan kebijakan default untuk KMS kunci Anda seperti policy.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 Condition bagian untuk meningkatkan keamanan AWS KMS kunci. Untuk informasi selengkapnya, lihat AWS KMS kunci dan konteks enkripsi.

ConditionBagian dalam contoh ini membatasi kunci ke grup ARN log tunggal.

{ "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" } } } ] }

ConditionBagian dalam contoh ini membatasi penggunaan AWS KMS kunci ke akun yang ditentukan, 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 yang diperbarui menggunakan put-key-policyperintah berikut:

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

Langkah 3: Kaitkan KMS kunci dengan grup log

Anda dapat mengaitkan KMS kunci dengan grup log saat Anda membuatnya atau setelah itu ada.

Untuk mengetahui apakah grup log sudah memiliki KMS kunci yang terkait, 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 KMS kunci 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 KMS kunci dengan grup log yang 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 kunci dari grup log

Untuk memisahkan KMS kunci yang terkait dengan grup log, gunakan disassociate-kms-keyperintah berikut:

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

AWS KMS kunci dan konteks enkripsi

Untuk meningkatkan keamanan Anda AWS Key Management Service kunci dan grup log terenkripsi Anda, CloudWatch Log sekarang menempatkan grup log ARNs sebagai bagian dari konteks enkripsi yang digunakan untuk mengenkripsi data log Anda. Konteks enkripsi adalah seperangkat pasangan nilai-kunci yang digunakan sebagai data terautentikasi tambahan. Konteks enkripsi memungkinkan Anda untuk menggunakan kondisi IAM kebijakan untuk membatasi akses ke AWS KMS kunci oleh AWS akun dan grup log. Untuk informasi selengkapnya, lihat Konteks enkripsi dan Elemen IAM JSON Kebijakan: Kondisi.

Kami menyarankan Anda menggunakan KMS kunci yang berbeda untuk setiap grup log terenkripsi Anda.

Jika Anda memiliki grup log yang Anda enkripsi sebelumnya dan sekarang ingin mengubah grup log untuk menggunakan KMS kunci baru yang hanya berfungsi untuk grup log itu, ikuti langkah-langkah ini.

Untuk mengonversi grup log terenkripsi untuk menggunakan KMS kunci dengan kebijakan yang membatasi grup log tersebut
  1. Masukkan perintah berikut untuk menemukan kunci grup log saat ini: ARN

    aws logs describe-log-groups

    Outputnya mencakup baris berikut. Buat catatan dariARN. 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 KMS kunci 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 yang diperbarui ke KMS kunci 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 sekarang mengenkripsi semua data baru menggunakan kunci baru.

  7. Selanjutnya, cabut semua izin kecuali Decrypt 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 yang diperbarui ke kunci lama:

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