Recoger registros de AWS Control Tower
En este documento se explica cómo ingerir registros de AWS Control Tower en Google Security Operations. AWS Control Tower permite la monitorización de la gobernanza, el cumplimiento y la seguridad en varias cuentas de AWS. Esta integración le permite analizar los registros de AWS Control Tower para mejorar la visibilidad y la postura de seguridad.
Antes de empezar
Asegúrate de que cumples los siguientes requisitos previos:
- Instancia de Google SecOps
- Acceso privilegiado a AWS
Configurar un segmento de Amazon S3
- Crea un segmento de Amazon S3 siguiendo esta guía del usuario: Crear un segmento.
- Guarda el nombre y la región del bucket para usarlos más adelante.
- Crea un usuario siguiendo esta guía: Crear un usuario de gestión de identidades y accesos.
- Selecciona el Usuario creado.
- Selecciona la pestaña Credenciales de seguridad.
- En la sección Claves de acceso, haz clic en Crear clave de acceso.
- Selecciona Servicio de terceros como Caso práctico.
- Haz clic en Siguiente.
- Opcional: añade 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.
- En la sección Políticas de permisos, haz clic en Añadir permisos.
- Selecciona Añadir permisos.
- Seleccione Adjuntar políticas directamente.
- Busca y selecciona las políticas AmazonS3FullAccess y CloudWatchLogsFullAccess.
- Haz clic en Siguiente.
- Haz clic en Añadir permisos.
Configurar CloudTrail en AWS Control Tower
- Inicia sesión en 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.
Especifica los ajustes del rastro:
- Nombre del rastro: proporciona un nombre significativo para el rastro (por ejemplo, ControlTowerTrail).
- Aplicar el registro a todas las regiones: asegúrate de seleccionar Sí en Aplicar el registro a todas las regiones.
- Eventos de gestión: asegúrate de que los eventos de lectura/escritura estén definidos como Todos.
- Opcional: Eventos de datos: habilita los eventos de datos de S3 y Lambda para registrar 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 manipulen una vez almacenados.
En el selector Evento, elige registrar Eventos de gestió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.
- Buscar
CloudTrailS3DeliveryPolicy
. - Seleccione la casilla situada junto a la política
CloudTrailS3DeliveryPolicy
. - Haz clic en Adjuntar política.
- Ve a la consola CloudTrail de AWS.
- En la sección Ubicación de almacenamiento, seleccione S3 como destino de los archivos de registro.
- Selecciona el segmento de S3 que has creado antes.
- Haz clic en Permitir cuando se te solicite para conceder a CloudTrail permiso para escribir registros en el segmento que hayas elegido.
- Revisa la configuración y haz clic en Crear (o en Guardar cambios si estás editando un recorrido).
Configurar feeds
Hay dos puntos de entrada diferentes para configurar feeds en la plataforma Google SecOps:
- Configuración de SIEM > Feeds > Añadir nuevo feed
- Centro de contenido > Paquetes de contenido > Empezar
Cómo configurar el feed de AWS Control Tower
- Haz clic en el paquete Amazon Cloud Platform.
- Busca el tipo de registro AWS Control Tower.
Especifique los valores en los campos siguientes.
- Tipo de fuente: Amazon SQS V2
- Nombre de la cola: el nombre de la cola de SQS de la que se va a leer.
- URI de S3: el URI del segmento.
s3://your-log-bucket-name/
- Sustituye
your-log-bucket-name
por el nombre real de tu segmento de S3.
- Sustituye
Opciones de eliminación de la fuente: selecciona la opción de eliminación que prefieras según tus preferencias de ingesta.
Antigüedad máxima del archivo: incluye los archivos modificados en los últimos días. El valor predeterminado es 180 días.
ID de clave de acceso a la cola de SQS: una clave de acceso de cuenta que es una cadena alfanumérica de 20 caracteres.
Clave de acceso secreta de la cola de SQS: una clave de acceso de cuenta que es una cadena alfanumérica de 40 caracteres.
Opciones avanzadas
- Nombre del feed: un valor rellenado automáticamente que identifica el feed.
- Espacio de nombres del recurso: espacio de nombres asociado al feed.
- Etiquetas de ingestión: etiquetas aplicadas a todos los eventos de este feed.
Haga clic en Crear feed.
Para obtener más información sobre cómo configurar varios feeds para diferentes tipos de registros en esta familia de productos, consulta el artículo Configurar 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 | La huella digital de la clave pública usada para firmar el resumen. |
digestPublicKeyFingerprint | target.resource.attribute.labels.value | La huella digital de la clave pública usada para firmar el resumen. |
digestS3Bucket | target.resource.name | Nombre del segmento de S3 en el que se almacena el resumen. |
digestS3Object | target.file.full_path | Ruta al objeto de resumen en el segmento de S3. |
digestSignatureAlgorithm | network.tls.cipher | Algoritmo usado para firmar el resumen. |
digestSignatureAlgorithm | target.resource.attribute.labels.value | Algoritmo usado para firmar el resumen. |
digestStartTime | metadata.event_timestamp | Hora de inicio del periodo del resumen. Se usa como hora del evento si eventTime no está disponible. |
eventCategory | security_result.category_details | Categoría del evento. |
eventID | metadata.product_log_id | El ID único del evento. |
eventName | metadata.product_event_type | Nombre del evento. |
eventName | security_result.summary | Nombre del evento, que se usa para generar el resumen de resultados de seguridad. |
eventSource | target.application | La fuente del evento. |
eventTime | metadata.event_timestamp | La hora en la que se produjo el evento. |
eventType | additional.fields.value.string_value | El tipo del evento. |
logFiles.hashValue | about.file.sha256 | El hash SHA-256 del archivo de registro. |
logFiles.s3Bucket | about.resource.name | El nombre del segmento de S3 en el que se almacena el archivo de registro. |
logFiles.s3Object | about.file.full_path | Ruta al objeto del archivo de registro en el segmento de S3. |
previousDigestHashValue | target.file.sha256 | El hash SHA-256 del resumen anterior. |
recipientAccountId | target.resource.attribute.labels.value | ID de cuenta de AWS del destinatario del evento. |
Records.awsRegion | principal.location.name | Región de AWS en la que se ha producido el evento. |
Records.errorCode | security_result.rule_id | El código de error, si lo hay, asociado a la solicitud. |
Records.errorMessage | security_result.description | El mensaje de error, si lo hay, asociado a la solicitud. |
Records.eventCategory | security_result.category_details | Categoría del evento. |
Records.eventID | metadata.product_log_id | El ID único del evento. |
Records.eventName | metadata.product_event_type | Nombre del evento. |
Records.eventName | security_result.summary | Nombre del evento, que se usa para generar el resumen de resultados de seguridad. |
Records.eventSource | target.application | La fuente del evento. |
Records.eventTime | metadata.event_timestamp | La hora en la que se produjo el evento. |
Records.eventType | additional.fields.value.string_value | El tipo del evento. |
Records.requestID | target.resource.attribute.labels.value | ID de la solicitud. |
Records.requestParameters.groupName | target.group.group_display_name | El nombre del grupo asociado a la solicitud (si lo hay). |
Records.requestParameters.userName | src.user.userid | Nombre del usuario, si lo hay, asociado a la solicitud. |
Records.requestParameters.userName | src.user.user_display_name | Nombre del usuario, si lo hay, asociado a la solicitud. |
Records.responseElements.ConsoleLogin | security_action | El resultado del intento de inicio de sesión en la consola. |
Records.responseElements.ConsoleLogin | security_result.summary | El resultado del intento de inicio de sesión en la consola, que se usa para generar el resumen de resultados de seguridad. |
Records.sourceIPAddress | principal.hostname | La dirección IP de la entidad de seguridad. Se usa como nombre de host si no es una IP válida. |
Records.sourceIPAddress | principal.ip | La dirección IP de la entidad de seguridad. |
Records.tlsDetails.cipherSuite | network.tls.cipher | El conjunto de cifrado que se usa en la conexión TLS. |
Records.tlsDetails.tlsVersion | network.tls.version | Versión de TLS utilizada en la conexión. |
Records.userAgent | network.http.user_agent | User-agent de la solicitud. |
Records.userIdentity.accessKeyId | additional.fields.value.string_value | ID de la clave de acceso usada en la solicitud. |
Records.userIdentity.accountId | principal.user.group_identifiers | El ID de 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 ID de usuario si no está disponible el nombre de usuario. |
Records.userIdentity.principalId | principal.user.product_object_id | ID principal del usuario. |
Records.userIdentity.sessionContext.attributes.mfaAuthenticated | principal.user.attribute.labels.value | Indica si se ha usado la MFA en la solicitud. |
Records.userIdentity.sessionContext.sessionIssuer.userName | principal.user.userid | Nombre de usuario del usuario que emitió la sesión. |
Records.userIdentity.type | principal.resource.type | El tipo de identidad que se ha usado en la solicitud. |
Records.userIdentity.userName | target.user.userid | Nombre de usuario del usuario actual. |
- | extensions.auth.mechanism | Se ha definido como "REMOTE". |
- | metadata.event_type | Se asigna el valor "STATUS_UPDATE", "USER_RESOURCE_ACCESS", "USER_LOGIN" o "GENERIC_EVENT" en función del valor de eventName. |
- | metadata.log_type | Asigna el valor "AWS_CONTROL_TOWER". |
- | metadata.product_name | Selecciona "AWS Control Tower". |
- | metadata.vendor_name | Selecciona "AWS". |
- | principal.asset.attribute.cloud.environment | Asigna el valor "AMAZON_WEB_SERVICES". |
- | security_result.action | Asigna el valor "ALLOW" o "BLOCK" en función del código de error. |
- | security_result.severity | Se ha definido como "INFORMATIONAL". |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.