View a markdown version of this page

Impostazione dell'autenticazione del token al portatore per Metrics - Amazon CloudWatch

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Impostazione dell'autenticazione del token al portatore per Metrics

Nota

Questa pagina descrive l'autenticazione con token al portatore per l'endpoint OTLP Metrics. CloudWatch Per l'autenticazione con token al portatore CloudWatch dei log, vedi Impostazione dell'autenticazione con token al portatore per i log nella Logs User Guide. CloudWatch

Prima di poter inviare le metriche utilizzando l'autenticazione con token al portatore con l'endpoint CloudWatch OTLP, devi:

  • Crea un utente IAM con autorizzazioni Metrics CloudWatch

  • Genera credenziali specifiche del servizio (chiave API)

Importante

Consigliamo di utilizzare l'autenticazione SIGv4 con credenziali a breve termine per tutti i carichi di lavoro laddove ciò sia possibile. Sigv4 offre il livello di sicurezza più elevato. Limita l'uso delle chiavi API (token al portatore) agli scenari in cui l'autenticazione a breve termine basata su credenziali non è possibile, ad esempio l'invio di metriche da AWS ambienti esterni, fornitori di terze parti o piattaforme che non supportano l'SDK. AWS Quando sei pronto per incorporare CloudWatch Metrics in applicazioni con requisiti di sicurezza più elevati, passa alle credenziali a breve termine. Per ulteriori informazioni, consulta Alternative alle chiavi di accesso a lungo termine nella IAM User Guide.

Importante

L'endpoint CloudWatch OTLP richiede TLS (HTTPS). Le richieste di token al portatore inviate tramite HTTP semplice vengono rifiutate. Usa sempre https://monitoring.AWS Region.amazonaws.com/v1/metrics quando configuri il tuo client.

Opzione 1: avvio rapido utilizzando AWS console

La console AWS di gestione fornisce un flusso di lavoro semplificato per generare chiavi API per l'accesso agli endpoint OTLP.

Per configurare l'accesso agli endpoint OTLP utilizzando la console
  1. Accedere alla console di gestione. AWS

  2. Vai a CloudWatch > Impostazioni > Globale.

  3. Nella sezione Chiavi API, scegli Genera chiave API.

  4. Per Scadenza della chiave API, esegui una delle seguenti operazioni:

    • Seleziona una chiave API con una durata di scadenza di 1 , 5, 30, 90 o 365 giorni.

    • Scegli Durata personalizzata per specificare una data di scadenza della chiave API personalizzata.

    • Seleziona Non scade mai (scelta non consigliata).

  5. Scegli Genera chiave API.

La console automaticamente:

  • Crea un nuovo utente IAM con le autorizzazioni appropriate

  • Allega la policy CloudWatchAPIKeyAccess gestita (include cloudwatch:PutMetricData e cloudwatch:CallWithBearerToken autorizzazioni)

  • Genera credenziali specifiche del servizio (chiave API)

Per salvare e verificare la tua chiave API
  1. Copia e salva in modo sicuro le credenziali visualizzate:

    • ID della chiave API (ID delle Service-specific credenziali)

    • Chiave segreta API (token al portatore)

    La console offre anche la possibilità di memorizzare la chiave API direttamente in AWS Secrets Manager durante la generazione. Se scegli di archiviarla in Secrets Manager, la chiave viene automaticamente aggiornata al ripristino ed eliminata all'eliminazione della chiave.

    Importante

    Salva immediatamente l'API Key Secret. Non puoi recuperarlo in un secondo momento. Se la perdi, devi generare una nuova chiave API.

  2. Invia una metrica di test per verificare la configurazione:

    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":[]}'

Opzione 2: configurazione manuale

Se preferisci un maggiore controllo sulla configurazione IAM o hai bisogno di personalizzare le autorizzazioni, puoi configurare manualmente l'accesso agli endpoint OTLP.

Fase 1: Creare un utente IAM

Crea un utente IAM per l'inserimento delle metriche:

