Recoger registros de acceso de AWS API Gateway

Disponible en:

En este documento se explica cómo ingerir registros de acceso de Amazon API Gateway en Google Security Operations mediante AWS CloudWatch Logs y Kinesis Data Firehose. Amazon API Gateway proporciona APIs REST y HTTP para crear y gestionar APIs a gran escala. Los registros de acceso ayudan a monitorizar el uso de la API y a solucionar problemas. Esta integración transmite estos registros a Google SecOps para analizarlos y monitorizarlos.

Antes de empezar

Asegúrate de que cumples los siguientes requisitos previos:

  • Instancia de Google SecOps
  • Acceso privilegiado a AWS

Habilitar el registro de acceso de Amazon API Gateway (en CloudWatch Logs)

  1. Ve a Consola de AWS > API Gateway.
  2. En el caso de las APIs REST:

    • Abre Fase > Registros o seguimiento > habilita Registro de acceso.
    • Formato de registro: selecciona 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"
      }
      
    • Grupo de registros de CloudWatch Logs: elija o cree un grupo de registros (por ejemplo, /aws/apigateway/access).

  3. En el caso de las APIs HTTP:

    • Selecciona tu API > Monitor > Registro.
    • Selecciona Fase > Editar.
    • Habilita Registro de acceso.
    • Usa el mismo formato de registro JSON que el anterior.
    • Grupo de registros de CloudWatch Logs: elija o cree un grupo de registros (por ejemplo, /aws/apigateway/access).
  4. Haz clic en Guardar.

Configurar un feed en Google SecOps para ingerir registros de Amazon API Gateway

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en + Añadir nuevo feed.
  3. En el campo Nombre del feed, introduce Amazon API Gateway - CloudWatch via Firehose.
  4. Seleccione Amazon Data Firehose como Tipo de fuente.
  5. Selecciona Amazon API Gateway como Tipo de registro.
  6. Haz clic en Siguiente.
  7. Especifique los valores de los siguientes parámetros de entrada:
    • Delimitador de división: opcional n
    • Espacio de nombres del recurso: aws.api_gateway
    • Etiquetas de ingestión: por ejemplo, source=apigw_access o aws_region=<your-region>
  8. Haz clic en Siguiente.
  9. Revisa la configuración del feed y haz clic en Enviar.
  10. En la sección Detalles de la fuente, haga clic en Generar clave secreta y copie la Clave secreta.
  11. Copia la URL del endpoint HTTPS del feed de Información del endpoint.
  12. Crea una clave de API de Google Cloud en APIs y servicios > Credenciales > Crear credenciales > Clave de API y restringe su uso a la API Google SecOps.
  13. Copia y guarda la clave de API en un lugar seguro.

Configurar Amazon Kinesis Data Firehose (directamente en Google SecOps)

  1. En la consola de AWS, ve a Kinesis > Data Firehose > Create delivery stream.
  2. Proporcione los siguientes detalles de configuración:
    • Fuente: seleccione PUT directo u otras fuentes.
    • Destino: elige Endpoint HTTP.
    • URL del endpoint HTTP: introduce ENDPOINT_URL?key=API_KEY (usa la URL del endpoint HTTPS del feed y la clave de API del paso anterior).
    • Método HTTP: selecciona POST.
    • Clave de acceso: pega la clave secreta generada en el feed.
    • Sugerencias para el almacenamiento en búfer: define Tamaño del búfer = 1 MiB y Intervalo del búfer = 60 segundos.
    • Compresión: selecciona Inhabilitada.
    • Copia de seguridad de S3: selecciona Inhabilitado.
    • Deja la configuración de reintentos y registro como predeterminada.
  3. Haga clic en Crear flujo de entrega. Por ejemplo, cwlogs-to-secops.

Configurar permisos de gestión de identidades y accesos y suscribir el grupo de registros

  1. En la consola de AWS, vaya a IAM > Policies > Create policy > JSON.
    1. En el editor de JSON, introduce la siguiente política:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "firehose:PutRecord",
            "firehose:PutRecordBatch"
          ],
          "Resource": "arn:aws:firehose:<region>:<account-id>:deliverystream/cwlogs-to-secops"
        }
      ]
    }
    
    • Sustituye <region> y <account-id> por tu región de AWS y tu ID de cuenta.
  2. Ponle un nombre a la política CWLtoFirehoseWrite y haz clic en Crear política.

  3. Ve a IAM > Roles > Crear rol.

  4. Selecciona Política de confianza personalizada e introduce lo siguiente:

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

  6. Dale el nombre CWLtoFirehoseRole al rol y haz clic en Crear rol.

  7. Ve a CloudWatch > Registros > Grupos de registros.

  8. Selecciona el grupo de registros API Gateway que has creado antes.

  9. Abre la pestaña Filtros de suscripción y haz clic en Crear.

  10. Elige Create Amazon Kinesis Data Firehose subscription filter (Crear filtro de suscripción de Amazon Kinesis Data Firehose).

  11. Configure lo siguiente:

    • Destino: flujo de entrega cwlogs-to-secops.
    • Conceder permiso: rol CWLtoFirehoseRole.
    • Nombre del filtro: escribe all-events.
    • Patrón de filtro: déjelo vacío para enviar todos los eventos.
  12. Haz clic en Iniciar emisión.

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.