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 Metrics OTLP. Untuk otentikasi token pembawa CloudWatch Log, lihat Men yiapkan otentikasi token pembawa untuk Log di Panduan Pengguna CloudWatch Log.

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

  • Membuat pengguna IAM dengan izin CloudWatch Metrik

  • Menghasilkan kredentif khusus layanan (kunci API)

penting

Sebaiknya gunakan otentikasi SIGv4 dengan kredenSIAL 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 kredensi jangka pendek tidak memungkinkan, seperti mengirim metrik dari non-AWS 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 kredenSIAL 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 mengkonfigurasi klien Anda.

Opsi 1: Mulai cepat menggunakan AWS konsol

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

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

  2. Arahkan ke CloudWatch > Pengatur an> 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 khusus.

    • Pilih Tidak pernah kedalu warsa (tidak disarankan).

  5. Pilih Hasilkan kunci API.

Konsol secara otomatis:

  • Membuat pengguna IAM baru dengan izin yang sesuai

  • Melampirkan CloudWatchAPIKeyAccess kebijakan terkelola (termasuk cloudwatch:PutMetricData dan cloudwatch:CallWithBearerToken izin)

  • Menghasilkan kredenSIAL khusus layanan (kunci API)

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

    • ID Kunci API (ID Service-specific kredensi)

    • Rahasia Kunci API (token pembawa)

    Konsol juga menawarkan opsi untuk menyimpan kunci API Anda langsung di AWS Secrets Manager selama pembuatan. Jika Anda memilih untuk menyimpan di Secrets Manager, kunci secara otomatis diperbarui saat 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 titik akhir OTLP secara manual.

Langkah 1: Buat pengguna IAM

Buat pengguna IAM untuk konsumsi metrik:

Untuk membuat pengguna IAM untuk penyerapan metrik
  1. Masuk ke Konsol AWS Manajemen 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 CloudWatchAPIKeyAccess yang dikelola.

    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 untuk kunci yang digunakan melalui CloudWatch layanan untuk sumber daya dataset.

Langkah 2: Hasilkan kredenSIAL khusus layanan (kunci API)

Hasilkan kunci CloudWatch Metrics API menggunakan CreateServiceSpecificCredential API. Anda juga dapat menggunakan perintah create-service-spesifik-credential AWS CLI . Untuk usia kredensi, Anda dapat menentukan nilai antara 1-36600 hari. Jika Anda tidak menentukan usia kredensi, kunci API tidak akan kedaluwarsa.

Untuk menghasilkan kunci API dengan 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

Jawabannya adalah sebuah ServiceSpecificCredential objek. Nil ServiceCredentialSecret ainya adalah kunci API CloudWatch Metrik Anda (token pembawa).

penting

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

Langkah 3: Kirim metrik

Anda dapat segera 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 kedua application/json dan jenis application/x-protobuf konten.

Kontrol izin untuk menghasilkan dan menggunakan kunci CloudWatch Metrics API

Mengontrol pembuatan kunci CloudWatch Metrics API

T iam:CreateServiceSpecificCredential indakan mengontrol pembuatan kunci khusus layanan (seperti kunci API CloudWatch Metrik). Anda dapat memberikan cakupan tindakan ini kepada pengguna IAM sebagai sumber daya untuk membatasi pengguna yang kuncinya dapat dibuat.

Anda dapat menggunakan kunci kondisi berikut untuk memaksakan kondisi pada izin iam:CreateServiceSpecificCredential tindakan:

Mengontrol penggunaan kunci CloudWatch Metrics API

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

catatan

Token pembawa untuk CloudWatch Metrik hanya dapat digunakan dengan titik akhir penyerapan 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 (GetMetricData,,DescribeAlarms)ListMetrics, titik akhir kueri PromQL, titik akhir pelacakan OTLP, atau titik akhir log OTLP.

Contoh kebijakan

Mencegah identitas menghasilkan dan menggunakan kunci CloudWatch Metrics API:

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

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

Mencegah identitas menggunakan kunci CloudWatch Metrics API:

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

