View a markdown version of this page

Menyiapkan otentikasi token pembawa untuk Metrik - Amazon CloudWatch

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

Menyiapkan otentikasi token pembawa untuk Metrik

catatan

Halaman ini mencakup otentikasi token pembawa untuk titik akhir CloudWatch Metrik OTLP. Untuk otentikasi token pembawa CloudWatch Log, lihat Menyiapkan otentikasi token pembawa untuk Log di Panduan Pengguna Log. CloudWatch

Sebelum Anda dapat mengirim metrik menggunakan otentikasi token pembawa dengan titik akhir CloudWatch OTLP, Anda perlu:

  • Buat pengguna IAM dengan izin CloudWatch Metrik

  • Hasilkan kredensyal khusus layanan (kunci API)

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) untuk skenario di mana otentikasi berbasis kredensil jangka pendek tidak layak, seperti mengirim metrik dari AWS non-lingkungan, vendor pihak ketiga, atau platform yang tidak mendukung SDK. AWS Saat Anda siap untuk memasukkan CloudWatch Metrik ke dalam aplikasi dengan persyaratan keamanan yang lebih besar, beralihlah ke kredensi jangka pendek. Untuk informasi selengkapnya, lihat Alternatif untuk kunci akses jangka panjang di Panduan Pengguna IAM.

penting

Titik akhir CloudWatch OTLP membutuhkan TLS (HTTPS). Permintaan token pembawa yang dikirim melalui HTTP biasa ditolak. Selalu gunakan https://monitoring.AWS Region.amazonaws.com/v1/metrics saat mengonfigurasi klien Anda.

Opsi 1: Mulai cepat menggunakan AWS konsol

AWS Management Console menyediakan alur kerja yang efisien untuk menghasilkan kunci API untuk akses endpoint OTLP.

Untuk mengatur akses titik akhir OTLP menggunakan konsol
  1. Masuk ke Konsol AWS Manajemen.

  2. Arahkan CloudWatchke> Pengaturan> Global.

  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 CloudWatchAPIKeyAccessterkelola (termasuk cloudwatch:PutMetricData dan cloudwatch:CallWithBearerToken izin)

  • Menghasilkan kredensyal khusus layanan (kunci API)

Untuk menyimpan dan memverifikasi kunci API
  1. Salin dan simpan kredensyal yang ditampilkan dengan aman:

    • ID Kunci API (ID Service-specific kredensyal)

    • Rahasia Kunci API (Token pembawa)

    Konsol juga menawarkan opsi untuk menyimpan kunci API Anda secara langsung di AWS Secrets Manager selama pembuatan. Jika Anda memilih untuk menyimpan di Secrets Manager, kunci secara otomatis diperbarui pada reset dan dihapus pada penghapusan kunci.

    penting

    Simpan Rahasia Kunci API segera. Anda tidak dapat mengambilnya nanti. Jika Anda kehilangannya, Anda harus membuat kunci API baru.

  2. Kirim metrik pengujian untuk memverifikasi pengaturan Anda:

    curl -X POST "https://monitoring.us-east-1.amazonaws.com/v1/metrics" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_API_KEY" \ -d '{"resourceMetrics":[]}'

Opsi 2: Pengaturan manual

Jika Anda lebih suka kontrol lebih besar atas konfigurasi IAM atau perlu menyesuaikan izin, Anda dapat mengatur akses endpoint OTLP secara manual.

Langkah 1: Buat pengguna IAM

Buat pengguna IAM untuk konsumsi metrik:

