Recopila registros de acceso a API Gateway de AWS

Compatible con:

En este documento, se explica cómo transferir registros de acceso de Amazon API Gateway a Google Security Operations con AWS CloudWatch Logs y Kinesis Data Firehose. Amazon API Gateway proporciona APIs de REST y HTTP para compilar y administrar APIs a gran escala. Los registros de acceso ayudan a supervisar el uso de la API y a solucionar problemas. Esta integración transmite estos registros a Google SecOps para su análisis y supervisión.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Instancia de Google SecOps
  • Acceso privilegiado a AWS

Habilita 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 de REST:

    • Abre Stage > Logs/Tracing > habilita Access logging.
    • 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: Elige o crea un grupo de registros (por ejemplo, /aws/apigateway/access).

  3. Para las APIs de HTTP:

    • Selecciona API > Monitor > Logging.
    • Selecciona Stage > Edit.
    • Habilita Registro de acceso.
    • Usa el mismo formato de registro JSON que se mostró anteriormente.
    • Grupo de registros de CloudWatch Logs: Elige o crea un grupo de registros (por ejemplo, /aws/apigateway/access).
  4. Haz clic en Guardar.

Configura un feed en Google SecOps para transferir registros de Amazon API Gateway

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en + Agregar feed nuevo.
  3. En el campo Nombre del feed, ingresa Amazon API Gateway - CloudWatch via Firehose.
  4. Selecciona Amazon Data Firehose como el Tipo de fuente.
  5. Selecciona Amazon API Gateway como el Tipo de registro.
  6. Haz clic en Siguiente.
  7. Especifica valores para los siguientes parámetros de entrada:
    • Delimitador de división: n opcional
    • Espacio de nombres del activo: aws.api_gateway
    • Etiquetas de transferencia: Por ejemplo, source=apigw_access, aws_region=<your-region>
  8. Haz clic en Siguiente.
  9. Revisa la configuración del feed y haz clic en Enviar.
  10. En los Detalles del feed, haz clic en Generar clave secreta y copia la Clave secreta.
  11. Copia la URL del extremo HTTPS del feed de Endpoint Information.
  12. Crea una clave de API de Google Cloud en APIs y servicios > Credenciales > Crear credenciales > Clave de API y restrínsela a la API de Google SecOps.
  13. Copia y guarda la clave de API en una ubicación segura.

Configura Amazon Kinesis Data Firehose (directamente en Google SecOps)

  1. En la consola de AWS, ve a Kinesis > Data Firehose > Create delivery stream.
  2. Proporciona los siguientes detalles de configuración:
    • Fuente: Selecciona Carga directa o fuentes externas.
    • Destino: Elige Extremo HTTP.
    • URL del extremo HTTP: Ingresa ENDPOINT_URL?key=API_KEY (usa la URL del extremo 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 de almacenamiento en búfer: Establece Tamaño del búfer = 1 MiB y Intervalo del búfer = 60 segundos.
    • Compresión: Selecciona Inhabilitada.
    • Copia de seguridad de S3: Selecciona Inhabilitada.
    • Deja la configuración de reintentos y registros con sus valores predeterminados.
  3. Haz clic en Crear flujo de entrega. (Por ejemplo, cwlogs-to-secops).

Configura los permisos de IAM y suscríbete al grupo de registros

  1. En la consola de AWS, ve a IAM > Políticas > Crear política > JSON.
    1. En el editor de JSON, ingresa 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"
        }
      ]
    }
    
    • Reemplaza <region> y <account-id> por tu región de AWS y tu ID de cuenta.
  2. Asigna el nombre CWLtoFirehoseWrite a la política y haz clic en Crear política.

  3. Ve a IAM > Roles > Crear rol.

  4. Selecciona Política de confianza personalizada y, luego, ingresa lo siguiente:

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

  6. Asigna 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 de API Gateway que creaste antes.

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

  10. Elige Create Amazon Kinesis Data Firehose subscription filter.

  11. Configura lo siguiente:

    • Destino: Flujo de entrega cwlogs-to-secops.
    • Otorga permiso: Rol CWLtoFirehoseRole.
    • Nombre del filtro: Ingresa all-events.
    • Patrón de filtro: Déjalo vacío para enviar todos los eventos.
  12. Haz clic en Iniciar transmisión.

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.