Vincoli SQL di CloudTrail Lake - AWS CloudTrail

Vincoli SQL di CloudTrail Lake

Le query di CloudTrail Lake sono stringhe SQL. In questa sezione viene descritto il linguaggio SQL consentito per la creazione delle query.

Sono consentite soltanto istruzioni SELECT. Nessuna stringa di query può modificare o alterare i dati. L'API limita l'ambito di un'istruzione SELECT alla struttura degli argomenti mostrata nel modello seguente. Le parole chiave, gli operatori e le funzioni non descritti in questa sezione non sono consentiti. L'ID dell'archivio di dati degli eventi, ossia la parte dell'ID dell'ARN dell'archivio stesso, è il valore valido per le tabelle.

SELECT [ DISTINCT ] columns [ Aggregate ] [ FROM Tables event_data_store_ID] [ WHERE columns [ Conditions ] ] [ GROUP BY columns [ DISTINCT | Aggregate ] ] [ HAVING columns [ Aggregate | Conditions ] ] [ ORDER BY columns [ Aggregate | ASC | DESC | NULLS | FIRST | LAST ] [ LIMIT [ INT ] ]

Schema supportato per i campi dei registri degli eventi CloudTrail

Di seguito è riportato lo schema SQL valido per i campi dei registri degli eventi di CloudTrail.

[ { "Name": "eventversion", "Type": "string" }, { "Name": "useridentity", "Type": "struct<type:string,principalid:string,arn:string,accountid:string,accesskeyid:string, username:string,sessioncontext:struct<attributes:struct<creationdate:timestamp, mfaauthenticated:string>,sessionissuer:struct<type:string,principalid:string,arn:string, accountid:string,username:string>,webidfederationdata:struct<federatedprovider:string, attributes:map<string,string>>,sourceidentity:string,ec2roledelivery:string, ec2issuedinvpc:string>,invokedby:string,identityprovider:string>" }, { "Name": "eventtime", "Type": "timestamp" }, { "Name": "eventsource", "Type": "string" }, { "Name": "eventname", "Type": "string" }, { "Name": "awsregion", "Type": "string" }, { "Name": "sourceipaddress", "Type": "string" }, { "Name": "useragent", "Type": "string" }, { "Name": "errorcode", "Type": "string" }, { "Name": "errormessage", "Type": "string" }, { "Name": "requestparameters", "Type": "map<string,string>" }, { "Name": "responseelements", "Type": "map<string,string>" }, { "Name": "additionaleventdata", "Type": "map<string,string>" }, { "Name": "requestid", "Type": "string" }, { "Name": "eventid", "Type": "string" }, { "Name": "readonly", "Type": "boolean" }, { "Name": "resources", "Type": "array<struct<accountid:string,type:string,arn:string,arnprefix:string>>" }, { "Name": "eventtype", "Type": "string" }, { "Name": "apiversion", "Type": "string" }, { "Name": "managementevent", "Type": "boolean" }, { "Name": "recipientaccountid", "Type": "string" }, { "Name": "sharedeventid", "Type": "string" }, { "Name": "annotation", "Type": "string" }, { "Name": "vpcendpointid", "Type": "string" }, { "Name": "serviceeventdetails", "Type": "map<string,string>" }, { "Name": "addendum", "Type": "map<string,string>" }, { "Name": "edgedevicedetails", "Type": "map<string,string>" }, { "Name": "insightdetails", "Type": "map<string,string>" }, { "Name": "eventcategory", "Type": "string" }, { "Name": "tlsdetails", "Type": "struct<tlsversion:string,ciphersuite:string,clientprovidedhostheader:string>" }, { "Name": "sessioncredentialfromconsole", "Type": "string" }, { "Name": "eventjson", "Type": "string" } { "Name": "eventjsonchecksum", "Type": "string" } ]

Schema supportato per i campi dei record degli elementi di configurazione AWS Config

Di seguito è riportato lo schema SQL valido per i campi dei registri degli elementi di configurazione. Per gli elementi di configurazione, il valore di eventcategory è ConfigurationItem e il valore di eventtype è AwsConfigurationItem.

[ { "Name": "eventversion", "Type": "string" }, { "Name": "eventcategory", "Type": "string" }, { "Name": "eventtype", "Type": "string" }, "Name": "eventid", "Type": "string" }, { "Name": "eventtime", "Type": "timestamp" }, { "Name": "awsregion", "Type": "string" }, { "Name": "recipientaccountid", "Type": "string" }, { "Name": "addendum", "Type": "map<string,string>" }, { "Name": "eventdata", "Type": "struct<configurationitemversion:string,configurationitemcapturetime: string,configurationitemstatus:string,configurationitemstateid:string,accountid:string, resourcetype:string,resourceid:string,resourcename:string,arn:string,awsregion:string, availabilityzone:string,resourcecreationtime:string,configuration:map<string,string>, supplementaryconfiguration:map<string,string>,relatedevents:string, relationships:struct<name:string,resourcetype:string,resourceid:string, resourcename:string>,tags:map<string,string>>" } ]

