Recopila registros de AWS Control Tower
En este documento, se explica cómo transferir registros de AWS Control Tower a Google Security Operations. AWS Control Tower permite la administración, el cumplimiento y la supervisión de la seguridad en varias cuentas de AWS. Esta integración te permite analizar registros de AWS Control Tower para mejorar la visibilidad y la postura de seguridad.
Antes de comenzar
- Asegúrate de tener una instancia de Google SecOps.
- Asegúrate de tener acceso con privilegios a AWS.
Configura el bucket de Amazon S3
- Crea un bucket de Amazon S3 siguiendo esta guía del usuario: Cómo crear un bucket
- Guarda el Nombre y la Región del bucket para usarlos más adelante.
- Crea un usuario siguiendo esta guía: Cómo crear un usuario de IAM.
- Selecciona el Usuario creado.
- Selecciona la pestaña Credenciales de seguridad.
- Haz clic en Crear clave de acceso en la sección Claves de acceso.
- Selecciona Servicio de terceros como Caso de uso.
- Haz clic en Siguiente.
- Opcional: Agrega una etiqueta de descripción.
- Haz clic en Crear clave de acceso.
- Haz clic en Descargar archivo CSV para guardar la clave de acceso y la clave de acceso secreta para usarlas más tarde.
- Haz clic en Listo.
- Selecciona la pestaña Permisos.
- Haz clic en Agregar permisos en la sección Políticas de permisos.
- Selecciona Agregar permisos.
- Selecciona Adjuntar políticas directamente.
- Busca y selecciona las políticas AmazonS3FullAccess y CloudWatchLogsFullAccess.
- Haz clic en Siguiente.
- Haz clic en Agregar permisos.
Configura CloudTrail en AWS Control Tower
- Accede a la consola de administración de AWS.
- Ve a AWS Control Tower.
- En la barra de búsqueda, escribe CloudTrail y selecciónalo en la lista de servicios.
Haz clic en Crear sendero para crear uno nuevo.
Especifica la configuración de la ruta:
- Nombre del sendero: Proporciona un nombre significativo para el sendero (por ejemplo, ControlTowerTrail).
- Aplicar seguimiento a todas las regiones: Asegúrate de seleccionar Sí en Aplicar seguimiento a todas las regiones.
- Eventos de administración: Asegúrate de que los eventos de Lectura/escritura estén configurados como Todos.
- Opcional: Eventos de datos: Habilita los eventos de datos de S3 y los eventos de datos de Lambda para capturar la actividad de datos detallada.
- Opcional: Validación de archivos de registro: Habilita esta opción para asegurarte de que no se manipulen los archivos de registro una vez que se almacenen.
En el selector Evento, elige registrar Eventos de administración y Eventos de datos.
Configura CloudTrail para que envíe registros a un bucket de S3
- Ve a la consola de IAM de AWS.
- Haz clic en Roles.
- Busca el rol que CloudTrail usa
AWSServiceRoleForCloudTrail
(el rol se crea automáticamente cuando configuras CloudTrail). - En la pestaña Permisos del rol, haz clic en Adjuntar políticas.
- Busca
CloudTrailS3DeliveryPolicy
. - Selecciona la casilla de verificación junto a la política
CloudTrailS3DeliveryPolicy
. - Haz clic en Adjuntar política.
- Ve a la consola de CloudTrail de AWS.
- En la sección Ubicación de almacenamiento, selecciona S3 como destino de los archivos de registro.
- Selecciona el bucket de S3 que creaste antes.
- Haz clic en Permitir cuando se te solicite otorgarle permiso a CloudTrail para escribir registros en el bucket que elegiste.
- Revisa la configuración y haz clic en Crear (o Guardar cambios si editas un recorrido existente).
Configura un feed en Google SecOps para transferir registros de AWS Control Tower
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Agregar nueva.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros de AWS Control Tower).
- Selecciona Amazon S3 como el Tipo de fuente.
- Selecciona AWS Control Tower como el Tipo de registro.
- Haz clic en Siguiente.
Especifica valores para los siguientes parámetros de entrada:
- Región: Es la región en la que se encuentra el bucket de Amazon S3.
- URI de S3: Es el URI del bucket.
s3://your-log-bucket-name/
- Reemplaza
your-log-bucket-name
por el nombre real del bucket.
- Reemplaza
- El URI es un: Selecciona Directorio o Directorio que incluye subdirectorios.
Opciones de eliminación de fuentes: Selecciona la opción de eliminación según tu preferencia.
ID de clave de acceso: Es la clave de acceso del usuario con acceso al bucket de S3.
Clave de acceso secreta: Es la clave secreta del usuario con acceso al bucket de S3.
Espacio de nombres de recursos: Es el espacio de nombres de recursos.
Etiquetas de transferencia: Es la etiqueta que se aplicará a los eventos de este feed.
Haz clic en Siguiente.
Revisa la configuración de tu nuevo feed en la pantalla Finalizar y, luego, haz clic en Enviar.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
awsAccountId | target.user.group_identifiers | Es el ID de la cuenta de AWS asociado con el evento. |
digestPublicKeyFingerprint | target.file.sha1 | La huella digital de la clave pública que se usa para firmar el resumen. |
digestPublicKeyFingerprint | target.resource.attribute.labels.value | La huella digital de la clave pública que se usa para firmar el resumen. |
digestS3Bucket | target.resource.name | Es el nombre del bucket de S3 en el que se almacena el resumen. |
digestS3Object | target.file.full_path | Es la ruta de acceso al objeto de resumen en el bucket de S3. |
digestSignatureAlgorithm | network.tls.cipher | Es el algoritmo que se usa para firmar el resumen. |
digestSignatureAlgorithm | target.resource.attribute.labels.value | Es el algoritmo que se usa para firmar el resumen. |
digestStartTime | metadata.event_timestamp | Es la hora de inicio del período del resumen. Se usa como hora del evento si eventTime no está disponible. |
eventCategory | security_result.category_details | La categoría del evento |
eventID | metadata.product_log_id | El ID único del evento. |
eventName | metadata.product_event_type | Es el nombre del evento. |
eventName | security_result.summary | Es el nombre del evento que se usa para generar el resumen de resultados de seguridad. |
eventSource | target.application | Es la fuente del evento. |
eventTime | metadata.event_timestamp | La hora en que ocurrió el evento. |
eventType | additional.fields.value.string_value | Es el tipo de evento. |
logFiles.hashValue | about.file.sha256 | Es el hash SHA-256 del archivo de registro. |
logFiles.s3Bucket | about.resource.name | Es el nombre del bucket de S3 en el que se almacena el archivo de registro. |
logFiles.s3Object | about.file.full_path | Es la ruta de acceso al objeto del archivo de registro en el bucket de S3. |
previousDigestHashValue | target.file.sha256 | El hash SHA-256 del resumen anterior. |
recipientAccountId | target.resource.attribute.labels.value | Es el ID de la cuenta de AWS del destinatario del evento. |
Records.awsRegion | principal.location.name | La región de AWS en la que ocurrió el evento. |
Records.errorCode | security_result.rule_id | El código de error, si corresponde, asociado con la solicitud. |
Records.errorMessage | security_result.description | El mensaje de error, si corresponde, asociado con la solicitud |
Records.eventCategory | security_result.category_details | La categoría del evento |
Records.eventID | metadata.product_log_id | El ID único del evento. |
Records.eventName | metadata.product_event_type | Es el nombre del evento. |
Records.eventName | security_result.summary | Es el nombre del evento que se usa para generar el resumen de resultados de seguridad. |
Records.eventSource | target.application | Es la fuente del evento. |
Records.eventTime | metadata.event_timestamp | La hora en que ocurrió el evento. |
Records.eventType | additional.fields.value.string_value | Es el tipo de evento. |
Records.requestID | target.resource.attribute.labels.value | Es el ID de la solicitud. |
Records.requestParameters.groupName | target.group.group_display_name | Es el nombre del grupo, si existe alguno, asociado con la solicitud. |
Records.requestParameters.userName | src.user.userid | El nombre del usuario, si existe alguno, asociado con la solicitud. |
Records.requestParameters.userName | src.user.user_display_name | El nombre del usuario, si existe alguno, asociado con la solicitud. |
Records.responseElements.ConsoleLogin | security_action | Es el resultado del intento de acceso a la consola. |
Records.responseElements.ConsoleLogin | security_result.summary | Es el resultado del intento de acceso a la consola, que se usa para generar el resumen de resultados de seguridad. |
Records.sourceIPAddress | principal.hostname | La dirección IP del principal. Se usa como nombre de host si no es una IP válida. |
Records.sourceIPAddress | principal.ip | La dirección IP del principal. |
Records.tlsDetails.cipherSuite | network.tls.cipher | El conjunto de algoritmos de cifrado que se usa para la conexión TLS. |
Records.tlsDetails.tlsVersion | network.tls.version | Es la versión de TLS que se usa para la conexión. |
Records.userAgent | network.http.user_agent | El usuario-agente de la solicitud |
Records.userIdentity.accessKeyId | additional.fields.value.string_value | El ID de clave de acceso que se usó para la solicitud. |
Records.userIdentity.accountId | principal.user.group_identifiers | El ID de la cuenta de AWS del usuario. |
Records.userIdentity.arn | principal.user.attribute.labels.value | El ARN del usuario. |
Records.userIdentity.arn | target.user.userid | El ARN del usuario. Se usa como userid si userName no está disponible. |
Records.userIdentity.principalId | principal.user.product_object_id | El ID principal del usuario. |
Records.userIdentity.sessionContext.attributes.mfaAuthenticated | principal.user.attribute.labels.value | Indica si se usó la MFA para la solicitud. |
Records.userIdentity.sessionContext.sessionIssuer.userName | principal.user.userid | Es el nombre de usuario del usuario que emitió la sesión. |
Records.userIdentity.type | principal.resource.type | Es el tipo de identidad que se usó para la solicitud. |
Records.userIdentity.userName | target.user.userid | Nombre de usuario de la persona. |
- | extensions.auth.mechanism | Establece el valor en “REMOTE”. |
- | metadata.event_type | Se establece en "STATUS_UPDATE", "USER_RESOURCE_ACCESS", "USER_LOGIN" o "GENERIC_EVENT" según el nombre del evento. |
- | metadata.log_type | Se establece en "AWS_CONTROL_TOWER". |
- | metadata.product_name | Establece la opción en “AWS Control Tower”. |
- | metadata.vendor_name | Se establece en "AWS". |
- | principal.asset.attribute.cloud.environment | Configúralo como "AMAZON_WEB_SERVICES". |
- | security_result.action | Establece en "ALLOW" o "BLOCK" según el errorCode. |
- | security_result.severity | Se establece en “INFORMATIVO”. |
Cambios
2024-03-17
- Mejora:
- Se asignaron "req.userIdentity.arn" y "req.userIdentity.userName" a "target.user.userid".
2023-01-04
- Mejora:
- Se inicializaron variables para evitar la replicación de datos en el bucle For.
2022-12-15
- Mejora:
- Se asignó "metadata.vendor_name" a "AWS".
- Se asignó “metadata.product_name” a “AWS Control Tower”.
- Se asignó "metadata.event_type" a "USER_LOGIN" cuando "eventName" es "ConsoleLogin".
- Se asignó "security_result.severity" a "INFORMATIONAL" cuando "eventName" es "ConsoleLogin".
2022-11-17
- Mejora:
- Se asignaron "req.userIdentity.userName" y "req.userIdentity.sessionContext.sessionIssuer.userName" a "target.user.id".
- Se asignó "ConsoleLogin:Success" a "security_result.action".
- Se asignó la información del puerto de "sourceIPAddress" a "principal.port".
2022-10-31
- Sin embargo, el analizador se creó recientemente.
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.