Recoger registros de instancias de AWS EC2

Disponible en:

En este documento se explica cómo configurar los registros de instancias de AWS EC2 en Google Security Operations para monitorizarlos y analizarlos. El analizador extrae datos de los registros JSON de reserva de instancias, reestructura y cambia el nombre de los campos para que se ajusten al modelo de datos unificado. Además, gestiona varios tipos de datos y estructuras anidadas, como interfaces de red, grupos y etiquetas, y genera relaciones y metadatos de activos. También gestiona los errores y elimina los mensajes JSON con errores de formato.

Antes de empezar

  • Asegúrate de que tienes una instancia de Google SecOps.
  • Asegúrate de que tienes acceso con privilegios a AWS.

Configurar AWS IAM y S3

  1. Crea un segmento de Amazon S3 siguiendo esta guía de usuario: Crear un segmento.
  2. Guarda el nombre y la región del bucket para usarlos más adelante.
  3. Crea un usuario siguiendo esta guía: Crear un usuario de gestión de identidades y accesos.
  4. Selecciona el usuario creado.
  5. Selecciona la pestaña Credenciales de seguridad.
  6. En la sección Claves de acceso, haz clic en Crear clave de acceso.
  7. Selecciona Servicio de terceros como Caso práctico.
  8. Haz clic en Siguiente.
  9. Opcional: añade una etiqueta de descripción.
  10. Haz clic en Crear clave de acceso.
  11. Haz clic en Descargar archivo CSV para guardar la clave de acceso y la clave de acceso secreta para usarlas más adelante.
  12. Haz clic en Listo.
  13. Selecciona la pestaña Permisos.
  14. En la sección Políticas de permisos, haz clic en Añadir permisos.
  15. Selecciona Añadir permisos.
  16. Seleccione Adjuntar políticas directamente.
  17. Busca y selecciona la política AmazonS3FullAccess.
  18. Haz clic en Siguiente.
  19. Haz clic en Añadir permisos.

Configurar EC2 para enviar registros a CloudWatch Logs

  1. Usa SSH para conectarte a tu instancia EC2 y proporciona tu par de claves para la autenticación.

    ssh -i your-key.pem ec2-user@your-ec2-public-ip
    
  2. Instala el agente de CloudWatch Logs:

    • Para instalar el agente de CloudWatch Logs en Amazon Linux, usa el siguiente comando:
    sudo yum install -y awslogs
    
    • Para instalar el agente de CloudWatch Logs en Ubuntu, usa el siguiente comando:
    sudo apt-get install -y awslogs
    
  3. Abre el archivo de configuración de CloudWatch Logs:

    sudo vi /etc/awslogs/awslogs.conf
    
  4. Crea una secuencia de comandos que obtenga estos metadatos de instancia de registro y los escriba en un archivo:

    #!/bin/bash
    echo "Architecture: $(curl -s http://169.254.169.254/latest/meta-data/architecture)" >> /var/log/instance_metadata.log
    echo "AmiLaunchIndex: $(curl -s http://169.254.169.254/latest/meta-data/ami-launch-index)" >> /var/log/instance_metadata.log
    echo "BootMode: $(curl -s http://169.254.169.254/latest/meta-data/boot-mode)" >> /var/log/instance_metadata.log
    
  5. Guarda la secuencia de comandos como /etc/init.d/metadata_script.sh y ejecútala al iniciar la instancia con crontab o rc.local.

  6. Abre el archivo de configuración del agente de CloudWatch Logs:

    sudo vi /etc/awslogs/awslogs.conf
    
  7. Añade lo siguiente al archivo de configuración:

    [/var/log/messages]
    file = /var/log/messages
    log_group_name = /ec2/system/logs
    log_stream_name = {instance_id}
    
    [/var/log/secure]
    file = /var/log/secure
    log_group_name = /ec2/security/logs
    log_stream_name = {instance_id}
    
    [/var/log/auth.log]
    file = /var/log/auth.log
    log_group_name = /ec2/auth/logs
    log_stream_name = {instance_id}
    
    [/var/log/httpd/access_log]
    file = /var/log/httpd/access_log
    log_group_name = /ec2/application/apache/access_logs
    log_stream_name = {instance_id}
    
    [/var/log/httpd/error_log]
    file = /var/log/httpd/error_log
    log_group_name = /ec2/application/apache/error_logs
    log_stream_name = {instance_id}
    
  8. Guarda la configuración y cierra el editor.

  9. Inicia el agente de CloudWatch Logs:

    • En Amazon Linux:
    sudo service awslogs start
    
    • En Ubuntu:
    sudo service awslogs start
    
  10. Comprueba que el agente se esté ejecutando:

    sudo service awslogs status
    

