

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
<a name="encrypt-lookup-tables-kms"></a>

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](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html).

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, lihat[Enkripsi data log di CloudWatch Log menggunakan AWS Key Management Service](encrypt-log-data-kms.md).

## Bagaimana CloudWatch Log menggunakan AWS KMS untuk tabel pencarian
<a name="encrypt-lookup-tables-how-it-works"></a>

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](encrypt-log-data-kms.md#encrypt-log-data-kms-policy).

## Izin yang diperlukan
<a name="encrypt-lookup-tables-permissions"></a>

Untuk menggunakan AWS KMS enkripsi dengan tabel pencarian, prinsipal IAM harus memiliki AWS KMS izin berikut pada kunci KMS:
+ `kms:Decrypt`
+ `kms:GenerateDataKey`

`kms:Decrypt`Izin diperlukan saat memanggil `GetLookupTable` tabel pencarian yang dienkripsi dengan kunci KMS, sehingga CloudWatch Log dapat mendekripsi data atas nama Anda. `kms:Decrypt`Izin 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:GenerateDataKey`Izin 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
<a name="encrypt-lookup-tables-create-key"></a>

Untuk membuat kunci KMS simetris, gunakan perintah [create-key](https://docs.aws.amazon.com/cli/latest/reference/kms/create-key.html) 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
<a name="encrypt-lookup-tables-key-policy"></a>

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-policy](https://docs.aws.amazon.com/cli/latest/reference/kms/get-key-policy.html)perintah berikut:

```
aws kms get-key-policy --key-id key-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](https://docs.aws.amazon.com/kms/latest/developerguide/conditions-kms.html#conditions-kms-via-service).

```
{
    "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-policy](https://docs.aws.amazon.com/cli/latest/reference/kms/put-key-policy.html)perintah berikut:

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

## Langkah 3: Kaitkan kunci KMS dengan tabel pencarian
<a name="encrypt-lookup-tables-associate"></a>

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-name my-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-name my-lookup-table \
    --kms-key-arn "arn:aws:kms:region:account-id:key/key-id"
```

## Pertimbangan-pertimbangan
<a name="encrypt-lookup-tables-considerations"></a>
+ 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:GetKeyPolicy``kms:PutKeyPolicy`, dan izin CloudWatch Log yang sesuai untuk memanggil `CreateLookupTable` atau. `UpdateLookupTable`