Registrazione dei log con CloudTrail - Amazon Redshift

Amazon Redshift non supporterà più la creazione di nuove UDF Python a partire dal 1º novembre 2025. Se desideri utilizzare le UDF Python, creale prima di tale data. Le UDF Python esistenti continueranno a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog.

Registrazione dei log con CloudTrail

Amazon Redshift, la condivisione dei dati, Amazon Redshift Serverless, l'API dati di Amazon Redshift e l'editor di query v2 sono tutti integrati con AWS CloudTrail. CloudTrail è un servizio che fornisce un registro delle operazioni eseguite da un utente, un ruolo o un servizio AWS in Amazon Redshift. CloudTrail acquisisce tutte le chiamate API per Amazon Redshift come eventi. Le chiamate acquisite includono le chiamate dalla console Amazon Redshift e le chiamate di codice alle operazioni di Redshift.

Se viene creato un trail di CloudTrail, è possibile usufruire della distribuzione continua di eventi CloudTrail in un bucket Amazon S3, inclusi gli eventi per Amazon Redshift. Se non configuri un trail, puoi comunque visualizzare gli eventi più recenti nella console di CloudTrail in Cronologia eventi. Utilizzando le informazioni raccolte da CloudTrail è possibile determinare oggetti specifici. Sono inclusi la richiesta effettuata a Redshift, l'indirizzo IP da cui è stata effettuata la richiesta, l'autore della richiesta, la data/ora in cui è stata effettuata e altri dettagli.

È possibile utilizzare CloudTrail indipendentemente da o in aggiunta alla registrazione di verifica dei database di Amazon Redshift.

Per ulteriori informazioni su CloudTrail, consultare la Guida per l'utente di AWS CloudTrail.

Informazioni in CloudTrail

CloudTrail è abilitato nel tuo account AWS al momento della sua creazione. Quando si verifica un'attività, questa viene registrata in un evento CloudTrail insieme ad altri eventi di servizio AWS in Event history (Cronologia eventi). È possibile visualizzare, cercare e scaricare gli eventi recenti nell'account AWS. Per ulteriori informazioni, consulta Visualizzazione di eventi nella cronologia eventi di CloudTrail nella Guida per l'utente AWS CloudTrail.

Per una registrazione continua degli eventi nell'account AWS, inclusi gli eventi per Amazon Redshift, 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 trail registra gli eventi di tutte le Regioni nella partizione AWS e distribuisce i file di log nel bucket 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, consultare gli argomenti seguenti nella Guida per l'utente di AWS CloudTrail:

Tutte le operazioni di Amazon Redshift, Amazon Redshift Serverless, l'API dati, la condivisione dei dati l'editor di query v2 vengono registrate da CloudTrail. Ad esempio, le chiamate alle operazioni AuthorizeDatashare, CreateNamespace, ExecuteStatement e CreateConnection 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, consultare Elemento userIdentity CloudTrail nella Guida per l'utente di AWS CloudTrail.

Voci dei file di log

Un trail è una configurazione che consente la distribuzione di eventi sotto forma di file di log in un bucket 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.

Esempio di unità di condivisione dati per Amazon Redshift

L'esempio seguente mostra una voce di log di CloudTrail che illustra l'operazione AuthorizeDataShare.

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAIOSFODNN7EXAMPLE:janedoe", "arn": "arn:aws:sts::111122223333:user/janedoe", "accountId": "111122223333", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AKIAIOSFODNN7EXAMPLE:janedoe", "arn": "arn:aws:sts::111122223333:user/janedoe", "accountId": "111122223333", "userName": "janedoe" }, "attributes": { "creationDate": "2021-08-02T23:40:45Z", "mfaAuthenticated": "false" } } }, "eventTime": "2021-08-02T23:40:58Z", "eventSource": "redshift.amazonaws.com", "eventName": "AuthorizeDataShare", "awsRegion": "us-east-1", "sourceIPAddress": "3.227.36.75", "userAgent":"aws-cli/1.18.118 Python/3.6.10 Linux/4.9.217-0.1.ac.205.84.332.metal1.x86_64 botocore/1.17.41", "requestParameters": { "dataShareArn": "arn:aws:redshift:us-east-1:111122223333:datashare:4c64c6ec-73d5-42be-869b-b7f7c43c7a53/testshare", "consumerIdentifier": "555555555555" }, "responseElements": { "dataShareArn": "arn:aws:redshift:us-east-1:111122223333:datashare:4c64c6ec-73d5-42be-869b-b7f7c43c7a53/testshare", "producerNamespaceArn": "arn:aws:redshift:us-east-1:123456789012:namespace:4c64c6ec-73d5-42be-869b-b7f7c43c7a53", "producerArn": "arn:aws:redshift:us-east-1:111122223333:namespace:4c64c6ec-73d5-42be-869b-b7f7c43c7a53", "allowPubliclyAccessibleConsumers": true, "dataShareAssociations": [ { "consumerIdentifier": "555555555555", "status": "AUTHORIZED", "createdDate": "Aug 2, 2021 11:40:56 PM", "statusChangeDate": "Aug 2, 2021 11:40:57 PM" } ] }, "requestID": "87ee1c99-9e41-42be-a5c4-00495f928422", "eventID": "03a3d818-37c8-46a6-aad5-0151803bdb09", "readOnly": false, "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }

