Raccogliere i log di accesso di AWS API Gateway

Supportato in:

Questo documento spiega come importare i log di accesso di Amazon API Gateway in Google Security Operations utilizzando AWS CloudWatch Logs e Kinesis Data Firehose. Amazon API Gateway fornisce API REST e HTTP per creare e gestire le API su larga scala. I log di accesso consentono di monitorare l'utilizzo delle API e risolvere i problemi. Questa integrazione trasmette questi log a Google SecOps per l'analisi e il monitoraggio.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Istanza Google SecOps
  • Accesso con privilegi ad AWS

Abilitare il logging degli accessi di Amazon API Gateway (in CloudWatch Logs)

  1. Vai a Console AWS > API Gateway.
  2. Per le API REST:

    • Apri Stage > Logs/Tracing > enable Access logging.
    • Log format: Select JSON.

      {
        "requestId":"$context.requestId",
        "ip":"$context.identity.sourceIp",
        "requestTime":"$context.requestTime",
        "httpMethod":"$context.httpMethod",
        "routeKey":"$context.routeKey",
        "status":"$context.status",
        "protocol":"$context.protocol",
        "responseLength":"$context.responseLength",
        "integrationLatency":"$context.integrationLatency",
        "error":"$context.error.message"
      }
      
    • CloudWatch Logs log group: Choose or create a log group (for example, /aws/apigateway/access).

  3. Per le API HTTP:

    • Select your API > Monitor > Logging.
    • Select Stage > Edit.
    • Enable Access logging.
    • Utilizza lo stesso formato dei log JSON di sopra.
    • CloudWatch Logs log group: Choose or create a log group (for example, /aws/apigateway/access).
  4. Fai clic su Salva.

Configurare un feed in Google SecOps per importare i log di Amazon API Gateway

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su + Aggiungi nuovo feed.
  3. Nel campo Feed name (Nome feed), inserisci Amazon API Gateway - CloudWatch via Firehose.
  4. Seleziona Amazon Data Firehose come Source type (Tipo di origine).
  5. Seleziona Amazon API Gateway come Log type (Tipo di log).
  6. Fai clic su Avanti.
  7. Specifica i valori per i seguenti parametri di input:
    • Split delimiter (Delimitatore di divisione): n (facoltativo)
    • Asset namespace (Spazio dei nomi degli asset): aws.api_gateway
    • Ingestion labels (Etichette di importazione): ad esempio source=apigw_access, aws_region=<your-region>
  8. Fai clic su Avanti.
  9. Esamina la configurazione del feed e fai clic su Invia.
  10. Nei Dettagli del feed, fai clic su Genera chiave segreta e copia la chiave segreta.
  11. Copia l'URL dell'endpoint HTTPS del feed da Informazioni sull'endpoint.
  12. Crea una chiave API Google Cloud in API e servizi > Credenziali > Crea credenziali > Chiave API e limitala all'API Chronicle.
  13. Copia e salva la chiave API in un luogo sicuro.

Configurare Amazon Kinesis Data Firehose (direttamente in Google SecOps)

  1. Nella console AWS, vai a Kinesis > Data Firehose > Create delivery stream.
  2. Fornisci i seguenti dettagli di configurazione:
    • Source (Origine): seleziona Direct PUT or other sources (PUT diretto o altre origini).
    • Destination (Destinazione): scegli HTTP endpoint (Endpoint HTTP).
    • URL dell'endpoint HTTP: inserisci ENDPOINT_URL?key=API_KEY (utilizza l'URL dell'endpoint HTTPS del feed e la chiave API del passaggio precedente).
    • HTTP method (Metodo HTTP): seleziona POST.
    • Access key (Chiave di accesso): incolla la chiave segreta generata nel feed.
    • Buffering hints (Suggerimenti per il buffering): imposta Buffer size (Dimensione del buffer) = 1 MiB, Buffer interval (Intervallo buffer) = 60 seconds (60 secondi).
    • Compression (Compressione): seleziona Disabled (Disattivata).
    • S3 backup (Backup S3): seleziona Disabled (Disattivata).
    • Lascia le impostazioni di retry (riprova) e logging (registrazione) come predefinite.
  3. Fai clic su Create delivery stream (Crea flusso di distribuzione). Ad esempio, cwlogs-to-secops.

Configurare le autorizzazioni IAM e sottoscrivere il gruppo di log

  1. Nella console AWS, vai a IAM > Policies > Create policy > JSON.
    1. Nell'editor JSON, inserisci la seguente policy:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "firehose:PutRecord",
            "firehose:PutRecordBatch"
          ],
          "Resource": "arn:aws:firehose:<region>:<account-id>:deliverystream/cwlogs-to-secops"
        }
      ]
    }
    
    • Sostituisci <region> e <account-id> con la regione AWS e l'ID account.
  2. Assegna alla policy il nome CWLtoFirehoseWrite e fai clic su Create policy (Crea policy).

  3. Vai a IAM > Roles > Create role (Crea ruolo).

  4. Seleziona Custom trust policy (Policy di attendibilità personalizzata) e inserisci quanto segue:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "logs.<your-region>.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    
  5. Collega la policy CWLtoFirehoseWrite al ruolo.

  6. Assegna al ruolo il nome CWLtoFirehoseRole e fai clic su Create role (Crea ruolo).

  7. Vai a CloudWatch > Logs > Log groups (Gruppi di log).

  8. Seleziona il gruppo di log API Gateway che hai creato in precedenza.

  9. Apri la scheda Subscription filters (Filtri di sottoscrizione) e fai clic su Create (Crea).

  10. Scegli Create Amazon Kinesis Data Firehose subscription filter (Crea filtro di sottoscrizione di Amazon Kinesis Data Firehose).

  11. Configura quanto segue:

    • Destination (Destinazione): flusso di distribuzione cwlogs-to-secops.
    • Grant permission (Concedi autorizzazione): ruolo CWLtoFirehoseRole.
    • Filter name (Nome filtro): inserisci all-events.
    • Filter pattern (Pattern di filtro): lascia vuoto per inviare tutti gli eventi.
  12. Fai clic su Start streaming (Avvia streaming).

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.