Recopila registros de hosts de AWS EC2
En este documento, se explica cómo integrar los registros de hosts de AWS EC2 en Google Security Operations para la supervisión y el análisis. La integración implica analizar y asignar los registros de host de EC2 al modelo de datos unificado (UDM), realizar la transformación de datos y crear relaciones entre los hosts y las instancias de EC2. Los registros proporcionan información valiosa sobre las instancias, las propiedades del host, los tipos de instancias y las métricas de rendimiento que se pueden usar para la supervisión de seguridad, la auditoría y el cumplimiento.
Antes de comenzar
- Asegúrate de tener una instancia de Google SecOps.
- Asegúrate de tener acceso con privilegios a AWS.
Configura AWS IAM y 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 la política AmazonS3FullAccess.
- Haz clic en Siguiente.
- Haz clic en Agregar permisos.
Configura CloudTrail para AWS KMS
- Accede a la consola de administración de AWS.
- En la barra de búsqueda, escribe CloudTrail y selecciónalo en la lista de servicios.
- Haz clic en Crear sendero.
- Proporciona un Nombre de ruta, por ejemplo,
EC2-Activity-Trail
. - Selecciona la casilla de verificación Habilitar para todas las cuentas de mi organización.
- Escribe el URI del bucket de S3 que creaste antes (el formato debe ser
s3://your-log-bucket-name/
) o crea un bucket de S3 nuevo. - Si la SSE-KMS está habilitada, proporciona un nombre para el alias de AWS KMS o elige una clave de AWS KMS existente.
- Puedes dejar el resto de la configuración predeterminada.
- Haz clic en Siguiente.
- Selecciona Eventos de administración y Eventos de datos en Tipos de eventos para capturar la actividad del host de EC2.
- Haz clic en Siguiente.
- Revisa la configuración en Revisar y crear.
- Haz clic en Crear sendero.
- Opcional: Si creaste un bucket nuevo, continúa con el siguiente proceso:
- Ve a S3.
- Identifica y selecciona el bucket de registros que creaste.
- Selecciona la carpeta AWSLogs.
- Haz clic en Copiar URI de S3 y guárdalo.
Configura un feed en Google SecOps para transferir hosts de AWS EC2
- 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 hosts de AWS EC2.
- Selecciona Amazon S3 como el Tipo de fuente.
- Selecciona Hosts de AWS EC2 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 tus preferencias.
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 del recurso: Es el espacio de nombres del recurso.
Etiquetas de transferencia: Es la etiqueta que se aplicará a los eventos de este feed.
Haz clic en Siguiente.
Revisa la configuración del 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 |
---|---|---|
AllocationTime |
entity.metadata.creation_timestamp |
El campo AllocationTime se analiza como una marca de tiempo y se asigna al campo creation_timestamp . El analizador intenta varios formatos (aaaa-MM-dd HH:mm:ss, RFC 3339, UNIX, ISO8601). |
AllowsMultipleInstanceTypes |
entity.entity.asset.attribute.labels.value |
El valor de AllowsMultipleInstanceTypes del registro sin procesar se usa como el valor de una etiqueta. La clave de esta etiqueta se establece en allows_multiple_instance_types . |
AutoPlacement |
entity.entity.asset.attribute.labels.value |
El valor de AutoPlacement del registro sin procesar se usa como el valor de una etiqueta. La clave de esta etiqueta se establece en auto_placement . |
AvailabilityZone |
entity.entity.asset.attribute.cloud.availability_zone |
El campo AvailabilityZone se asigna directamente al campo availability_zone . |
AvailabilityZoneID |
entity.entity.asset.attribute.labels.value |
El valor de AvailabilityZoneID del registro sin procesar se usa como el valor de una etiqueta. La clave de esta etiqueta se establece en availability_zone_id . |
AvailableCapacity.AvailableInstanceCapacity.AvailableCapacity |
entity.entity.asset.attribute.labels.value |
El valor de AvailableCapacity.AvailableInstanceCapacity.AvailableCapacity (o AvailableCapacity.Instance.Available después de cambiar el nombre) se convierte en una cadena y se usa como el valor de una etiqueta. La clave se establece en available_instance_capacity_available_capacity . |
AvailableCapacity.AvailableInstanceCapacity.InstanceType |
entity.entity.asset.attribute.labels.value |
El valor de AvailableCapacity.AvailableInstanceCapacity.InstanceType (o AvailableCapacity.Instance.Type después de cambiar el nombre) se usa como el valor de una etiqueta. La clave se establece en available_instance_capacity_instance_type . |
AvailableCapacity.AvailableInstanceCapacity.TotalCapacity |
entity.entity.asset.attribute.labels.value |
El valor de AvailableCapacity.AvailableInstanceCapacity.TotalCapacity (o AvailableCapacity.Instance.Total después de cambiar el nombre) se convierte en una cadena y se usa como el valor de una etiqueta. La clave se establece en total_capacity . |
AvailableCapacity.AvailableVCpus |
entity.entity.asset.attribute.labels.value |
El valor de AvailableCapacity.AvailableVCpus (o AvailableCapacity.VCPUs después de cambiar el nombre) se convierte en una cadena y se usa como el valor de una etiqueta. La clave se establece en available_v_cpus . |
ClientToken |
entity.entity.asset.attribute.labels.value |
El valor de ClientToken del registro sin procesar se usa como el valor de una etiqueta. La clave de esta etiqueta se establece en client_token . |
HostID |
entity.metadata.product_entity_id |
El campo HostID (o ID después de cambiar el nombre) se asigna directamente al campo product_entity_id . |
HostID |
entity.entity.asset.asset_id |
El campo HostID (o ID después de cambiar el nombre) se asigna directamente al campo asset_id . |
HostMaintenance |
entity.entity.asset.attribute.labels.value |
El valor de HostMaintenance (o Maintenance después de cambiar el nombre) del registro sin procesar se usa como el valor de una etiqueta. La clave de esta etiqueta se establece en host_maintenance . |
HostProperties.Cores |
entity.entity.asset.hardware.cpu_number_cores |
El valor de HostProperties.Cores se convierte en un número entero sin firma y se asigna a cpu_number_cores . |
HostProperties.InstanceFamily |
entity.entity.asset.attribute.labels.value |
El valor de HostProperties.InstanceFamily del registro sin procesar se usa como el valor de una etiqueta. La clave de esta etiqueta se establece en host_properties_instance_family . |
HostProperties.InstanceType |
entity.entity.asset.attribute.labels.value |
El valor de HostProperties.InstanceType del registro sin procesar se usa como el valor de una etiqueta. La clave de esta etiqueta se establece en host_properties_instance_type . |
HostProperties.Sockets |
entity.entity.asset.attribute.labels.value |
El valor de HostProperties.Sockets se convierte en una cadena y se usa como el valor de una etiqueta. La clave se establece en host_properties_sockets . |
HostProperties.TotalVCpus |
entity.entity.asset.attribute.labels.value |
El valor de HostProperties.TotalVCpus (o HostProperties.TotalVCPUs después de cambiar el nombre) se convierte en una cadena y se usa como el valor de una etiqueta. La clave se establece en host_properties_total_v_cpus . |
HostRecovery |
entity.entity.asset.attribute.labels.value |
El valor de HostRecovery (o Recovery después de cambiar el nombre) del registro sin procesar se usa como el valor de una etiqueta. La clave de esta etiqueta se establece en host_recovery . |
HostReservationID |
entity.entity.asset.attribute.labels.value |
El valor de HostReservationID (o ReservationID después de cambiar el nombre) del registro sin procesar se usa como el valor de una etiqueta. La clave de esta etiqueta se establece en host_reservation_id . |
MemberOfServiceLinkedResourceGroup |
entity.entity.asset.attribute.labels.value |
El valor de MemberOfServiceLinkedResourceGroup se convierte en una cadena y se usa como el valor de una etiqueta. La clave se establece en member_of_service_linked_resource_group . |
OwnerID |
entity.entity.asset.attribute.labels.value |
El valor de OwnerID del registro sin procesar se usa como el valor de una etiqueta. La clave de esta etiqueta se establece en owner_id . |
ReleaseTime |
entity.entity.asset.attribute.labels.value |
El valor de ReleaseTime del registro sin procesar se usa como el valor de una etiqueta. La clave de esta etiqueta se establece en release_time . |
State |
entity.entity.asset.attribute.labels.value |
El valor de State del registro sin procesar se usa como el valor de una etiqueta. La clave de esta etiqueta se establece en state . |
TagSet |
entity.entity.asset.attribute.labels |
Se itera en el array TagSet , y Key y Value de cada etiqueta se usan como clave y valor de una etiqueta, respectivamente. El analizador asigna el valor AMAZON_WEB_SERVICES a este campo. El collection_time del registro sin procesar se asigna al campo collected_timestamp . El analizador asigna el valor ASSET a este campo. El analizador asigna el valor AWS EC2 HOSTS a este campo. El analizador asigna el valor AWS a este campo. Las relaciones se derivan de los campos Instances y OutpostArn , pero estos campos no se asignan directamente al objeto IDM. La lógica del analizador crea objetos de relación en función de estos campos y los combina en el array relations . |
collection_time |
entity.metadata.collected_timestamp |
El collection_time del registro se usa como el collected_timestamp del evento. |
Cambios
2024-01-31
- Se agregó compatibilidad con el nuevo esquema.
2023-12-14
- Es un analizador creado recientemente.
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.