Per creare un utente IAM per l'inserimento delle metriche
  1. Accedi alla console di AWS gestione e accedi a IAM.

  2. Nel riquadro di navigazione a sinistra, seleziona Users (Utenti).

  3. Selezionare Create user (Crea utente).

  4. Inserisci un nome utente (ad esempio,cloudwatch-metrics-api-key-user).

  5. Scegli Next (Successivo).

  6. Allega una delle seguenti politiche IAM:

    Opzione A: utilizza la policy gestita (consigliata)

    Allega la politica CloudWatchAPIKeyAccess gestita.

    Opzione B: creare una politica personalizzata

    Crea e allega la seguente policy IAM:

    { "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. Scegli Avanti, quindi scegli Crea utente.

Nota

Le autorizzazioni KMS sono necessarie se prevedi di inviare metriche a set di dati che utilizzano chiavi KMS (CMK) gestite dal cliente. Le condizioni limitano l'accesso KMS alle sole chiavi utilizzate tramite il servizio per le risorse dei set di dati. CloudWatch

Passaggio 2: generazione di credenziali specifiche del servizio (chiave API)

Genera la chiave API CloudWatch Metrics utilizzando l'API. CreateServiceSpecificCredential Puoi anche utilizzare il comando https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-service-specific-credential.html AWS CLI create-service-specific-credential. Per l'età delle credenziali, puoi specificare un valore compreso tra 1 e 36600 giorni. Se non specifichi l'età delle credenziali, la chiave API non scadrà.

Per generare una chiave API con una scadenza di 30 giorni:

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

La risposta è un ServiceSpecificCredential oggetto. Il ServiceCredentialSecret valore è la tua chiave API CloudWatch Metrics (token al portatore).

Importante

Archivia il ServiceCredentialSecret valore in modo sicuro. Non puoi recuperarlo in un secondo momento. Se la perdi, devi generare una nuova chiave API.

Fase 3: Inviare le metriche

Puoi inviare immediatamente le metriche all'endpoint OTLP utilizzando il tuo token al portatore:

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":[]}'

L'endpoint accetta entrambi i tipi di contenuto. application/json application/x-protobuf

Controlla le autorizzazioni per la generazione e l'utilizzo delle chiavi API CloudWatch Metrics

Controllo della generazione delle chiavi API CloudWatch Metrics

L'iam:CreateServiceSpecificCredentialazione controlla la generazione di una chiave specifica del servizio (come una chiave API CloudWatch Metrics). È possibile questa azione agli utenti IAM come una risorsa per limitare gli utenti per cui è possibile generare una chiave.

Per imporre condizioni all’autorizzazione per l’azione iam:CreateServiceSpecificCredential, è possibile utilizzare le chiavi di condizione seguenti:

Controllo dell'utilizzo delle chiavi API CloudWatch Metrics

L'cloudwatch:CallWithBearerTokenazione controlla l'uso di una CloudWatch chiave API Metrics. Per impedire a un'identità di utilizzare le chiavi API CloudWatch Metrics, allega una policy che neghi l'cloudwatch:CallWithBearerTokenazione all'utente IAM associato alla chiave.

Nota

I token Bearer per CloudWatch Metrics possono essere utilizzati solo con l'endpoint di ingestione delle metriche OTLP (). https://monitoring.AWS Region.amazonaws.com/v1/metrics Non possono essere utilizzati per chiamare nessun'altra CloudWatch API o endpoint, incluse le API di query (,,DescribeAlarms), l'endpoint di query ProMQL GetMetricDataListMetrics, l'endpoint delle tracce OTLP o l'endpoint dei log OTLP.

Policy di esempio

Impedisci a un'identità di generare e utilizzare le chiavi API Metrics: CloudWatch

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

Questa politica impedisce la creazione di credenziali per tutti i AWS servizi che supportano la creazione di credenziali specifiche del servizio. Per ulteriori informazioni, consulta le Service-specific credenziali per gli utenti IAM nella IAM User Guide.

Impedisci a un'identità di utilizzare le CloudWatch chiavi API Metrics:

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

Consenti la creazione di chiavi CloudWatch Metrics solo se scadono entro 90 giorni:

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

Utilizzo dei token al portatore con il Collector OpenTelemetry

Quando si utilizzano i token al portatore, non è necessaria l'estensione. sigv4auth Usa l'estensione bearertokenauth per fornire in modo sicuro la tua chiave API da un file o da una variabile di ambiente:

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]