Untuk membuat pengguna IAM untuk konsumsi metrik
  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-metrics-api-key-user).

  5. Pilih Berikutnya.

  6. Lampirkan salah satu kebijakan IAM berikut:

    Opsi A: Gunakan kebijakan terkelola (disarankan)

    Lampirkan kebijakan CloudWatchAPIKeyAccessterkelola.

    Opsi B: Buat kebijakan khusus

    Buat dan lampirkan kebijakan IAM berikut:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchMetricsAPIs", "Effect": "Allow", "Action": [ "cloudwatch:CallWithBearerToken", "cloudwatch:PutMetricData" ], "Resource": "*" }, { "Sid": "KMSDecryptForCMKDatasets", "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Condition": { "StringLike": { "kms:ViaService": "cloudwatch.*.amazonaws.com", "kms:EncryptionContext:aws:cloudwatch:arn": "arn:aws:cloudwatch:*:*:dataset/*" } }, "Resource": "arn:aws:kms:*:*:key/*" } ] }
  7. Pilih Berikutnya dan kemudian pilih Buat pengguna.

catatan

Izin KMS diperlukan jika Anda berencana mengirim metrik ke kumpulan data yang menggunakan kunci KMS yang dikelola pelanggan (CMK). Kondisi membatasi akses KMS hanya ke kunci yang digunakan melalui CloudWatch layanan untuk sumber daya kumpulan data.

Langkah 2: Hasilkan kredensyal khusus layanan (kunci API)

Buat kunci API CloudWatch Metrik menggunakan CreateServiceSpecificCredentialAPI. Anda juga dapat menggunakan perintah create-service-specific-credential AWS 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-metrics-api-key-user \ --service-name cloudwatch.amazonaws.com \ --credential-age-days 30

Responsnya adalah ServiceSpecificCredentialobjek. ServiceCredentialSecretNilainya adalah kunci API CloudWatch Metrik Anda (token pembawa).

penting

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

Langkah 3: Kirim metrik

Anda dapat langsung mengirim metrik ke titik akhir OTLP menggunakan token pembawa Anda:

curl -X POST "https://monitoring.us-east-1.amazonaws.com/v1/metrics" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_API_KEY" \ -d '{"resourceMetrics":[]}'

Titik akhir menerima keduanya application/json dan jenis application/x-protobuf konten.

Izin kontrol untuk membuat dan menggunakan kunci CloudWatch API Metrik

Mengontrol pembuatan kunci API CloudWatch Metrik

iam:CreateServiceSpecificCredentialTindakan ini mengontrol pembuatan kunci khusus layanan (seperti kunci CloudWatch Metrik API). 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:

Mengontrol penggunaan kunci API CloudWatch Metrik

cloudwatch:CallWithBearerTokenTindakan mengontrol penggunaan kunci CloudWatch Metrik API. Untuk mencegah identitas menggunakan kunci API CloudWatch Metrik, lampirkan kebijakan yang menolak cloudwatch:CallWithBearerToken tindakan tersebut ke pengguna IAM yang terkait dengan kunci tersebut.

catatan

Token pembawa untuk CloudWatch Metrik hanya dapat digunakan dengan titik akhir konsumsi metrik OTLP (). https://monitoring.AWS Region.amazonaws.com/v1/metrics Mereka tidak dapat digunakan untuk memanggil CloudWatch API atau titik akhir lainnya, termasuk API kueri (,,DescribeAlarms) GetMetricDataListMetrics, titik akhir kueri promQL, titik akhir jejak OTLP, atau titik akhir log OTLP.

Contoh kebijakan

Mencegah identitas membuat dan menggunakan kunci CloudWatch Metrik API:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyCWMetricsAPIKeys", "Effect": "Deny", "Action": [ "iam:CreateServiceSpecificCredential", "cloudwatch:CallWithBearerToken" ], "Resource": "*" } ] }
Awas

Kebijakan ini mencegah pembuatan kredensil untuk semua AWS layanan yang mendukung pembuatan kredensil khusus layanan. Untuk informasi selengkapnya, lihat Service-specifickredensil untuk pengguna IAM di Panduan Pengguna IAM.

Mencegah identitas menggunakan kunci API CloudWatch Metrik:

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

Izinkan pembuatan kunci CloudWatch Metrik 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": "cloudwatch.amazonaws.com" }, "NumericLessThanEquals": { "iam:ServiceSpecificCredentialAgeDays": "90" } } } ] }

Menggunakan token pembawa dengan Kolektor OpenTelemetry

Saat menggunakan token pembawa, Anda tidak memerlukan sigv4auth ekstensi. Gunakan ekstensi bearertokenauth untuk menyediakan kunci API Anda dengan aman dari file atau variabel lingkungan:

extensions: bearertokenauth: filename: "/etc/otel/cw-api-key" exporters: otlphttp: tls: insecure: false endpoint: https://monitoring.us-east-1.amazonaws.com/v1/metrics auth: authenticator: bearertokenauth receivers: otlp: protocols: http: endpoint: 0.0.0.0:4318 processors: batch: send_batch_size: 200 timeout: 10s service: extensions: [bearertokenauth] pipelines: metrics: receivers: [otlp] processors: [batch] exporters: [otlphttp]

Atau, Anda dapat mereferensikan variabel lingkungan alih-alih file:

extensions: bearertokenauth: token: "${env:CW_API_KEY}"
penting

Jangan pernah melakukan hardcode kunci API secara langsung di file konfigurasi kolektor. File konfigurasi sering berkomitmen untuk kontrol versi atau disimpan dalam manifes penyebaran. Gunakan filename untuk membaca dari rahasia yang dipasang, atau ${env:VAR} untuk membaca dari variabel lingkungan yang disuntikkan oleh manajer rahasia Anda.

catatan

Dengan otentikasi token pembawa, Anda tidak memerlukan sigv4auth ekstensi, file AWS kredensial, peran IAM, atau konfigurasi IRSA. Ini membuat konfigurasi kolektor portabel di lingkungan apa pun — AWS, lokal, atau penyedia cloud lainnya.

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 metrik, ikuti prosedur ini:

Untuk memutar kunci API
  1. Buat kredensi baru (sekunder) untuk pengguna IAM:

    aws iam create-service-specific-credential \ --user-name cloudwatch-metrics-api-key-user \ --service-name cloudwatch.amazonaws.com \ --credential-age-days 90
    catatan

    IAM memungkinkan maksimal 2 kredensi khusus layanan per pengguna IAM per layanan. Hapus atau nonaktifkan kredenal lama sebelum membuat yang baru jika Anda telah mencapai batas ini.

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

  3. Perbarui konfigurasi atau aplikasi OpenTelemetry Collector Anda untuk menggunakan kunci API baru.

  4. Setel kredensi asli menjadi tidak aktif:

    aws iam update-service-specific-credential \ --user-name cloudwatch-metrics-api-key-user \ --service-specific-credential-id ACCA1234EXAMPLE1234 \ --status Inactive
  5. Verifikasi bahwa pengiriman metrik tidak terpengaruh. Kirim permintaan pengujian menggunakan kunci baru dan konfirmasikan bahwa Anda menerima respons HTTP 200. Anda juga dapat memantau CloudWatch metrik aplikasi yang ada untuk mengonfirmasi data terus berdatangan.

  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 perintah list-service-specific-credentials:

aws iam list-service-specific-credentials \ --user-name cloudwatch-metrics-api-key-user \ --service-name cloudwatch.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:

Untuk menanggapi kunci API yang disusupi
  1. Nonaktifkan kunci segera untuk mencegah penggunaan tidak sah lebih lanjut:

    aws iam update-service-specific-credential \ --user-name cloudwatch-metrics-api-key-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": "cloudwatch:CallWithBearerToken", "Resource": "*" } }
catatan

Untuk melakukan tindakan ini melalui API, Anda harus mengautentikasi dengan AWS kredensil dan bukan dengan kunci API CloudWatch Metrik. Token pembawa hanya dapat digunakan untuk konsumsi metrik, bukan untuk operasi manajemen IAM.

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 ini untuk melindungi kunci API CloudWatch Metrik Anda:

  • Jangan pernah menyematkan kunci API dalam kode sumber. Jangan kode keras kunci API dalam kode aplikasi, file konfigurasi kolektor, atau sistem kontrol versi. Gunakan bearertokenauth ekstensi dengan filename atau ${env:VAR} untuk menyuntikkan rahasia saat runtime.

  • Gunakan manajer rahasia. Simpan kunci API di AWS Secrets Manager 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.

  • Terapkan izin hak istimewa paling sedikit. Gunakan CloudWatchAPIKeyAccesskebijakan terkelola sebagai titik awal dan batasi lebih lanjut sesuai kebutuhan.

  • Aktifkan CloudTrail logging. Audit penggunaan kunci API dengan mengaktifkan peristiwa CloudTrail data untukAWS::CloudWatch::Metric. 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 konsumsi CloudWatch Metrik OTLP. CloudWatch memancarkan peristiwa AWS::CloudWatch::Metric data untuk panggilan ke titik akhir OTLP, memungkinkan Anda untuk mengaudit aktivitas konsumsi metrik termasuk penggunaan kunci API.

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

Untuk mengaktifkan CloudTrail logging untuk penggunaan kunci CloudWatch Metrik API
  1. Buat jejak:

    aws cloudtrail create-trail \ --name cloudwatch-metrics-api-key-audit \ --s3-bucket-name my-cloudtrail-bucket \ --region us-east-1
  2. Konfigurasikan penyeleksi acara lanjutan untuk menangkap peristiwa CloudWatch data tulis (konsumsi) Metrik:

    aws cloudtrail put-event-selectors \ --region us-east-1 \ --trail-name cloudwatch-metrics-api-key-audit \ --advanced-event-selectors '[{ "Name": "CloudWatch Metrics write data events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::CloudWatch::Metric"] }, { "Field": "readOnly", "Equals": ["false"] } ] }]'
  3. Mulai pencatatan jejak:

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

readOnly: falseFilter membatasi pencatatan ke operasi tulis (PutMetricData), yang mencakup semua panggilan konsumsi OTLP. Untuk mengidentifikasi penggunaan token pembawa di antara peristiwa ini, kueri log jejak Anda (melalui Athena CloudTrail atau Lake) dan filter berdasarkan nama pengguna IAM yang terkait dengan kunci API Anda (misalnya,). cloudwatch-metrics-api-key-user Peristiwa dari konsumsi OTLP termasuk AdditionalEventData.protocol disetel ke OTLP dalam muatan acara, yang dapat Anda gunakan dalam kueri post-hoc untuk membedakannya dari panggilan SDK klasik. PutMetricData