Configurar permisos de gestión de identidades y accesos para Lambda y S3

  1. En la consola de gestión de identidades y accesos de AWS, crea un rol de gestión de identidades y accesos con los siguientes permisos:

    • logs:PutSubscriptionFilter
    • logs:DescribeLogGroups
    • logs:GetLogEvents
    • s3:PutObject
  2. Asigna este rol a la función Lambda que exportará los registros a S3.

Configurar Lambda para exportar registros a S3

  1. Ve a la consola de Lambda y crea una función.

    import boto3
    import gzip
    from io import BytesIO
    
    s3 = boto3.client('s3')
    logs = boto3.client('logs')
    
    def lambda_handler(event, context):
        log_group = event['logGroup']
        log_stream = event['logStream']
    
        log_events = logs.get_log_events(
            logGroupName=log_group,
            logStreamName=log_stream,
            startFromHead=True
        )
    
        log_data = "\n".join([event['message'] for event in log_events['events']])
    
        # Compress and upload to S3
        compressed_data = gzip.compress(log_data.encode('utf-8'))
        s3.put_object(
            Bucket='your-s3-bucket-name',
            Key='logs/ec2-log.gz',
            Body=compressed_data
        )
      ```
    
    • Sustituye your-s3-bucket-name por el nombre real de tu segmento de S3.
  2. Asigna el rol de gestión de identidades y accesos a la función de Lambda que has creado anteriormente.

  3. En la consola de CloudWatch, ve a la sección Logs (Registros).

  4. Selecciona el grupo de registros. Por ejemplo, /ec2/system/logs.

  5. Haz clic en Acciones > Crear filtro de suscripción.

  6. Define el destino en la función Lambda que has creado anteriormente.

Configurar un feed en Google SecOps para ingerir registros de instancias de AWS EC2

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Añadir nuevo.
  3. En el campo Nombre del feed, introduce un nombre para el feed. Por ejemplo, Registros de instancias de AWS EC2.
  4. Selecciona Amazon S3 V2 como Tipo de fuente.
  5. Selecciona Instancia de AWS EC2 como Tipo de registro.
  6. Haz clic en Siguiente.
  7. Especifique los valores de los siguientes parámetros de entrada:

    • URI de S3: el URI del segmento.
      • s3://your-log-bucket-name/
        • Sustituye your-log-bucket-name por el nombre real del segmento.
    • Opciones de eliminación de la fuente: selecciona la opción de eliminación que prefieras.

    • Antigüedad máxima del archivo: incluye los archivos modificados en los últimos días. El valor predeterminado es de 180 días.

    • ID de clave de acceso: la clave de acceso del usuario con acceso al segmento de S3.

    • Clave de acceso secreta: la clave secreta del usuario con acceso al segmento de S3.

    • Espacio de nombres de recursos: el espacio de nombres de recursos.

    • Etiquetas de ingestión: etiqueta que se aplicará a los eventos de este feed.

  8. Haz clic en Siguiente.

  9. Revise la configuración de la nueva fuente en la pantalla Finalizar y, a continuación, haga clic en Enviar.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
Architecture entity.entity.asset.attribute.labels.key=instances_set_architecture, entity.entity.asset.attribute.labels.value El valor se toma directamente del campo Instances.Architecture del registro sin procesar.
AmiLaunchIndex entity.entity.asset.attribute.labels.key=instances_set_ami_launch_index, entity.entity.asset.attribute.labels.value El valor se toma directamente del campo Instances.AmiLaunchIndex del registro sin procesar.
BlockDeviceMapping.Ebs.AttachTime entity.entity.resource_ancestors.attribute.labels.key=instances_set_block_device_mapping_ebs_attach_time, entity.entity.resource_ancestors.attribute.labels.value El valor se toma de Instances.BlockDeviceMapping.Ebs.AttachTime.
BlockDeviceMapping.Ebs.DeleteOnTermination entity.entity.resource_ancestors.attribute.labels.key=instances_set_block_device_mapping_ebs_delete_on_termination, entity.entity.resource_ancestors.attribute.labels.value El valor se toma de Instances.BlockDeviceMapping.Ebs.DeleteOnTermination.
BlockDeviceMapping.Ebs.Status entity.entity.resource_ancestors.attribute.labels.key=instances_set_block_device_mapping_ebs_volume_status, entity.entity.resource_ancestors.attribute.labels.value El valor se toma de Instances.BlockDeviceMapping.Ebs.Status.
BlockDeviceMapping.Ebs.VolumeID entity.entity.resource_ancestors.product_object_id, entity.entity.resource_ancestors.resource_type=VOLUME El valor se toma de Instances.BlockDeviceMapping.Ebs.VolumeID.
BlockDeviceMapping.Name entity.entity.resource_ancestors.attribute.labels.key=instances_set_block_device_mapping_device_name, entity.entity.resource_ancestors.attribute.labels.value El valor se toma de Instances.BlockDeviceMapping.Name.
BootMode entity.entity.asset.attribute.labels.key=instances_set_boot_mode, entity.entity.asset.attribute.labels.value El valor se toma de Instances.BootMode.
CapacityReservationID entity.entity.asset.attribute.labels.key=instances_set_capacity_reservation_id, entity.entity.asset.attribute.labels.value El valor se toma de Instances.CapacityReservationID.
CapacityReservationSpecification.CapacityReservationPreference entity.entity.asset.attribute.labels.key=instances_set_capacity_reservation_specification_capacity_reservation_preference, entity.entity.asset.attribute.labels.value El valor se toma de Instances.CapacityReservationSpecification.CapacityReservationPreference.
CapacityReservationSpecification.CapacityReservationTarget.CapacityReservationID entity.entity.asset.attribute.labels.key=instances_set_capacity_reservation_specification_capacity_reservation_target_capacity_reservation_id, entity.entity.asset.attribute.labels.value El valor se toma de Instances.CapacityReservationSpecification.CapacityReservationTarget.CapacityReservationID.
CapacityReservationSpecification.CapacityReservationTarget.CapacityReservationResourceGroupArn entity.entity.resource_ancestors.name, entity.entity.resource_ancestors.resource_subtype=Capacity Reservation Arn El valor se toma de Instances.CapacityReservationSpecification.CapacityReservationTarget.CapacityReservationResourceGroupArn.
ClientToken entity.entity.asset.attribute.labels.key=instances_set_client_token, entity.entity.asset.attribute.labels.value El valor se toma de Instances.ClientToken.
CPU.AmdSevSnp entity.entity.asset.attribute.labels.key=instances_set_cpu_options_amd_sev_snp, entity.entity.asset.attribute.labels.value El valor se toma de Instances.CPU.AmdSevSnp.
CPU.CoreCount entity.entity.asset.hardware.cpu_number_cores El valor se toma de Instances.CPU.CoreCount.
CPU.ThreadsPerCore entity.entity.asset.attribute.labels.key=instances_set_cpu_options_threads_per_core, entity.entity.asset.attribute.labels.value El valor se toma de Instances.CPU.ThreadsPerCore.
CurrentInstanceBootMode entity.entity.asset.attribute.labels.key=instances_set_current_instance_boot_mode, entity.entity.asset.attribute.labels.value El valor se toma de Instances.CurrentInstanceBootMode.
DNSName entity.entity.network.dns_domain El valor se toma de Instances.DNSName.
EbsOptimized entity.entity.asset.attribute.labels.key=instances_set_ebs_optimized, entity.entity.asset.attribute.labels.value El valor se toma de Instances.EbsOptimized.
ElasticGpuAssociationSet.ElasticGpuAssociationID entity.entity.asset.attribute.labels.key=instances_set_elastic_gpu_association_set_elastic_gpu_association_id, entity.entity.asset.attribute.labels.value El valor se toma de Instances.ElasticGpuAssociationSet.ElasticGpuAssociationID.
ElasticGpuAssociationSet.ElasticGpuAssociationState entity.entity.asset.attribute.labels.key=instances_set_elastic_gpu_association_set_elastic_gpu_association_state, entity.entity.asset.attribute.labels.value El valor se toma de Instances.ElasticGpuAssociationSet.ElasticGpuAssociationState.
ElasticGpuAssociationSet.ElasticGpuAssociationTime entity.entity.asset.attribute.labels.key=instances_set_elastic_gpu_association_set_elastic_gpu_association_time, entity.entity.asset.attribute.labels.value El valor se toma de Instances.ElasticGpuAssociationSet.ElasticGpuAssociationTime.
ElasticGpuAssociationSet.ElasticGpuID entity.entity.asset.attribute.labels.key=instances_set_elastic_gpu_association_set_elastic_gpu_id, entity.entity.asset.attribute.labels.value El valor se toma de Instances.ElasticGpuAssociationSet.ElasticGpuID.
ElasticInferenceAcceleratorAssociationSet.ElasticInferenceAcceleratorArn entity.entity.resource_ancestors.name, entity.entity.resource_ancestors.resource_subtype=Elastic Interface Accelerator Arn El valor se toma de Instances.ElasticInferenceAcceleratorAssociationSet.ElasticInferenceAcceleratorArn.
ElasticInferenceAcceleratorAssociationSet.ElasticInferenceAcceleratorAssociationID entity.entity.resource_ancestors.attribute.labels.key=instances_set_elastic_inference_accelerator_association_set_elastic_inference_accelerator_association_id, entity.entity.resource_ancestors.attribute.labels.value El valor se toma de Instances.ElasticInferenceAcceleratorAssociationSet.ElasticInferenceAcceleratorAssociationID.
ElasticInferenceAcceleratorAssociationSet.ElasticInferenceAcceleratorAssociationState entity.entity.resource_ancestors.attribute.labels.key=instances_set_elastic_inference_accelerator_association_set_elastic_inference_accelerator_association_state, entity.entity.resource_ancestors.attribute.labels.value El valor se toma de Instances.ElasticInferenceAcceleratorAssociationSet.ElasticInferenceAcceleratorAssociationState.
ElasticInferenceAcceleratorAssociationSet.ElasticInferenceAcceleratorAssociationTime entity.entity.resource_ancestors.attribute.labels.key=instances_set_elastic_inference_accelerator_association_set_elastic_inference_accelerator_association_time, entity.entity.resource_ancestors.attribute.labels.value El valor se toma de Instances.ElasticInferenceAcceleratorAssociationSet.ElasticInferenceAcceleratorAssociationTime.
EnaSupport entity.entity.asset.attribute.labels.key=instances_set_ena_support, entity.entity.asset.attribute.labels.value El valor se toma de Instances.EnaSupport.
EnclaveOptions.Enabled entity.entity.asset.attribute.labels.key=instances_set_enclave_options_enabled, entity.entity.asset.attribute.labels.value El valor se toma de Instances.EnclaveOptions.Enabled.
GroupSet.GroupID entity.entity.group.product_object_id, entity.entity.group.attribute.labels.key=group_set_group_id, entity.entity.group.attribute.labels.value, entity.entity.group.attribute.labels.key=instances_set_group_set_group_id, entity.entity.group.attribute.labels.value, entity.entity.group.attribute.labels.key=instances_set_network_interface_set_group_set_group_id, entity.entity.group.attribute.labels.value El valor se toma de GroupSet.GroupID. El primer GroupID del array se asigna a entity.entity.group.product_object_id. Los valores GroupID posteriores se asignan como etiquetas.
GroupSet.GroupName entity.entity.group.group_display_name, entity.entity.group.attribute.labels.key=group_set_group_name, entity.entity.group.attribute.labels.value, entity.entity.group.attribute.labels.key=instances_set_group_set_group_name, entity.entity.group.attribute.labels.value, entity.entity.group.attribute.labels.key=instances_set_network_interface_set_group_set_group_name, entity.entity.group.attribute.labels.value El valor se toma de GroupSet.GroupName. El primer GroupName del array se asigna a entity.entity.group.group_display_name. Los valores GroupName posteriores se asignan como etiquetas.
HibernationOptions entity.entity.asset.attribute.labels.key=instances_set_hibernation_options, entity.entity.asset.attribute.labels.value El valor se toma de Instances.HibernationOptions.
HibernationOptions.Configured entity.entity.asset.attribute.labels.key=instances_set_hibernation_options_configured, entity.entity.asset.attribute.labels.value El valor se toma de Instances.HibernationOptions.Configured.
Hypervisor entity.entity.asset.attribute.labels.key=instances_set_hypervisor, entity.entity.asset.attribute.labels.value El valor se toma de Instances.Hypervisor.
IamInstanceProfile.Arn entity.entity.resource_ancestors.name, entity.entity.resource_ancestors.resource_subtype=Instance Profile Arn El valor se toma de Instances.IamInstanceProfile.Arn.
IamInstanceProfile.ID entity.entity.resource_ancestors.product_object_id El valor se toma de Instances.IamInstanceProfile.ID.
ImageID entity.entity.resource_ancestors.product_object_id, entity.entity.resource_ancestors.resource_type=IMAGE El valor se toma de Instances.ImageID.
InstanceID entity.metadata.product_entity_id, entity.entity.asset.asset_id El valor se toma de Instances.InstanceID.
InstanceLifecycle entity.entity.asset.attribute.labels.key=instances_set_instance_lifecycle, entity.entity.asset.attribute.labels.value El valor se toma de Instances.InstanceLifecycle.
InstanceState.Code entity.entity.asset.attribute.labels.key=instances_set_instance_state_code, entity.entity.asset.attribute.labels.value El valor se toma de Instances.InstanceState.Code.
InstanceState.Name entity.entity.asset.deployment_status El valor se deriva de Instances.InstanceState.Name. Si el valor es running, el campo de UDM se define como ACTIVE. Si el valor es shutting-down o stopping, el campo de UDM se define como PENDING_DECOMMISSION. Si el valor es stopped o terminated, el campo de UDM se define como DECOMMISSIONED.
InstanceType entity.entity.asset.category El valor se toma de Instances.InstanceType.
IPAddress entity.entity.asset.ip El valor se toma de Instances.IPAddress.
Ipv6Address entity.entity.asset.ip El valor se toma de Instances.Ipv6Address.
KernelID entity.entity.asset.attribute.labels.key=instances_set_kernel_id, entity.entity.asset.attribute.labels.value El valor se toma de Instances.KernelID.
KeyName entity.entity.asset.attribute.labels.key=instances_set_key_name, entity.entity.asset.attribute.labels.value El valor se toma de Instances.KeyName.
LaunchTime entity.metadata.creation_timestamp El valor se toma de Instances.LaunchTime.
LicenseSet.LicenseConfigurationArn entity.entity.resource_ancestors.name, entity.entity.resource_ancestors.resource_subtype=License Configuration Arn El valor se toma de Instances.LicenseSet.LicenseConfigurationArn.
MaintenanceOptions entity.entity.asset.attribute.labels.key=instances_set_maintenance_options_auto_recovery, entity.entity.asset.attribute.labels.value El valor se toma de Instances.MaintenanceOptions.
MetadataOptions.HTTPEndpoint entity.entity.asset.attribute.labels.key=instances_set_metadata_options_http_endpoint, entity.entity.asset.attribute.labels.value El valor se toma de Instances.MetadataOptions.HTTPEndpoint.
MetadataOptions.HTTPProtocolIpv6 entity.entity.asset.attribute.labels.key=instances_set_metadata_options_http_protocol_ipv6, entity.entity.asset.attribute.labels.value El valor se toma de Instances.MetadataOptions.HTTPProtocolIpv6.
MetadataOptions.HTTPPutResponseHopLimit entity.entity.asset.attribute.labels.key=instances_set_metadata_options_http_put_response_hop_limit, entity.entity.asset.attribute.labels.value El valor se toma de Instances.MetadataOptions.HTTPPutResponseHopLimit.
MetadataOptions.HTTPTokens entity.entity.asset.attribute.labels.key=instances_set_metadata_options_http_tokens, entity.entity.asset.attribute.labels.value El valor se toma de Instances.MetadataOptions.HTTPTokens.
MetadataOptions.InstanceMetadataTags entity.entity.asset.attribute.labels.key=instances_set_metadata_options_instance_metadata_tags, entity.entity.asset.attribute.labels.value El valor se toma de Instances.MetadataOptions.InstanceMetadataTags.
MetadataOptions.State entity.entity.asset.attribute.labels.key=instances_set_metadata_options_state, entity.entity.asset.attribute.labels.value El valor se toma de Instances.MetadataOptions.State.
Monitoring.State entity.entity.asset.attribute.labels.key=instances_set_monitoring_state, entity.entity.asset.attribute.labels.value El valor se toma de Instances.Monitoring.State.
NetworkInterfaceSet.Association.CarrierIP entity.entity.asset.nat_ip El valor se toma de Instances.NetworkInterfaceSet.Association.CarrierIP.
NetworkInterfaceSet.Association.CustomerOwnedIP entity.entity.asset.attribute.labels.key=instances_set_network_interface_set_association_customer_owned_ip, entity.entity.asset.attribute.labels.value El valor se toma de Instances.NetworkInterfaceSet.Association.CustomerOwnedIP.
NetworkInterfaceSet.Association.IPOwnerID entity.entity.asset.attribute.labels.key=instances_set_network_interface_set_association_ip_owner_id, entity.entity.asset.attribute.labels.value, entity.entity.asset.attribute.labels.key=instances_set_network_interface_set_private_ip_addresses_set_association_ip_owner_id, entity.entity.asset.attribute.labels.value El valor se toma de Instances.NetworkInterfaceSet.Association.IPOwnerID.
NetworkInterfaceSet.Association.PublicDNSName entity.entity.asset.attribute.labels.key=instances_set_network_interface_set_association_public_dns_name, entity.entity.asset.attribute.labels.value, entity.entity.asset.attribute.labels.key=instances_set_network_interface_set_private_ip_addresses_set_association_public_dns_name, entity.entity.asset.attribute.labels.value El valor se toma de Instances.NetworkInterfaceSet.Association.PublicDNSName.
NetworkInterfaceSet.Association.PublicIP entity.entity.asset.ip El valor se toma de Instances.NetworkInterfaceSet.Association.PublicIP.
NetworkInterfaceSet.Attachment.AttachTime entity.entity.asset.attribute.labels.key=instances_set_network_interface_set_attachment_attach_time, entity.entity.asset.attribute.labels.value El valor se toma de Instances.NetworkInterfaceSet.Attachment.AttachTime.
NetworkInterfaceSet.Attachment.AttachmentID entity.entity.asset.attribute.labels.key=instances_set_network_interface_set_attachment_attachment_id, entity.entity.asset.attribute.labels.value El valor se toma de Instances.NetworkInterfaceSet.Attachment.AttachmentID.
NetworkInterfaceSet.Attachment.DeleteOnTermination entity.entity.asset.attribute.labels.key=instances_set_network_interface_set_attachment_delete_on_termination, entity.entity.asset.attribute.labels.value El valor se toma de Instances.NetworkInterfaceSet.Attachment.DeleteOnTermination.
NetworkInterfaceSet.Attachment.DeviceIndex entity.entity.asset.attribute.labels.key=instances_set_network_interface_set_attachment_device_index, entity.entity.asset.attribute.labels.value El valor se toma de Instances.NetworkInterfaceSet.Attachment.DeviceIndex.
NetworkInterfaceSet.Attachment.NetworkCardIndex entity.entity.asset.attribute.labels.key=instances_set_network_interface_set_attachment_network_card_index, entity.entity.asset.attribute.labels.value El valor se toma de Instances.NetworkInterfaceSet.Attachment.NetworkCardIndex.
NetworkInterfaceSet.Attachment.Status entity.entity.asset.attribute.labels.key=instances_set_network_interface_set_attachment_status, entity.entity.asset.attribute.labels.value El valor se toma de Instances.NetworkInterfaceSet.Attachment.Status.
NetworkInterfaceSet.Description entity.entity.asset.attribute.labels.key=instances_set_network_interface_set_description, entity.entity.asset.attribute.labels.value El valor se toma de Instances.NetworkInterfaceSet.Description.
NetworkInterfaceSet.GroupSet.GroupID entity.entity.group.attribute.labels.key=instances_set_network_interface_set_group_set_group_id, entity.entity.group.attribute.labels.value El valor se toma de Instances.NetworkInterfaceSet.GroupSet.GroupID.
NetworkInterfaceSet.GroupSet.GroupName entity.entity.group.attribute.labels.key=instances_set_network_interface_set_group_set_group_name, entity.entity.group.attribute.labels.value El valor se toma de Instances.NetworkInterfaceSet.GroupSet.GroupName.
NetworkInterfaceSet.InterfaceType entity.entity.asset.attribute.labels.key=instances_set_network_interface_set_interface_type, entity.entity.asset.attribute.labels.value El valor se toma de Instances.NetworkInterfaceSet.InterfaceType.
NetworkInterfaceSet.Ipv6AddressesSet.Ipv6Address entity.entity.asset.ip El valor se toma de Instances.NetworkInterfaceSet.Ipv6AddressesSet.Ipv6Address.
NetworkInterfaceSet.Ipv6AddressesSet.IsPrimaryIpv6 entity.entity.asset.attribute.labels.key=instances_set_network_interface_set_ipv6_addresses_set_is_primary_ipv6, entity.entity.asset.attribute.labels.value El valor se toma de Instances.NetworkInterfaceSet.Ipv6AddressesSet.IsPrimaryIpv6.
NetworkInterfaceSet.MacAddress entity.entity.asset.mac El valor se toma de Instances.NetworkInterfaceSet.MacAddress.
NetworkInterfaceSet.NetworkInterfaceID entity.entity.asset.attribute.labels.key=instances_set_network_interface_set_network_interface_id, entity.entity.asset.attribute.labels.value El valor se toma de Instances.NetworkInterfaceSet.NetworkInterfaceID.
NetworkInterfaceSet.OwnerID entity.entity.asset.attribute.labels.key=instances_set_network_interface_set_owner_id, entity.entity.asset.attribute.labels.value El valor se toma de Instances.NetworkInterfaceSet.OwnerID.
NetworkInterfaceSet.PrivateDNSName entity.entity.asset.attribute.labels.key=instances_set_network_interface_set_private_dns_name, entity.entity.asset.attribute.labels.value, entity.entity.asset.attribute.labels.key=instances_set_network_interface_set_private_ip_addresses_set_private_dns_name, entity.entity.asset.attribute.labels.value El valor se toma de Instances.NetworkInterfaceSet.PrivateDNSName.
NetworkInterfaceSet.PrivateIPAddress entity.entity.asset.ip El valor se toma de Instances.NetworkInterfaceSet.PrivateIPAddress.
NetworkInterfaceSet.PrivateIPAddressesSet.Primary entity.entity.asset.attribute.labels.key=instances_set_network_interface_set_private_ip_addresses_set_primary, entity.entity.asset.attribute.labels.value El valor se toma de Instances.NetworkInterfaceSet.PrivateIPAddressesSet.Primary.
NetworkInterfaceSet.PrivateIPAddressesSet.PrivateIPAddress entity.entity.asset.ip El valor se toma de Instances.NetworkInterfaceSet.PrivateIPAddressesSet.PrivateIPAddress.
NetworkInterfaceSet.SourceDestCheck entity.entity.asset.attribute.labels.key=instances_set_network_interface_set_source_dest_check, entity.entity.asset.attribute.labels.value El valor se toma de Instances.NetworkInterfaceSet.SourceDestCheck.
NetworkInterfaceSet.Status entity.entity.asset.attribute.labels.key=instances_set_network_interface_set_status, entity.entity.asset.attribute.labels.value El valor se toma de Instances.NetworkInterfaceSet.Status.
NetworkInterfaceSet.SubnetID entity.entity.asset.attribute.labels.key=instances_set_network_interface_set_subnet_id, entity.entity.asset.attribute.labels.value El valor se toma de Instances.NetworkInterfaceSet.SubnetID.
NetworkInterfaceSet.VpcID entity.entity.asset.attribute.labels.key=instances_set_network_interface_set_vpc_id, entity.entity.asset.attribute.labels.value El valor se toma de Instances.NetworkInterfaceSet.VpcID.
OutpostArn entity.relations.entity.asset.product_object_id El valor se toma de Instances.OutpostArn.
Placement.Affinity entity.entity.asset.attribute.labels.key=instances_set_placement_affinity, entity.entity.asset.attribute.labels.value El valor se toma de Instances.Placement.Affinity.
Placement.AvailabilityZone entity.entity.asset.attribute.cloud.availability_zone El valor se toma de Instances.Placement.AvailabilityZone.
Placement.GroupID entity.entity.group.attribute.labels.key=instances_set_placement_group_id, entity.entity.group.attribute.labels.value El valor se toma de Instances.Placement.GroupID.
Placement.GroupName entity.entity.group.attribute.labels.key=instances_set_placement_group_name, entity.entity.group.attribute.labels.value El valor se toma de Instances.Placement.GroupName.
Placement.HostID entity.relations.entity.asset.asset_id El valor se toma de Instances.Placement.HostID.
Placement.HostResourceGroupArn entity.relations.entity.asset.attribute.labels.key=instances_set_placement_host_resource_group_arn, entity.relations.entity.asset.attribute.labels.value El valor se toma de Instances.Placement.HostResourceGroupArn.
Placement.PartitionNumber entity.entity.asset.attribute.labels.key=instances_set_placement_partition_number, entity.entity.asset.attribute.labels.value El valor se toma de Instances.Placement.PartitionNumber.
Placement.SpreadDomain entity.entity.asset.attribute.labels.key=instances_set_placement_spread_domain, entity.entity.asset.attribute.labels.value El valor se toma de Instances.Placement.SpreadDomain.
Placement.Tenancy entity.entity.asset.attribute.labels.key=instances_set_placement_tenancy, entity.entity.asset.attribute.labels.value El valor se toma de Instances.Placement.Tenancy.
PlatformDetails entity.entity.asset.attribute.labels.key=instances_set_platform_details, entity.entity.asset.attribute.labels.value El valor se toma de Instances.PlatformDetails.
PrivateDNSName entity.entity.network.dns.questions.name El valor se toma de Instances.PrivateDNSName.
PrivateDNSNameOptions.EnableResourceNameDnsAAAARecord entity.entity.network.dns.questions.type Si el valor es true, el campo de UDM se define como 28.
PrivateDNSNameOptions.EnableResourceNameDnsARecord entity.entity.network.dns.questions.type Si el valor es true, el campo de UDM se define como 1.
PrivateDNSNameOptions.HostnameType entity.entity.asset.attribute.labels.key=instances_set_private_dns_name_options_hostname_type, entity.entity.asset.attribute.labels.value El valor se toma de Instances.PrivateDNSNameOptions.HostnameType.
PrivateIPAddress entity.entity.asset.ip El valor se toma de Instances.PrivateIPAddress.
ProductCodes.ProductCode entity.entity.asset.attribute.labels.key=instances_set_product_codes_product_code, entity.entity.asset.attribute.labels.value El valor se toma de Instances.ProductCodes.ProductCode.
ProductCodes.Type entity.entity.asset.attribute.labels.key=instances_set_product_codes_type, entity.entity.asset.attribute.labels.value El valor se toma de Instances.ProductCodes.Type.
RamdiskID entity.entity.asset.attribute.labels.key=instances_set_ramdisk_id, entity.entity.asset.attribute.labels.value El valor se toma de Instances.RamdiskID.
Reason entity.entity.asset.attribute.labels.key=instances_set_reason, entity.entity.asset.attribute.labels.value El valor se toma de Instances.Reason.
ReservationID entity.additional.fields.key=reservation_id, entity.additional.fields.value.string_value El valor se toma de ReservationID.
RequesterID entity.additional.fields.key=requester_id, entity.additional.fields.value.string_value El valor se toma de RequesterID.
RootDeviceName entity.entity.asset.attribute.labels.key=instances_set_root_device_name, entity.entity.asset.attribute.labels.value El valor se toma de Instances.RootDeviceName.
RootDeviceType entity.entity.asset.attribute.labels.key=instances_set_root_device_type, entity.entity.asset.attribute.labels.value El valor se toma de Instances.RootDeviceType.
SourceDestCheck entity.entity.asset.attribute.labels.key=instances_set_source_dest_check, entity.entity.asset.attribute.labels.value El valor se toma de Instances.SourceDestCheck.
SpotInstanceRequestID entity.entity.asset.attribute.labels.key=instances_set_spot_instance_request_id, entity.entity.asset.attribute.labels.value El valor se toma de Instances.SpotInstanceRequestID.
SriovNetSupport entity.entity.asset.attribute.labels.key=instances_set_sriov_net_support, entity.entity.asset.attribute.labels.value El valor se toma de Instances.SriovNetSupport.
StateReason entity.entity.asset.attribute.labels.key=instances_set_state_reason_code, entity.entity.asset.attribute.labels.value El valor se toma de Instances.StateReason.
StateReason.Code entity.entity.asset.attribute.labels.key=instances_set_state_reason_code, entity.entity.asset.attribute.labels.value El valor se toma de Instances.StateReason.Code.
StateReason.Message entity.entity.asset.attribute.labels.key=instances_set_state_reason_message, entity.entity.asset.attribute.labels.value El valor se toma de Instances.StateReason.Message.
SubnetID entity.entity.resource_ancestors.product_object_id, entity.entity.resource_ancestors.resource_type=SUBNET El valor se toma de Instances.SubnetID.
TagSet.Key entity.entity.asset.attribute.labels.key El valor se toma de Instances.TagSet.Key.
TagSet.Value entity.entity.asset.attribute.labels.value El valor se toma de Instances.TagSet.Value.
TpmSupport entity.entity.asset.attribute.labels.key=instances_set_tpm_support, entity.entity.asset.attribute.labels.value El valor se toma de Instances.TpmSupport.
UsageOperation entity.entity.asset.attribute.labels.key=instances_set_usage_operation, entity.entity.asset.attribute.labels.value El valor se toma de Instances.UsageOperation.
UsageOperationUpdateTime entity.entity.asset.attribute.labels.key=instances_set_usage_operation_update_time, entity.entity.asset.attribute.labels.value El valor se toma de Instances.UsageOperationUpdateTime.
VirtualizationType entity.entity.asset.attribute.labels.key=instances_set_virtualization_type, entity.entity.asset.attribute.labels.value El valor se toma de Instances.VirtualizationType.
VpcID entity.entity.resource_ancestors.product_object_id, entity.entity.resource_ancestors.resource_type=VPC_NETWORK El valor se toma de Instances.VpcID.
collection_time entity.metadata.collected_timestamp El valor se toma directamente del campo collection_time del registro sin procesar. Valor fijo establecido en el código fuente AMAZON_WEB_SERVICES. Se ha codificado como AMAZON_WEB_SERVICES para los tipos de recursos IMAGE, VOLUME, SUBNET, VPC_NETWORK, Instance Profile Arn, Capacity Reservation Arn, Elastic Interface Accelerator Arn y License Configuration Arn. Valor fijo establecido en el código fuente SERVER. Valor fijo establecido en el código fuente Amazon EC2. Valor fijo establecido en el código fuente AWS. Se asigna el valor ASSET si Instances.Placement.HostID está presente y no está vacío. Se asigna el valor EXECUTES si Instances.Placement.HostID está presente y no está vacío. Valor predefinido como ASSET.

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.