

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menyiapkan otentikasi token pembawa
<a name="CWL_HTTP_Endpoints_BearerTokenAuth"></a>

Sebelum Anda dapat mengirim log menggunakan otentikasi token pembawa dengan salah satu titik akhir penyerapan HTTP, Anda perlu:
+ Buat pengguna IAM dengan izin CloudWatch Log
+ Hasilkan kredenal khusus layanan (token pembawa)
+ Buat grup log dan aliran log
+ Aktifkan otentikasi token pembawa pada grup log

**penting**  
Sebaiknya gunakan otentikasi SiGv4 dengan kredensi jangka pendek untuk semua beban kerja jika memungkinkan. SiGv4 memberikan postur keamanan terkuat. Batasi penggunaan kunci API (token pembawa) ke skenario di mana otentikasi berbasis kredensial jangka pendek tidak layak dilakukan. Ketika Anda siap untuk memasukkan CloudWatch Log ke dalam aplikasi dengan persyaratan keamanan yang lebih besar, Anda harus beralih ke kredensi jangka pendek. Untuk informasi selengkapnya, lihat [Alternatif untuk kunci akses jangka panjang](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-workloads-use-roles) di *Panduan Pengguna IAM*.

## Opsi 1: Mulai cepat menggunakan AWS konsol
<a name="CWL_HTTP_Endpoints_Console_Setup"></a>

 AWS Management Console menyediakan alur kerja yang efisien untuk menghasilkan kunci API untuk akses titik akhir HTTP.

**Untuk mengatur akses titik akhir HTTP menggunakan konsol**

1. Masuk ke Konsol AWS Manajemen.

1. Arahkan **CloudWatch**ke> **Pengaturan>** **Log**.

1. Di bagian API Keys, pilih **Generate API key**.

1. Untuk **kedaluwarsa kunci API**, lakukan salah satu hal berikut:
   + Pilih durasi kedaluwarsa kunci API **1**, **5**, **30**, **90**, atau **365 hari**.
   + Pilih **Durasi kustom** untuk menentukan tanggal kedaluwarsa kunci API kustom.
   + Pilih **Jangan pernah kedaluwarsa** (tidak disarankan).

1. Pilih **Hasilkan kunci API**.

   Konsol secara otomatis:
   + Membuat pengguna IAM baru dengan izin yang sesuai
   + Melampirkan kebijakan terkelola [CloudWatchLogsAPIKeyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudWatchLogsAPIKeyAccess.html) (termasuk `logs:PutLogEvents` dan `logs:CallWithBearerToken` izin)
   + Menghasilkan kredensi khusus layanan (kunci API)

1. Salin dan simpan kredenal yang ditampilkan dengan aman:
   + **ID Kunci API (ID** kredensi khusus layanan)
   + **Rahasia Kunci API** (Token pembawa)
**penting**  
Simpan Rahasia Kunci API segera. Hal itu tidak dapat diambil lagi nanti. Jika Anda kehilangannya, Anda harus membuat kunci API baru.

1. Buat grup log dan aliran log tempat log Anda akan disimpan:

   ```
   # Create the log group
   aws logs create-log-group \
       --log-group-name /aws/hlc-logs/my-application \
       --region us-east-1
   
   # Create the log stream
   aws logs create-log-stream \
       --log-group-name /aws/hlc-logs/my-application \
       --log-stream-name application-stream-001 \
       --region us-east-1
   ```

1. Aktifkan otentikasi token pembawa pada grup log:

   ```
   aws logs put-bearer-token-authentication \
       --log-group-identifier /aws/hlc-logs/my-application \
       --bearer-token-authentication-enabled \
       --region us-east-1
   ```

   Verifikasi konfigurasi:

   ```
   aws logs describe-log-groups \
       --log-group-name-prefix /aws/hlc-logs/my-application \
       --region us-east-1
   ```

**Izin disertakan:** Pengguna IAM yang dibuat secara otomatis akan memiliki izin berikut:
+ `logs:PutLogEvents`— Kirim peristiwa log ke CloudWatch Log
+ `logs:CallWithBearerToken`— Otentikasi menggunakan token pembawa
+ `kms:Describe*`,`kms:GenerateDataKey*`, `kms:Decrypt` — Akses grup log terenkripsi KMS (dengan kondisi membatasi layanan log)

