数据库审计日志记录 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

数据库审计日志记录

Amazon Redshift 记录您的数据库中的连接和用户活动相关信息。这些日志有助于您监控数据库以确保安全并进行故障排除,该流程称为数据库审计。可以存储日志的位置包括:

  • Amazon S3 存储桶 - 这为负责监控数据库中活动的用户提供了访问权限以及数据安全功能。

  • Amazon CloudWatch - 您可以使用 CloudWatch 中内置的功能(例如可视化功能和设置操作)查看审计日志记录数据。

Amazon Redshift 日志

Amazon Redshift 在以下日志文件中记录信息:

  • 连接日志 – 记录身份验证尝试以及连接与断开连接。

  • 用户日志 – 记录与数据库用户定义更改相关的信息。

  • 用户活动日志 – 记录在数据库中运行之前的每个查询。

连接日志和用户日志主要用于实现安全性。您可以使用连接日志来监控连接到数据库的用户信息以及相关的连接信息。这些信息可能是他们的 IP 地址、发出请求的时间以及使用的身份验证类型等。您可以使用用户日志来监控数据库用户定义更改。

用户活动日志主要用于进行故障排除。它会跟踪用户及系统在数据库中执行的查询类型的相关信息。

连接日志和用户日志均对应于数据库的系统表中存储的信息。您可以使用系统表获取相同的信息,但日志文件可提供更简单的检索和查看机制。日志文件依赖 Simple Storage Service(Amazon S3)权限(而非数据库权限)针对表执行查询。此外,通过查看日志文件中的信息(而非查询系统表),您可以减少与数据库互动产生的任何影响。

注意

日志文件没有基本系统日志表 STL_USERLOGSTL_CONNECTION_LOG 那么新。早于 (但不包括) 最新记录的记录将被复制到日志文件。

连接日志

记录身份验证尝试以及连接与断开连接。下表介绍了连接日志中的信息。有关这些字段的更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 STL_CONNECTION_LOG

列名称 描述
event 连接或身份验证事件。
recordtime 事件发生的时间。
remotehost 远程主机的名称或 IP 地址。
remoteport 远程主机的端口号。
pid 与语句关联的进程 ID。
dbname 数据库名称。
username 用户名。
authmethod 身份验证方法。
duration 连接的持续时间(单位为微秒)。
sslversion 安全套接字层 (SSL) 版本。
sslcipher SSL 密码。
mtu 最大传输单元 (MTU)。
sslcompression SSL 压缩类型。
sslexpansion SSL 扩展类型。
iamauthguid Amazon CloudTrail 请求的 Amazon Identity and Access Management(IAM)身份验证 ID。
application_name 会话应用程序的初始名称或更新名称。
driver_version 从第三方 SQL 客户端工具连接到 Amazon Redshift 集群的 ODBC 或 JDBC 驱动程序版本。
os_version 连接到 Amazon Redshift 集群的客户端计算机上的操作系统版本。
plugin_name 用于连接到您的 Amazon Redshift 集群的插件名称。
protocol_version Amazon Redshift 驱动程序在与服务器建立连接时使用的内部协议版本。
sessionid 当前会话的全局唯一标识符。

用户日志

记录数据库用户的以下更改的详细信息。

  • 创建用户

  • 删除用户

  • 更改用户(重命名)

  • 更改用户(更改属性)

列名称 描述
userid 受更改影响的用户的 ID。
username 受更改影响的用户的用户名称。
oldusername 对于重命名操作,这指的是原始用户名称。对于任何其他操作,此字段为空。
操作 发生的操作。有效值:
  • 更改

  • 创建

  • Drop

  • 重命名

usecreatedb 如果为 true (1),则表示用户具有创建数据库的权限。
usesuper 如果为 true (1),则表示用户为超级用户。
usecatupd 如果为 true (1),则表示用户可更新系统目录。
valuntil 密码到期日期。
pid 进程 ID。
xid 事务 ID。
recordtime 查询开始的时间(采用 UTC 表示)。

用户活动日志

记录在数据库中运行之前的每个查询。

列名称 描述
recordtime 事件发生的时间。
db 数据库名称。
user 用户名。
pid 与语句关联的进程 ID。
userid 用户 ID。
xid 事务 ID。
query 日志前缀:后跟查询的文字,包括换行符。

启用日志记录

