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
Masuk ke Konsol AWS Manajemen.
Arahkan CloudWatchke> Pengaturan> Log.
-
Di bagian API Keys, pilih Generate API key.
-
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).
-
Pilih Hasilkan kunci API.
Konsol secara otomatis:
Membuat pengguna IAM baru dengan izin yang sesuai
Melampirkan kebijakan terkelola CloudWatchLogsAPIKeyAccess (termasuk
logs:PutLogEventsdanlogs:CallWithBearerTokenizin)Menghasilkan kredensi khusus layanan (kunci API)
-
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.
-
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 -
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-1Verifikasi 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 Loglogs:CallWithBearerToken— Otentikasi menggunakan token pembawakms: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:
Masuk ke AWS Management Console dan navigasikan ke IAM.
Pada panel navigasi kiri, pilih Pengguna.
Pilih Create user (Buat pengguna).
Masukkan nama pengguna (misalnya,
cloudwatch-logs-hlc-user).Pilih Berikutnya.
-
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/*" } ] } 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-credential
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:
-
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 (Opsional) Simpan kredensi baru AWS Secrets Manager untuk pengambilan aman dan rotasi otomatis.
Impor kredensi baru ke portal vendor Anda atau perbarui konfigurasi aplikasi Anda untuk menggunakan kunci API baru.
-
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 Verifikasi bahwa pengiriman log tidak terpengaruh dengan memantau
IncomingBytesmetrik untuk grup log Anda. CloudWatch Untuk informasi selengkapnya, lihat Memantau dengan CloudWatch metrik.-
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-credentials
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:
-
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 Tinjau CloudTrail log untuk menentukan ruang lingkup akses yang tidak sah. Lihat Pencatatan penggunaan kunci API dengan CloudTrail cara mengaktifkan audit penggunaan kunci API.
Buat kunci pengganti mengikuti proses rotasi yang dijelaskan dalamProses rotasi.
-
Hapus kunci yang disusupi setelah penggantian dilakukan:
aws iam delete-service-specific-credential \ --service-specific-credential-id ACCA1234EXAMPLE1234 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-daysnilai saat membuat kunci API. Untuk menerapkan masa pakai kunci maksimum di seluruh organisasi Anda, gunakan kunci kondisiiam:ServiceSpecificCredentialAgeDaysIAM. 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 untuk
AWS::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
-
Buat jejak:
aws cloudtrail create-trail \ --name cloudwatch-logs-api-key-audit \ --s3-bucket-name my-cloudtrail-bucket \ --region us-east-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"] } ] }]' -
Mulai pencatatan jejak:
aws cloudtrail start-logging \ --name cloudwatch-logs-api-key-audit \ --region us-east-1