Recopila registros de acceso al servidor de AWS S3
En este documento, se explica cómo recopilar registros de acceso al servidor de AWS S3 configurando un feed de Google Security Operations. El analizador extrae campos con patrones de Grok, controla la posible entrada de JSON y asigna los campos extraídos al 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 del UDM.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Instancia de Google SecOps
- Acceso privilegiado a AWS
Cómo configurar el registro de acceso al servidor de AWS S3
Las Operaciones de seguridad de Google admiten 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 nuevo bucket al que se enviarán los objetos 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 Cómo configurar un bucket para las notificaciones (tema de SNS o cola de SQS).
Según el servicio y la región, identifica los extremos para la conectividad consultando la siguiente documentación de AWS:
- Para obtener información sobre cualquier fuente de registro, consulta Cuotas y extremos de AWS Identity and Access Management.
- Para obtener información sobre las fuentes de registro de S3, consulta Cuotas y extremos de Amazon Simple Storage Service.
- Para obtener información sobre las fuentes de registro de SQS, consulta Cuotas y extremos de Amazon Simple Queue Service.
Configura feeds
Existen dos puntos de entrada diferentes para configurar feeds en la plataforma de Google SecOps:
- Configuración de SIEM > Feeds > Agregar un feed nuevo
- Centro de contenido > Paquetes de contenido > Comenzar
Cómo configurar el feed de acceso al servicio de AWS S3
- Haz clic en el paquete Amazon Cloud Platform.
- Ubica el tipo de registro AWS S3 Service Access.
- 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 Configura la autenticación de la herramienta con AWS.
Especifica los valores en los siguientes campos.
- Tipo de fuente: Amazon SQS V2
- Nombre de la cola: Es el nombre de la cola de SQS desde la que se leerá.
- URI de S3: Es el URI del bucket.
s3://your-log-bucket-name/
- Reemplaza
your-log-bucket-name
por el nombre real de tu bucket de S3.
- Reemplaza
Opciones de eliminación de la fuente: Selecciona la opción de eliminación según tus preferencias de transferencia.
Antigüedad máxima del archivo: Incluye los archivos modificados en la cantidad de días especificada. El valor predeterminado es de 180 días.
ID de clave de acceso a la cola de SQS: Es una clave de acceso a la cuenta que es una cadena alfanumérica de 20 caracteres.
Clave de acceso secreta de la cola de SQS: Es una clave de acceso a la cuenta que es una cadena alfanumérica de 40 caracteres.
Opciones avanzadas
- Nombre del feed: Es un valor completado previamente que identifica el feed.
- Espacio de nombres del activo: Es el espacio de nombres asociado con el feed.
- Etiquetas de transferencia: Son las etiquetas que se aplican a todos los eventos de este feed.
Haz clic en Crear feed.
Para obtener más información sobre cómo configurar varios feeds para diferentes tipos de registros dentro de esta familia de productos, consulta Configura feeds por producto.
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 : 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 entre mayúsculas y minúsculas). |
hostheader |
target.hostname |
Se extrae del campo de registro sin procesar hostheader y, posiblemente, se quita el número de puerto. |
hostheader |
target.port |
Se extrae del campo de registro sin procesar hostheader si hay un número de puerto presente. |
hostid |
target.resource.attribute.labels.key : "ID de solicitud extendido de S3"target.resource.attribute.labels.value : 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 : 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 ceros a la izquierda para representar nanosegundos. |
signatureversion |
target.resource.attribute.labels.key : "Signature Version"target.resource.attribute.labels.value : Valor de signatureversion |
Se asigna directamente desde el campo de registro sin procesar signatureversion . |
time |
metadata.event_timestamp |
Se analizó a partir del campo de registro sin procesar time y se convirtió 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 valor predeterminado de event_type 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 AWS S3". |
(Lógica del analizador) | metadata.product_version : "HTTP/http_version " |
El analizador establece 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 el campo ciphersuite no está presente. |
(Lógica del analizador) | timestamp |
El analizador establece el evento timestamp en la hora actual cuando se procesa el evento. |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.