Amazon Redshift ne prendra plus en charge la création de nouvelles fonctions Python définies par l’utilisateur à compter du 1er novembre 2025. Si vous souhaitez utiliser des fonctions Python définies par l’utilisateur, créez-les avant cette date. Les fonctions Python définies par l’utilisateur existantes continueront de fonctionner normalement. Pour plus d’informations, consultez le billet de blog
Journalisation avec CloudTrail
Amazon Redshift, le partage de données, Amazon Redshift sans serveur, l’API de données Amazon Redshift et l’éditeur de requêtes v2 sont tous intégrés à AWS CloudTrail. CloudTrail est un service qui fournit un enregistrement des actions effectuées par un utilisateur, un rôle ou un service AWS dans l’API de données Amazon Redshift. CloudTrail capture tous les appels d’API pour Amazon Redshift en tant qu’événements. Les appels capturés incluent les appels de la console Redshift et les appels de code aux opérations Redshift.
Si vous créez un journal de suivi CloudTrail, vous pouvez activer la livraison continue des événements CloudTrail dans un compartiment Amazon S3, y compris les événements pour Redshift. Si vous ne configurez pas de journal d’activité, vous pouvez toujours afficher les événements les plus récents dans la console CloudTrail dans Event history (Historique des événements). Grâce aux données collectées par CloudTrail, vous pouvez déterminer certaines informations. Il s’agit notamment de la requête qui a été envoyée à Redshift, de l’adresse IP à partir de laquelle la demande a été effectuée, de l’auteur et de la date de la requête, ainsi que d’autres détails.
Vous pouvez utiliser CloudTrail indépendamment ou en plus de la journalisation des audits de base de données Amazon Redshift.
Pour en savoir plus sur CloudTrail, consultez le Guide de l’utilisateur AWS CloudTrail.
Informations dans CloudTrail
CloudTrail est activé dans votre compte AWS lors de la création de ce dernier. Quand une activité a lieu dans Athena, cette activité est enregistrée dans un événement CloudTrail avec d’autres événements de service AWS dans l’Historique des événements. Vous pouvez afficher, rechercher et télécharger les événements récents dans votre AWS compte. Pour plus d’informations, consultez Affichage des événements avec l’historique des événements CloudTrail dans le Guide de l’utilisateur AWS CloudTrail.
Pour un enregistrement continu des événements dans votre compte AWS, y compris les événements pour Redshift, créez un journal d’activité. Un journal de suivi permet à CloudTrail de livrer des fichiers journaux dans un compartiment Amazon S3. Par défaut, lorsque vous créez un journal de suivi dans la console, il s’applique à toutes les régions AWS. Le journal de suivi consigne les événements de toutes les Régions dans la partition AWS et livre les fichiers journaux dans le compartiment Amazon S3 de votre choix. En outre, vous pouvez configurer d’autres services AWS pour analyser et agir sur les données d’événements collectées dans les journaux CloudTrail. Pour plus d’informations, consultez les rubriques suivantes dans le Guide de l’utilisateur AWS CloudTrail :
Toutes les actions Amazon Redshift, Amazon Redshift sans serveur, API de données, partage de données et éditeur de requêtes v2 sont enregistrées par CloudTrail. À titre d’exemple, les appels vers les actions AuthorizeDatashare, CreateNamespace, ExecuteStatement et CreateConnection génèrent des entrées dans les fichiers journaux CloudTrail.
Chaque événement ou entrée de journal contient des informations sur la personne ayant initié la demande. Les informations relatives à l’identité permettent de déterminer les éléments suivants :
-
Si la demande a été effectuée avec les informations d’identification utilisateur racine ou .
-
Si la demande a été effectuée avec les informations d’identification de sécurité temporaires d’un rôle ou d’un utilisateur fédéré.
-
Si la demande a été effectuée par un autre service AWS.
Pour en savoir plus, consultez Élément userIdentity CloudTrail dans le Guide de l’utilisateur AWS CloudTrail.
Entrées de fichier journal
Un journal de suivi est une configuration qui permet la remise d’événements sous forme de fichiers journaux dans un compartiment S3 que vous spécifiez. Les fichiers journaux CloudTrail peuvent contenir une ou plusieurs entrées. Un événement représente une demande individuelle émise à partir d’une source quelconque et comprend des informations sur l’action demandée, la date et l’heure de l’action, les paramètres de la demande, etc. Les fichiers journaux CloudTrail ne constituent pas une série ordonnée retraçant les appels d’API publics. Ils ne suivent aucun ordre précis.
Exemple de partage de données Amazon Redshift
L’exemple suivant montre une entrée de journal CloudTrail qui illustre l’opération 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" }
Exemple Amazon Redshift sans serveur
Amazon Redshift sans serveur est intégré à AWS CloudTrail afin de fournir un enregistrement des actions effectuées dans Amazon Redshift sans serveur. CloudTrail capture tous les appels d’API pour Amazon Redshift sans serveur en tant qu’événements. Pour de plus amples informations sur les fonctionnalités Amazon Redshift sans serveur, consultez Présentation des fonctionnalités Amazon Redshift sans serveur.
L’exemple suivant présente une entrée de journal CloudTrail qui illustre l’action 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", }
Exemples d’API de données Amazon Redshift
L’exemple suivant présente une entrée de journal CloudTrail qui illustre l’action 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’exemple suivant présente une entrée de journal CloudTrail qui illustre l’action ExecuteStatement affichant le clientToken utilisé pour l’idempotence.
{ "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" }
Exemple de Amazon Redshift Query Editor V2.
L’exemple suivant présente une entrée de journal CloudTrail qui illustre l’action 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" }
Identifiants de compte Amazon Redshift dans les journaux AWS CloudTrail
Lorsqu’Amazon Redshift appelle un autre service AWS pour vous, l’appel est journalisé avec un ID de compte qui appartient à Amazon Redshift. Il n’est pas consigné avec votre ID de compte. Par exemple, supposons qu’Amazon Redshift appelle des opérations AWS Key Management Service (AWS KMS) telles que CreateGrant, Decrypt, Encrypt et RetireGrant pour gérer le chiffrement sur votre cluster. Dans ce cas, les appels sont journalisés par AWS CloudTrail en utilisant un ID de compte Amazon Redshift.
Amazon Redshift utilise les ID de compte du tableau suivant lorsqu’il appelle d’autres services AWS.
| Région | Région | ID de compte |
|---|---|---|
| Région USA Est (Virginie du Nord) | us-east-1 | 368064434614 |
| Région USA Est (Ohio) | us-east-2 | 790247189693 |
| Région US West (N. California) | us-west-1 | 703715109447 |
| Région USA Ouest (Oregon) | us-west-2 | 473191095985 |
| Région Afrique (Le Cap) | af-south-1 | 420376844563 |
| Région Asie-Pacifique (Hong Kong) | ap-east-1 | 651179539253 |
| Région Asie-Pacifique (Hyderabad) | ap-south-2 | 297058826802 |
| Région Asie-Pacifique (Jakarta) | ap-southeast-3 | 623197973179 |
| Région Asie-Pacifique (Malaisie) | ap-southeast-5 | 590184011157 |
| Région Asie-Pacifique (Melbourne) | ap-southeast-4 | 945512339897 |
| Région Asie-Pacifique (Mumbai) | ap-south-1 | 408097707231 |
| Asie-Pacifique (Nouvelle-Zélande) | ap-southeast-6 | 730335362089 |
| Région Asie-Pacifique (Osaka) | ap-northeast-3 | 398671365691 |
| Région Asie-Pacifique (Séoul) | ap-northeast-2 | 713597048934 |
| Région Asie-Pacifique (Singapour) | ap-southeast-1 | 960118270566 |
| Région Asie-Pacifique (Sydney) | ap-southeast-2 | 485979073181 |
| Asie-Pacifique (Taipei) | ap us-east-2 | 211125526206 |
| Région Asie-Pacifique (Thaïlande) | ap-southeast-7 | 767397930036 |
| Région Asie-Pacifique (Tokyo) | ap-northeast-1 | 615915377779 |
| Région Canada (Centre) | ca-central-1 | 764870610256 |
| Région Canada Ouest (Calgary) | ca-west-1 | 830903446466 |
| Région Europe (Francfort) | eu-central-1 | 434091160558 |
| Région Europe (Irlande) | eu-west-1 | 246478207311 |
| Région Europe (Londres) | eu-west-2 | 885798887673 |
| Europe (Milan) Region | eu-south-1 | 041313461515 |
| Région Europe (Paris) | eu-west-3 | 694668203235 |
| Région Europe (Espagne) | eu-south-2 | 028811157404 |
| Région Europe (Stockholm) | eu-north-1 | 553461782468 |
| Région Europe (Zurich) | eu-central-2 | 668912161003 |
| Région Israël (Tel Aviv) | il-central-1 | 901883065212 |
| Région Mexique (Centre) | mx-central-1 | 058264411980 |
| Middle East (Bahrain) Region | me-south-1 | 051362938876 |
| Région Moyen-Orient (EAU) | me-central-1 | 595013617770 |
| Région Amérique du Sud (São Paulo) | sa-east-1 | 392442076723 |
L’exemple suivant montre une entrée de journal CloudTrail pour l’opération AWS KMS Decrypt appelée par 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" }