Raccogliere i log degli host AWS EC2
Questo documento spiega come integrare i log degli host AWS EC2 in Google Security Operations per il monitoraggio e l'analisi. L'integrazione prevede l'analisi e la mappatura dei log host EC2 nel modello Unified Data Model (UDM), l'esecuzione della trasformazione dei dati e la creazione di relazioni tra host e istanze EC2. I log forniscono informazioni preziose su istanze, proprietà host, tipi di istanza e metriche di rendimento che possono essere utilizzate per il monitoraggio della sicurezza, il controllo e la conformità.
Prima di iniziare
- Assicurati di avere un'istanza Google SecOps.
- Assicurati di disporre dell'accesso con privilegi ad AWS.
Configura AWS IAM e S3
- Crea un bucket Amazon S3 seguendo questa guida utente: Creazione di un bucket.
- Salva il Nome e la Regione del bucket per utilizzarli in un secondo momento.
- Crea un utente seguendo questa guida: Creazione di un utente IAM.
- Seleziona l'utente creato.
- Seleziona la scheda Credenziali di sicurezza.
- Fai clic su Crea chiave di accesso nella sezione Chiavi di accesso.
- Seleziona Servizio di terze parti come Caso d'uso.
- Fai clic su Avanti.
- (Facoltativo) Aggiungi un tag di descrizione.
- Fai clic su Crea chiave di accesso.
- Fai clic su Scarica file CSV per salvare la chiave di accesso e la chiave di accesso segreta per un utilizzo successivo.
- Fai clic su Fine.
- Seleziona la scheda Autorizzazioni.
- Fai clic su Aggiungi autorizzazioni nella sezione Norme relative alle autorizzazioni.
- Seleziona Aggiungi autorizzazioni.
- Seleziona Collega direttamente i criteri.
- Cerca e seleziona il criterio AmazonS3FullAccess.
- Fai clic su Avanti.
- Fai clic su Aggiungi autorizzazioni.
Configura CloudTrail per AWS KMS
- Accedi alla console di gestione AWS.
- Nella barra di ricerca, digita e seleziona CloudTrail dall'elenco dei servizi.
- Fai clic su Crea percorso.
- Fornisci un nome della traccia, ad esempio
EC2-Activity-Trail
. - Seleziona la casella di controllo Attiva per tutti gli account della mia organizzazione.
- Digita l'URI del bucket S3 creato in precedenza (il formato deve essere
s3://your-log-bucket-name/
) o crea un nuovo bucket S3. - Se SSE-KMS è abilitato, fornisci un nome per l'alias KMS AWS o scegli una chiave KMS AWS esistente.
- Puoi lasciare invariate le altre impostazioni predefinite.
- Fai clic su Avanti.
- Seleziona Eventi di gestione ed Eventi di dati in Tipi di eventi per acquisire l'attività dell'host EC2.
- Fai clic su Avanti.
- Rivedi le impostazioni in Rivedi e crea.
- Fai clic su Crea percorso.
- (Facoltativo) Se hai creato un nuovo bucket, continua con la seguente procedura:
- Vai a S3.
- Identifica e seleziona il bucket di log appena creato.
- Seleziona la cartella AWSLogs.
- Fai clic su Copia URI S3 e salvalo.
Configura un feed in Google SecOps per importare gli host AWS EC2
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo.
- Nel campo Nome feed, inserisci un nome per il feed, ad esempio AWS EC2 Hosts Logs.
- Seleziona Amazon S3 come Tipo di origine.
- Seleziona Host AWS EC2 come Tipo di log.
- Fai clic su Avanti.
Specifica i valori per i seguenti parametri di input:
- Region (Regione): la regione in cui si trova il bucket Amazon S3.
- URI S3: l'URI del bucket.
s3://your-log-bucket-name/
- Sostituisci
your-log-bucket-name
con il nome effettivo del bucket.
- Sostituisci
- L'URI è una: seleziona Directory o Directory che include sottodirectory.
Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
ID chiave di accesso: la chiave di accesso utente con accesso al bucket S3.
Chiave di accesso segreta: la chiave segreta dell'utente con accesso al bucket S3.
Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.
Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.
Fai clic su Avanti.
Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logic |
---|---|---|
AllocationTime |
entity.metadata.creation_timestamp |
Il campo AllocationTime viene analizzato come timestamp e mappato al campo creation_timestamp . Il parser tenta vari formati (aaaa-MM-gg HH:mm:ss, RFC 3339, UNIX, ISO8601). |
AllowsMultipleInstanceTypes |
entity.entity.asset.attribute.labels.value |
Il valore di AllowsMultipleInstanceTypes del log non elaborato viene utilizzato come valore di un'etichetta. La chiave per questa etichetta è impostata su allows_multiple_instance_types . |
AutoPlacement |
entity.entity.asset.attribute.labels.value |
Il valore di AutoPlacement del log non elaborato viene utilizzato come valore di un'etichetta. La chiave per questa etichetta è impostata su auto_placement . |
AvailabilityZone |
entity.entity.asset.attribute.cloud.availability_zone |
Il campo AvailabilityZone è mappato direttamente al campo availability_zone . |
AvailabilityZoneID |
entity.entity.asset.attribute.labels.value |
Il valore di AvailabilityZoneID del log non elaborato viene utilizzato come valore di un'etichetta. La chiave per questa etichetta è impostata su availability_zone_id . |
AvailableCapacity.AvailableInstanceCapacity.AvailableCapacity |
entity.entity.asset.attribute.labels.value |
Il valore di AvailableCapacity.AvailableInstanceCapacity.AvailableCapacity (o AvailableCapacity.Instance.Available dopo la ridenominazione) viene convertito in una stringa e utilizzato come valore di un'etichetta. Il tasto è impostato su available_instance_capacity_available_capacity . |
AvailableCapacity.AvailableInstanceCapacity.InstanceType |
entity.entity.asset.attribute.labels.value |
Il valore di AvailableCapacity.AvailableInstanceCapacity.InstanceType (o AvailableCapacity.Instance.Type dopo la ridenominazione) viene utilizzato come valore di un'etichetta. Il tasto è impostato su available_instance_capacity_instance_type . |
AvailableCapacity.AvailableInstanceCapacity.TotalCapacity |
entity.entity.asset.attribute.labels.value |
Il valore di AvailableCapacity.AvailableInstanceCapacity.TotalCapacity (o AvailableCapacity.Instance.Total dopo la ridenominazione) viene convertito in una stringa e utilizzato come valore di un'etichetta. Il tasto è impostato su total_capacity . |
AvailableCapacity.AvailableVCpus |
entity.entity.asset.attribute.labels.value |
Il valore di AvailableCapacity.AvailableVCpus (o AvailableCapacity.VCPUs dopo la ridenominazione) viene convertito in una stringa e utilizzato come valore di un'etichetta. Il tasto è impostato su available_v_cpus . |
ClientToken |
entity.entity.asset.attribute.labels.value |
Il valore di ClientToken del log non elaborato viene utilizzato come valore di un'etichetta. La chiave per questa etichetta è impostata su client_token . |
HostID |
entity.metadata.product_entity_id |
Il campo HostID (o ID dopo la ridenominazione) è mappato direttamente al campo product_entity_id . |
HostID |
entity.entity.asset.asset_id |
Il campo HostID (o ID dopo la ridenominazione) è mappato direttamente al campo asset_id . |
HostMaintenance |
entity.entity.asset.attribute.labels.value |
Il valore di HostMaintenance (o Maintenance dopo la ridenominazione) del log non elaborato viene utilizzato come valore di un'etichetta. La chiave per questa etichetta è impostata su host_maintenance . |
HostProperties.Cores |
entity.entity.asset.hardware.cpu_number_cores |
Il valore di HostProperties.Cores viene convertito in un numero intero senza segno e mappato su cpu_number_cores . |
HostProperties.InstanceFamily |
entity.entity.asset.attribute.labels.value |
Il valore di HostProperties.InstanceFamily del log non elaborato viene utilizzato come valore di un'etichetta. La chiave per questa etichetta è impostata su host_properties_instance_family . |
HostProperties.InstanceType |
entity.entity.asset.attribute.labels.value |
Il valore di HostProperties.InstanceType del log non elaborato viene utilizzato come valore di un'etichetta. La chiave per questa etichetta è impostata su host_properties_instance_type . |
HostProperties.Sockets |
entity.entity.asset.attribute.labels.value |
Il valore di HostProperties.Sockets viene convertito in una stringa e utilizzato come valore di un'etichetta. Il tasto è impostato su host_properties_sockets . |
HostProperties.TotalVCpus |
entity.entity.asset.attribute.labels.value |
Il valore di HostProperties.TotalVCpus (o HostProperties.TotalVCPUs dopo la ridenominazione) viene convertito in una stringa e utilizzato come valore di un'etichetta. Il tasto è impostato su host_properties_total_v_cpus . |
HostRecovery |
entity.entity.asset.attribute.labels.value |
Il valore di HostRecovery (o Recovery dopo la ridenominazione) del log non elaborato viene utilizzato come valore di un'etichetta. La chiave per questa etichetta è impostata su host_recovery . |
HostReservationID |
entity.entity.asset.attribute.labels.value |
Il valore di HostReservationID (o ReservationID dopo la ridenominazione) del log non elaborato viene utilizzato come valore di un'etichetta. La chiave per questa etichetta è impostata su host_reservation_id . |
MemberOfServiceLinkedResourceGroup |
entity.entity.asset.attribute.labels.value |
Il valore di MemberOfServiceLinkedResourceGroup viene convertito in una stringa e utilizzato come valore di un'etichetta. Il tasto è impostato su member_of_service_linked_resource_group . |
OwnerID |
entity.entity.asset.attribute.labels.value |
Il valore di OwnerID del log non elaborato viene utilizzato come valore di un'etichetta. La chiave per questa etichetta è impostata su owner_id . |
ReleaseTime |
entity.entity.asset.attribute.labels.value |
Il valore di ReleaseTime del log non elaborato viene utilizzato come valore di un'etichetta. La chiave per questa etichetta è impostata su release_time . |
State |
entity.entity.asset.attribute.labels.value |
Il valore di State del log non elaborato viene utilizzato come valore di un'etichetta. La chiave per questa etichetta è impostata su state . |
TagSet |
entity.entity.asset.attribute.labels |
Viene eseguita l'iterazione dell'array TagSet e Key e Value di ogni tag vengono utilizzati rispettivamente come chiave e valore di un'etichetta. Il valore AMAZON_WEB_SERVICES viene assegnato a questo campo dal parser. collection_time del log non elaborato viene mappato al campo collected_timestamp . Il valore ASSET viene assegnato a questo campo dal parser. Il valore AWS EC2 HOSTS viene assegnato a questo campo dal parser. Il valore AWS viene assegnato a questo campo dal parser. Le relazioni sono derivate dai campi Instances e OutpostArn , ma questi campi non sono mappati direttamente all'oggetto IDM. La logica del parser crea oggetti di relazione in base a questi campi e li unisce all'array relations . |
collection_time |
entity.metadata.collected_timestamp |
Il collection_time del log viene utilizzato come collected_timestamp dell'evento. |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.