Configurazione dell'autenticazione con token al portatore - CloudWatch Registri Amazon

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

Configurazione dell'autenticazione con token al portatore

Prima di poter inviare i log utilizzando l'autenticazione con token bearer con uno qualsiasi degli endpoint di ingestione HTTP, devi:

  • Creare un utente IAM con autorizzazioni Logs CloudWatch

  • Genera credenziali specifiche per il servizio (bearer token)

  • Crea un gruppo di log e un flusso di log

  • Abilita l'autenticazione con token al portatore sul gruppo di log

Importante

Consigliamo di utilizzare l'autenticazione SigV4 con credenziali a breve termine per tutti i carichi di lavoro laddove ciò sia possibile. SigV4 offre la posizione di sicurezza più solida. Limita l'uso delle chiavi API (bearer token) agli scenari in cui l'autenticazione a breve termine basata su credenziali non è possibile. Quando sei pronto per incorporare i CloudWatch log in applicazioni con requisiti di sicurezza più elevati, dovresti passare alle credenziali a breve termine. Per ulteriori informazioni, consulta Alternative alle chiavi di accesso a lungo termine nella Guida per l'utente IAM.

Opzione 1: avvio rapido a utilizzare la AWS console

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

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

  2. Vai a CloudWatch> Impostazioni > Registri.

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

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

    • Seleziona una durata di scadenza della chiave API 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 gestita di CloudWatchLogsAPIKeyAccess (include logs:PutLogEvents e logs:CallWithBearerToken autorizzazioni)

    • Genera credenziali specifiche del servizio (chiave API)

  6. Copia e salva in modo sicuro le credenziali visualizzate:

    • ID chiave API (ID credenziale specifico del servizio)

    • Chiave API segreta (token Bearer)

    Importante

    Salva immediatamente l'API Key Secret. Non può essere recuperata più tardi. Se la perdi, dovrai generare una nuova chiave API.

  7. Crea il gruppo di log e il flusso di log in cui verranno archiviati i log:

    # 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. Abilita l'autenticazione con token al portatore sul gruppo di log:

    aws logs put-bearer-token-authentication \ --log-group-identifier /aws/hlc-logs/my-application \ --bearer-token-authentication-enabled \ --region us-east-1

    Verifica la configurazione:

    aws logs describe-log-groups \ --log-group-name-prefix /aws/hlc-logs/my-application \ --region us-east-1

Autorizzazioni incluse: l'utente IAM creato automaticamente avrà le seguenti autorizzazioni:

  • logs:PutLogEvents— Invia eventi di registro a Logs CloudWatch

  • logs:CallWithBearerToken— Autenticazione utilizzando il token bearer

  • kms:Describe*,kms:GenerateDataKey*, kms:Decrypt — Accedi ai gruppi di log crittografati con KMS (con condizioni limitate al servizio di log)

Opzione 2: configurazione manuale

Se preferisci un maggiore controllo sulla configurazione IAM o devi personalizzare le autorizzazioni, puoi configurare manualmente l'accesso agli endpoint HTTP.

Passaggio 1: creare un utente IAM

Crea un utente IAM che verrà utilizzato per l'inserimento dei log:

  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-logs-hlc-user).

  5. Scegli Next (Successivo).

  6. Allega una delle seguenti politiche IAM:

    Opzione A: utilizza la policy gestita (consigliata)

    Allega la policy gestita di CloudWatchLogsAPIKeyaccesso.

    Opzione B: creare una politica personalizzata

    Crea e allega la seguente policy IAM:

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

Nota

Le autorizzazioni KMS sono necessarie se prevedi di inviare registri a gruppi di log crittografati con KMS. La condizione limita l'accesso KMS alle sole chiavi utilizzate tramite il servizio Logs. CloudWatch

Fase 2: Generazione di credenziali specifiche per il servizio (chiave API)

