Protokollierung mit CloudTrail - Amazon Redshift

Amazon Redshift unterstützt ab dem 1. November 2025 nicht mehr die Erstellung neuer Python-UDFs. Wenn Sie Python-UDFs verwenden möchten, erstellen Sie die UDFs vor diesem Datum. Bestehende Python-UDFs funktionieren weiterhin wie gewohnt. Weitere Informationen finden Sie im Blog-Posting.

Protokollierung mit CloudTrail

Amazon Redshift, Datenfreigabe, Amazon Redshift Serverless, die Amazon-Redshift-Daten-API und der Abfrage-Editor v2 sind alle in AWS CloudTrail integriert. CloudTrail ist ein Service, der die Aktionen eines Benutzers, einer Rolle oder eines AWS-Services in Amazon Redshift protokolliert. CloudTrail erfasst alle API-Aufrufe für Amazon Redshift als Ereignisse. Zu den erfassten Aufrufen gehören Aufrufe von der Redshift-Konsole und Codeaufrufe der Redshift-Vorgänge.

Wenn Sie einen CloudTrail-Trail erstellen, können Sie die kontinuierliche Bereitstellung von CloudTrail-Ereignissen an einen Amazon-S3-Bucket, einschließlich Ereignissen für Amazon Redshift, aktivieren. Wenn Sie keinen Trail konfigurieren, können Sie die neuesten Ereignisse in der CloudTrail-Konsole trotzdem in Ereignisverlauf anzeigen. Anhand der von CloudTrail erfassten Informationen können Sie bestimmte Dinge erfahren. Dazu gehören die Anforderung, die an Redshift gestellt wurde, die IP-Adresse, von der aus die Anforderung gestellt wurde, wer die Anforderung gestellt hat, wann sie gestellt wurde und weitere Details.

CloudTrail kann unabhängig von oder zusätzlich zur Datenbank-Prüfungsprotokollierung von Amazon Redshift verwendet werden.

Weitere Informationen zu CloudTrail finden Sie im AWS CloudTrail-Benutzerhandbuch.

Informationen in CloudTrail

CloudTrail wird beim Erstellen Ihres AWS-Kontos aktiviert. Auftretende Aktivitäten werden als CloudTrail-Ereignis zusammen mit anderen AWS-Serviceereignissen in Event History (Ereignisverlauf) aufgezeichnet. Sie können die neusten Ereignisse in Ihr AWS-Konto downloaden und dort suchen und anzeigen. Weitere Informationen finden Sie unter Anzeigen von Ereignissen mit dem CloudTrail-Ereignisverlauf im AWS CloudTrail-Benutzerhandbuch.

Für eine fortlaufende Aufzeichnung der Ereignisse in Ihrem AWS-Konto, einschließlich Ereignissen für Redshift, erstellen Sie einen Trail. CloudTrail verwendet Trails, um Protokolldateien an einen Amazon-S3-Bucket zu senden. Wenn Sie einen Trail in der Konsole anlegen, gilt dieser für alle AWS-Regionen. Der Trail protokolliert Ereignisse aus allen Regionen in der AWS-Partition und stellt die Protokolldateien in dem von Ihnen angegebenen Amazon-S3-Bucket bereit. Darüber hinaus können Sie andere AWS-Services konfigurieren, um die in den CloudTrail-Protokollen erfassten Ereignisdaten weiter zu analysieren und entsprechend zu agieren. Weitere Informationen finden Sie in folgenden Themen im AWS CloudTrail-Benutzerhandbuch:

Alle Aktionen von Amazon Redshift, Amazon Redshift Serverless, der Daten-API, der Datenfreigabe und dem Abfrage-Editor v2 werden von CloudTrail protokolliert. Zum Beispiel generieren Aufrufe der Aktionen AuthorizeDatashare, CreateNamespace, ExecuteStatement und CreateConnection Einträge in den CloudTrail-Protokolldateien.

Jeder Ereignis- oder Protokolleintrag enthält Informationen zu dem Benutzer, der die Anforderung generiert hat. Die Identitätsinformationen unterstützen Sie bei der Ermittlung der folgenden Punkte:

  • Ob die Anforderung mit Root- oder -Benutzeranmeldeinformationen ausgeführt wurde.

  • Gibt an, ob die Anforderung mit temporären Sicherheitsanmeldeinformationen für eine Rolle oder einen Verbundbenutzer gesendet wurde.

  • Ob die Anforderung aus einem anderen AWS-Service gesendet wurde

Weitere Informationen finden Sie unter CloudTrail-userIdentity-Element im AWS CloudTrail-Benutzerhandbuch.

Protokoll-Dateieinträge

Ein Trail ist eine Konfiguration, durch die Ereignisse als Protokolldateien an den Amazon-S3-Bucket übermittelt werden, den Sie angegeben haben. CloudTrail-Protokolldateien können einen oder mehrere Einträge enthalten. Ein Ereignis stellt eine einzelne Anfrage aus einer beliebigen Quelle dar und enthält unter anderem Informationen über die angeforderte Aktion, das Datum und die Uhrzeit der Aktion sowie über die Anfrageparameter. CloudTrail-Protokolleinträge sind kein geordnetes Stack-Trace der öffentlichen API-Aufrufe und erscheinen daher in keiner bestimmten Reihenfolge.

