收集 AWS S3 服务器访问日志

支持的语言:

本文档介绍了如何通过设置 Google Security Operations Feed 来收集 AWS S3 服务器访问日志。解析器使用 grok 模式提取字段,处理潜在的 JSON 输入,并将提取的字段映射到 UDM。它会根据特定字段的存在情况和值执行数据转换、类型转换和条件逻辑,以确保准确表示 UDM。

准备工作

确保您满足以下前提条件:

  • Google SecOps 实例
  • 对 AWS 的特权访问权限

如何配置 AWS S3 服务器访问日志记录

Google SecOps 支持通过 Amazon SQS 使用 Amazon S3 收集日志。

  1. 登录 AWS 管理控制台。
  2. 访问 Amazon S3 控制台。
  3. 依次前往 Amazon S3 > 存储分区
  4. 选择现有存储桶或创建新存储桶。
  5. 点击属性
  6. 服务器访问日志记录部分,点击修改
  7. 选择启用
  8. 目标存储桶字段中,输入要将日志记录对象发送到的新存储桶的名称,或选择现有存储桶作为目标存储桶。
  1. 点击保存更改
  2. 如需为 S3 存储桶创建 SQS 队列,请配置具有 S3 存储空间的 Amazon SQS 实例。 如需了解详情,请参阅为通知配置存储桶(SNS 主题或 SQS 队列)

根据服务和区域,参阅以下 AWS 文档来确定连接端点:

设置 Feed

您可以通过两种不同的入口点在 Google SecOps 平台中设置 Feed:

  • SIEM 设置 > Feed
  • 内容中心 > 内容包

通过“SIEM 设置”>“Feed”设置 Feed

如需为相应产品系列中的不同日志类型配置多个 Feed,请参阅按产品配置 Feed

如需配置单个 Feed,请按以下步骤操作:

  1. 依次前往 SIEM 设置> Feed
  2. 点击添加新 Feed
  3. 在下一页上,点击配置单个 Feed
  4. 来源类型列表中,选择 Amazon S3Amazon SQS
  5. 日志类型列表中,选择 AWS S3 服务器访问
  6. 点击下一步
  7. Google SecOps 支持使用访问密钥 ID 和密钥方法收集日志。如需创建访问密钥 ID 和密钥,请参阅使用 AWS 配置工具身份验证
  8. 根据您创建的 AWS S3 服务器访问配置,为输入参数指定值:
    • 如果使用 Amazon S3,请为以下字段指定值:
      • 区域
      • S3 URI
      • URI 是
      • 来源删除选项
      • 访问密钥 ID
      • Secret 访问密钥
    • 如果使用 Amazon SQS,请为以下字段指定值:
      • 区域
      • 队列名称
      • 账号
      • 队列访问密钥 ID
      • 队列私有访问密钥
      • 来源删除选项
  9. 点击下一步,然后点击提交

设置来自内容中心的 Feed

您可以使用 Amazon SQS(首选)或 Amazon S3 在 Google SecOps 中配置提取 Feed。

为以下字段指定值:

  • 区域:S3 存储桶或 SQS 队列托管的区域。
  • 队列名称:要从中读取日志数据的 SQS 队列的名称。
  • 账号:拥有 SQS 队列的账号。
  • 队列访问密钥 ID:20 字符的账号访问密钥 ID。例如 AKIAOSFOODNN7EXAMPLE
  • 队列私有访问密钥:40 字符的私有访问密钥。例如 wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
  • 源删除选项:用于在转移数据后删除文件和目录的选项。

高级选项

  • Feed 名称:用于标识 Feed 的预填充值。
  • 来源类型:用于将日志收集到 Google SecOps 中的方法。
  • 资产命名空间与 Feed 关联的命名空间
  • 提取标签:应用于相应 Feed 中所有事件的标签。

UDM 映射表

