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.
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.
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
, 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 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
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 terkelola pelanggan baru:
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 terkelola pelanggan 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 Log kini 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