在 Amazon Redshift 中,原定设置情况下审计日志记录处于未启用状态。当您针对集群打开日志记录时,Amazon Redshift 将日志导出到 Amazon CloudWatch 中,或创建日志并将其上载到 Simple Storage Service (Amazon S3) 中,以捕获从启用审计日志记录的时间到当前时间的数据。每个日志记录更新都是以前日志的延续。

在 CloudWatch 或 Simple Storage Service (Amazon S3) 中存储审计日志记录是一个可选流程。记录到数据表并非可选流程,而会自动发生。有关系统表日志记录的更多信息,请参阅 Amazon Redshift 数据库开发人员指南中的系统表参考

您可以通过使用 Amazon Web Services Management Console、Amazon Redshift API 参考或 Amazon Command Line Interface (Amazon CLI) 一起启用连接日志、用户日志以及用户活动日志。对于用户活动日志,您还必须启用 enable_user_activity_logging 数据库参数。如果您仅启用审计日志记录功能,但不启用相关参数,则数据库审计日志将仅为连接日志和用户日志记录信息,而不为用户活动日志记录信息。enable_user_activity_logging 参数预设情况下未启用 (false)。您可以将它设置为 true 以启用用户活动日志。有关更多信息,请参阅Amazon Redshift 参数组

注意

目前,您只能使用 Simple Storage Service(Amazon S3)托管密钥(SSE-S3)加密(AES-256)进行审计日志记录。

将审计日志发送到 Amazon CloudWatch

在对 CloudWatch 启用日志记录后,Amazon Redshift 将集群连接、用户和用户活动日志数据导出到 Amazon CloudWatch Logs 日志组。就架构而言,日志数据不会改变。CloudWatch 专为监控应用程序而构建,您可以使用它来执行实时分析或将其设置为采取措施。还可以使用 Amazon CloudWatch Logs 在持久性存储中存储日志记录。

使用 CloudWatch 查看日志是在 Simple Storage Service (Amazon S3 )中存储日志文件的推荐替代方法。它不需要太多的配置,而且可能符合您的监控要求,尤其是如果您已经使用它来监控其他服务和应用程序。

Amazon CloudWatch 中的日志组和日志事件

在选择要导出的 Amazon Redshift 日志后,您可以在 Amazon CloudWatch Logs 中监控日志事件。将使用以下前缀为 Amazon Redshift 无服务器自动创建新的日志组,其中 log_type 表示日志类型。

/aws/redshift/cluster/<cluster_name>/<log_type>

例如,如果您选择导出连接日志,则日志数据将存储在以下日志组中。

/aws/redshift/cluster/cluster1/connectionlog

使用日志流将日志事件导出到日志组。要在无服务器端点的日志事件中搜索信息,请使用 Amazon CloudWatch Logs 控制台、Amazon CLI 或 Amazon CloudWatch Logs API。有关搜索和筛选日志数据的信息,请参阅使用筛选条件从日志事件创建指标

在 CloudWatch 中,您可以使用所提供的旨在实现粒度和灵活性的查询语法搜索日志数据。有关更多信息,请参阅 CloudWatch Logs Insights 查询语法

迁移到 Amazon CloudWatch 审计日志记录

在任何情况下,如果您要向 Simple Storage Service (Amazon S3) 发送日志并更改配置(例如向 CloudWatch 发送日志),保留在 Simple Storage Service (Amazon S3) 中的日志都不会受到影响。您仍可以在日志数据所在的 Simple Storage Service (Amazon S3) 存储桶中查询日志数据。

在 Simple Storage Service (Amazon S3) 中管理日志文件

Simple Storage Service(Amazon S3)中的 Amazon Redshift 日志文件的数量和大小在很大程度上取决于您集群中的活动。如果您有一个活动的集群生成了大量日志,则 Amazon Redshift 可能会更频繁地生成日志文件。对于同一类活动,您可能有一系列日志文件,例如同一个小时有多个连接日志。

当 Amazon Redshift 使用 Simple Storage Service (Amazon S3) 存储日志时,您需要为在 Simple Storage Service (Amazon S3) 中使用的存储支付相应费用。在对 Simple Storage Service (Amazon S3) 配置日志记录之前,应计划需存储日志文件的时长。在此过程中,请确定何时可根据审计需求删除或归档日志文件。您制定的计划在很大程度上取决于您存储的数据类型,例如需满足合规性或法规要求的数据。有关 Simple Storage Service(Amazon S3)定价的更多信息,请转至 Amazon Simple Storage Service(S3)定价

