Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Enkripsi tabel pencarian di CloudWatch Log menggunakan AWS Key Management Service
Data tabel pencarian selalu dienkripsi di Log. CloudWatch Secara default, CloudWatch Log menggunakan enkripsi sisi server dengan Advanced Encryption Standard Galois/Counter Mode (AES-GCM) 256-bit untuk mengenkripsi data tabel pencarian saat istirahat. Sebagai alternatif, Anda dapat menggunakan AWS Key Management Service enkripsi ini. Jika Anda melakukannya, enkripsi dilakukan dengan menggunakan AWS KMS kunci. Penggunaan enkripsi AWS KMS diaktifkan pada tingkat tabel pencarian, dengan mengaitkan kunci KMS dengan tabel pencarian, baik saat Anda membuat tabel pencarian atau saat Anda memperbaruinya.
penting
CloudWatch Log hanya mendukung kunci KMS simetris. Jangan gunakan kunci asimetris untuk mengenkripsi data di tabel pencarian Anda. Untuk informasi selengkapnya, lihat Menggunakan Kunci Simetris dan Asimetris.
Setelah Anda mengaitkan kunci KMS dengan tabel pencarian, semua data yang disimpan dalam tabel pencarian dienkripsi menggunakan kunci ini. CloudWatch Log mendekripsi data ini setiap kali diminta. CloudWatch Log harus memiliki izin untuk kunci KMS setiap kali data terenkripsi diminta.
Jika Anda kemudian memisahkan kunci KMS dari tabel pencarian, CloudWatch Log mengenkripsi data menggunakan metode enkripsi default Log. CloudWatch Namun, jika kunci dinonaktifkan atau dihapus sebelum Anda memutuskannya, maka CloudWatch Log tidak dapat membaca data yang dienkripsi dengan kunci itu.
Untuk informasi umum tentang cara CloudWatch Log digunakan AWS KMS untuk mengenkripsi data log, lihatEnkripsi data log di CloudWatch Log menggunakan AWS Key Management Service.
Bagaimana CloudWatch Log menggunakan AWS KMS untuk tabel pencarian
CloudWatch Log menggunakan enkripsi AWS KMS amplop untuk melindungi data tabel pencarian. Saat Anda mengaitkan kunci KMS dengan tabel pencarian, CloudWatch Log mengirimkan GenerateDataKey permintaan ke. AWS KMS AWS KMS menghasilkan kunci enkripsi data unik (DEK) dan mengembalikan salinan teks biasa dan salinan DEK yang dienkripsi. CloudWatch Log menggunakan DEK plaintext untuk mengenkripsi data tabel pencarian, dan kemudian menyimpan DEK terenkripsi bersama data terenkripsi. DEK plaintext tidak disimpan dan dibuang dari memori setelah digunakan.
Ketika CloudWatch Log perlu membaca data tabel pencarian, ia mengirimkan Decrypt permintaan ke AWS KMS DEK terenkripsi. AWS KMS mendekripsi DEK dan mengembalikan DEK teks biasa ke CloudWatch Log, yang kemudian menggunakannya untuk mendekripsi data tabel pencarian.
CloudWatch Log menggunakan konteks enkripsi berikut saat membuat permintaan ke AWS KMS:
{
"aws:logs:arn": "arn:aws:logs:region:account-id:lookup-table:lookup-table-name"
}
Anda dapat menggunakan konteks enkripsi ini dalam kebijakan IAM dan kebijakan AWS KMS utama untuk mengontrol akses ke kunci KMS. Untuk informasi selengkapnya, lihat AWS KMS kunci dan konteks enkripsi.
Izin yang diperlukan
Untuk menggunakan AWS KMS enkripsi dengan tabel pencarian, prinsipal IAM harus memiliki AWS KMS izin berikut pada kunci KMS:
kms:Decryptkms:GenerateDataKey
kms:DecryptIzin diperlukan saat memanggil GetLookupTable tabel pencarian yang dienkripsi dengan kunci KMS, sehingga CloudWatch Log dapat mendekripsi data atas nama Anda. kms:DecryptIzin juga diperlukan pada kunci (kunci KMS yang digunakan untuk mengenkripsi tabel pencarian) saat memanggil StartQuery dengan kueri yang menggunakan lookup perintah pada tabel pencarian terenkripsi. kms:GenerateDataKeyIzin diperlukan saat memanggil CreateLookupTable atau UpdateLookupTable dengan kunci KMS, sehingga CloudWatch Log dapat menghasilkan kunci enkripsi data untuk mengenkripsi data tabel pencarian.
Selain itu, layanan CloudWatch Log harus memiliki izin untuk menggunakan kunci KMS. Anda memberikan izin ini dengan menambahkan pernyataan kebijakan ke kebijakan kunci KMS, seperti yang dijelaskan di bagian berikut.
Langkah 1: Buat AWS KMS kunci
Untuk membuat kunci KMS simetris, 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"
]
}
}
Rekam kunci ARN. Anda membutuhkannya dalam langkah-langkah berikut.
Langkah 2: Tetapkan izin pada tombol KMS
Secara default, semua AWS KMS kunci bersifat pribadi. Hanya pemilik sumber daya yang dapat menggunakannya untuk mengenkripsi dan mendekripsi data. Anda harus memberikan izin utama layanan CloudWatch Log untuk menggunakan kunci, dan juga memberikan izin peran panggilan untuk menggunakan kunci.
Pertama, simpan kebijakan default untuk kunci KMS Anda seperti policy.json menggunakan get-key-policyperintah berikut:
aws kms get-key-policy --key-idkey-id--policy-name default --output text > ./policy.json
Buka policy.json file dalam editor teks dan tambahkan pernyataan berikut untuk memberikan izin utama layanan CloudWatch Log untuk menggunakan kunci. Contoh ini menggunakan Condition bagian yang cocok dengan konteks enkripsi untuk membatasi kunci ke tabel pencarian tertentu.
{ "Effect": "Allow", "Principal": { "Service": "logs.region.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:region:account-id:lookup-table:lookup-table-name", "aws:SourceAccount": "account-id", "aws:SourceArn": "arn:aws:logs:region:account-id:lookup-table:lookup-table-name" } } }
Selanjutnya, tambahkan izin ke peran yang akan memanggil CloudWatch Log CreateLookupTable atau UpdateLookupTable APIs. CloudWatch Log digunakan kms:ViaService untuk melakukan panggilan ke AWS KMS atas nama pelanggan. Untuk informasi lebih lanjut, lihat kms: ViaService.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/role-name" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "logs.region.amazonaws.com" ] } } }
Terakhir, tambahkan kebijakan yang diperbarui menggunakan put-key-policyperintah berikut:
aws kms put-key-policy --key-idkey-id--policy-name default --policy file://policy.json
Langkah 3: Kaitkan kunci KMS dengan tabel pencarian
Anda dapat mengaitkan kunci KMS dengan tabel pencarian saat Anda membuatnya menggunakan CreateLookupTable API, atau memperbarui tabel pencarian yang ada menggunakan API. UpdateLookupTable APIs Keduanya adalah bagian dari AWSLogsConfigService.
Untuk mengaitkan kunci KMS dengan tabel pencarian saat Anda membuatnya
Gunakan CreateLookupTable API dan tentukan kmsKeyArn parameter dengan ARN kunci KMS Anda:
aws logs create-lookup-table \ --lookup-table-namemy-lookup-table\ --kms-key-arn "arn:aws:kms:region:account-id:key/key-id"
Untuk mengaitkan kunci KMS dengan tabel pencarian yang ada
Gunakan UpdateLookupTable API dan tentukan kmsKeyArn parameter dengan ARN kunci KMS Anda:
aws logs update-lookup-table \ --lookup-table-namemy-lookup-table\ --kms-key-arn "arn:aws:kms:region:account-id:key/key-id"
Pertimbangan-pertimbangan
-
Setelah Anda mengaitkan atau memisahkan kunci KMS dari tabel pencarian, diperlukan waktu hingga lima menit agar operasi diterapkan.
-
Jika Anda mencabut akses CloudWatch Log ke kunci terkait atau menghapus kunci KMS terkait, data tabel pencarian terenkripsi Anda di CloudWatch Log tidak dapat diambil lagi.
-
Untuk melakukan langkah-langkah dalam topik ini, Anda harus memiliki izin berikut:
kms:CreateKey,,kms:GetKeyPolicykms:PutKeyPolicy, dan izin CloudWatch Log yang sesuai untuk memanggilCreateLookupTableatau.UpdateLookupTable