Registrazione di log delle chiamate API dati di Amazon RDS con AWS CloudTrail
API dati RDS (API dati) è integrato con AWS CloudTrail, un servizio che offre un record delle operazioni eseguite da un utente, un ruolo o un servizio AWS nell’API dati. CloudTrail acquisisce tutte le chiamate API per l’API dati, come gli eventi, incluse le chiamate dalla console Amazon RDS e dalle chiamate di codice alle operazioni dell’API dati. Se viene creato un trail, è possibile abilitare la distribuzione continua di eventi CloudTrail in un bucket Amazon S3, inclusi gli eventi per l’API dati. Utilizzando i dati raccolti da CloudTrail, è possibile stabilire molte informazioni. Queste informazioni includono la richiesta che è stata fatta all’API dati, l'indirizzo IP da cui è stata effettuata la richiesta, chi ha effettuato la richiesta, quando è stata fatta e ulteriori dettagli.
Per ulteriori informazioni su CloudTrail, consulta la Guida per l'utente di AWS CloudTrail.
Utilizzo delle informazioni dell'API dati in CloudTrail
CloudTrail è abilitato sull'account AWS al momento della sua creazione. Quando si verifica un’attività supportata (eventi di gestione) nell’API dati, questa viene registrata in un evento CloudTrail insieme ad altri eventi di servizio AWS in Cronologia eventi. È possibile visualizzare, cercare e scaricare gli eventi di gestione recenti nell’account AWS. Per ulteriori informazioni, consulta Working with CloudTrail Event history nella Guida per l'utente di AWS CloudTrail.
Per una registrazione continua degli eventi nell'account AWS, inclusi gli eventi relativi all'API dati, crea un trail. Un trail consente a CloudTrail di distribuire i file di log in un bucket Amazon S3. Per impostazione predefinita, quando si crea un trail nella console, il trail sarà valido in tutte le Regioni AWS. Il percorso registra gli eventi da tutte le regioni AWSnella partizione AWS e distribuisce i file di log nel bucket Simple Storage Service (Amazon S3) specificato. Inoltre, è possibile configurare altri servizi AWS per analizzare con maggiore dettaglio e usare i dati evento raccolti nei log CloudTrail. Per ulteriori informazioni, consulta gli argomenti seguenti nella Guida per l'utente di AWS CloudTrail:
Tutte le operazioni dell’API dati vengono registrate da CloudTrail e documentate nella Documentazione di riferimento API del servizio dati Amazon RDS. Ad esempio, tutte le chiamate alle operazioni BatchExecuteStatement, BeginTransaction, CommitTransaction e ExecuteStatement generano voci nei file di log di CloudTrail.
Ogni evento o voce di log contiene informazioni sull'utente che ha generato la richiesta. Le informazioni di identità consentono di determinare quanto segue:
-
Se la richiesta è stata effettuata con credenziali utente o root.
-
Se la richiesta è stata effettuata con le credenziali di sicurezza temporanee per un ruolo o un utente federato.
-
Se la richiesta è stata effettuata da un altro servizio AWS.
Per ulteriori informazioni, consulta Elemento CloudTrail userIdentity.
Esclusione di eventi API dati da un trail AWS CloudTrail
La maggior parte degli utenti di API dati si basa sugli eventi in un percorso AWS CloudTrail per fornire un record delle operazioni di API dati. I dati degli eventi non rivelano il nome del database, il nome dello schema o le istruzioni SQL nelle richieste all’API dati. Tuttavia, sapere quale utente ha effettuato un tipo di chiamata su uno specifico cluster di database in un determinato momento può aiutare a rilevare modelli di accesso anomali.
Inclusione di eventi API dati in un trail AWS CloudTrail
Per Aurora PostgreSQL Serverless v2 e i database con provisioning, le seguenti operazioni dell’API dati vengono registrate in AWS CloudTrail come eventi di dati. Gli eventi di dati sono operazioni API del piano dati con volumi elevati di cui CloudTrail non registra log per impostazione predefinita. Per gli eventi di dati sono previsti costi aggiuntivi. Per ulteriori informazioni sui prezzi di CloudTrail, consulta Prezzi di AWS CloudTrail
È possibile utilizzare la console CloudTrail, AWS CLI o le operazioni dell’API CloudTrail per registrare log di queste operazioni dell’API dati. Nella console CloudTrail, scegli API dati RDS - Cluster database per il tipo di evento dati. Per ulteriori informazioni, consulta Registrazione degli eventi di dati con AWS Management Console nella Guida per l’utente di AWS CloudTrail.
Utilizzando AWS CLI, esegui il comando aws cloudtrail put-event-selectors per registrare log di queste operazioni dell’API dati per il trail. Per registrare log di tutti gli eventi API dati nei cluster di database, specifica AWS::RDS::DBCluster per il tipo di risorsa. L’esempio seguente registra tutti gli eventi API dati nei cluster di database. Per ulteriori informazioni, consulta Registrazione degli eventi di dati con AWS Command Line Interface nella Guida per l’utente di AWS CloudTrail.
aws cloudtrail put-event-selectors --trail-nametrail_name--advanced-event-selectors \ '{ "Name": "RDS Data API Selector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::RDS::DBCluster" ] } ] }'
È possibile configurare selettori di eventi avanzati per filtrare ulteriormente i campi readOnly, eventName, e resources.ARN. Per ulteriori informazioni su questi campi, consulta AdvancedFieldSelector.
Esclusione di eventi API dati da un trail AWS CloudTrail (solo Aurora Serverless v1)
Per Aurora Serverless v1, gli eventi API dati sono eventi di gestione. Per impostazione predefinita, tutti gli eventi API dati sono inclusi in un trail AWS CloudTrail. Tuttavia, poiché l’API dati può generare un numero elevato di eventi, si potrebbe voler escludere questi eventi da un trail CloudTrail. L’impostazione Escludi eventi API dei dati Amazon RDS esclude tutti gli eventi API dati dal trail. Non è possibile escludere eventi API dati specifici.
Per escludere gli eventi API dati da un percorso, procedi nel seguente modo:
-
Nella console CloudTrail, scegli l'impostazione Escludi eventi API dati di Amazon RDS durante la creazione o l’aggiornamento di un percorso.
-
Nell'API CloudTrail, utilizza l'operazione PutEventSelectors. Se si utilizzano selettori di eventi avanzati, è possibile escludere gli eventi API dati impostando il campo
eventSourcesu un valore diverso dardsdata.amazonaws.com. Se si utilizzano selettori di eventi di base, è possibile escludere gli eventi API dati impostando il valore dell’attributoExcludeManagementEventSourcessurdsdata.amazonaws.com. Per ulteriori informazioni, consulta Registrazione degli eventi con AWS Command Line Interface nella Guida per l’utente di AWS CloudTrail.
avvertimento
L'esclusione di eventi API dati da un log CloudTrail può oscurare le operazioni delle API dati. Presta attenzione quando concedi alle entità principali l'autorizzazione cloudtrail:PutEventSelectors necessaria per eseguire questa operazione.
È possibile disattivare questa esclusione in qualsiasi momento modificando l'impostazione della console o i selettori di eventi per un percorso. Il percorso inizierà quindi a registrare gli eventi API dati. Tuttavia, non è possibile ripristinare gli eventi API dati che si sono verificati mentre era in atto l'esclusione.
Quando si escludono eventi API dati utilizzando la console o l'API, anche l'operazione API PutEventSelectors di CloudTrail risultante viene registrata nei log CloudTrail. Se gli eventi dell’API dati non vengono visualizzati nei log CloudTrail, ricerca un evento PutEventSelectors con l’attributo ExcludeManagementEventSources impostato su rdsdata.amazonaws.com.
Per ulteriori informazioni, consulta Registrazione di eventi di gestione per i percorsi nella Guida per l'utente di AWS CloudTrail.
Informazioni sulle voci dei file di registro dell'API dei dati
Un percorso è una configurazione che consente la distribuzione di eventi come file di log in un bucket Amazon S3 specificato. I file di log di CloudTrail possono contenere una o più voci di log. Un evento rappresenta una singola richiesta da un'origine e include informazioni sull'operazione richiesta, data e ora dell'operazione, parametri della richiesta e così via. I file di log CloudTrail non sono una traccia dello stack ordinata delle chiamate API pubbliche e di conseguenza non devono apparire in base a un ordine specifico.
Aurora PostgreSQL Serverless v2 e database con provisioning
L’esempio seguente mostra una voce di log di CloudTrail che illustra l’operazione ExecuteStatement per Aurora PostgreSQL Serverless v2 e i database con provisioning. Per questi database, tutti gli eventi API dati sono eventi di dati in cui l’origine dell’evento è rdsdataapi.amazonaws.com e il tipo di evento è Rds Data Service.
{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::123456789012:user/johndoe", "accountId": "123456789012", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "userName": "johndoe" }, "eventTime": "2019-12-18T00:49:34Z", "eventSource": "rdsdataapi.amazonaws.com", "eventName": "ExecuteStatement", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "aws-cli/1.16.102 Python/3.7.2 Windows/10 botocore/1.12.92", "requestParameters": { "continueAfterTimeout": false, "database": "**********", "includeResultMetadata": false, "parameters": [], "resourceArn": "arn:aws:rds:us-east-1:123456789012:cluster:my-database-1", "schema": "**********", "secretArn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:dataapisecret-ABC123", "sql": "**********" }, "responseElements": null, "requestID": "6ba9a36e-b3aa-4ca8-9a2e-15a9eada988e", "eventID": "a2c7a357-ee8e-4755-a0d0-aed11ed4253a", "eventType": "Rds Data Service", "recipientAccountId": "123456789012" }
Aurora Serverless v1
L’esempio seguente mostra come viene visualizzata la voce di log CloudTrail dell’esempio precedente per Aurora Serverless v1. Per Aurora Serverless v1, tutti gli eventi sono eventi di gestione in cui l’origine dell’evento è rdsdata.amazonaws.com e il tipo di evento è AwsApiCall.
{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::123456789012:user/johndoe", "accountId": "123456789012", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "userName": "johndoe" }, "eventTime": "2019-12-18T00:49:34Z", "eventSource": "rdsdata.amazonaws.com", "eventName": "ExecuteStatement", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "aws-cli/1.16.102 Python/3.7.2 Windows/10 botocore/1.12.92", "requestParameters": { "continueAfterTimeout": false, "database": "**********", "includeResultMetadata": false, "parameters": [], "resourceArn": "arn:aws:rds:us-east-1:123456789012:cluster:my-database-1", "schema": "**********", "secretArn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:dataapisecret-ABC123", "sql": "**********" }, "responseElements": null, "requestID": "6ba9a36e-b3aa-4ca8-9a2e-15a9eada988e", "eventID": "a2c7a357-ee8e-4755-a0d0-aed11ed4253a", "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }