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