In alternativa, puoi fare riferimento a una variabile di ambiente anziché a un file:

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

Non codificate mai le chiavi API direttamente nei file di configurazione del raccoglitore. I file di configurazione sono spesso affidati al controllo della versione o archiviati nei manifesti di distribuzione. filenameUtilizzateli per leggere da un segreto montato o ${env:VAR} per leggere da una variabile di ambiente inserita dal vostro gestore di segreti.

Nota

Con l'autenticazione con token al portatore, non hai bisogno dell'sigv4authestensione, dei file delle AWS credenziali, dei ruoli IAM o della configurazione IRSA. Ciò rende la configurazione del collector portabile in qualsiasi ambiente AWS, locale o di altri provider cloud.

Chiavi API rotanti

La rotazione regolare delle chiavi API riduce il rischio di accessi non autorizzati. Dovresti consigliare di stabilire un programma di rotazione in linea con le politiche di sicurezza della tua organizzazione.

Processo di rotazione

Per ruotare una chiave API senza interrompere la distribuzione delle metriche, segui questa procedura:

Per ruotare una chiave API
  1. Crea una nuova credenziale (secondaria) per l'utente IAM:

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

    IAM consente un massimo di 2 credenziali specifiche del servizio per utente IAM per servizio. Elimina o disattiva le vecchie credenziali prima di crearne di nuove se hai raggiunto questo limite.

  2. (Facoltativo) Memorizza la nuova credenziale in AWS Secrets Manager per un recupero sicuro e una rotazione automatica.

  3. Aggiorna la configurazione o l'applicazione di OpenTelemetry Collector per utilizzare la nuova chiave API.

  4. Imposta la credenziale originale su inattiva:

    aws iam update-service-specific-credential \ --user-name cloudwatch-metrics-api-key-user \ --service-specific-credential-id ACCA1234EXAMPLE1234 \ --status Inactive
  5. Verifica che la distribuzione delle metriche non sia influenzata. Invia una richiesta di test utilizzando la nuova chiave e conferma di ricevere una risposta HTTP 200. Puoi anche monitorare le CloudWatch metriche esistenti dell'applicazione per confermare che i dati continuino ad arrivare.

  6. Dopo aver confermato l'avvenuta consegna con la nuova chiave, elimina la credenziale precedente:

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

Monitoraggio della scadenza della chiave

Per verificare la data di creazione e lo stato delle tue chiavi API esistenti, usa il comando list-service-specific-credentials:

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

La risposta include e per ogni credenziale. CreateDate Status Utilizza queste informazioni per identificare le chiavi che stanno per scadere o sono state attive più a lungo di quanto consentito dalla tua politica di rotazione.

Risposta a una chiave API compromessa

Se sospetti che una chiave API sia stata compromessa, procedi immediatamente come segue:

Per rispondere a una chiave API compromessa
  1. Disattiva immediatamente la chiave per prevenire un ulteriore uso non autorizzato:

    aws iam update-service-specific-credential \ --user-name cloudwatch-metrics-api-key-user \ --service-specific-credential-id ACCA1234EXAMPLE1234 \ --status Inactive
  2. Esamina CloudTrail i registri per determinare l'ambito dell'accesso non autorizzato. Scopri Registrazione dell'utilizzo della chiave API con CloudTrail come abilitare il controllo dell'utilizzo delle chiavi API.

  3. Crea una chiave sostitutiva seguendo il processo di rotazione descritto inProcesso di rotazione.

  4. Elimina la chiave compromessa dopo la sostituzione:

    aws iam delete-service-specific-credential \ --service-specific-credential-id ACCA1234EXAMPLE1234
  5. Allega una policy di negazione se devi bloccare immediatamente l'accesso a tutti i token al portatore per l'utente IAM mentre indaghi:

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