Genera la chiave API CloudWatch Logs utilizzando l'API. CreateServiceSpecificCredential Puoi anche usare il comando create-service-specific-credentialCLI. Per l'età delle credenziali, è possibile specificare un valore compreso tra 1 e 36600 giorni. Se non specifici 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-logs-hlc-user \ --service-name logs.amazonaws.com \ --credential-age-days 30

La risposta è un ServiceSpecificCredentialoggetto. Il ServiceCredentialSecret valore è la tua chiave API CloudWatch Logs (token bearer).

Importante

Archivia il valore ServiceCredentialSecret in modo sicuro, poiché non potrai recuperarlo in un secondo momento. Se la perdi, dovrai generare una nuova chiave API.

Fase 3: Creare un gruppo di log e un flusso di log

Crea il gruppo di log e il flusso di log in cui verranno archiviati i log:

# 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

Passaggio 4: abilitare l'autenticazione con token al portatore

Abilita l'autenticazione con token al portatore nel gruppo di log:

aws logs put-bearer-token-authentication \ --log-group-identifier /aws/hlc-logs/my-application \ --bearer-token-authentication-enabled \ --region us-east-1

Verifica la configurazione:

aws logs describe-log-groups \ --log-group-name-prefix /aws/hlc-logs/my-application \ --region us-east-1

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

La generazione e l'utilizzo delle chiavi API CloudWatch Logs sono controllati da azioni e chiavi di condizione nei servizi CloudWatch Logs e IAM.

Controllo della generazione di chiavi API CloudWatch Logs

L'CreateServiceSpecificCredentialazione iam: controlla la generazione di una chiave specifica del servizio (come una chiave API CloudWatch Logs). È 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:

  • iam: ServiceSpecificCredentialAgeDays — Consente di specificare, nella condizione, il tempo di scadenza della chiave in giorni. Ad esempio, si può utilizzare questa chiave di condizione per consentire solo la creazione di chiavi API che scadono entro 90 giorni.

  • iam: ServiceSpecificCredentialServiceName — Consente di specificare, nella condizione, il nome di un servizio. Ad esempio, è possibile utilizzare questa chiave di condizione per consentire solo la creazione di chiavi API per CloudWatch Logs e non per altri servizi.

Controllo dell'utilizzo delle chiavi API CloudWatch Logs

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

Policy di esempio

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

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

Questa politica impedirà la creazione di credenziali per tutti i AWS servizi che supportano la creazione di credenziali specifiche del servizio. Per ulteriori informazioni, consulta Credenziali specifiche del servizio per gli utenti IAM.

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

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

Consenti la creazione di chiavi CloudWatch Logs 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": "logs.amazonaws.com" }, "NumericLessThanEquals": { "iam:ServiceSpecificCredentialAgeDays": "90" } } } ] }

Chiavi API rotanti

La rotazione regolare delle chiavi API riduce il rischio di accessi non autorizzati. Ti consigliamo di stabilire un programma di rotazione in linea con le politiche di sicurezza dell'organizzazione.

Processo di rotazione

Per ruotare una chiave API senza interrompere la consegna dei log, segui questa procedura:

  1. Crea una nuova credenziale (secondaria) per l'utente IAM:

    aws iam create-service-specific-credential \ --user-name cloudwatch-logs-hlc-user \ --service-name logs.amazonaws.com \ --credential-age-days 90
  2. (Facoltativo) Archivia la nuova credenziale Gestione dei segreti AWS per il recupero sicuro e la rotazione automatica.

  3. Importa la nuova credenziale nel portale del fornitore o aggiorna la configurazione dell'applicazione per utilizzare la nuova chiave API.

  4. Imposta la credenziale originale su inattiva:

    aws iam update-service-specific-credential \ --user-name cloudwatch-logs-hlc-user \ --service-specific-credential-id ACCA1234EXAMPLE1234 \ --status Inactive
  5. Verifica che la consegna dei log non sia influenzata dal monitoraggio della IncomingBytes metrica relativa al tuo gruppo di log in. CloudWatch Per ulteriori informazioni, consulta Monitoraggio con CloudWatch metriche.

  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 delle chiavi

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