Esempio per Amazon Redshift Serverless

Amazon Redshift Serverless è integrato con AWS CloudTrail al fine di fornire un registro delle operazioni eseguite in Amazon Redshift Serverless. CloudTrail acquisisce tutte le chiamate API per Amazon Redshift Serverless come eventi. Per ulteriori informazioni sulle caratteristiche di Amazon Redshift Serverless, consulta Panoramica delle funzionalità di Amazon Redshift Serverless.

L'esempio seguente mostra una voce di registro di CloudTrail che illustra l'operazione CreateNamespace.

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AAKEOFPINEXAMPLE:admin", "arn": "arn:aws:sts::111111111111:assumed-role/admin/admin", "accountId": "111111111111", "accessKeyId": "AAKEOFPINEXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AAKEOFPINEXAMPLE", "arn": "arn:aws:iam::111111111111:role/admin", "accountId": "111111111111", "userName": "admin" }, "webIdFederationData": {}, "attributes": { "creationDate": "2022-03-21T20:51:58Z", "mfaAuthenticated": "false" } } }, "eventTime": "2022-03-21T23:15:40Z", "eventSource": "redshift-serverless.amazonaws.com", "eventName": "CreateNamespace", "awsRegion": "us-east-1", "sourceIPAddress": "56.23.155.33", "userAgent": "aws-cli/2.4.14 Python/3.8.8 Linux/5.4.181-109.354.amzn2int.x86_64 exe/x86_64.amzn.2 prompt/off command/redshift-serverless.create-namespace", "requestParameters": { "adminUserPassword": "HIDDEN_DUE_TO_SECURITY_REASONS", "adminUsername": "HIDDEN_DUE_TO_SECURITY_REASONS", "dbName": "dev", "namespaceName": "testnamespace" }, "responseElements": { "namespace": { "adminUsername": "HIDDEN_DUE_TO_SECURITY_REASONS", "creationDate": "Mar 21, 2022 11:15:40 PM", "defaultIamRoleArn": "", "iamRoles": [], "logExports": [], "namespaceArn": "arn:aws:redshift-serverless:us-east-1:111111111111:namespace/befa5123-16c2-4449-afca-1d27cb40fc99", "namespaceId": "8b726a0c-16ca-4799-acca-1d27cb403599", "namespaceName": "testnamespace", "status": "AVAILABLE" } }, "requestID": "ed4bb777-8127-4dae-aea3-bac009999163", "eventID": "1dbee944-f889-4beb-b228-7ad0f312464", "readOnly": false, "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111111111111", "eventCategory": "Management", }

Esempi per l'API di dati di Amazon Redshift

L'esempio seguente mostra una voce di registro di CloudTrail che illustra l'operazione ExecuteStatement.

{ "eventVersion":"1.05", "userIdentity":{ "type":"IAMUser", "principalId":"AKIAIOSFODNN7EXAMPLE:janedoe", "arn":"arn:aws:sts::123456789012:user/janedoe", "accountId":"123456789012", "accessKeyId":"AKIAI44QH8DHBEXAMPLE", "userName": "janedoe" }, "eventTime":"2020-08-19T17:55:59Z", "eventSource":"redshift-data.amazonaws.com", "eventName":"ExecuteStatement", "awsRegion":"us-east-1", "sourceIPAddress":"192.0.2.0", "userAgent":"aws-cli/1.18.118 Python/3.6.10 Linux/4.9.217-0.1.ac.205.84.332.metal1.x86_64 botocore/1.17.41", "requestParameters":{ "clusterIdentifier":"example-cluster-identifier", "database":"example-database-name", "dbUser":"example_db_user_name", "sql":"***OMITTED***" }, "responseElements":{ "clusterIdentifier":"example-cluster-identifier", "createdAt":"Aug 19, 2020 5:55:58 PM", "database":"example-database-name", "dbUser":"example_db_user_name", "id":"5c52b37b-9e07-40c1-98de-12ccd1419be7" }, "requestID":"00c924d3-652e-4939-8a7a-cd0612eeb8ac", "eventID":"c1fb7076-102f-43e5-9ec9-40820bcc1175", "readOnly":false, "eventType":"AwsApiCall", "recipientAccountId":"123456789012" }

