如何使用日志跟踪 Amazon Redshift 数据库集群中的活动?

上次更新时间:2020 年 12 月 23 日

如何对我的 Amazon Redshift 集群执行数据库审计?

简短描述

Amazon Redshift 提供三个日志记录选项:

  • 审计日志:存储在 Amazon Simple Storage Service (Amazon S3) 存储桶中
  • STL 表:存储在集群中的每个节点上
  • AWS CloudTrail:存储在 Amazon S3 存储桶中

审计日志和 STL 表记录数据库级别的活动,如哪些用户登录及其登录时间,以及这些用户在何时执行了哪些 SQL 活动。CloudTrail 跟踪服务级别的活动。

注意:要使用外部表查看日志,请使用 Amazon Redshift Spectrum。有关更多信息,请参阅使用 Amazon Redshift Spectrum 分析数据库审计日志以确保安全性和合规性

解决方法

审计日志和 STL 表

下表比较审计日志和 STL 表。选择适合于您的使用案例的日志记录选项。

审计日志 STL 表
必须启用。要启用审计日志记录,请遵循使用控制台配置审计使用 Amazon Redshift CLI 和 API 配置审计的步骤。 在数据仓库集群中的每个节点上自动可用。
除非您定义 Amazon S3 生命周期规则以自动存档或删除文件,否则审计日志文件将无限期存储。有关更多信息,请参阅对象生命周期管理 日志历史记录存储 2 到 5 天,具体取决于日志使用情况和可用磁盘空间。要延长保留期,请使用 GitHub 上的 AWS 实验室 Amazon Redshift 系统对象持久化使用程序
访问审计日志文件不需要 Amazon Redshift 数据库访问权限。 访问 STL 表需要 Amazon Redshift 数据库访问权限。
查看 Amazon S3 中存储的日志不需要数据库计算资源。 对 STL 表运行查询需要数据库计算资源,就和运行其他查询一样。
使用时间戳可以关联进程 ID 和数据库活动。集群重启不影响 Amazon S3 中的审计日志。 因为进程 ID 在集群重启时可能回收,所以不一定总能够关联进程 ID 和数据库活动。
在以下日志文件中存储信息: 多个表中存储信息。使用下面的表查看 S3 审计日志中存储的类似信息:
  • SVL_STATEMENTTEXT:提供在系统中已运行的 SQL 命令的完全记录。组合 STL_DDLTEXT、STL_QUERYTEXT 和 STL_UTILITYTEXT 表中的所有行。
  • STL_CONNECTION_LOG:记录身份验证尝试、连接或断开连接。
用户活动日志中记录所有 SQL 语句。 运行的查询将记录在 STL_QUERY 中。DDL 语句记录在 STL_DDLTEXT 中。非 SELECT SQL 命令的文本记录在 STL_UTILITYTEXT 中。
Amazon Redshift 一接收到语句就进行记录。但 Amazon S3 上的文件是成批更新的,需要几个小时才会显示。 日志是在每条 SQL 语句执行之后生成的。
记录谁执行了什么操作,该操作何时发生,但不记录该操作执行了多少时间。 使用 STARTTIME 和 ENDTIME 列确定活动多少时间完成。要确定是哪个用户执行了操作,请组合使用 SVL_STATEMENTTEXT (userid) 和 PG_USER (usesysid)。
您需要为日志在 Amazon S3 中使用的存储付费。 STL 表存储不需要额外的费用。
记录仅领导节点查询 不记录仅领导节点查询。

CloudTrail

利用 CloudTrail 收集的信息,您可以确定对 AWS 服务成功发出的请求、发出请求的用户和时间等。有关更多信息,请参阅使用 AWS CloudTrail 记录 Amazon Redshift API 调用

除非您定义生命周期规则以自动存档或删除文件,否则 CloudTrail 日志文件将在 Amazon S3 中无限期存储。有关更多信息,请参阅对象生命周期管理


这篇文章对您有帮助吗?


您是否需要账单或技术支持?