Recoger registros de acceso de AWS API Gateway
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)
- Ve a Consola de AWS > API Gateway.
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
).
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
).
Haz clic en Guardar.
Configurar un feed en Google SecOps para ingerir registros de Amazon API Gateway
- Ve a Configuración de SIEM > Feeds.
- Haz clic en + Añadir nuevo feed.
- En el campo Nombre del feed, introduce
Amazon API Gateway - CloudWatch via Firehose
. - Seleccione Amazon Data Firehose como Tipo de fuente.
- Selecciona Amazon API Gateway como Tipo de registro.
- Haz clic en Siguiente.
- 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
oaws_region=<your-region>
- Delimitador de división: opcional
- Haz clic en Siguiente.
- Revisa la configuración del feed y haz clic en Enviar.
- En la sección Detalles de la fuente, haga clic en Generar clave secreta y copie la Clave secreta.
- Copia la URL del endpoint HTTPS del feed de Información del endpoint.
- 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.
- Copia y guarda la clave de API en un lugar seguro.
Configurar Amazon Kinesis Data Firehose (directamente en Google SecOps)
- En la consola de AWS, ve a Kinesis > Data Firehose > Create delivery stream.
- 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.
- 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
- En la consola de AWS, vaya a IAM > Policies > Create policy > JSON.
- 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.
Ponle un nombre a la política
CWLtoFirehoseWrite
y haz clic en Crear política.Ve a IAM > Roles > Crear rol.
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" } ] }
Asigna la política
CWLtoFirehoseWrite
al rol.Dale el nombre
CWLtoFirehoseRole
al rol y haz clic en Crear rol.Ve a CloudWatch > Registros > Grupos de registros.
Selecciona el grupo de registros API Gateway que has creado antes.
Abre la pestaña Filtros de suscripción y haz clic en Crear.
Elige Create Amazon Kinesis Data Firehose subscription filter (Crear filtro de suscripción de Amazon Kinesis Data Firehose).
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.
- Destino: flujo de entrega
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.