L'esempio seguente illustra una voce di log di CloudTrail relativa all'operazione ExecuteStatement che mostra il clientToken utilizzato per l'idempotenza.

{ "eventVersion":"1.05", "userIdentity":{ "type":"IAMUser", "principalId":"AKIAIOSFODNN7EXAMPLE:janedoe", "arn":"arn:aws:sts::123456789012:user/janedoe", "accountId":"123456789012", "accessKeyId":"AKIAI44QH8DHBEXAMPLE", "userName": "janedoe" }, "eventTime":"2020-08-19T17:55:59Z", "eventSource":"redshift-data.amazonaws.com", "eventName":"ExecuteStatement", "awsRegion":"us-east-1", "sourceIPAddress":"192.0.2.0", "userAgent":"aws-cli/1.18.118 Python/3.6.10 Linux/4.9.217-0.1.ac.205.84.332.metal1.x86_64 botocore/1.17.41", "requestParameters":{ "clusterIdentifier":"example-cluster-identifier", "database":"example-database-name", "dbUser":"example_db_user_name", "sql":"***OMITTED***", "clientToken":"32db2e10-69ac-4534-b3fc-a191052616ce" }, "responseElements":{ "clusterIdentifier":"example-cluster-identifier", "createdAt":"Aug 19, 2020 5:55:58 PM", "database":"example-database-name", "dbUser":"example_db_user_name", "id":"5c52b37b-9e07-40c1-98de-12ccd1419be7" }, "requestID":"00c924d3-652e-4939-8a7a-cd0612eeb8ac", "eventID":"c1fb7076-102f-43e5-9ec9-40820bcc1175", "readOnly":false, "eventType":"AwsApiCall", "recipientAccountId":"123456789012" }

Editor di query v2 di Amazon Redshift

L'esempio seguente mostra una voce di registro di CloudTrail che illustra l'operazione CreateConnection.

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AAKEOFPINEXAMPLE:session", "arn": "arn:aws:sts::123456789012:assumed-role/MyRole/session", "accountId": "123456789012", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AAKEOFPINEXAMPLE", "arn": "arn:aws:iam::123456789012:role/MyRole", "accountId": "123456789012", "userName": "MyRole" }, "webIdFederationData": {}, "attributes": { "creationDate": "2022-09-21T17:19:02Z", "mfaAuthenticated": "false" } } }, "eventTime": "2022-09-21T22:22:05Z", "eventSource": "sqlworkbench.amazonaws.com", "eventName": "CreateConnection", "awsRegion": "ca-central-1", "sourceIPAddress": "192.2.0.2", "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Firefox/102.0", "requestParameters": { "password": "***", "databaseName": "***", "isServerless": false, "name": "***", "host": "redshift-cluster-2.c8robpbxvbf9.ca-central-1.redshift.amazonaws.com", "authenticationType": "***", "clusterId": "redshift-cluster-2", "username": "***", "tags": { "sqlworkbench-resource-owner": "AAKEOFPINEXAMPLE:session" } }, "responseElements": { "result": true, "code": "", "data": { "id": "arn:aws:sqlworkbench:ca-central-1:123456789012:connection/ce56b1be-dd65-4bfb-8b17-12345123456", "name": "***", "authenticationType": "***", "databaseName": "***", "secretArn": "arn:aws:secretsmanager:ca-central-1:123456789012:secret:sqlworkbench!7da333b4-9a07-4917-b1dc-12345123456-qTCoFm", "clusterId": "redshift-cluster-2", "dbUser": "***", "userSettings": "***", "recordDate": "2022-09-21 22:22:05", "updatedDate": "2022-09-21 22:22:05", "accountId": "123456789012", "tags": { "sqlworkbench-resource-owner": "AAKEOFPINEXAMPLE:session" }, "isServerless": false } }, "requestID": "9b82f483-9c03-4cdd-bb49-a7009e7da714", "eventID": "a7cdd442-e92f-46a2-bc82-2325588d41c3", "readOnly": false, "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "123456789012", "eventCategory": "Management" }