Schema supportato per i campi dei registri delle prove AWS Audit Manager

Di seguito è riportato lo schema SQL valido per i campi dei registri delle prove Audit Manager. Per i campi dei record di prova di Audit Manager, il valore di eventcategory è Evidence e il valore di eventtype è AwsAuditManagerEvidence. Per ulteriori informazioni sull'aggregazione delle prove in CloudTrail Lake tramite Audit Manager, consulta Evidence finder (Individuazione delle prove) nella Guida per l'utente di AWS Audit Manager.

[ { "Name": "eventversion", "Type": "string" }, { "Name": "eventcategory", "Type": "string" }, { "Name": "eventtype", "Type": "string" }, "Name": "eventid", "Type": "string" }, { "Name": "eventtime", "Type": "timestamp" }, { "Name": "awsregion", "Type": "string" }, { "Name": "recipientaccountid", "Type": "string" }, { "Name": "addendum", "Type": "map<string,string>" }, { "Name": "eventdata", "Type": "struct<attributes:map<string,string>,awsaccountid:string,awsorganization:string, compliancecheck:string,datasource:string,eventname:string,eventsource:string, evidenceawsaccountid:string,evidencebytype:string,iamid:string,evidenceid:string, time:timestamp,assessmentid:string,controlsetid:string,controlid:string, controlname:string,controldomainname:string,frameworkname:string,frameworkid:string, service:string,servicecategory:string,resourcearn:string,resourcetype:string, evidencefolderid:string,description:string,manualevidences3resourcepath:string, evidencefoldername:string,resourcecompliancecheck:string>" } ]

Schema supportato per i campi degli eventi esterni ad AWS

Nota

Attualmente, puoi registrare gli eventi delle attività da eventi esterni ad AWS in tutte le Regioni AWS commerciali supportate da CloudTrail Lake, con l'eccezione di me-central-1. Per ulteriori informazioni sulle Regioni supportate da CloudTrail Lake, consulta la pagina Regioni supportate da CloudTrail Lake.

Di seguito è riportato lo schema SQL valido per gli eventi esterni ad AWS. Per gli eventi esterni ad AWS, il valore di eventcategory è ActivityLog e il valore di eventtype è ActivityAuditLog.

[ { "Name": "eventversion", "Type": "string" }, { "Name": "eventcategory", "Type": "string" }, { "Name": "eventtype", "Type": "string" }, "Name": "eventid", "Type": "string" }, { "Name": "eventtime", "Type": "timestamp" }, { "Name": "awsregion", "Type": "string" }, { "Name": "recipientaccountid", "Type": "string" }, { "Name": "addendum", "Type": "struct<reason:string,updatedfields:string,originalUID:string,originaleventid:string>" }, { "Name": "metadata", "Type": "struct<ingestiontime:string,channelarn:string>" }, { "Name": "eventdata", "Type": "struct<version:string,useridentity:struct<type:string, principalid:string,details:map<string,string>>,useragent:string,eventsource:string, eventname:string,eventtime:string,uid:string,requestparameters:map<string,string>>, responseelements":map<string,string>>,errorcode:string,errormssage:string,sourceipaddress:string, recipientaccountid:string,additionaleventdata":map<string,string>>" } ]

Funzioni di aggregazione, condizioni e operatori join

Di seguito sono elencate le funzioni Aggregate consentite.

SUM MIN MAX AVG COUNT

Di seguito sono elencati gli operatori Condition consentiti.

AND OR IN NOT IS (NOT) NULL LIKE < > <= >= <> != ( conditions ) #parenthesised conditions