aws iam list-service-specific-credentials \ --user-name cloudwatch-logs-hlc-user \ --service-name logs.amazonaws.com

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

Risposta a una chiave API compromessa

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

  1. Disattiva immediatamente la chiave per evitare ulteriori utilizzi non autorizzati:

    aws iam update-service-specific-credential \ --user-name cloudwatch-logs-hlc-user \ --service-specific-credential-id ACCA1234EXAMPLE1234 \ --status Inactive
  2. CloudTrail Esamina i log per determinare l'ambito dell'accesso non autorizzato. Scopri Registrazione dell'utilizzo delle chiavi 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. Eliminare la chiave compromessa dopo aver effettuato la sostituzione:

    aws iam delete-service-specific-credential \ --service-specific-credential-id ACCA1234EXAMPLE1234
  5. Allega una politica di rifiuto se devi bloccare immediatamente l'accesso a tutti i token portatori per l'utente IAM durante le indagini:

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

Per eseguire queste azioni tramite l'API, devi autenticarti con AWS le credenziali e non con una CloudWatch chiave API Logs.

Puoi anche utilizzare le seguenti operazioni dell'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 Logs:

  • Non incorporare mai le chiavi API nel codice sorgente. Non codificate le chiavi API nel codice dell'applicazione né affidatele a sistemi di controllo della versione. Se una chiave viene salvata accidentalmente in un archivio pubblico, la scansione AWS automatica potrebbe contrassegnarla ed è necessario ruotarla immediatamente.

  • Usa un gestore di segreti. Archivia le chiavi API in una soluzione di gestione dei segreti equivalente Gestione dei segreti AWSo in una soluzione di gestione dei segreti equivalente. Ciò consente il controllo centralizzato degli accessi, la registrazione degli audit e la rotazione automatizzata.

  • Imposta una scadenza per tutte le chiavi. Specificate 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. Per vedere un esempio, consulta Consenti la creazione di chiavi CloudWatch Logs solo se scadono entro 90 giorni.

  • Applica le autorizzazioni con privilegi minimi. Ambita le autorizzazioni dell'utente IAM solo per i gruppi di log e le azioni richieste. Utilizza la policy di CloudWatchLogsAPIKeyaccesso gestito come punto di partenza e limita ulteriormente se necessario.

  • Abilita la CloudTrail registrazione. Verifica l'utilizzo delle chiavi API abilitando gli eventi di CloudTrail dati perAWS::Logs::LogGroupAuthorization. Per informazioni, consulta Registrazione dell'utilizzo delle chiavi API con CloudTrail.

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

  • Ruota i tasti regolarmente. Stabilite un programma di rotazione e seguite la procedura descritta inChiavi API rotanti.

Registrazione dell'utilizzo delle chiavi API con CloudTrail

È possibile utilizzare AWS CloudTrail per registrare gli eventi relativi ai dati per l'utilizzo della chiave API CloudWatch Logs. CloudWatch Logs emette eventi di AWS::Logs::LogGroupAuthorization dati per CallWithBearerToken le chiamate, consentendoti di verificare quando e come le chiavi API vengono utilizzate per inviare i log.

Per abilitare la CloudTrail registrazione per l'utilizzo delle chiavi API CloudWatch Logs:

Nota

Il bucket S3 che specifichi per il percorso deve avere una policy sui bucket che CloudTrail consenta di scrivere file di registro al suo interno. Per ulteriori informazioni, consulta la policy sui bucket di Amazon S3 per. CloudTrail

  1. Crea un percorso:

    aws cloudtrail create-trail \ --name cloudwatch-logs-api-key-audit \ --s3-bucket-name my-cloudtrail-bucket \ --region us-east-1
  2. Configura i selettori di eventi avanzati per acquisire gli eventi di autorizzazione dei gruppi di 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. Inizia la registrazione dei percorsi:

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