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 Logs. Secara bawaan, CloudWatch Logs menggunakan enkripsi sisi server untuk data log saat istirahat. Sebagai alternatif, Anda dapat menggunakan AWS Key Management Service enkripsi ini. Jika Anda melakukannya, enkripsi dilakukan menggunakan AWS KMS kunci. Enkripsi menggunakan AWS KMS diaktifkan di tingkat grup log, dengan mengaitkan kunci KMS dengan grup log, baik ketika Anda membuat grup log maupun setelah grup log ada.
penting
CloudWatch Catatan sekarang mendukung konteks enkripsi, menggunakan kms: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 KMS, dan Anda ingin membatasi kunci untuk digunakan dengan satu akun dan grup log, Anda harus menetapkan kunci KMS baru yang mencakup syarat dalam kebijakan IAM. Untuk informasi selengkapnya, lihat AWS KMSkunci dan konteks enkripsi.
Setelah Anda mengaitkan kunci KMS 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 Catatan harus memiliki izin untuk kunci KMS kapan pun data terenkripsi diminta.
Jika Anda memisahkan kunci KMS dari grup CloudWatch log, Logs mengenkripsi data yang baru diserap menggunakan metode enkripsi default Log. CloudWatch Semua data yang diserap sebelumnya yang dienkripsi dengan kunci KMS tetap dienkripsi dengan kunci KMS. CloudWatch Log masih dapat mengembalikan data tersebut setelah kunci KMS dipisahkan, karena CloudWatch Log masih dapat terus mereferensikan kunci tersebut. Namun, jika kunci kemudian dinonaktifkan, maka CloudWatch Log tidak dapat membaca log yang dienkripsi dengan kunci itu.
penting
CloudWatch Logs hanya mendukung kunci KMS 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
, dankms: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 KMS terkait, data Anda yang dienkripsi di CloudWatch Logs tidak dapat diambil lagi.
-
Anda tidak dapat mengaitkan kunci KMS dengan grup log menggunakan CloudWatch konsol.
Langkah 1: Buat AWS KMS kunci
Untuk membuat kunci KMS, 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: Mengatur izin pada kunci KMS
Secara default, semua AWS KMS kunci bersifat privat. Hanya pemilik sumber daya yang dapat menggunakannya untuk mengenkripsi dan mendekripsi data. Namun, pemilik sumber daya dapat memberikan izin untuk mengakses kunci KMS ke pengguna dan sumber daya lain. Dengan langkah ini, Anda memberikan izin utama layanan CloudWatch Log untuk menggunakan kunci. Prinsipal layanan ini harus berada di AWS Wilayah tempat kunci KMS disimpan.
Sebagai praktik terbaik, sebaiknya Anda membatasi penggunaan kunci KMS hanya ke AWS akun atau grup log yang Anda tentukan.
Pertama, simpan kebijakan default untuk kunci KMS 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 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 yang sudah 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 kunci KMS dengan grup log
Anda dapat mengaitkan kunci KMS dengan grup log saat Anda membuatnya atau setelah grup log ada.
Untuk menemukan apakah grup log sudah dikaitkan dengan kunci KMS, 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 KMS 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 KMS 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: Putuskan kunci dari grup log
Untuk memisahkan kunci KMS yang dikaitkan dengan grup log, gunakan perintah berikut: disassociate-kms-key
aws logs disassociate-kms-key --log-group-name
my-log-group
AWS KMSkunci dan konteks enkripsi
Untuk meningkatkan keamanan AWS Key Management Service kunci dan grup log terenkripsi, CloudWatch Logs sekarang menempatkan ARN grup log 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 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 KMS 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 KMS baru yang bekerja hanya untuk grup log, ikuti langkah-langkah berikut.
Untuk mengonversi grup log terenkripsi agar menggunakan kunci KMS dengan kebijakan yang membatasinya ke grup log tersebut
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" ...
Masukkan perintah berikut untuk membuat kunci KMS:
aws kms create-key
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.jsonGunakan editor teks untuk membuka
policy.json
dan menambahkan ekspresiCondition
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
" } } } ] }Masukkan perintah berikut untuk menambahkan kebijakan terbaru ke kunci KMS baru:
aws kms put-key-policy --key-id
new-key-ARN
--policy-name default --policy file://policy.jsonMasukkan perintah berikut untuk mengaitkan kebijakan dengan grup log Anda:
aws logs associate-kms-key --log-group-name
my-log-group
--kms-key-idnew-key-ARN
CloudWatch Logs sekarang mengenkripsi semua data baru menggunakan kunci baru.
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.jsonGunakan editor teks untuk membuka
policy.json
dan hapus semua nilai dari daftarAction
, kecuali untukkms: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": "*" } ] }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