Amazon Redshift 审计日志记录的存储桶权限

当您对 Simple Storage Service (Amazon S3) 启用日志记录时,Amazon Redshift 会收集日志记录信息并将其上载到 Simple Storage Service (Amazon S3) 中存储的日志文件。您可以使用现有存储桶或新存储桶。Amazon Redshift 需要对存储桶具备以下 IAM 权限:

  • s3:GetBucketAcl 该服务要求对 Simple Storage Service(Amazon S3)存储桶具备读取权限,以便可以识别存储桶拥有者。

  • s3:PutObject 该服务要求具备放置对象权限,以便上载日志。此外,启用日志记录的 IAM 用户或 IAM 角色必须具有对 Simple Storage Service(Amazon S3)存储桶的 s3:PutObject 权限。每次上传日志时,该服务就会确定当前存储桶拥有者与启用日志记录时的存储桶拥有者是否一致。如果这些拥有者不匹配,您将收到一条错误。

如果启用审计日志记录时,您选择了创建新存储桶的选项,则会对其应用正确的权限。不过,如果您在 Simple Storage Service(Amazon S3)中创建自己的存储桶或使用现有存储桶,请确保添加包含存储桶名称的存储桶策略。日志使用服务主体凭证传送。对于大多数 Amazon Web Services 区域,您可添加 Redshift 服务主体名称,redshift t.amazonaws.com

注意