Amazon Redshift Datashare – Beispiel

Das folgende Beispiel zeigt einen CloudTrail-Protokolleintrag, der die AuthorizeDataShare-Operation beschreibt.

{ "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" }

Amazon Redshift Serverless – Beispiel

Amazon Redshift Serverless ist in AWS CloudTrail integriert, um eine Aufzeichnung der Aktionen zu ermöglichen, die in Amazon Redshift Serverless durchgeführt werden. CloudTrail erfasst alle API-Aufrufe für Amazon Redshift Serverless als Ereignisse. Weitere Informationen zu den Funktionen von Amazon Redshift Serverless finden Sie unter Übersicht über die Funktionen von Amazon Redshift Serverless.

Das folgende Beispiel zeigt einen CloudTrail-Protokolleintrag, der die Aktion CreateNamespace demonstriert.

{ "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", }

Amazon-Redshift-Daten-API – Beispiele

Das folgende Beispiel zeigt einen CloudTrail-Protokolleintrag, der die Aktion ExecuteStatement demonstriert.

{ "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" }

Das folgende Beispiel zeigt einen CloudTrail-Protokolleintrag, der die Aktion ExecuteStatement demonstriert. Dabei ist das für Idempotenz verwendete clientToken zu sehen.

{ "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" }

Beispiel für den Abfrage-Editor v2 von Amazon Redshift

Das folgende Beispiel zeigt einen CloudTrail-Protokolleintrag, der die Aktion CreateConnection demonstriert.

{ "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" }

Amazon-Redshift-Konto-IDs inAWS CloudTrail-Protokollen

Wenn Amazon Redshift einen anderen AWS-Service für Sie aufruft, wird der Aufruf mit einer Konto-ID protokolliert, die zu Amazon Redshift gehört. Er wird nicht mit Ihrer Konto-ID protokolliert. Angenommen, Amazon Redshift ruft zum Beispiel AWS Key Management Service (AWS KMS)-Operationen wie CreateGrant, Decrypt, Encrypt und RetireGrant auf, um die Verschlüsselung in Ihrem Cluster zu verwalten. In diesem Fall werden die Aufrufe von AWS CloudTrail mit einer Amazon-Redshift-Konto-ID protokolliert.

Amazon Redshift verwendet beim Aufrufen anderer AWS-Services die Konto-IDs in der folgenden Tabelle.

Region Region Konto-ID
Region USA Ost (Nord-Virginia) us-east-1 368064434614
Region USA Ost (Ohio) us-east-2 790247189693
Region US West (N. California) us-west-1 703715109447
Region USA West (Oregon) us-west-2 473191095985
Region Afrika (Kapstadt) af-south-1 420376844563
Region Asien-Pazifik (Hongkong) ap-east-1 651179539253
Region Asien-Pazifik (Hyderabad) ap-south-2 297058826802
Region Asien-Pazifik (Jakarta) ap-southeast-3 623197973179
Asien-Pazifik (Malaysia) ap-southeast-5 590184011157
Region Asien-Pazifik (Melbourne) ap-southeast-4 945512339897
Region Asien-Pazifik (Mumbai) ap-south-1 408097707231
Asien-Pazifik (Neuseeland) ap-southeast-6 730335362089
Region Asien-Pazifik (Osaka) ap-northeast-3 398671365691
Region Asien-Pazifik (Seoul) ap-northeast-2 713597048934
Region Asien-Pazifik (Singapur) ap-southeast-1 960118270566
Region Asien-Pazifik (Sydney) ap-southeast-2 485979073181
Asien-Pazifik (Taipeh) ap-east-2 211125526206
Asien-Pazifik (Thailand) ap-southeast-7 767397930036
Region Asien-Pazifik (Tokio) ap-northeast-1 615915377779
Region Kanada (Zentral) ca-central-1 764870610256
Region Kanada West (Calgary) ca-west-1 830903446466
Region Europa (Frankfurt) eu-central-1 434091160558
Region Europa (Irland) eu-west-1 246478207311
Region Europa (London) eu-west-2 885798887673
Region Europa (Mailand) eu-south-1 041313461515
Region Europa (Paris) eu-west-3 694668203235
Region Europa (Spanien) eu-south-2 028811157404
Region Europa (Stockholm) eu-north-1 553461782468
Region Europa (Zürich) eu-central-2 668912161003
Region Israel (Tel Aviv) il-central-1 901883065212
Region Mexiko (Zentral) mx-central-1 058264411980
Region Naher Osten (Bahrain) me-south-1 051362938876
Region Naher Osten (VAE) me-central-1 595013617770
Region Südamerika (São Paulo) sa-east-1 392442076723

Das folgende Beispiel zeigt einen CloudTrail-Protokolleintrag für den AWS KMS-Decrypt-Vorgang, der von Amazon Redshift aufgerufen wurde.

{ "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" }