Recopila registros de acceso al servidor de AWS S3
En este documento, se explica cómo configurar un feed de Operaciones de seguridad de Google para recopilar registros de acceso del servidor S3 de AWS. El analizador extrae campos con patrones de grok, controla las posibles entradas de JSON y asigna los campos extraídos a la UDM. Realiza transformaciones de datos, conversiones de tipos y lógica condicional en función de la presencia y los valores de campos específicos para garantizar una representación precisa de la UDM.
Antes de comenzar
- Asegúrate de tener una instancia de Google SecOps.
- Asegúrate de tener acceso con privilegios a AWS.
Configura el registro de acceso al servidor de AWS S3
Google SecOps admite la recopilación de registros con Amazon S3 a través de Amazon SQS.
- Accede a la consola de Administración de AWS.
- Accede a la consola de Amazon S3.
- Ve a Amazon S3 > Buckets.
- Selecciona un bucket existente o crea uno nuevo.
- Haz clic en Propiedades.
- En la sección Registro de acceso al servidor, haz clic en Editar.
- Selecciona Habilitar.
- En el campo Bucket de destino, ingresa un nombre para el bucket nuevo al que se enviarán los objetos de registro de registro o selecciona un bucket existente como destino.
- Haz clic en Guardar cambios.
- Para crear la cola de SQS para el bucket de S3, configura una instancia de Amazon SQS con el almacenamiento de S3. Para obtener más información, consulta Configura un bucket para notificaciones (tema de SNS o cola de SQS).
Según el servicio y la región, identifica los extremos de conectividad consultando la siguiente documentación de AWS: * Para obtener información sobre cualquier fuente de registro, consulta Extremos y cuotas de la administración de identidades y accesos de AWS. * Para obtener información sobre las fuentes de registro de S3, consulta Extremos y cuotas de Amazon Simple Storage Service. * Para obtener información sobre las fuentes de registro de SQS, consulta Extremos y cuotas de Amazon Simple Queue Service.
Configura un feed en Google SecOps para transferir los registros de acceso del servidor S3 de AWS
- En el menú de SecOps de Google, ve a Configuración > Feeds > Agregar uno nuevo.
- En la lista Tipo de fuente, selecciona Amazon S3 o Amazon SQS.
- En la lista Tipo de registro, selecciona Acceso al servidor de AWS S3.
- Haz clic en Siguiente.
- Google SecOps admite la recopilación de registros con un ID de clave de acceso y un método secreto. Para crear el ID de clave de acceso y el secreto, consulta Cómo configurar la autenticación de herramientas con AWS.
- Según la configuración de acceso al servidor de AWS S3 que creaste, especifica los valores para los parámetros de entrada:
- Si usas Amazon S3, especifica valores para los siguientes campos:
- Región
- URI de S3
- Un URI es un
- Opción de eliminación de fuentes
- ID de clave de acceso
- Clave de acceso secreta
- Si usas Amazon SQS, especifica valores para los siguientes campos:
- Región
- Nombre de la cola
- Número de cuenta
- ID de clave de acceso de la cola
- Coloca en cola la clave de acceso secreta
- Opción de eliminación de fuentes
- Si usas Amazon S3, especifica valores para los siguientes campos:
- Haz clic en Siguiente y, luego, haz clic en Enviar.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
aclRequired |
target.resource.attribute.labels.key : "aclRequired"target.resource.attribute.labels.value : Es el valor de aclRequired . |
Se asigna directamente desde el campo de registro sin procesar aclRequired . |
authenticationtype |
extensions.auth.auth_details |
Se asigna directamente desde el campo de registro sin procesar authenticationtype . |
bucket |
target.resource.name |
Se asigna directamente desde el campo de registro sin procesar bucket . |
bucket |
target.resource.resource_type : "STORAGE_BUCKET" |
El analizador establece resource_type en "STORAGE_BUCKET" si el campo bucket está presente. |
bucketowner |
target.resource.product_object_id |
Se asigna directamente desde el campo de registro sin procesar bucketowner . |
bytes_sent |
network.sent_bytes |
Se asigna directamente desde el campo de registro sin procesar bytes_sent después de convertirlo en un número entero sin signo y reemplazar "-" por "0". |
ciphersuite |
network.application_protocol : "HTTPS" |
El analizador establece application_protocol en "HTTPS" si el campo ciphersuite está presente. |
ciphersuite |
network.tls.cipher |
Se asigna directamente desde el campo de registro sin procesar ciphersuite . |
errorcode |
security_result.action_details |
Se asigna directamente desde el campo de registro sin procesar errorcode . |
errorcode |
security_result.action : "BLOCK" |
El analizador establece action en "BLOCK" si el campo errorcode contiene "AccessDenied" (no distingue mayúsculas de minúsculas). |
hostheader |
target.hostname |
Se extrae del campo de registro sin procesar hostheader , lo que podría quitar el número de puerto. |
hostheader |
target.port |
Se extrae del campo de registro sin procesar hostheader si hay un número de puerto. |
hostid |
target.resource.attribute.labels.key : “ID de solicitud extendida de S3”target.resource.attribute.labels.value : Es el valor de hostid . |
Se asigna directamente desde el campo de registro sin procesar hostid . |
http_capture |
network.http.method |
El método HTTP se extrae del campo http_capture . |
http_capture |
network.http.version |
La versión HTTP se extrae del campo http_capture . |
http_capture |
target.url |
La URL de destino se construye con hostheader y http_request_uri (extraídos de http_capture ), con el prefijo "http://" o "https://" según la presencia de ciphersuite . |
httpstatus |
network.http.response_code |
Se asigna directamente desde el campo de registro sin procesar httpstatus después de convertirlo en un número entero. |
object_version_id |
target.resource.product_object_id |
Se asigna directamente desde el campo de registro sin procesar object_version_id . |
objectsize |
target.file.size |
Se asigna directamente desde el campo de registro sin procesar objectsize después de convertirlo en un número entero sin signo y reemplazar "-" por "0". |
operation |
metadata.product_event_type |
Se asigna directamente desde el campo de registro sin procesar operation . |
referrer |
network.http.referral_url |
Se asigna directamente desde el campo de registro sin procesar referrer después de quitar las comillas. |
remoteip |
metadata.event_type : "USER_RESOURCE_ACCESS" |
El analizador establece event_type en "USER_RESOURCE_ACCESS" si el campo remoteip está vacío. |
remoteip |
principal.ip |
Se asigna directamente desde el campo de registro sin procesar remoteip . |
requester |
target.resource.attribute.labels.key : "ARN del punto de acceso"target.resource.attribute.labels.value : Es el valor de requester . |
Se asigna directamente desde el campo de registro sin procesar requester . |
requester_user |
principal.user.userid |
Se asigna directamente desde el campo de registro sin procesar requester_user . |
requestid |
network.session_id |
Se asigna directamente desde el campo de registro sin procesar requestid . |
request_time_ms |
network.session_duration.nanos |
Se asigna directamente desde el campo de registro sin procesar request_time_ms después de convertirlo en un número entero, reemplazar “-” por “0” y agregar espacios en blanco con ceros para representar nanosegundos. |
signatureversion |
target.resource.attribute.labels.key : “Signature Version”target.resource.attribute.labels.value : Es el valor de signatureversion . |
Se asigna directamente desde el campo de registro sin procesar signatureversion . |
time |
metadata.event_timestamp |
Se analiza desde el campo de registro sin procesar time y se convierte en una marca de tiempo. |
tlsVersion |
network.tls.version |
Se asigna directamente desde el campo de registro sin procesar tlsVersion . |
useragent |
network.http.user_agent |
Se asigna directamente desde el campo de registro sin procesar useragent después de quitar las comillas. |
(lógica del analizador) | metadata.event_type : "NETWORK_HTTP" |
El analizador establece el event_type predeterminado en "NETWORK_HTTP". |
(lógica del analizador) | metadata.log_type : "AWS_S3_SERVER_ACCESS" |
El analizador establece log_type en "AWS_S3_SERVER_ACCESS". |
(lógica del analizador) | metadata.product_name : “Acceso al servidor de AWS S3” |
El analizador establece product_name en "Acceso al servidor de S3 de AWS". |
(lógica del analizador) | metadata.product_version : "HTTP/http_version " |
El analizador establece el product_version con el http_version extraído. |
(lógica del analizador) | metadata.vendor_name : "AMAZON" |
El analizador establece vendor_name en "AMAZON". |
(lógica del analizador) | network.application_protocol : "HTTP" |
El analizador establece application_protocol en "HTTP" si no está presente el campo ciphersuite . |
(lógica del analizador) | timestamp |
El analizador establece el evento timestamp en la hora actual cuando se procesa. |
Cambios
2023-07-19
- Bug-Fix:
- Se modificó el patrón Grok para controlar un guion (-) cuando no hay datos.
- Se asignó "aclRequired" a "target.resource.attribute.labels".
2023-05-04
- Mejoras:
- Se agregó compatibilidad con registros en formato JSON.
2022-07-21
- Analizador creado recientemente.
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.