Collecter les journaux d'accès AWS API Gateway

Compatible avec :

Ce document explique comment ingérer des journaux d'accès Amazon API Gateway dans Google Security Operations à l'aide d'AWS CloudWatch Logs et Kinesis Data Firehose. Amazon API Gateway fournit des API REST et HTTP pour créer et gérer des API à grande échelle. Les journaux d'accès permettent de surveiller l'utilisation des API et de résoudre les problèmes. Cette intégration diffuse ces journaux dans Google SecOps pour analyse et surveillance.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Instance Google SecOps
  • Accès privilégié à AWS

Activer la journalisation des accès Amazon API Gateway (dans CloudWatch Logs)

  1. Accédez à la console AWS > API Gateway.
  2. Pour les API REST :

    • Ouvrez Étape > Journaux/Traces > Activer la journalisation des accès.
    • Format du journal : sélectionnez 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"
      }
      
    • Groupe de journaux CloudWatch Logs : sélectionnez ou créez un groupe de journaux (par exemple, /aws/apigateway/access).

  3. Pour les API HTTP :

    • Sélectionnez votre API > Surveiller > Journalisation.
    • Sélectionnez Étape > Modifier.
    • Activez Journalisation des accès.
    • Utilisez le même format de journal JSON que ci-dessus.
    • Groupe de journaux CloudWatch Logs : sélectionnez ou créez un groupe de journaux (par exemple, /aws/apigateway/access).
  4. Cliquez sur Enregistrer.

Configurer un flux dans Google SecOps pour ingérer les journaux Amazon API Gateway

  1. Accédez à Paramètres SIEM> Flux.
  2. Cliquez sur + Ajouter un flux.
  3. Dans le champ Nom du flux, saisissez Amazon API Gateway - CloudWatch via Firehose.
  4. Sélectionnez Amazon Data Firehose comme type de source.
  5. Sélectionnez Amazon API Gateway comme type de journal.
  6. Cliquez sur Suivant.
  7. Spécifiez les valeurs des paramètres d'entrée suivants :
    • Délimiteur de fractionnement : facultatif n
    • Espace de noms de l'asset : aws.api_gateway
    • Étiquettes d'ingestion : par exemple, source=apigw_access, aws_region=<your-region>
  8. Cliquez sur Suivant.
  9. Vérifiez la configuration du flux, puis cliquez sur Envoyer.
  10. Dans les Détails du flux, cliquez sur Générer une clé secrète et copiez la clé secrète.
  11. Copiez l'URL du point de terminaison HTTPS du flux depuis Informations sur le point de terminaison.
  12. Créez une clé API Google Cloud dans API et services > Identifiants > Créer des identifiants > Clé API, puis limitez-la à l'API Google SecOps.
  13. Copiez et enregistrez la clé API dans un endroit sûr.

Configurer Amazon Kinesis Data Firehose (directement dans Google SecOps)

  1. Dans la console AWS, accédez à Kinesis > Data Firehose > Create delivery stream.
  2. Fournissez les informations de configuration suivantes :
    • Source : sélectionnez PUT direct ou autres sources.
    • Destination : sélectionnez Point de terminaison HTTP.
    • URL du point de terminaison HTTP : saisissez ENDPOINT_URL?key=API_KEY (utilisez l'URL du point de terminaison HTTPS du flux et la clé API de l'étape précédente).
    • Méthode HTTP : sélectionnez POST.
    • Clé d'accès : collez la clé secrète générée dans le flux.
    • Conseils de mise en mémoire tampon : définissez Taille de la mémoire tampon sur 1 Mio et Intervalle de la mémoire tampon sur 60 secondes.
    • Compression : sélectionnez Désactivée.
    • Sauvegarde S3 : sélectionnez Désactivée.
    • Conservez les paramètres retry (réessayer) et logging (journalisation) par défaut.
  3. Cliquez sur Créer un flux de diffusion. (Par exemple, cwlogs-to-secops.)

Configurer les autorisations IAM et s'abonner au groupe de journaux

  1. Dans la console AWS, accédez à IAM > Stratégies > Créer une stratégie > JSON.
    1. Dans l'éditeur JSON, saisissez la stratégie suivante :
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "firehose:PutRecord",
            "firehose:PutRecordBatch"
          ],
          "Resource": "arn:aws:firehose:<region>:<account-id>:deliverystream/cwlogs-to-secops"
        }
      ]
    }
    
    • Remplacez <region> et <account-id> par votre région AWS et votre ID de compte.
  2. Nommez la règle CWLtoFirehoseWrite, puis cliquez sur Créer une règle.

  3. Accédez à IAM > Rôles > Créer un rôle.

  4. Sélectionnez Stratégie d'approbation personnalisée, puis saisissez les informations suivantes :

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "logs.<your-region>.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    
  5. Associez la stratégie CWLtoFirehoseWrite au rôle.

  6. Nommez le rôle CWLtoFirehoseRole, puis cliquez sur Créer un rôle.

  7. Accédez à CloudWatch > Logs > Log groups (CloudWatch > Journaux > Groupes de journaux).

  8. Sélectionnez le groupe de journaux API Gateway que vous avez créé précédemment.

  9. Ouvrez l'onglet Filtres d'abonnement, puis cliquez sur Créer.

  10. Sélectionnez Créer un filtre d'abonnement Amazon Kinesis Data Firehose.

  11. Ensuite, procédez à la configuration des éléments suivants, comme indiqué :

    • Destination : flux de diffusion cwlogs-to-secops.
    • Accorder l'autorisation : rôle CWLtoFirehoseRole.
    • Nom du filtre : saisissez all-events.
    • Modèle de filtre : laissez ce champ vide pour envoyer tous les événements.
  12. Cliquez sur Démarrer la diffusion.

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.