## Opsi 2: Pengaturan manual
<a name="CWL_HTTP_Endpoints_Manual_Setup"></a>

Jika Anda lebih suka kontrol lebih atas konfigurasi IAM atau perlu menyesuaikan izin, Anda dapat mengatur akses titik akhir HTTP secara manual.

### Langkah 1: Buat pengguna IAM
<a name="CWL_HTTP_Endpoints_Manual_Step1"></a>

Buat pengguna IAM yang akan digunakan untuk log ingestion:

1. Masuk ke AWS Management Console dan navigasikan ke IAM.

1. Pada panel navigasi kiri, pilih **Pengguna**.

1. Pilih **Create user** (Buat pengguna).

1. Masukkan nama pengguna (misalnya,`cloudwatch-logs-hlc-user`).

1. Pilih **Berikutnya**.

1. Lampirkan salah satu kebijakan IAM berikut:

   **Opsi A: Gunakan kebijakan terkelola (disarankan)**

   Lampirkan kebijakan terkelola [CloudWatchLogsAPIKeyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudWatchLogsAPIKeyAccess.html).

   **Opsi B: Buat kebijakan khusus**

   Buat dan lampirkan kebijakan IAM berikut:

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "LogsAPIs",
               "Effect": "Allow",
               "Action": [
                   "logs:CallWithBearerToken",
                   "logs:PutLogEvents"
               ],
               "Resource": "*"
           },
           {
               "Sid": "KMSAPIs",
               "Effect": "Allow",
               "Action": [
                   "kms:Describe*",
                   "kms:GenerateDataKey*",
                   "kms:Decrypt"
               ],
               "Condition": {
                   "StringEquals": {
                       "kms:ViaService": [
                           "logs.*.amazonaws.com"
                       ]
                   }
               },
               "Resource": "arn:aws:kms:*:*:key/*"
           }
       ]
   }
   ```

1. Pilih **Berikutnya** dan kemudian **Buat pengguna**.

**catatan**  
Izin KMS diperlukan jika Anda berencana untuk mengirim log ke grup log terenkripsi KMS. Kondisi ini membatasi akses KMS ke hanya kunci yang digunakan melalui layanan CloudWatch Log.

### Langkah 2: Hasilkan kredenal khusus layanan (kunci API)
<a name="CWL_HTTP_Endpoints_Manual_Step2"></a>

Buat kunci API CloudWatch Log menggunakan [CreateServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html)API. Anda juga dapat menggunakan perintah [create-service-specific-credential](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-service-specific-credential.html)CLI. Untuk usia kredenal, Anda dapat menentukan nilai antara 1—36600 hari. Jika Anda tidak menentukan usia kredensi, kunci API tidak akan kedaluwarsa.

Untuk membuat kunci API dengan masa kedaluwarsa 30 hari:

```
aws iam create-service-specific-credential \
    --user-name cloudwatch-logs-hlc-user \
    --service-name logs.amazonaws.com \
    --credential-age-days 30
```

Responsnya adalah [ServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ServiceSpecificCredential.html)objek. `ServiceCredentialSecret`Nilainya adalah kunci API CloudWatch Log Anda (token pembawa).

**penting**  
Simpan `ServiceCredentialSecret` nilainya dengan aman, karena Anda tidak dapat mengambilnya nanti. Jika Anda kehilangannya, Anda harus membuat kunci API baru.

### Langkah 3: Buat grup log dan aliran log
<a name="CWL_HTTP_Endpoints_Manual_Step3"></a>

Buat grup log dan aliran log tempat log Anda akan disimpan:

```
# Create the log group
aws logs create-log-group \
    --log-group-name /aws/hlc-logs/my-application \
    --region us-east-1

# Create the log stream
aws logs create-log-stream \
    --log-group-name /aws/hlc-logs/my-application \
    --log-stream-name application-stream-001 \
    --region us-east-1
```

### Langkah 4: Aktifkan otentikasi token pembawa
<a name="CWL_HTTP_Endpoints_Manual_Step4"></a>

Aktifkan otentikasi token pembawa pada grup log:

```
aws logs put-bearer-token-authentication \
    --log-group-identifier /aws/hlc-logs/my-application \
    --bearer-token-authentication-enabled \
    --region us-east-1
```

Verifikasi konfigurasi:

```
aws logs describe-log-groups \
    --log-group-name-prefix /aws/hlc-logs/my-application \
    --region us-east-1
