Menyiapkan otentikasi token pembawa - CloudWatch Log Amazon

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

Menyiapkan otentikasi token pembawa

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 di Panduan Pengguna IAM.

Opsi 1: Mulai cepat menggunakan AWS konsol

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.

  2. Arahkan CloudWatchke> Pengaturan> Log.

  3. Di bagian API Keys, pilih Generate API key.

  4. 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).

  5. Pilih Hasilkan kunci API.

    Konsol secara otomatis:

    • Membuat pengguna IAM baru dengan izin yang sesuai

    • Melampirkan kebijakan terkelola CloudWatchLogsAPIKeyAccess (termasuk logs:PutLogEvents dan logs:CallWithBearerToken izin)

    • Menghasilkan kredensi khusus layanan (kunci API)

  6. 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.

  7. 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
  8. 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

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

Buat pengguna IAM yang akan digunakan untuk log ingestion:

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

  2. Pada panel navigasi kiri, pilih Pengguna.

  3. Pilih Create user (Buat pengguna).

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

  5. Pilih Berikutnya.

  6. Lampirkan salah satu kebijakan IAM berikut:

    Opsi A: Gunakan kebijakan terkelola (disarankan)

    Lampirkan kebijakan terkelola CloudWatchLogsAPIKeyAccess.

    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/*" } ] }
  7. 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)

Buat kunci API CloudWatch Log menggunakan CreateServiceSpecificCredentialAPI. Anda juga dapat menggunakan perintah create-service-specific-credentialCLI. 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 ServiceSpecificCredentialobjek. ServiceCredentialSecretNilainya 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

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

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

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

CreateServiceSpecificCredentialTindakan iam: 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 — 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 — 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

logs:CallWithBearerTokenTindakan 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

Mencegah identitas membuat dan menggunakan kunci API CloudWatch Log

{ "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 untuk pengguna IAM.

Mencegah identitas menggunakan kunci API CloudWatch Log

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

Izinkan pembuatan kunci CloudWatch Log hanya jika mereka kedaluwarsa dalam 90 hari

{ "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

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

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
  2. (Opsional) Simpan kredensi baru AWS Secrets Manager untuk pengambilan aman dan rotasi otomatis.

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

  4. 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
  5. Verifikasi bahwa pengiriman log tidak terpengaruh dengan memantau IncomingBytes metrik untuk grup log Anda. CloudWatch Untuk informasi selengkapnya, lihat Memantau dengan CloudWatch metrik.

  6. 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

Untuk memeriksa tanggal pembuatan dan status kunci API yang ada, gunakan list-service-specific-credentialsperintah:

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

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
  2. Tinjau CloudTrail log untuk menentukan ruang lingkup akses yang tidak sah. Lihat Pencatatan penggunaan kunci API dengan CloudTrail cara mengaktifkan audit penggunaan kunci API.

  3. Buat kunci pengganti mengikuti proses rotasi yang dijelaskan dalamProses rotasi.

  4. Hapus kunci yang disusupi setelah penggantian dilakukan:

    aws iam delete-service-specific-credential \ --service-specific-credential-id ACCA1234EXAMPLE1234
  5. 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— Setel ulang kunci untuk menghasilkan kata sandi baru tanpa menghapus kredensialnya. Kuncinya tidak boleh kedaluwarsa.

Praktik keamanan terbaik untuk kunci API

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 Manageratau 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.

  • Terapkan izin hak istimewa paling sedikit. Cakupan izin pengguna IAM hanya untuk grup log dan tindakan yang diperlukan. Gunakan kebijakan CloudWatchLogsAPIKeyAkses terkelola sebagai titik awal dan batasi lebih lanjut sesuai kebutuhan.

  • Aktifkan CloudTrail logging. Audit penggunaan kunci API dengan mengaktifkan peristiwa CloudTrail data untukAWS::Logs::LogGroupAuthorization. Lihat Pencatatan penggunaan kunci API dengan CloudTrail.

  • Monitor dengan IAM Access Analyzer. Gunakan IAM Access Analyzer 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 dalamMemutar kunci API.

Pencatatan penggunaan kunci API dengan CloudTrail

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 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
  2. 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"] } ] }]'
  3. Mulai pencatatan jejak:

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