收集 AWS Redshift 日志
解析器版本:1.0
本文档介绍了如何使用 Amazon S3 将 AWS Redshift 日志注入到 Google Security Operations。
Amazon Redshift 是 Amazon Web Services 提供的一项全代管式 PB 级云数据仓库服务。它支持使用基于 SQL 的工具和商业智能应用快速查询和分析大型数据集。Amazon Redshift 会记录数据库活动,包括身份验证尝试、连接、断开连接、用户定义更改以及针对数据库运行的查询。此集成使用 Amazon Redshift 的原生审核日志记录功能将日志文件传送到 S3 存储桶,然后 Google SecOps 使用 Amazon S3 V2 Feed 提取这些日志文件。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- 对 AWS 管理控制台的特权访问权限,并拥有以下管理权限:
- Amazon Redshift(集群、参数组)
- Amazon S3(存储桶、存储桶政策)
- AWS IAM(用户、政策)
为 Amazon Redshift 审核日志记录配置 S3 存储桶
Amazon Redshift 会将审核日志文件上传到 S3 存储桶。您必须配置 S3 存储桶政策,以允许 Amazon Redshift 服务写入日志文件。
创建和配置 S3 存储桶
- 按照以下用户指南创建 Amazon S3 存储桶:创建存储桶。
保存存储桶名称和区域(例如
redshift-audit-logs-to-secops),以供日后参考。在 https://console.aws.amazon.com/s3 的 Amazon S3 控制台中,选择已创建的存储桶。
选择权限标签页。
在存储桶政策部分,点击修改。
添加以下存储桶政策(将
redshift-audit-logs-to-secops替换为您的存储桶名称):{ "Version": "2012-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:::redshift-audit-logs-to-secops", "arn:aws:s3:::redshift-audit-logs-to-secops/*" ] } ] }点击保存更改。
启用用户活动日志参数
启用审核日志记录后,系统会自动捕获连接日志和用户日志。如需同时捕获用户活动日志(记录在数据库中运行之前的每个查询),您必须启用 enable_user_activity_logging 数据库参数。
- 访问 https://console.aws.amazon.com/redshiftv2/,登录 Amazon Redshift 控制台。
- 在导航菜单中,依次前往配置 > 工作负载管理。
- 选择与您的集群关联的参数组。
- 选择参数标签页。
- 点击修改参数。
- 将 enable_user_activity_logging 参数值设置为 true。
点击保存。
启用 Amazon Redshift 审核日志记录到 S3
- 访问 https://console.aws.amazon.com/redshiftv2/,登录 Amazon Redshift 控制台。
- 在导航菜单中,选择集群,然后选择要配置的集群。
- 选择属性标签页。
- 在数据库配置面板中,点击修改,然后选择修改审核日志记录。
- 在修改审核日志记录页面上,选择开启。
- 对于日志目标位置,选择 S3 存储桶。
- 对于 S3 存储桶,请选择您配置的存储桶(例如
redshift-audit-logs-to-secops)。 - 可选:输入 S3 密钥前缀,以整理存储桶中的日志文件(例如
audit-logs/)。 - 选择要导出的日志:
- 连接日志 - 身份验证尝试、连接和断开连接
- 用户日志 - 数据库用户定义方面的更改
- 用户活动日志 - 每个查询在数据库中运行之前
- 点击保存更改。
如需了解详情,请参阅《Amazon Redshift 管理指南》中的数据库审核日志记录。
为 Google SecOps 配置 IAM 用户
Google SecOps 需要一个对 S3 存储桶具有读取权限的 IAM 用户,才能注入导出的审核日志。
- 按照以下用户指南创建用户:创建 IAM 用户。
- 选择创建的用户。
- 选择安全凭据标签页。
- 在访问密钥部分中,点击创建访问密钥。
- 选择第三方服务作为使用情形。
- 点击下一步。
- 可选:添加说明标记。
- 点击创建访问密钥。
- 点击下载 .csv 文件以保存访问密钥和密钥,供日后参考。
- 点击完成。
- 选择权限标签页。
- 点击权限政策部分中的添加权限。
- 选择添加权限。
- 选择直接附加政策。
- 搜索 AmazonS3FullAccess 政策。
- 选择相应政策。
- 点击下一步。
- 点击添加权限。
在 Google SecOps 中配置 Feed 以注入 AWS Redshift 日志
- 前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 在下一页上,点击配置单个 Feed。
- 输入一个唯一的 Feed 名称。
- 选择 Amazon S3 V2 作为来源类型。
- 选择 AWS Redshift 作为日志类型。
- 点击下一步,然后点击提交。
为以下字段指定值:
- S3 URI:
s3://redshift-audit-logs-to-secops/audit-logs/ - 来源删除选项:根据您的偏好选择删除选项
- 文件存在时间上限:包含过去指定天数内修改过的文件(默认值为 180 天)
- 访问密钥 ID:有权访问 S3 存储桶的用户访问密钥
- Secret Access Key:有权访问 S3 存储桶的用户私钥
- 资源命名空间:资源命名空间
- 注入标签:要应用于此 Feed 中事件的标签
- S3 URI:
点击下一步,然后点击提交。
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 |
|---|---|---|
func_label |
additional.fields |
已合并 |
lpclagg_label |
additional.fields |
已合并 |
lpcltype_label |
additional.fields |
已合并 |
msg |
metadata.description |
直接映射 |
has_principal |
metadata.event_type |
已映射:true → STATUS_UPDATE |
has_target_resource |
metadata.event_type |
已映射:true → USER_RESOURCE_ACCESS |
has_user |
metadata.event_type |
已映射:true → USER_UNCATEGORIZED |
column1 |
metadata.product_event_type |
直接映射 |
requestID |
metadata.product_log_id |
直接映射 |
column20 |
network.application_protocol_version |
直接映射 |
column9 |
network.session_duration.seconds |
已重命名/已映射 |
column21 |
network.session_id |
直接映射 |
xid |
network.session_id |
直接映射 |
column11 |
network.tls.cipher |
直接映射 |
column10 |
network.tls.version |
直接映射 |
column16 |
principal.application |
直接映射 |
column3 |
principal.asset.ip |
已合并 |
log_event.src_ip |
principal.asset.ip |
已合并 |
column3 |
principal.hostname |
直接映射 |
column3 |
principal.ip |
已合并 |
log_event.src_ip |
principal.ip |
已合并 |
region |
principal.location.name |
直接映射 |
column17 |
principal.platform_version |
直接映射 |
column4 |
principal.port |
直接映射 |
column5 |
principal.process.pid |
直接映射 |
pid |
principal.process.pid |
直接映射 |
accountID |
principal.user.userid |
直接映射 |
user_id |
principal.user.userid |
直接映射 |
authmethod_label |
security_result.detection_fields |
已合并 |
compression_label |
security_result.detection_fields |
已合并 |
driver_version_label |
security_result.detection_fields |
已合并 |
iamauthguid_label |
security_result.detection_fields |
已合并 |
mtu_label |
security_result.detection_fields |
已合并 |
plugin_name_label |
security_result.detection_fields |
已合并 |
ssl_compression_label |
security_result.detection_fields |
已合并 |
ssl_expansion_label |
security_result.detection_fields |
已合并 |
level |
security_result.severity |
映射:(?i)Info → INFORMATIONAL、(?i)Error → ERROR、(?i)Warning → MEDIUM |
file |
target.file.full_path |
直接映射 |
expected_bucket_label |
target.resource.attribute.labels |
已合并 |
expected_s3_prefix_label |
target.resource.attribute.labels |
已合并 |
sql_query_label |
target.resource.attribute.labels |
已合并 |
time_zone_label |
target.resource.attribute.labels |
已合并 |
ClusterIdentifier |
target.resource.name |
直接映射 |
column6 |
target.resource.name |
直接映射 |
db |
target.resource.name |
直接映射 |
column7 |
target.user.user_display_name |
直接映射 |
user |
target.user.user_display_name |
直接映射 |
| 不适用 | metadata.event_type |
常量:USER_RESOURCE_ACCESS |
| 不适用 | security_result.severity |
常量:INFORMATIONAL |
| 不适用 | target.resource.type |
常量:DATABASE |