```

## Izin kontrol untuk membuat dan menggunakan kunci API CloudWatch Log
<a name="CWL_HTTP_Endpoints_API_Key_Permissions"></a>

Pembuatan dan penggunaan kunci API CloudWatch Log dikendalikan oleh tindakan dan kunci kondisi di layanan CloudWatch Log dan IAM.

### Mengontrol pembuatan kunci API CloudWatch Log
<a name="CWL_HTTP_Endpoints_Control_Generation"></a>

CreateServiceSpecificCredentialTindakan [iam:](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentityandaccessmanagementiam.html#awsidentityandaccessmanagementiam-actions-as-permissions) mengontrol pembuatan kunci khusus layanan (seperti kunci API CloudWatch Log). Anda dapat memberikan cakupan tindakan ini kepada pengguna IAM sebagai sumber daya untuk membatasi pengguna yang kuncinya dapat dibuat.

Anda dapat menggunakan tombol kondisi berikut untuk memaksakan kondisi pada izin untuk `iam:CreateServiceSpecificCredential` tindakan:
+ [iam: ServiceSpecificCredentialAgeDays](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#ck_ServiceSpecificCredentialAgeDays) — Memungkinkan Anda menentukan, dalam kondisi, waktu kedaluwarsa kunci dalam beberapa hari. Misalnya, Anda dapat menggunakan kunci kondisi ini untuk hanya mengizinkan pembuatan kunci API yang kedaluwarsa dalam 90 hari.
+ [iam: ServiceSpecificCredentialServiceName](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#ck_ServiceSpecificCredentialAgeDays) — Memungkinkan Anda menentukan, dalam kondisi, nama layanan. Misalnya, Anda dapat menggunakan kunci kondisi ini untuk hanya mengizinkan pembuatan kunci API untuk CloudWatch Log dan bukan layanan lainnya.

### Mengontrol penggunaan kunci API CloudWatch Log
<a name="CWL_HTTP_Endpoints_Control_Usage"></a>

`logs:CallWithBearerToken`Tindakan ini mengontrol penggunaan kunci API CloudWatch Log. Untuk mencegah identitas menggunakan kunci API CloudWatch Logs, lampirkan kebijakan yang menolak `logs:CallWithBearerToken` tindakan tersebut ke pengguna IAM yang terkait dengan kunci tersebut.

### Contoh kebijakan
<a name="CWL_HTTP_Endpoints_Permission_Examples"></a>

#### Mencegah identitas membuat dan menggunakan kunci API CloudWatch Log
<a name="CWL_HTTP_Endpoints_Deny_Generation_And_Use"></a>

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenyCWLAPIKeys",
            "Effect": "Deny",
            "Action": [
                "iam:CreateServiceSpecificCredential",
                "logs:CallWithBearerToken"
            ],
            "Resource": "*"
        }
    ]
}
```

**Awas**  
Kebijakan ini akan mencegah pembuatan kredensi untuk semua AWS layanan yang mendukung pembuatan kredensi khusus layanan. Untuk informasi selengkapnya, lihat [Kredensi khusus layanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_service-specific-creds.html) untuk pengguna IAM.

#### Mencegah identitas menggunakan kunci API CloudWatch Log
<a name="CWL_HTTP_Endpoints_Deny_Use"></a>

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "logs:CallWithBearerToken",
            "Resource": "*"
        }
    ]
}
```

#### Izinkan pembuatan kunci CloudWatch Log hanya jika mereka kedaluwarsa dalam 90 hari
<a name="CWL_HTTP_Endpoints_Allow_Expire_90"></a>

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceSpecificCredential",
            "Resource": "arn:aws:iam::123456789012:user/username",
            "Condition": {
                "StringEquals": {
                    "iam:ServiceSpecificCredentialServiceName": "logs.amazonaws.com"
                },
                "NumericLessThanEquals": {
                    "iam:ServiceSpecificCredentialAgeDays": "90"
                }
            }
        }
    ]
}
```

## Memutar kunci API
<a name="CWL_HTTP_Endpoints_Rotating_Keys"></a>

Memutar kunci API Anda secara teratur mengurangi risiko akses yang tidak sah. Sebaiknya buat jadwal rotasi yang sesuai dengan kebijakan keamanan organisasi Anda.

### Proses rotasi
<a name="CWL_HTTP_Endpoints_Rotation_Process"></a>

