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 degli host EC2 al modello UDM (Unified Data Model), l'esecuzione della trasformazione dei dati e la creazione di relazioni tra host ed istanze EC2. I log forniscono informazioni preziose su istanze, proprietà host, tipi di istanze e metriche sul 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 dell'utente: Creazione di un bucket.
- Salva Nome e Regione del bucket per utilizzarli in un secondo momento.
- Crea un utente seguendo questa guida dell'utente: Creare 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 utilizzarle in un secondo momento.
- 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 AWS Management Console.
- Nella barra di ricerca, digita e seleziona CloudTrail dall'elenco dei servizi.
- Fai clic su Crea percorso.
- Fornisci un nome del percorso, 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 AWS KMS o scegli una chiave AWS KMS esistente.
- Puoi lasciare invariate le altre impostazioni.
- Fai clic su Avanti.
- Seleziona Eventi di gestione e Eventi relativi ai 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 procedura seguente:
- 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 Log host AWS EC2.
- 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:
- 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.
Rivedi la configurazione del nuovo feed nella schermata Concludi e poi fai clic su Invia.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logica |
---|---|---|
AllocationTime |
entity.metadata.creation_timestamp |
Il campo AllocationTime viene analizzato come timestamp e mappato al campo creation_timestamp . L'analizzatore tenta vari formati (aaaa-MM-gg HH:mm:ss, RFC 3339, UNIX, ISO8601). |
AllowsMultipleInstanceTypes |
entity.entity.asset.attribute.labels.value |
Il valore di AllowsMultipleInstanceTypes dal 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 dal 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 dal 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. La chiave è impostata 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. La chiave è impostata 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. La chiave è impostata 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. La chiave è impostata su available_v_cpus . |
ClientToken |
entity.entity.asset.attribute.labels.value |
Il valore di ClientToken dal 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) dal 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 non firmato e mappato a cpu_number_cores . |
HostProperties.InstanceFamily |
entity.entity.asset.attribute.labels.value |
Il valore di HostProperties.InstanceFamily dal 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 dal 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. La chiave è impostata 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. La chiave è impostata su host_properties_total_v_cpus . |
HostRecovery |
entity.entity.asset.attribute.labels.value |
Il valore di HostRecovery (o Recovery dopo la ridenominazione) dal 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) dal 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. La chiave è impostata su member_of_service_linked_resource_group . |
OwnerID |
entity.entity.asset.attribute.labels.value |
Il valore di OwnerID dal 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 dal 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 dal log non elaborato viene utilizzato come valore di un'etichetta. La chiave per questa etichetta è impostata su state . |
TagSet |
entity.entity.asset.attribute.labels |
L'array TagSet viene sottoposto a un'iterazione 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 dall'analizzatore. Il valore collection_time del log non elaborato viene mappato al campo collected_timestamp . Il valore ASSET viene assegnato a questo campo dall'analizzatore. Il valore AWS EC2 HOSTS viene assegnato a questo campo dall'analizzatore. Il valore AWS viene assegnato a questo campo dall'analizzatore. 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 nell'array relations . |
collection_time |
entity.metadata.collected_timestamp |
Il collection_time del log viene utilizzato come collected_timestamp dell'evento. |
Modifiche
2024-01-31
- È stato aggiunto il supporto del nuovo schema.
2023-12-14
- Parser appena creato.
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.