如何对我的 Amazon Redshift 集群执行数据库审计?
简短描述
Amazon Redshift 提供三个日志记录选项:
审计日志和 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 和数据库活动。 |
在以下日志文件中存储信息: | |
- 连接日志
- 用户日志
- 用户活动日志 注意:您必须为用户活动日志启用 enable_user_activity_logging 数据库参数。有关更多信息,请参阅启用日志记录。
| 在多个表中存储信息。使用下面的表查看 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 中无限期存储。有关更多信息,请参阅对象生命周期管理。
相关信息
优化查询性能
用户活动日志发行说明