Untuk memutar kunci API tanpa mengganggu pengiriman log, ikuti prosedur ini:

1. Buat kredensi baru (sekunder) untuk pengguna IAM:

   ```
   aws iam create-service-specific-credential \
       --user-name cloudwatch-logs-hlc-user \
       --service-name logs.amazonaws.com \
       --credential-age-days 90
   ```

1. (Opsional) Simpan kredensi baru AWS Secrets Manager untuk pengambilan aman dan rotasi otomatis.

1. Impor kredensi baru ke portal vendor Anda atau perbarui konfigurasi aplikasi Anda untuk menggunakan kunci API baru.

1. Setel kredensi asli menjadi tidak aktif:

   ```
   aws iam update-service-specific-credential \
       --user-name cloudwatch-logs-hlc-user \
       --service-specific-credential-id ACCA1234EXAMPLE1234 \
       --status Inactive
   ```

1. Verifikasi bahwa pengiriman log tidak terpengaruh dengan memantau `IncomingBytes` metrik untuk grup log Anda. CloudWatch Untuk informasi selengkapnya, lihat [Memantau dengan CloudWatch metrik](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch-Logs-Monitoring-CloudWatch-Metrics.html).

1. Setelah mengonfirmasi pengiriman yang berhasil dengan kunci baru, hapus kredensi sebelumnya:

   ```
   aws iam delete-service-specific-credential \
       --service-specific-credential-id ACCA1234EXAMPLE1234
   ```

### Memantau kedaluwarsa kunci
<a name="CWL_HTTP_Endpoints_Monitor_Expiration"></a>

Untuk memeriksa tanggal pembuatan dan status kunci API yang ada, gunakan [list-service-specific-credentials](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-service-specific-credentials.html)perintah:

```
aws iam list-service-specific-credentials \
    --user-name cloudwatch-logs-hlc-user \
    --service-name logs.amazonaws.com
```

Tanggapan tersebut mencakup `CreateDate` dan `Status` untuk setiap kredensi. Gunakan informasi ini untuk mengidentifikasi kunci yang mendekati kedaluwarsa atau telah aktif lebih lama dari yang diizinkan oleh kebijakan rotasi Anda.

## Menanggapi kunci API yang disusupi
<a name="CWL_HTTP_Endpoints_Compromised_Keys"></a>

Jika Anda mencurigai bahwa kunci API telah disusupi, segera lakukan langkah-langkah berikut:

1. **Nonaktifkan kunci segera** untuk mencegah penggunaan tidak sah lebih lanjut:

   ```
   aws iam update-service-specific-credential \
       --user-name cloudwatch-logs-hlc-user \
       --service-specific-credential-id ACCA1234EXAMPLE1234 \
       --status Inactive
   ```

