Recopila registros de AWS Control Tower
Versión del analizador: 1.0
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 seguridad en varias cuentas de AWS. Esta integración te permite analizar los registros de AWS Control Tower para obtener una mejor visibilidad y postura de seguridad.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Instancia de Google SecOps
- 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 del usuario: 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 el 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 adelante.
- 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 ruta para crear una ruta nueva.
Especifica la configuración de la ruta:
- Nombre del registro de seguimiento: Proporciona un nombre significativo para el registro de seguimiento (por ejemplo, ControlTowerTrail).
- Aplicar el registro de seguimiento a todas las regiones: Asegúrate de seleccionar Sí en Aplicar el registro de seguimiento a todas las regiones.
- Eventos de administración: Asegúrate de que los eventos de lectura y escritura estén configurados en Todos.
- Opcional: Eventos de datos: Habilita los eventos de datos de S3 y Lambda para capturar la actividad de datos detallada.
- Opcional: Validación de archivos de registro: Habilita esta opción para asegurarte de que los archivos de registro no se alteren una vez que se almacenan.
En el selector Evento, elige registrar Eventos de administración y Eventos de datos.
Cómo configurar CloudTrail
- Ve a la consola de IAM de AWS.
- Haz clic en Roles.
- Busca el rol que usa CloudTrail
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 el destino de los archivos de registro.
- Selecciona el bucket de S3 que creaste antes.
- Haz clic en Permitir cuando se te solicite que otorgues permiso a CloudTrail para escribir registros en el bucket que elijas.
- Revisa la configuración y haz clic en Crear (o Guardar cambios si estás editando un registro de actividad existente).
Configura feeds
Existen dos puntos de entrada diferentes para configurar feeds en la plataforma de Google SecOps:
- Configuración de SIEM > Feeds > Agregar feed nuevo
- Centro de contenido > Paquetes de contenido > Comenzar
Cómo configurar el feed de AWS Control Tower
- Haz clic en el paquete Amazon Cloud Platform.
- Busca el tipo de registro de AWS Control Tower.
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 de la que se leerá.
- URI de S3: Es el URI del bucket.
s3://your-log-bucket-name/- Reemplaza
your-log-bucket-namepor el nombre real de tu bucket de S3.
- Reemplaza
Opciones de eliminación del código 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 consiste en una cadena alfanumérica de 40 caracteres.
Opciones avanzadas
- Nombre del feed: Es un valor prepropagado 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 |
|---|---|---|
| awsAccountId | target.user.group_identifiers | Es el ID de la cuenta de AWS asociada al evento. |
| digestPublicKeyFingerprint | target.file.sha1 | Es la huella digital de la clave pública que se usa para firmar el resumen. |
| digestPublicKeyFingerprint | target.resource.attribute.labels.value | Es 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 | Es 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 del resultado 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 | 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 | Es el hash SHA-256 del resumen anterior. |
| recipientAccountId | target.resource.attribute.labels.value | ID de la cuenta de AWS del destinatario del evento. |
| Records.awsRegion | principal.location.name | Es la región de AWS en la que se produjo el evento. |
| Records.errorCode | security_result.rule_id | Es el código de error, si corresponde, asociado a la solicitud. |
| Records.errorMessage | security_result.description | Es el mensaje de error, si corresponde, asociado a la solicitud. |
| Records.eventCategory | security_result.category_details | La categoría del evento |
| Records.eventID | metadata.product_log_id | Es 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 del resultado 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 lo hay, asociado con la solicitud. |
| Records.requestParameters.userName | src.user.userid | Es el nombre del usuario, si lo hay, asociado a la solicitud. |
| Records.requestParameters.userName | src.user.user_display_name | Nombre del usuario, si corresponde, asociado a 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 | Es la dirección IP de la principal. Se usa como nombre de host si no es una IP válida. |
| Records.sourceIPAddress | principal.ip | Es la dirección IP de la principal. |
| Records.tlsDetails.cipherSuite | network.tls.cipher | Es 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 | Es el usuario-agente de la solicitud. |
| Records.userIdentity.accessKeyId | additional.fields.value.string_value | Es el ID de clave de acceso que se usó para la solicitud. |
| Records.userIdentity.accountId | principal.user.group_identifiers | Es el ID de la cuenta de AWS del usuario. |
| Records.userIdentity.arn | principal.user.attribute.labels.value | Es el ARN del usuario. |
| Records.userIdentity.arn | target.user.userid | Es el ARN del usuario. Se usa como ID de usuario si userName no está disponible. |
| Records.userIdentity.principalId | principal.user.product_object_id | Es 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 de quien emitió la sesión. |
| Records.userIdentity.type | principal.resource.type | Es el tipo de identidad que se usa 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 valor de eventName. |
| - | metadata.log_type | Establece en "AWS_CONTROL_TOWER". |
| - | metadata.product_name | Establécelo en "AWS Control Tower". |
| - | metadata.vendor_name | Se debe establecer en "AWS". |
| - | principal.asset.attribute.cloud.environment | Se debe establecer en "AMAZON_WEB_SERVICES". |
| - | security_result.action | Se establece en "ALLOW" o "BLOCK" según el valor de errorCode. |
| - | security_result.severity | Se establece en "INFORMATIONAL". |
Registro de cambios
Consulta el registro de cambios de este analizador
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.