Per eseguire queste azioni tramite l'API, devi autenticarti con AWS le credenziali e non con una CloudWatch chiave API Metrics. I token Bearer possono essere utilizzati solo per l'inserimento di metriche, non per le operazioni di gestione IAM.

Puoi anche utilizzare le seguenti operazioni API IAM per gestire le chiavi compromesse:

  • ResetServiceSpecificCredential— Reimposta la chiave per generare una nuova password senza eliminare la credenziale. La chiave non deve essere scaduta.

Le migliori pratiche di sicurezza per le chiavi API

Segui queste best practice per proteggere le tue chiavi API CloudWatch Metrics:

  • Non incorporare mai le chiavi API nel codice sorgente. Non codificate le chiavi API nel codice dell'applicazione, nei file di configurazione del collettore o nei sistemi di controllo della versione. Utilizzate l'bearertokenauthestensione con filename o ${env:VAR} per inserire informazioni segrete in fase di esecuzione.

  • Usa un gestore di segreti. Archivia le chiavi API in AWS Secrets Manager o in una soluzione di gestione dei segreti equivalente. Ciò consente il controllo centralizzato degli accessi, la registrazione degli audit e la rotazione automatica.

  • Imposta una scadenza per tutte le chiavi. Specifica sempre un --credential-age-days valore durante la creazione delle chiavi API. Per imporre una durata massima delle chiavi in tutta l'organizzazione, utilizza la chiave di condizione iam:ServiceSpecificCredentialAgeDays IAM.

  • Applica le autorizzazioni con privilegi minimi. Usa la CloudWatchAPIKeyAccess policy gestita come punto di partenza e limita ulteriormente se necessario.

  • Abilita la CloudTrail registrazione. Controlla l'utilizzo delle chiavi API abilitando gli eventi di CloudTrail dati perAWS::CloudWatch::Dataset. Per informazioni, consulta Registrazione dell'utilizzo della chiave API con CloudTrail.

  • Monitora con IAM Access Analyzer. Usa IAM Access Analyzer per identificare le credenziali inutilizzate e le policy eccessivamente permissive associate agli utenti IAM della tua chiave API.

  • Ruota le chiavi regolarmente. Stabilisci un programma di rotazione e segui il processo descritto inChiavi API rotanti.

Registrazione dell'utilizzo della chiave API con CloudTrail

È possibile utilizzarlo AWS CloudTrail per registrare gli eventi di dati per l'inserimento OTLP di CloudWatch Metrics. CloudWatch emette eventi di AWS::CloudWatch::Dataset dati per le chiamate all'endpoint OTLP, consentendoti di controllare l'attività di inserimento delle metriche, incluso l'utilizzo delle chiavi API.

Nota

Il bucket S3 specificato per il percorso deve avere una policy del bucket che consenta di scrivere file di registro su di esso. CloudTrail Per ulteriori informazioni, consulta la policy sui bucket di Amazon S3 nella Guida per l' CloudTrailutente. AWS CloudTrail

Per abilitare la CloudTrail registrazione per l'utilizzo delle chiavi API CloudWatch Metrics
  1. Crea un percorso:

    aws cloudtrail create-trail \ --name cloudwatch-metrics-api-key-audit \ --s3-bucket-name my-cloudtrail-bucket \ --region us-east-1
  2. Configura selettori di eventi avanzati per acquisire gli eventi di scrittura (inserimento) dei dati di CloudWatch Metrics:

    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. Inizia la registrazione del percorso:

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

Il readOnly: false filtro limita la registrazione alle operazioni di scrittura (PutMetricData), che include tutte le chiamate di inserimento OTLP. Per identificare l'utilizzo del token al portatore tra questi eventi, interroga i log di percorso (tramite Athena o CloudTrail Lake) e filtra in base al nome utente IAM associato alla tua chiave API (ad esempio,). cloudwatch-metrics-api-key-user Gli eventi derivanti dall'inserimento di OTLP includono il payload AdditionalEventData.protocol impostato su OTLP in the event, che puoi utilizzare nelle query post-hoc per distinguerli dalle classiche chiamate SDK. PutMetricData