1. **Tinjau CloudTrail log** untuk menentukan ruang lingkup akses yang tidak sah. Lihat [Pencatatan penggunaan kunci API dengan CloudTrail](#CWL_HTTP_Endpoints_CloudTrail_Logging) cara mengaktifkan audit penggunaan kunci API.

1. **Buat kunci pengganti** mengikuti proses rotasi yang dijelaskan dalam[Proses rotasi](#CWL_HTTP_Endpoints_Rotation_Process).

1. **Hapus kunci yang disusupi** setelah penggantian dilakukan:

   ```
   aws iam delete-service-specific-credential \
       --service-specific-credential-id ACCA1234EXAMPLE1234
   ```

1. **Lampirkan kebijakan penolakan** jika Anda perlu segera memblokir semua akses token pembawa untuk pengguna IAM saat Anda menyelidiki:

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Deny",
           "Action": "logs:CallWithBearerToken",
           "Resource": "*"
       }
   }
   ```

**catatan**  
Untuk melakukan tindakan ini melalui API, Anda harus mengautentikasi dengan AWS kredensi dan bukan dengan kunci API CloudWatch Log.

Anda juga dapat menggunakan operasi IAM API berikut untuk mengelola kunci yang dikompromikan:
+ [ResetServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResetServiceSpecificCredential.html)— Setel ulang kunci untuk menghasilkan kata sandi baru tanpa menghapus kredensialnya. Kuncinya tidak boleh kedaluwarsa.

## Praktik keamanan terbaik untuk kunci API
<a name="CWL_HTTP_Endpoints_Security_Best_Practices"></a>

Ikuti praktik terbaik berikut ini untuk melindungi kunci API CloudWatch Log Anda:
+ **Jangan pernah menyematkan kunci API dalam kode sumber.** Jangan kode keras kunci API dalam kode aplikasi atau komit ke sistem kontrol versi. Jika kunci secara tidak sengaja berkomitmen ke repositori publik, pemindaian AWS otomatis dapat menandainya dan Anda harus segera memutar kunci tersebut.
+ **Gunakan manajer rahasia.** Simpan kunci API di [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)atau solusi manajemen rahasia yang setara. Ini memungkinkan kontrol akses terpusat, pencatatan audit, dan rotasi otomatis.
+ **Tetapkan kedaluwarsa pada semua tombol.** Selalu tentukan `--credential-age-days` nilai saat membuat kunci API. Untuk menerapkan masa pakai kunci maksimum di seluruh organisasi Anda, gunakan kunci kondisi `iam:ServiceSpecificCredentialAgeDays` IAM. Sebagai contoh, lihat [Izinkan pembuatan kunci CloudWatch Log hanya jika mereka kedaluwarsa dalam 90 hari](#CWL_HTTP_Endpoints_Allow_Expire_90).
+ **Terapkan izin hak istimewa paling sedikit.** Cakupan izin pengguna IAM hanya untuk grup log dan tindakan yang diperlukan. Gunakan kebijakan [CloudWatchLogsAPIKeyAkses](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudWatchLogsAPIKeyAccess.html) terkelola sebagai titik awal dan batasi lebih lanjut sesuai kebutuhan.
+ **Aktifkan CloudTrail logging.** Audit penggunaan kunci API dengan mengaktifkan peristiwa CloudTrail data untuk`AWS::Logs::LogGroupAuthorization`. Lihat [Pencatatan penggunaan kunci API dengan CloudTrail](#CWL_HTTP_Endpoints_CloudTrail_Logging).
+ **Monitor dengan IAM Access Analyzer.** Gunakan [IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) untuk mengidentifikasi kredensi yang tidak digunakan dan kebijakan yang terlalu permisif yang terkait dengan pengguna IAM kunci API Anda.
+ **Putar tombol secara teratur.** Tetapkan jadwal rotasi dan ikuti proses yang dijelaskan dalam[Memutar kunci API](#CWL_HTTP_Endpoints_Rotating_Keys).

## Pencatatan penggunaan kunci API dengan CloudTrail
<a name="CWL_HTTP_Endpoints_CloudTrail_Logging"></a>

Anda dapat menggunakan AWS CloudTrail untuk mencatat peristiwa data untuk penggunaan kunci API CloudWatch Log. CloudWatch Log memancarkan peristiwa `AWS::Logs::LogGroupAuthorization` data untuk `CallWithBearerToken` panggilan, memungkinkan Anda untuk mengaudit kapan dan bagaimana kunci API digunakan untuk mengirim log.

Untuk mengaktifkan CloudTrail logging untuk penggunaan kunci API CloudWatch Log:

**catatan**  
Bucket S3 yang Anda tentukan untuk jejak harus memiliki kebijakan bucket yang memungkinkan CloudTrail untuk menulis file log ke dalamnya. Untuk informasi selengkapnya, lihat [kebijakan bucket Amazon S3](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/create-s3-bucket-policy-for-cloudtrail.html) untuk. CloudTrail

1. Buat jejak:

   ```
   aws cloudtrail create-trail \
       --name cloudwatch-logs-api-key-audit \
       --s3-bucket-name my-cloudtrail-bucket \
       --region us-east-1
   ```

1. Konfigurasikan pemilih acara lanjutan untuk menangkap peristiwa otorisasi grup CloudWatch log Log:

   ```
   aws cloudtrail put-event-selectors \
       --region us-east-1 \
       --trail-name cloudwatch-logs-api-key-audit \
       --advanced-event-selectors '[{
           "Name": "CloudWatch Logs API key authorization events",
           "FieldSelectors": [
               { "Field": "eventCategory", "Equals": ["Data"] },
               { "Field": "resources.type", "Equals": ["AWS::Logs::LogGroupAuthorization"] }
           ]
       }]'
   ```

1. Mulai pencatatan jejak:

   ```
   aws cloudtrail start-logging \
       --name cloudwatch-logs-api-key-audit \
       --region us-east-1
   ```