ID account di Amazon Redshift nei log AWS CloudTrail

Quando Amazon Redshift chiama un altro servizio AWSper tuo conto, la chiamata è registrata con un ID account che appartiene ad Amazon Redshift. Non è registrata con il tuo ID account. Ad esempio, supponiamo che Amazon Redshift chiami le operazioni AWS Key Management Service (AWS KMS) come CreateGrant, Decrypt, Encrypt, e RetireGrant per gestire la crittografia sul cluster. In questo caso, le chiamate sono registrate da AWS CloudTrail utilizzando l'ID account di Amazon Redshift.

Quando richiama altri servizi AWS, Amazon Redshift usa gli ID account inclusi nella tabella seguente.

Regione Regione ID account
Stati Uniti orientali (Virginia settentrionale) us-east-1 368064434614
Stati Uniti orientali (Ohio) us-east-2 790247189693
Regione Stati Uniti occidentali (California settentrionale) us-west-1 703715109447
Stati Uniti occidentali (Oregon) us-west-2 473191095985
Regione Africa (Città del Capo) af-south-1 420376844563
Regione Asia Pacifico (Hong Kong) ap-east-1 651179539253
Regione Asia Pacifico (Hyderabad) ap-south-2 297058826802
Regione Asia Pacifico (Giacarta) ap-southeast-3 623197973179
Regione Asia Pacifico (Malesia) ap-southeast-5 590184011157
Regione Asia Pacifico (Melbourne) ap-southeast-4 945512339897
Regione Asia Pacifico (Mumbai) ap-south-1 408097707231
Asia Pacifico (Nuova Zelanda) ap-southeast-6 730335362089
Regione Asia Pacifico (Osaka-Locale) ap-northeast-3 398671365691
Regione Asia Pacifico (Seoul) ap-northeast-2 713597048934
Asia Pacifico (Singapore) ap-southeast-1 960118270566
Asia Pacifico (Sydney) ap-southeast-2 485979073181
Asia Pacifico (Taipei) ap-east-2 211125526206
Regione Asia Pacifico (Thailandia) ap-southeast-7 767397930036
Asia Pacifico (Tokyo) ap-northeast-1 615915377779
Regione Canada (Centrale) ca-central-1 764870610256
Regione Canada occidentale (Calgary) ca-west-1 830903446466
Regione Europa (Francoforte) eu-central-1 434091160558
Europa (Irlanda) eu-west-1 246478207311
Regione Europa (Londra) eu-west-2 885798887673
Regione Europa (Milano) eu-south-1 041313461515
Regione Europa (Parigi) eu-west-3 694668203235
Regione Europa (Spagna) eu-south-2 028811157404
Regione Europa (Stoccolma) eu-north-1 553461782468
Regione Europa (Zurigo) eu-central-2 668912161003
Regione di Israele (Tel Aviv) il-central-1 901883065212
Regione Messico (centrale) mx-central-1 058264411980
Regione Medio Oriente (Bahrein) me-south-1 051362938876
Regione Medio Oriente (EAU) me-central-1 595013617770
Sud America (San Paolo) sa-east-1 392442076723

L'esempio seguente mostra una voce di log di CloudTrail per l'operazione AWS KMS Decrypt chiamata da Amazon Redshift.

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AROAI5QPCMKLTL4VHFCYY:i-0f53e22dbe5df8a89", "arn": "arn:aws:sts::790247189693:assumed-role/prod-23264-role-wp/i-0f53e22dbe5df8a89", "accountId": "790247189693", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2017-03-03T16:24:54Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROAI5QPCMKLTL4VHFCYY", "arn": "arn:aws:iam::790247189693:role/prod-23264-role-wp", "accountId": "790247189693", "userName": "prod-23264-role-wp" } } }, "eventTime": "2017-03-03T17:16:51Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-east-2", "sourceIPAddress": "52.14.143.61", "userAgent": "aws-internal/3", "requestParameters": { "encryptionContext": { "aws:redshift:createtime": "20170303T1710Z", "aws:redshift:arn": "arn:aws:redshift:us-east-2:123456789012:cluster:my-dw-instance-2" } }, "responseElements": null, "requestID": "30d2fe51-0035-11e7-ab67-17595a8411c8", "eventID": "619bad54-1764-4de4-a786-8898b0a7f40c", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-east-2:123456789012:key/f8f4f94f-e588-4254-b7e8-078b99270be7", "accountId": "123456789012", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "123456789012", "sharedEventID": "c1daefea-a5c2-4fab-b6f4-d8eaa1e522dc" }