Izinkan pembuatan kunci CloudWatch Metrik hanya jika 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 memberikan 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 membuat hardcode kunci API langsung di file konfigurasi kolektor. File konfigurasi sering kali diikat ke kontrol versi atau disimpan dalam manifes penerapan. Gunakan filename untuk membaca dari rahasia yang dipasang, atau ${env:VAR} untuk membaca dari variabel lingkungan yang disuntikkan oleh pengelola rahasia Anda.

catatan

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

Memutar kunci API

Memutar kunci API secara teratur mengurangi risiko akses yang tidak sah. Anda harus merekomendasikan menetapkan jadwal rotasi yang selaras 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 (sekunder) baru 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 mengizinkan maksimal 2 kredentif khusus layanan per pengguna IAM per layanan. Hapus atau nonaktifkan kredentif 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 ke tidak aktif:

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

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

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

Pemantauan kedaluwarsa kunci

Untuk memeriksa tanggal pembuatan dan status kunci API yang ada, gunakan perintah list-servic e-specific:

aws iam list-service-specific-credentials \ --user-name cloudwatch-metrics-api-key-user \ --service-name cloudwatch.amazonaws.com

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

Menanggapi kunci API yang dikompromikan

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

Untuk menanggapi kunci API yang dikompromikan
  1. Nonaktifkan kunci segera untuk mencegah penggunaan yang 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 Logging 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 dikompromikan setelah penggantian dilakukan:

    aws iam delete-service-specific-credential \ --service-specific-credential-id ACCA1234EXAMPLE1234
  5. Lampirkan kebijakan tolak 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 mengotentikasi dengan AWS kredenSIAL 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:

Praktik terbaik keamanan untuk kunci API

Ikuti praktik terbaik berikut untuk melindungi kunci API CloudWatch Metrik Anda:

  • Jangan pernah menyematkan kunci API dalam kode sumber. Jangan membuat hard code 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. Hal ini memungkinkan kontrol akses terpusat, pencatatan audit, dan rotasi otomatis.

  • Tetapkan kedaluwarsa pada semua kunci. 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 terkecil. Gunakan CloudWatchAPIKeyAccess kebijakan terkelola sebagai titik awal dan batasi lebih lanjut sesuai kebutuhan.

  • Aktif CloudTrail kan logging. Mengaudit penggunaan kunci API dengan mengaktifkan peristiwa CloudTrail data untukAWS::CloudWatch::Dataset. Lihat Logging penggunaan kunci API dengan CloudTrail.

  • Memantau dengan Penganalisis Akses IAM. Gunakan IAM Access Analyzer untuk mengidentifikasi kredenSIAL yang tidak digunakan dan kebijakan yang terlalu permisif terkait dengan pengguna IAM kunci API Anda.

  • Putar tombol secara teratur. Tetapkan jadwal rotasi dan ikuti proses yang dijelaskan diMemutar kunci API.

Logging penggunaan kunci API dengan CloudTrail

Anda dapat menggunakan AWS CloudTrail untuk mencatat peristiwa data untuk penyerapan CloudWatch Metrik OTLP. CloudWatch memancarkan peristiwa AWS::CloudWatch::Dataset data untuk panggilan ke titik akhir OTLP, memungkinkan Anda untuk mengaudit aktivitas penyerapan 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 untuk CloudTrail di Panduan AWS CloudTrail Pengguna.

Untuk mengaktifkan CloudTrail logging untuk penggunaan kunci CloudWatch Metrics 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 pemilih peristiwa lanjutan untuk menangkap peristiwa data CloudWatch penulisan (penyerapan) 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::Dataset"] }, { "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 logging untuk menulis operasi (PutMetricData), yang mencakup semua panggilan penyerapan OTLP. Untuk mengidentifikasi penggunaan token pembawa di antara peristiwa ini, kueri log jejak Anda (melalui Athena atau CloudTrail Lake) dan filter berdasarkan nama pengguna IAM yang terkait dengan kunci API Anda (misalnya,). cloudwatch-metrics-api-key-user Peristiwa dari penyerapan OTLP termasuk AdditionalEventData.protocol disetel ke OTLP dalam payload acara, yang dapat Anda gunakan dalam kueri post-hoc untuk membedakannya dari panggilan SDK klasik PutMetricData .