Registrar em log com o CloudTrail
O Amazon Redshift, o compartilhamento de dados, o Amazon Redshift Serverless, a API de dados do Amazon Redshift e o editor de consultas v2 estão todos integrados ao AWS CloudTrail. O CloudTrail é um serviço que fornece um registro das ações realizadas por um usuário, uma função ou um serviço da AWS no Amazon Redshift. O CloudTrail captura todas as chamadas de API para Amazon Redshift como eventos. As chamadas capturadas incluem chamadas do console do Redshift e chamadas de código para as operações do Redshift.
Se você criar uma trilha do CloudTrail, poderá ter a entrega contínua de eventos do CloudTrail em um bucket do Amazon S3, inclusive eventos do Redshift. Se você não configurar uma trilha, ainda poderá visualizar os eventos mais recentes no console do CloudTrail em Event history (Histórico de eventos). Usando as informações coletadas pela CloudTrail, você pode determinar certas coisas. Eles incluem a solicitação feita ao Redshift, o endereço IP do qual a solicitação foi feita, quem fez a solicitação, quando foi feita e detalhes adicionais.
Você pode usar o CloudTrail independentemente ou além do registro em log de auditoria do banco de dados do Amazon Redshift.
Para saber mais sobre o CloudTrail, consulte o Guia do usuário do AWS CloudTrail.
Informações no CloudTrail
O CloudTrail é ativado na conta da AWS quando ela é criada. Quando ocorre uma atividade, ela é registrada em um evento do CloudTrail com outros eventos de serviços da AWS em Event history (Histórico de eventos). É possível visualizar, pesquisar e baixar eventos recentes em sua conta da AWS. Para obter mais informações, consulte Visualizar eventos com o histórico de eventos CloudTrail no Guia do usuário do AWS CloudTrail.
Para um registro contínuo de eventos em sua conta da AWS, inclusive eventos para Redshift, crie uma trilha. O CloudTrail usa trilhas para entregar arquivos de log a um bucket do Amazon S3. Por padrão, ao criar uma trilha no console, a mesma é aplicada a todas as AWSRegiões. A trilha registra logs de eventos de todas as Regiões na AWS divisória e entrega os arquivos do log para o bucket Amazon S3 especificado. Além disso, é possível configurar outros AWS serviços para melhor analisar e agir de acordo com dados coletados do evento nos logs CloudTrail. Para obter mais informações, consulte o seguinte no Guia do usuário do AWS CloudTrail:
Todas as ações do Amazon Redshift, do Amazon Redshift Serverless, da API de dados, de compartilhamento de dados e do editor de consultas v2 são registradas pelo CloudTrail. Por exemplo, as chamadas para as ações AuthorizeDatashare
, CreateNamespace
, ExecuteStatement
e CreateConnection
gerarão entradas nos arquivos de log do CloudTrail.
Cada entrada de log ou evento contém informações sobre quem gerou a solicitação. As informações de identidade ajudam a determinar:
-
Se a solicitação foi feita com credenciais de usuário da raiz ou do .
-
Se a solicitação foi feita com credenciais de segurança temporárias de um perfil ou de um usuário federado.
-
Se a solicitação foi feita por outro AWS serviço.
Para obter mais informações, consulte o Elemento userIdentity do CloudTrail no Guia do usuário do AWS CloudTrail.
Entradas do arquivo de log
Uma trilha é uma configuração que permite a entrega de eventos como registros de log a um bucket do Amazon S3 especificado. Os arquivos de log CloudTrail contêm uma ou mais entradas de log. Um evento representa uma única solicitação de qualquer origem e inclui informações sobre a ação solicitada, a data e a hora da ação, os parâmetros de solicitação e assim por diante. Os arquivos de log do CloudTrail não são um rastreamento de pilha ordenada de chamadas de API pública, portanto não são exibidos em uma ordem específica.
Exemplo de unidade de compartilhamento de dados do Amazon Redshift
O exemplo a seguir ilustra uma entrada de log do CloudTrail que demonstra a operação 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" }
Exemplo do Amazon Redshift Serverless
O Amazon Redshift Serverless é integrado ao AWS CloudTrail para fornecer um registro das ações realizadas no Amazon Redshift Serverless. O CloudTrail captura todas as chamadas de API para Amazon Redshift Serverless como eventos. Para obter mais informações sobre os recursos do Amazon Redshift Serverless, consulte “Visão geral de recursos do Amazon Redshift Serverless”.
O exemplo a seguir mostra uma entrada de log do CloudTrail que demonstra a ação 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", }
Exemplos de API de dados do Amazon Redshift
O exemplo a seguir mostra uma entrada de log do CloudTrail que demonstra a ação 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" }
O exemplo a seguir mostra uma entrada de log do CloudTrail que demonstra a ação ExecuteStatement
mostrando o clientToken
usado para idempotência.
{ "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" }
Exemplo do Editor de Consultas v2 do Amazon Redshift
O exemplo a seguir mostra uma entrada de log do CloudTrail que demonstra a ação 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" }
IDs de conta do Amazon Redshift nos logs do AWS CloudTrail
Quando o Amazon Redshift chama outro serviço da AWS para você, a chamada é registrada com uma ID de conta que pertence ao Amazon Redshift. Ela não é registrada em log com o ID de sua conta. Por exemplo, suponha que o Amazon Redshift chame operações do AWS Key Management Service (AWS KMS) como CreateGrant
, Decrypt
, Encrypt
e RetireGrant
para gerenciar a criptografia em seu cluster. Nesse caso, as chamadas são registradas em log pelo AWS CloudTrail usando uma ID de conta do Amazon Redshift.
O Amazon Redshift usa os IDs de conta na tabela a seguir ao chamar outros serviços da AWS.
Região | Região | ID da conta |
---|---|---|
Região Leste dos EUA (N. da Virgínia) | us-east-1 | 368064434614 |
Região Leste dos EUA (Ohio) | us-east-2 | 790247189693 |
Região Oeste dos EUA (Norte da Califórnia) | us-west-1 | 703715109447 |
Região Oeste dos EUA (Oregon) | us-west-2 | 473191095985 |
Região África (Cidade do Cabo) | af-south-1 | 420376844563 |
Região Ásia-Pacífico (Hong Kong) | ap-east-1 | 651179539253 |
Ásia-Pacífico (Haiderabade) | ap-south-2 | 297058826802 |
Região Ásia-Pacífico (Jacarta) | ap-southeast-3 | 623197973179 |
Região Ásia-Pacífico (Malásia) | ap-southeast-5 | 590184011157 |
Região Ásia-Pacífico (Melbourne) | ap-southeast-4 | 945512339897 |
Região Ásia-Pacífico (Mumbai) | ap-south-1 | 408097707231 |
Região Ásia-Pacífico (Osaka) | ap-northeast-3 | 398671365691 |
Região Ásia-Pacífico (Seul) | ap-northeast-2 | 713597048934 |
Região Ásia-Pacífico (Singapura) | ap-southeast-1 | 960118270566 |
Região Ásia-Pacífico (Sydney) | ap-southeast-2 | 485979073181 |
Região Ásia-Pacífico (Tóquio) | ap-northeast-1 | 615915377779 |
Região Canadá (Central) | ca-central-1 | 764870610256 |
Região Oeste do Canadá (Calgary) | ca-west-1 | 830903446466 |
Região Europa (Frankfurt) | eu-central-1 | 434091160558 |
Região Europa (Irlanda) | eu-west-1 | 246478207311 |
Região Europa (Londres) | eu-west-2 | 885798887673 |
Região Europa (Milão) | eu-south-1 | 041313461515 |
Região Europa (Paris) | eu-west-3 | 694668203235 |
Região Europa (Espanha) | eu-south-2 | 028811157404 |
Região Europa (Estocolmo) | eu-north-1 | 553461782468 |
Região Europa (Zurique) | eu-central-2 | 668912161003 |
Região de Israel (Tel Aviv) | il-central-1 | 901883065212 |
Região Oriente Médio (Bahrein) | me-south-1 | 051362938876 |
Região do Oriente Médio (Emirados Árabes Unidos) | me-central-1 | 595013617770 |
Região América do Sul (São Paulo) | sa-east-1 | 392442076723 |
O exemplo a seguir mostra uma entrada de log do CloudTrail para a operação de Decrypt do AWS KMS que foi chamada pelo 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" }