中国(北京)区域的 ARN 格式使用 aws-cn 标识符,而不是 aws 标识符,如以下策略示例所示。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Put bucket policy needed for audit logging", "Effect": "Allow", "Principal": { "AWS": "arn:aws-cn:iam::111890595117:user/logs" }, "Action": "s3:PutObject", "Resource": "arn:aws-cn:s3:::AuditLogs/*" }, { "Sid": "Get bucket policy needed for audit logging ", "Effect": "Allow", "Principal": { "AWS": "arn:aws-cn:iam::111890595117:user/logs" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws-cn:s3:::AuditLogs" } ] }

该存储桶策略使用以下格式。ServiceNameBucketName 是您自己的值的占位符。还可在存储桶策略中指定关联的操作和资源。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Put bucket policy needed for audit logging", "Effect": "Allow", "Principal": { "Service": "ServiceName" }, "Action": [ "s3:PutObject", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::BucketName", "arn:aws:s3:::BucketName/*" ] } ] }

以下示例就是针对美国东部(弗吉尼亚北部)区域的存储桶策略,该存储桶名为 AuditLogs

{ "Version": "2008-10-17", "Statement": [ { "Sid": "Put bucket policy needed for audit logging", "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::AuditLogs", "arn:aws:s3:::AuditLogs/*" ] } ] }

原定设置情况下未启用的区域(也称为“选择加入”区域)需要特定于区域的服务主体名称。对于这些内容,服务主体名称包括区域,格式为 redshift.region.amazonaws.com。例如,redshift.ap-east-1.amazonaws.com 针对亚太地区(香港)区域。有关原定设置情况下未启用的区域列表,请参阅《Amazon 一般参考》中的管理 Amazon Web Services 区域

注意

特定于区域的服务主体名称与集群所在的区域对应。

日志文件的最佳实践

当 Redshift 将日志文件上载到 Simple Storage Service(Amazon S3)时,可以分段上载大型文件。如果分段上载不成功,则文件的一部分可能会保留在 Simple Storage Service(Amazon S3)存储桶中。这可能会导致额外的存储成本,因此了解什么情况下分段上载会失败非常重要。有关审计日志的分段上载的详细说明,请参阅使用分段上载来上载和复制对象中止分段上载

有关创建 Simple Storage Service(Amazon S3)存储桶和添加存储桶策略的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的创建存储桶编辑存储桶权限

Amazon Redshift 审计日志记录的存储桶结构

预设情况下,Amazon Redshift 通过使用下列存储桶和对象结构在 Simple Storage Service(Amazon S3)存储桶中整理日志文件:

AWSLogs/AccountID/ServiceName/Region/Year/Month/Day/AccountID_ServiceName_Region_ClusterName_LogType_Timestamp.gz

例如:AWSLogs/123456789012/redshift/us-east-1/2013/10/29/123456789012_redshift_us-east-1_mycluster_userlog_2013-10-29T18:01.gz

如果您提供 Simple Storage Service(Amazon S3)键前缀,则该前缀放在密钥开头。

例如,如果指定前缀 myprefix:myprefix/AWSLogs/123456789012/redshift/us-east-1/2013/10/29/123456789012_redshift_us-east-1_mycluster_userlog_2013-10-29T18:01.gz

Simple Storage Service(Amazon S3)键前缀不得超过 512 个字符。其中不得包含空格( )、双引号(“)、单引号(‘)、反斜杠(\)。此外还有很多不得使用的特殊字符和控制字符。这些字符的十六进制代码如下:

  • x00 – x20

  • x 22

  • x 27

  • x5c

  • x7f 或更大

Simple Storage Service (Amazon S3) 中的 Amazon Redshift 审计日志记录故障排除

Amazon Redshift 审计日志记录可能会因如下原因而中断:

  • Amazon Redshift 无权将日志上载到 Simple Storage Service(Amazon S3)存储桶中。验证相应存储桶是否配置了适当的 IAM 策略。有关更多信息,请参阅Amazon Redshift 审计日志记录的存储桶权限

  • 存储桶拥有者发生变化。当 Amazon Redshift 上载日志时,它会验证存储桶拥有者与启用日志记录时的存储桶拥有者是否相同。如果存储桶拥有者发生变化,则在您配置其他存储桶以用于审计日志记录之前,Amazon Redshift 不会上载日志。

  • 找不到存储桶。如果相应存储桶在 Simple Storage Service(Amazon S3)中已被删除,则 Amazon Redshift 无法上载日志。您必须重新创建该存储桶,或对 Amazon Redshift 进行配置以将日志上载到其他存储桶。

使用 Amazon CloudTrail 记录 Amazon Redshift API 调用

Amazon Redshift 与 Amazon CloudTrail 集成,后者是在 Amazon Redshift 中提供用户、角色或 Amazon 服务所采取操作的记录的服务。CloudTrail 将 Amazon Redshift 的所有 API 调用作为事件捕获。它们包括来自 Amazon Redshift 控制台的调用和对 Amazon Redshift API 操作的代码调用。如果您创建跟踪记录,则可以使 CloudTrail 事件持续传送到 Simple Storage Service(Amazon S3)存储桶(包括 Amazon Redshift 的事件)。如果您不配置跟踪记录,则仍可在 CloudTrail 控制台中的 Event history(事件历史记录)中查看最新事件。通过使用 CloudTrail 收集的信息,您可以确定特定的详细信息。这些信息包括向数据 Amazon Redshift 发出了什么请求、发出请求的 IP 地址、何人发出的请求、请求的发出时间以及其他信息。

您可以将 CloudTrail 与 Amazon Redshift 数据库审计日志记录一起使用,也可以单独使用前者。

要了解有关 CloudTrail 的更多信息,请参阅 Amazon CloudTrail 用户指南

CloudTrail 中的 Amazon Redshift 信息

在您创建 Amazon 账户时,将在该账户上启用 CloudTrail。当 Amazon Redshift 中发生活动时,该活动将记录在 CloudTrail 事件中,并与其他 Amazon 服务事件一同保存在 Event history(事件历史记录)中。您可以在 Amazon 账户中查看、搜索和下载最新事件。有关更多信息,请参阅使用 CloudTrail 事件历史记录查看事件

要持续记录 Amazon 账户中的事件(包括 Amazon Redshift 的事件),请创建跟踪记录。通过跟踪,CloudTrail 可将日志文件传送至 Simple Storage Service(Amazon S3)存储桶。默认情况下,在控制台中创建跟踪记录时,此跟踪记录应用于所有 区域。此跟踪记录在 Amazon 分区中记录所有区域中的事件,并将日志文件传送至您指定的 Simple Storage Service(Amazon S3)存储桶。此外,您可以配置其他Amazon服务,进一步分析在 CloudTrail 日志中收集的事件数据并采取行动。有关更多信息,请参阅:

所有 Amazon Redshift 操作都由 CloudTrail 记录,并记录在 Amazon Redshift API 参考中。例如,对 CreateClusterDeleteClusterDescribeCluster 操作的调用会在 CloudTrail 日志文件中生成条目。

每个事件或日志条目都包含有关生成请求的人员信息。身份信息可帮助您确定以下内容:

  • 请求是使用根用户凭证还是 IAM 用户凭证发出的。

  • 请求是使用角色还是联合身份用户的临时安全凭证发出的。

  • 请求是否由其它 Amazon 服务发出。

有关更多信息,请参阅 CloudTrail userIdentity 元素

了解 Amazon Redshift 日志文件条目

跟踪记录是一种配置,可用于将事件作为日志文件传送到您指定的 Simple Storage Service(Amazon S3)存储桶。CloudTrail 日志文件包含一个或多个日志条目。一个事件表示来自任何源的一个请求,包括有关请求的操作、操作的日期和时间、请求参数等方面的信息。CloudTrail 日志文件不是公用 API 调用的有序堆栈跟踪,因此它们不会按任何特定顺序显示。

以下示例显示了示例 CreateCluster 调用的一个 CloudTrail 日志条目。

{ "eventVersion": "1.04", "userIdentity": { "type": "IAMUser", "principalId": "AIDAMVNPBQA3EXAMPLE", "arn": "arn:aws:iam::123456789012:user/Admin", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "Admin", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2017-03-03T16:51:56Z" } }, "invokedBy": "signin.amazonaws.com" }, "eventTime": "2017-03-03T16:56:09Z", "eventSource": "redshift.amazonaws.com", "eventName": "CreateCluster", "awsRegion": "us-east-2", "sourceIPAddress": "52.95.4.13", "userAgent": "signin.amazonaws.com", "requestParameters": { "clusterIdentifier": "my-dw-instance", "allowVersionUpgrade": true, "enhancedVpcRouting": false, "encrypted": false, "clusterVersion": "1.0", "masterUsername": "awsuser", "masterUserPassword": "****", "automatedSnapshotRetentionPeriod": 1, "port": 5439, "dBName": "mydbtest", "clusterType": "single-node", "nodeType": "dc1.large", "publiclyAccessible": true, "vpcSecurityGroupIds": [ "sg-95f606fc" ] }, "responseElements": { "nodeType": "dc1.large", "preferredMaintenanceWindow": "sat:05:30-sat:06:00", "clusterStatus": "creating", "vpcId": "vpc-84c22aed", "enhancedVpcRouting": false, "masterUsername": "awsuser", "clusterSecurityGroups": [], "pendingModifiedValues": { "masterUserPassword": "****" }, "dBName": "mydbtest", "clusterVersion": "1.0", "encrypted": false, "publiclyAccessible": true, "tags": [], "clusterParameterGroups": [ { "parameterGroupName": "default.redshift-1.0", "parameterApplyStatus": "in-sync" } ], "allowVersionUpgrade": true, "automatedSnapshotRetentionPeriod": 1, "numberOfNodes": 1, "vpcSecurityGroups": [ { "status": "active", "vpcSecurityGroupId": "sg-95f606fc" } ], "iamRoles": [], "clusterIdentifier": "my-dw-instance", "clusterSubnetGroupName": "default" }, "requestID": "4c506036-0032-11e7-b8bf-d7aa466e9920", "eventID": "13ba5550-56ac-405b-900a-8a42b0f43c45", "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }

以下示例显示了示例 DeleteCluster 调用的一个 CloudTrail 日志条目。

{ "eventVersion": "1.04", "userIdentity": { "type": "IAMUser", "principalId": "AIDAMVNPBQA3EXAMPLE", "arn": "arn:aws:iam::123456789012:user/Admin", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "Admin", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2017-03-03T16:58:23Z" } }, "invokedBy": "signin.amazonaws.com" }, "eventTime": "2017-03-03T17:02:34Z", "eventSource": "redshift.amazonaws.com", "eventName": "DeleteCluster", "awsRegion": "us-east-2", "sourceIPAddress": "52.95.4.13", "userAgent": "signin.amazonaws.com", "requestParameters": { "clusterIdentifier": "my-dw-instance", "skipFinalClusterSnapshot": true }, "responseElements": null, "requestID": "324cb76a-0033-11e7-809b-1bbbef7710bf", "eventID": "59bcc3ce-e635-4cce-b47f-3419a36b3fa5", "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }

在 CloudTrail 中使用数据共享信息

CloudTrail 将记录所有 Amazon Redshift 数据共享 API 操作。例如,对 AuthorizeDataShareDeauthorizeDataShareDescribeDataShares 操作的调用将在 CloudTrail 日志文件中生成条目。有关数据共享 API 操作的更多信息,请参阅 Amazon Redshift API 参考

每个事件或日志条目都包含有关生成请求的人员信息。身份信息可帮助您确定以下内容:

  • 请求是使用根用户凭证还是 IAM 用户凭证发出的。

  • 请求是使用 IAM 角色还是联合身份用户的临时安全凭证发出的。

  • 请求是否由其它Amazon服务发出。

有关 CloudTrail userIdentity 元素的更多信息,请参阅 CloudTrail userIdentity 元素

了解数据共享的日志文件条目

CloudTrail 中的跟踪记录是一种配置,可用于将事件作为日志文件传送到您指定的 Simple Storage Service(Amazon S3)存储桶。CloudTrail 日志文件包含一个或多个日志条目。事件 表示来自任何源的单个请求。事件包括有关所请求操作的信息、操作的日期和时间或者请求参数等。CloudTrail 日志文件不是公有 API 调用的有序堆栈跟踪,它们不会按任何特定顺序显示。

下面的示例显示了一个 CloudTrail 日志条目,该条目说明了 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" }

您可以使用 Simple Storage Service(Amazon S3)的存储桶通知并指示 Simple Storage Service(Amazon S3)将对象创建事件发布到 Amazon Lambda。当 CloudTrail 将日志写入 S3 存储桶时,Amazon S3 随后可通过将 Simple Storage Service(Amazon S3)对象创建事件作为参数传递来调用 Lambda 函数。Lambda 函数可读取日志对象并处理由 CloudTrail 记录的访问记录。有关更多信息,请参阅将 Amazon Lambda 与 Amazon CloudTrail 结合使用

Amazon CloudTrail 日志中的 Amazon Redshift 账户 ID

当 Amazon Redshift 为您调用其他 Amazon 服务时,该次调用将以属于 Amazon Redshift 的账户 ID 记录下来。它未以您的账户 ID 记录。例如,假设 Amazon Redshift 调用 Amazon Key Management Service(Amazon KMS)操作(如 CreateGrantDecryptEncryptRetireGrant)以管理集群上的加密。在这种情况下,调用由 Amazon CloudTrail 使用 Amazon Redshift 账户 ID 记录。

当调用其他 Amazon 服务时,Amazon Redshift 使用下表中的账户 ID。

区域 区域 账户 ID
美国东部(弗吉尼亚北部)区域 us-east-1 368064434614
美国东部(俄亥俄)区域 us-east-2 790247189693
美国西部(加利福尼亚北部)区域 us-west-1 703715109447
美国西部(俄勒冈)区域 us-west-2 473191095985
Africa (Cape Town) Region af-south-1 420376844563
亚太地区(香港)区域 ap-east-1 651179539253
亚太地区(雅加达)区域 ap-southeast-3 623197973179
亚太(孟买)区域 ap-south-1 408097707231
亚太地区(大阪)区域 ap-northeast-3 398671365691
亚太区域(首尔) ap-northeast-2 713597048934
亚太区域(新加坡) ap-southeast-1 960118270566
亚太区域(悉尼) ap-southeast-2 485979073181
亚太区域(东京) ap-northeast-1 615915377779
加拿大(中部)区域 ca-central-1 764870610256
中国(北京)区域 cn-north-1 066403562008
中国(宁夏)区域 cn-northwest-1 194116488714
欧洲(法兰克福)区域 eu-central-1 434091160558
欧洲(爱尔兰)区域 eu-west-1 246478207311
欧洲(伦敦)区域 eu-west-2 885798887673
Europe (Milan) Region eu-south-1 041313461515
欧洲(巴黎)区域 eu-west-3 694668203235
欧洲(斯德哥尔摩)区域 eu-north-1 553461782468
Middle East (Bahrain) Region me-south-1 051362938876
南美洲(圣保罗)区域 sa-east-1 392442076723

以下示例显示了 Amazon Redshift 所调用的 Amazon KMS Decrypt 操作的 CloudTrail 日志条目。

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