Raccogliere i log di AWS Redshift
Questo documento spiega come importare i log di AWS Redshift in Google Security Operations utilizzando Amazon S3.
Amazon Redshift è un servizio di data warehouse su cloud completamente gestito su scala di petabyte di Amazon Web Services. Consente di eseguire query e analisi rapide su grandi set di dati utilizzando strumenti basati su SQL e applicazioni di business intelligence. I log di Amazon Redshift registrano l'attività del database, inclusi i tentativi di autenticazione, le connessioni, le disconnessioni, le modifiche alle definizioni degli utenti e le query eseguite sul database. Questa integrazione utilizza la funzionalità di audit logging nativa di Amazon Redshift per distribuire i file di log a un bucket S3, che Google SecOps importa utilizzando un feed Amazon S3 V2.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un'istanza Google SecOps
- Accesso con privilegi alla Console di gestione AWS con autorizzazioni per gestire:
- Amazon Redshift (cluster, gruppi di parametri)
- Amazon S3 (bucket, policy dei bucket)
- AWS IAM (utenti, policy)
Configurare un bucket S3 per l'audit logging di Amazon Redshift
Amazon Redshift carica i file di log di controllo in un bucket S3. Devi configurare la policy del bucket S3 per consentire al servizio Amazon Redshift di scrivere i file di log.
Creare e configurare il bucket S3
- Crea un bucket Amazon S3 seguendo questa guida utente: Creare un bucket.
Salva il nome e la regione del bucket per riferimento futuro (ad es.
redshift-audit-logs-to-secops).Seleziona il bucket creato nella console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3.
Seleziona la scheda Autorizzazioni.
Nella sezione Policy del bucket, fai clic su Modifica.
Aggiungi la seguente policy del bucket (sostituisci
redshift-audit-logs-to-secopscon il nome del bucket):{ "Version": "2012-10-17", "Statement": [ { "Sid": "Put bucket policy needed for audit logging", "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::redshift-audit-logs-to-secops", "arn:aws:s3:::redshift-audit-logs-to-secops/*" ] } ] }Fai clic su Salva modifiche.
Abilitare il parametro del log di attività utente
Il log di connessione e il log utente vengono acquisiti automaticamente quando l'audit logging è abilitato. Per acquisire anche il log di attività utente (che registra ogni query prima che venga eseguita sul database), devi abilitare il parametro del database enable_user_activity_logging.
- Accedi alla console Amazon Redshift all'indirizzo https://console.aws.amazon.com/redshiftv2/.
- Nel menu di navigazione, vai a Configurazioni > Gestione dei carichi di lavoro.
- Seleziona il gruppo di parametri associato al cluster.
- Seleziona la scheda Parametri.
- Fai clic su Modifica parametri.
- Imposta il valore parametro enable_user_activity_logging su true.
Fai clic su Salva.
Abilitare l'audit logging di Amazon Redshift in S3
- Accedi alla console Amazon Redshift all'indirizzo https://console.aws.amazon.com/redshiftv2/.
- Nel menu di navigazione, seleziona Cluster, quindi il cluster che vuoi configurare.
- Seleziona la scheda Proprietà.
- Nel riquadro Configurazioni database, fai clic su Modifica, quindi seleziona Modifica audit logging.
- Nella pagina Modifica audit logging, seleziona Attiva.
- Per Destinazione log, seleziona Bucket S3.
- Per Bucket S3, seleziona il bucket che hai configurato (ad es.
redshift-audit-logs-to-secops). - (Facoltativo) Inserisci un prefisso della chiave S3 per organizzare i file di log all'interno del bucket (ad es.
audit-logs/). - Seleziona i log da esportare:
- Log di connessione : tentativi di autenticazione, connessioni e disconnessioni
- Log utente : modifiche alle definizioni degli utenti del database
- Log di attività utente : ogni query prima che venga eseguita sul database
- Fai clic su Salva modifiche.
Per ulteriori informazioni, consulta Audit logging del database nella Guida alla gestione di Amazon Redshift.
Configurare un utente IAM per Google SecOps
Google SecOps ha bisogno di un utente IAM con accesso in lettura al bucket S3 per importare i log di controllo esportati.
- Crea un utente seguendo questa guida 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 secret per riferimento futuro.
- Fai clic su Fine.
- Seleziona la scheda Autorizzazioni.
- Fai clic su Aggiungi autorizzazioni nella sezione Policy delle autorizzazioni.
- Seleziona Aggiungi autorizzazioni.
- Seleziona Collega policy direttamente.
- Cerca la policy AmazonS3FullAccess.
- Seleziona la policy.
- Fai clic su Avanti.
- Fai clic su Aggiungi autorizzazioni.
Configurare un feed in Google SecOps per importare i log di AWS Redshift
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo feed.
- Nella pagina successiva, fai clic su Configura un singolo feed.
- Inserisci un nome univoco per il nome del feed.
- Seleziona Amazon S3 V2 come Tipo di origine.
- Seleziona AWS Redshift come Tipo di log.
- Fai clic su Avanti e poi su Invia.
Specifica i valori per i seguenti campi:
- URI S3:
s3://redshift-audit-logs-to-secops/audit-logs/ - Opzione di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze
- Età massima del file: includi i file modificati nell'ultimo numero di giorni (il valore predefinito è 180 giorni)
- ID chiave di accesso: chiave di accesso utente con accesso al bucket S3
- Chiave di accesso secret: chiave secret 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
- URI S3:
Fai clic su Avanti e poi su Invia.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Funzione logica |
|---|---|---|
func_label |
additional.fields |
Unita |
lpclagg_label |
additional.fields |
Unita |
lpcltype_label |
additional.fields |
Unita |
msg |
metadata.description |
Mappata direttamente |
has_principal |
metadata.event_type |
Mappata: true → STATUS_UPDATE |
has_target_resource |
metadata.event_type |
Mappata: true → USER_RESOURCE_ACCESS |
has_user |
metadata.event_type |
Mappata: true → USER_UNCATEGORIZED |
column1 |
metadata.product_event_type |
Mappata direttamente |
requestID |
metadata.product_log_id |
Mappata direttamente |
column20 |
network.application_protocol_version |
Mappata direttamente |
column9 |
network.session_duration.seconds |
Rinominata/mappata |
column21 |
network.session_id |
Mappata direttamente |
xid |
network.session_id |
Mappata direttamente |
column11 |
network.tls.cipher |
Mappata direttamente |
column10 |
network.tls.version |
Mappata direttamente |
column16 |
principal.application |
Mappata direttamente |
column3 |
principal.asset.ip |
Unita |
log_event.src_ip |
principal.asset.ip |
Unita |
column3 |
principal.hostname |
Mappata direttamente |
column3 |
principal.ip |
Unita |
log_event.src_ip |
principal.ip |
Unita |
region |
principal.location.name |
Mappata direttamente |
column17 |
principal.platform_version |
Mappata direttamente |
column4 |
principal.port |
Mappata direttamente |
column5 |
principal.process.pid |
Mappata direttamente |
pid |
principal.process.pid |
Mappata direttamente |
accountID |
principal.user.userid |
Mappata direttamente |
user_id |
principal.user.userid |
Mappata direttamente |
authmethod_label |
security_result.detection_fields |
Unita |
compression_label |
security_result.detection_fields |
Unita |
driver_version_label |
security_result.detection_fields |
Unita |
iamauthguid_label |
security_result.detection_fields |
Unita |
mtu_label |
security_result.detection_fields |
Unita |
plugin_name_label |
security_result.detection_fields |
Unita |
ssl_compression_label |
security_result.detection_fields |
Unita |
ssl_expansion_label |
security_result.detection_fields |
Unita |
level |
security_result.severity |
Mappata: (?i)Info → INFORMATIONAL, (?i)Error → ERROR, (?i)Warning → MEDIUM |
file |
target.file.full_path |
Mappata direttamente |
expected_bucket_label |
target.resource.attribute.labels |
Unita |
expected_s3_prefix_label |
target.resource.attribute.labels |
Unita |
sql_query_label |
target.resource.attribute.labels |
Unita |
time_zone_label |
target.resource.attribute.labels |
Unita |
ClusterIdentifier |
target.resource.name |
Mappata direttamente |
column6 |
target.resource.name |
Mappata direttamente |
db |
target.resource.name |
Mappata direttamente |
column7 |
target.user.user_display_name |
Mappata direttamente |
user |
target.user.user_display_name |
Mappata direttamente |
| N/D | metadata.event_type |
Costante: USER_RESOURCE_ACCESS |
| N/D | security_result.severity |
Costante: INFORMATIONAL |
| N/D | target.resource.type |
Costante: DATABASE |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.