Di seguito sono elencati gli operatori JOIN consentiti. Per ulteriori informazioni sull'esecuzione di query multi-tabella, consulta Supporto avanzato per query multi-tabella.

UNION UNION ALL EXCEPT INTERSECT LEFT JOIN RIGHT JOIN INNER JOIN

Funzioni supportate

Di seguito sono riportate le funzioni supportate per le query CloudTrail Lake. Per descrizioni ed esempi, consultare JSON Functions and Operators (Funzioni e operatori JSON) sul sito Web della documentazione di Presto 0.266.

Funzione
element_at(Mappa | Array, Oggetto | numero) ➝ Oggetto
cardinality(Mappa | Array) ➝ BigInt
funzioni di conversione della data (vedi tabella seguente)
map_values(Mappa) ➝ Array(Oggetto)
map_keys(Mappa) ➝ Array (Oggetto)
contains(array, oggetto) ➝ booleano
array_distinct(array) ➝ array
array_max(array) ➝ Oggetto, array_min(array)➝ Oggetto
slice(array, inizio, lunghezza) ➝ array
json_parse(stringa) ➝ json
is_json_scalar(json) ➝ booleano
json_extract(json, stringa) ➝ Json
json_extract_scalar(json, stringa) ➝ stringa
json_format(json) ➝ stringa
json_array_contains(json_array, oggetto) ➝ booleano
json_array_get(json_array, indice) ➝ json
json_array_length(json_array)➝ bigInt

Funzioni di conversione della data supportate

Per ulteriori informazioni sulle funzioni di data e ora supportate, consultare Date and Time Functions and Operators (Funzioni e operatori di data e ora) sul sito Web della documentazione di Presto 0.266.

Funzioni di conversione della data

date

date_trunc

day

day_of_month

day_of_week

day_of_year

dow

doy

hour

millisecond

minute

month

quarter

second

week

week_of_year

year

year_of_week

yow

Supporto avanzato per query multi-tabella

CloudTrail Lake supporta un linguaggio di query avanzato su più archivi dati di eventi. Sono supportate solo query che non includono sottoquery.

Per eseguire la query, utilizza il comando start-query nella AWS CLI. Di seguito è riportato un esempio, che utilizza una delle query di esempio in questa sezione.

aws cloudtrail start-query --query-statement "Select eventId, eventName from EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE UNION Select eventId, eventName from EXAMPLEg741-6y1x-9p3v-bnh6iEXAMPLE UNION ALL Select eventId, eventName from EXAMPLEb529-4e8f9l3d-6m2z-lkp5sEXAMPLE ORDER BY eventId LIMIT 10;"

La risposta è una stringa QueryId. Per ottenere lo stato di una query, esegui describe-query utilizzando il valore QueryId restituito da start-query. Se la query ha esito positivo, è possibile eseguire get-query-results per ottenere i risultati.

UNION|UNION ALL|EXCEPT|INTERSECT

Questa versione aggiunge query multi-tabella o query che è possibile eseguire su più archivi dati di eventi. Di seguito è riportata una query di esempio che utilizza UNION e UNION ALL per trovare gli eventi in base all'ID e al nome dell'evento in tre diversi archivi dati di eventi, EDS1, EDS2 ed EDS3. I risultati vengono prima selezionati dall'archivio dati di ciascun evento, quindi i risultati vengono concatenati, ordinati per ID evento e limitati a dieci eventi.

Select eventId, eventName from EDS1 UNION Select eventId, eventName from EDS2 UNION ALL Select eventId, eventName from EDS3 ORDER BY eventId LIMIT 10;

LEFT|RIGHT|INNER JOIN

Questa versione aggiunge query multi-tabella o query che è possibile eseguire su più archivi dati di eventi. Di seguito è riportata una query di esempio che utilizza LEFT JOIN per trovare tutti gli eventi di un archivio dati di eventi denominato eds2, mappato a edsB, che corrispondono a quelli in un archivio dati di eventi primario (a sinistra), edsA. Gli eventi restituiti si verificano entro il 1° gennaio 2020 compreso e vengono restituiti solo i nomi degli eventi.

SELECT edsA.eventName, edsB.eventName, element_at(edsA.map, 'test') FROM eds1 as edsA LEFT JOIN eds2 as edsB ON edsA.eventId = edsB.eventId WHERE edsA.eventtime <= '2020-01-01' ORDER BY edsB.eventName;