日志字段 UDM 映射 逻辑
aclRequired target.resource.attribute.labels.key:“aclRequired”
target.resource.attribute.labels.valueaclRequired 的值
直接从原始日志字段 aclRequired 映射。
authenticationtype extensions.auth.auth_details 直接从原始日志字段 authenticationtype 映射。
bucket target.resource.name 直接从原始日志字段 bucket 映射。
bucket target.resource.resource_type:“STORAGE_BUCKET” 如果存在 bucket 字段,解析器会将 resource_type 设置为“STORAGE_BUCKET”。
bucketowner target.resource.product_object_id 直接从原始日志字段 bucketowner 映射。
bytes_sent network.sent_bytes 直接从原始日志字段 bytes_sent 映射,方法是将该字段转换为无符号整数并将“-”替换为“0”。
ciphersuite network.application_protocol:“HTTPS” 如果存在 ciphersuite 字段,解析器会将 application_protocol 设置为“HTTPS”。
ciphersuite network.tls.cipher 直接从原始日志字段 ciphersuite 映射。
errorcode security_result.action_details 直接从原始日志字段 errorcode 映射。
errorcode security_result.action:“BLOCK” 如果 errorcode 字段包含“AccessDenied”(不区分大小写),解析器会将 action 设置为“BLOCK”。
hostheader target.hostname 从原始日志字段 hostheader 中提取,可能会移除端口号。
hostheader target.port 如果存在端口号,则从原始日志字段 hostheader 中提取。
hostid target.resource.attribute.labels.key:“S3 扩展请求 ID”
target.resource.attribute.labels.valuehostid 的值
直接从原始日志字段 hostid 映射。
http_capture network.http.method HTTP 方法是从 http_capture 字段中提取的。
http_capture network.http.version HTTP 版本是从 http_capture 字段中提取的。
http_capture target.url 目标网址使用 hostheaderhttp_request_uri(从 http_capture 中提取)构建,并根据 ciphersuite 的存在情况添加“http://”或“https://”前缀。
httpstatus network.http.response_code 直接从原始日志字段 httpstatus 映射,并将其转换为整数。
object_version_id target.resource.product_object_id 直接从原始日志字段 object_version_id 映射。
objectsize target.file.size 直接从原始日志字段 objectsize 映射,方法是将该字段转换为无符号整数并将“-”替换为“0”。
operation metadata.product_event_type 直接从原始日志字段 operation 映射。
referrer network.http.referral_url 直接从原始日志字段 referrer(移除引号后)映射。
remoteip metadata.event_type:“USER_RESOURCE_ACCESS” 如果 remoteip 字段为空,解析器会将 event_type 设置为“USER_RESOURCE_ACCESS”。
remoteip principal.ip 直接从原始日志字段 remoteip 映射。
requester target.resource.attribute.labels.key:“访问点 ARN”
target.resource.attribute.labels.valuerequester 的值
直接从原始日志字段 requester 映射。
requester_user principal.user.userid 直接从原始日志字段 requester_user 映射。
requestid network.session_id 直接从原始日志字段 requestid 映射。
request_time_ms network.session_duration.nanos 直接从原始日志字段 request_time_ms 映射,先将其转换为整数,然后将“-”替换为“0”,并用零填充以表示纳秒。
signatureversion target.resource.attribute.labels.key:“签名版本”
target.resource.attribute.labels.valuesignatureversion 的值
直接从原始日志字段 signatureversion 映射。
time metadata.event_timestamp 从原始日志字段 time 解析并转换为时间戳。
tlsVersion network.tls.version 直接从原始日志字段 tlsVersion 映射。
useragent network.http.user_agent 直接从原始日志字段 useragent(移除引号后)映射。
(解析器逻辑) metadata.event_type:“NETWORK_HTTP” 解析器将默认 event_type 设置为“NETWORK_HTTP”。
(解析器逻辑) metadata.log_type:“AWS_S3_SERVER_ACCESS” 解析器将 log_type 设置为“AWS_S3_SERVER_ACCESS”。
(解析器逻辑) metadata.product_name:“AWS S3 Server Access” 解析器将 product_name 设置为“AWS S3 Server Access”。
(解析器逻辑) metadata.product_version:“HTTP/http_version 解析器使用提取的 http_version 设置 product_version
(解析器逻辑) metadata.vendor_name:“AMAZON” 解析器将 vendor_name 设置为“AMAZON”。
(解析器逻辑) network.application_protocol:“HTTP” 如果不存在 ciphersuite 字段,解析器会将 application_protocol 设置为“HTTP”。
(解析器逻辑) timestamp 解析器会在处理事件时将事件 timestamp 设置为当前时间。

需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。