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 ] ]
Argomenti
- Schema supportato per i campi dei registri degli eventi CloudTrail
- Schema supportato per i campi dei record degli elementi di configurazione AWS Config
- Schema supportato per i campi dei registri delle prove AWS Audit Manager
- Schema supportato per i campi degli eventi esterni ad AWS
- Funzioni di aggregazione, condizioni e operatori join
- Funzioni supportate
- Supporto avanzato per query multi-tabella
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
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
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 di conversione della data |
---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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;