

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
<a name="CWL_HTTP_Endpoints_BearerTokenAuth"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-workloads-use-roles) per l'*utente IAM*.

## Opzione 1: avvio rapido a utilizzare la AWS console
<a name="CWL_HTTP_Endpoints_Console_Setup"></a>

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.

1. Vai a **CloudWatch**> **Impostazioni** > **Registri.**

1. Nella sezione Chiavi API, scegli **Genera chiave API**.

1. 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).

1. Scegli **Genera chiave API**.

   La console automaticamente:
   + Crea un nuovo utente IAM con le autorizzazioni appropriate
   + Allega la policy gestita di [CloudWatchLogsAPIKeyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudWatchLogsAPIKeyAccess.html) (include `logs:PutLogEvents` e `logs:CallWithBearerToken` autorizzazioni)
   + Genera credenziali specifiche del servizio (chiave API)

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

1. 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
   ```

1. 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
<a name="CWL_HTTP_Endpoints_Manual_Setup"></a>

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
<a name="CWL_HTTP_Endpoints_Manual_Step1"></a>

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

1. Accedi alla console di AWS gestione e accedi a IAM.

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

1. Selezionare **Create user (Crea utente)**.

1. Inserisci un nome utente (ad esempio,`cloudwatch-logs-hlc-user`).

1. Scegli **Next (Successivo)**.

1. Allega una delle seguenti politiche IAM:

   **Opzione A: utilizza la policy gestita (consigliata)**

   Allega la policy gestita di [CloudWatchLogsAPIKeyaccesso](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudWatchLogsAPIKeyAccess.html).

   **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/*"
           }
       ]
   }
   ```

1. 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)
<a name="CWL_HTTP_Endpoints_Manual_Step2"></a>

Genera la chiave API CloudWatch Logs utilizzando l'API. [CreateServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html) Puoi anche usare il comando [create-service-specific-credential](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-service-specific-credential.html)CLI. 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 [ServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ServiceSpecificCredential.html)oggetto. 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
<a name="CWL_HTTP_Endpoints_Manual_Step3"></a>

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
<a name="CWL_HTTP_Endpoints_Manual_Step4"></a>

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
<a name="CWL_HTTP_Endpoints_API_Key_Permissions"></a>

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
<a name="CWL_HTTP_Endpoints_Control_Generation"></a>

L'CreateServiceSpecificCredentialazione [iam:](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentityandaccessmanagementiam.html#awsidentityandaccessmanagementiam-actions-as-permissions) 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#ck_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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#ck_ServiceSpecificCredentialAgeDays) — 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
<a name="CWL_HTTP_Endpoints_Control_Usage"></a>

L'`logs:CallWithBearerToken`azione 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:CallWithBearerToken`azione all'utente IAM associato alla chiave.

### Policy di esempio
<a name="CWL_HTTP_Endpoints_Permission_Examples"></a>

#### Impedisci a un'identità di generare e utilizzare le chiavi API CloudWatch Logs
<a name="CWL_HTTP_Endpoints_Deny_Generation_And_Use"></a>

```
{
    "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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_service-specific-creds.html).

#### Impedisci a un'identità di utilizzare le chiavi API Logs CloudWatch
<a name="CWL_HTTP_Endpoints_Deny_Use"></a>

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

#### Consenti la creazione di chiavi CloudWatch Logs solo se scadono entro 90 giorni
<a name="CWL_HTTP_Endpoints_Allow_Expire_90"></a>

```
{
    "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
<a name="CWL_HTTP_Endpoints_Rotating_Keys"></a>

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
<a name="CWL_HTTP_Endpoints_Rotation_Process"></a>

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
   ```

1. (Facoltativo) Archivia la nuova credenziale Gestione dei segreti AWS per il recupero sicuro e la rotazione automatica.

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

1. 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
   ```

1. 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](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch-Logs-Monitoring-CloudWatch-Metrics.html).

1. 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
<a name="CWL_HTTP_Endpoints_Monitor_Expiration"></a>

Per verificare la data di creazione e lo stato delle chiavi API esistenti, usa il [list-service-specific-credentials](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-service-specific-credentials.html)comando:

```
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
<a name="CWL_HTTP_Endpoints_Compromised_Keys"></a>

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
   ```

1. ** CloudTrail Esamina i log** per determinare l'ambito dell'accesso non autorizzato. Scopri [Registrazione dell'utilizzo delle chiavi API con CloudTrail](#CWL_HTTP_Endpoints_CloudTrail_Logging) come abilitare il controllo dell'utilizzo delle chiavi API.

1. **Crea una chiave sostitutiva** seguendo il processo di rotazione descritto in[Processo di rotazione](#CWL_HTTP_Endpoints_Rotation_Process).

1. **Eliminare la chiave compromessa** dopo aver effettuato la sostituzione:

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

1. **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](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResetServiceSpecificCredential.html)— 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
<a name="CWL_HTTP_Endpoints_Security_Best_Practices"></a>

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 AWS](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)o 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](#CWL_HTTP_Endpoints_Allow_Expire_90).
+ **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](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudWatchLogsAPIKeyAccess.html) 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 per`AWS::Logs::LogGroupAuthorization`. Per informazioni, consulta [Registrazione dell'utilizzo delle chiavi API con CloudTrail](#CWL_HTTP_Endpoints_CloudTrail_Logging).
+ **Monitora con IAM Access Analyzer.** Utilizza [IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) 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 in[Chiavi API rotanti](#CWL_HTTP_Endpoints_Rotating_Keys).

## Registrazione dell'utilizzo delle chiavi API con CloudTrail
<a name="CWL_HTTP_Endpoints_CloudTrail_Logging"></a>

È 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](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/create-s3-bucket-policy-for-cloudtrail.html) 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
   ```

1. 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"] }
           ]
       }]'
   ```

1. Inizia la registrazione dei percorsi:

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