收集 Amazon VPC Transit Gateway 流日志

解析器版本:3.0

支持的语言:

本文档介绍了如何使用 Amazon S3 或 Amazon Kinesis Data Firehose 将 Amazon VPC Transit Gateway 流日志注入 Google Security Operations。 Transit Gateway 流日志可捕获 Transit Gateway 连接中的详细网络流量元数据(来源和目标 IP、端口、协议、字节和数据包计数、操作)。这些数据可在 Google SecOps 中实现安全监控、异常值检测和合规性审核。

准备工作

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

  • Google SecOps 实例。
  • 具有以下权限的 AWS 特权访问权限:
    • 创建和管理 Transit Gateway 流日志
    • 创建 S3 存储桶(适用于 S3 导出选项)
    • 创建 IAM 用户、政策和角色
    • 配置 Kinesis Data Firehose 传送流(对于 Firehose 选项)
    • 访问 CloudWatch Logs 并创建订阅过滤条件(适用于 Firehose 选项)

选项 - 导出到 Amazon S3

启用传输网关流日志(到 S3)

  1. 访问 https://console.aws.amazon.com/vpc/,打开 Amazon VPC 控制台。
  2. 在导航窗格中,选择中转网关。
  3. 选中一个或多个中转网关对应的复选框,然后选择操作 > 创建流日志。
  4. 在目标位置部分,选择发送到 Amazon S3 存储桶。
  5. 在 S3 存储桶 ARN 字段中,输入现有 S3 存储桶的 ARN(例如 arn:aws:s3:::tgw-flowlogs-bucket)。

  6. 对于日志记录格式,请选择流日志记录的格式:

    • AWS 默认格式 - 包含版本 2 到版本 6 的所有字段。
    • 自定义格式 - 仅选择所需的字段。
  7. 在日志文件格式部分,选择文本(默认)或 Parquet。

  8. 对于与 Hive 兼容的 S3 前缀,您可以选择启用,以使用与 Hive 兼容的前缀进行分区。

  9. 对于按时间对日志进行分区,选择每 1 小时(60 分钟)或每 24 小时(1440 分钟)。

  10. (可选)选择添加新标记,将标记应用于流日志。

  11. 点击创建流日志。

创建 Amazon S3 存储桶

  1. 打开 Amazon S3 控制台。
  2. 点击创建存储分区。
  3. 提供以下配置详细信息:
    • 存储桶名称:输入一个唯一名称(例如 tgw-flowlogs-bucket)
    • AWS 区域:选择您的 Transit Gateway 所在的区域
  4. 点击创建存储分区。

创建有权访问 Amazon S3 的 IAM 用户

  1. 打开 IAM 控制台。
  2. 依次点击“用户”图标 >“添加用户”。
  3. 输入用户名(例如 chronicle-tgw-s3-reader)。
  4. 选择以编程方式使用。
  5. 点击 Next: Permissions。
  6. 选择 Attach existing policies directly。
  7. 搜索并选择 AmazonS3ReadOnlyAccess 政策。
  8. 依次点击下一步:标签> 下一步:检查> 创建用户。
  9. 复制 Access Key ID 和 Secret Access Key,以便在 Google SecOps Feed 配置中使用。

在 Google SecOps 中配置 Feed 以注入 Amazon VPC Transit Gateway 流日志 (S3)

  1. 前往 SIEM 设置 > Feed。
  2. 点击添加新 Feed。
  3. 在 Feed 名称字段中,输入 Feed 的名称(例如 AWS Transit Gateway Flow Logs - S3)。
  4. 选择 Amazon S3 作为来源类型。
  5. 选择 Amazon VPC Transit Gateway Flow Logs 作为日志类型。
  6. 点击下一步。
  7. 为以下输入参数指定值:

    • S3 URI:存储桶 URI(例如 s3://tgw-flowlogs-bucket/flow-logs/)
    • 来源删除选项:根据您的偏好选择删除选项:
      • 永不:转移后永不删除任何文件。
      • 删除已转移的文件:在成功转移后删除文件。
      • 删除已转移的文件和空目录:在成功转移后删除文件和空目录。
    • 文件存在时间上限:包含在过去指定天数内修改过的文件(默认值为 180 天)
    • 访问密钥 ID:具有 S3 存储桶访问权限的 IAM 用户访问密钥
    • Secret Access Key:具有 S3 存储桶访问权限的 IAM 用户 Secret 密钥
    • 资源命名空间:资源命名空间
    • 注入标签:要应用于此 Feed 中事件的标签
  8. 点击下一步。

  9. 检查 Feed 配置,然后点击提交。

选项 - 通过 Amazon Kinesis Data Firehose 流式传输

启用传输网关流日志(到 CloudWatch Logs)

  1. 访问 https://console.aws.amazon.com/vpc/,打开 Amazon VPC 控制台。
  2. 在导航窗格中,选择中转网关。
  3. 选中一个或多个传输网关对应的复选框,然后依次选择操作 > 创建流日志。
  4. 对于目标,选择发送到 CloudWatch Logs。
  5. 对于目标日志组,请选择现有日志组或输入新名称以创建日志组(例如 /aws/tgw/flowlogs)。

  6. 对于 IAM 角色,请指定具有将日志发布到 CloudWatch Logs 的权限的角色。

  7. 对于日志记录格式,请选择流日志记录的格式:

    • AWS 默认格式 - 包含版本 2 到版本 6 的所有字段。
    • 自定义格式 - 仅选择所需的字段。
  8. (可选)选择添加新标记,将标记应用于流日志。

  9. 点击创建流日志。

在 Google SecOps 中创建 Feed,以注入 Amazon VPC Transit Gateway 流日志 (Firehose)

  1. 前往 SIEM 设置 > Feed。
  2. 点击添加新 Feed。
  3. 在 Feed 名称字段中,输入 Feed 的名称(例如 AWS Transit Gateway Flow Logs - Firehose)。
  4. 选择 Amazon Data Firehose 作为来源类型。
  5. 选择 Amazon VPC 传输网关流日志作为日志类型。
  6. 点击下一步。
  7. 为以下输入参数指定值:
    • 拆分定界符:输入 \n
    • 资源命名空间:资源命名空间
    • 注入标签:要应用于此 Feed 中事件的标签
  8. 点击下一步。
  9. 检查 Feed 配置,然后点击提交。
  10. 点击生成密钥,生成用于对此 Feed 进行身份验证的密钥。
  11. 复制并保存密钥。您无法再次查看此密钥。
  12. 点击详细信息标签页。
  13. 从端点信息字段中复制 Feed 端点网址。
  14. 点击完成。

为 Amazon Data Firehose Feed 创建 API 密钥

  1. 前往 https://console.cloud.google.com/apis/credentials 中的 Google Cloud 控制台 凭据页面。
  2. 点击创建凭据,然后选择 API 密钥。
  3. 点击修改 API 密钥以限制密钥。
  4. 在 API 限制下,选择限制密钥。
  5. 搜索并选择 Google SecOps API。
  6. 点击保存。
  7. 复制并保存 API 密钥。

构建端点网址

  • 以以下格式将 API 密钥附加到 Feed 端点网址:

    <FEED_ENDPOINT_URL>?key=<API_KEY>
    

替换以下内容:

  • <FEED_ENDPOINT_URL>:Feed 端点网址
  • <API_KEY>:API 密钥

  • 示例:

    https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?key=AIzaSyD...
    

    其中,{region} 是 Google SecOps 实例所在的区域(例如 us、europe 或 asia-southeast1),{parent} 是资源路径,格式为 projects/<PROJECT_ID>/locations/<LOCATION>/instances/<INSTANCE_ID>/logTypes/<LOG_TYPE>。

保存此完整网址,以便在下一步中使用。

为 Firehose 创建 IAM 政策

  1. 在 AWS 控制台中,依次前往 IAM > 政策 > 创建政策 > JSON 标签页。
  2. 粘贴以下 JSON 格式的政策:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "firehose:PutRecord",
                    "firehose:PutRecordBatch"
                ],
                "Resource": "arn:aws:firehose:<REGION>:<ACCOUNT_ID>:deliverystream/<DELIVERY_STREAM_NAME>"
            }
        ]
    }
    
  3. 替换以下内容:

    • <REGION>:您的 AWS 区域(例如 us-east-1)
    • <ACCOUNT_ID>:您的 AWS 账号 ID(12 位数字)
    • <DELIVERY_STREAM_NAME>:您的 Firehose 传送流名称(您将在下一步中创建此名称)
  4. 将政策命名为 TGWFlowLogsToFirehosePolicy(例如),然后点击创建政策。

为 CloudWatch Logs 创建 IAM 角色

  1. 依次前往 IAM > 角色 > 创建角色。
  2. 选择 Custom trust policy(自定义信任政策),然后粘贴:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "logs.<REGION>.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    
  3. 将 <REGION> 替换为您的 AWS 区域。

  4. 点击下一步。

  5. 搜索并选择政策 TGWFlowLogsToFirehosePolicy。

  6. 点击下一步。

  7. 将角色命名为 TGWFlowLogsToFirehoseRole(例如),然后点击创建角色。

创建 Kinesis Data Firehose 传送流

  1. 在 AWS 控制台中,依次前往 Kinesis > Data Firehose > 创建交付流。
  2. 提供以下配置详细信息:

    • 来源和目标:

      • 来源:选择直接 PUT 或其他来源
      • 目标:选择 HTTP 端点
    • Delivery stream name(传送流名称):

      • 交付数据流名称:输入一个名称(例如 tgw-flowlogs-to-secops)
    • HTTP 端点目标:

      • HTTP 端点网址:输入您构建的完整端点网址(Feed 端点 + API 密钥)
      • 内容编码:选择 GZIP
    • 自定义 HTTP 标头:

      • 点击添加自定义 HTTP 标头
      • 标头名称:输入 X-Goog-Chronicle-Auth
      • 标头值:输入您在 Feed 创建步骤中保存的密钥
    • 备份设置:

      • Amazon S3 中的源记录备份:选择仅失败的数据
      • S3 存储桶:选择现有存储桶或创建新存储桶,用于存储失败的记录
    • 缓冲区提示:

      • 缓冲区大小:输入 1 MiB
      • 缓冲间隔:输入 60 秒
  3. 点击创建传送流。

  4. 等待交付流状态变为有效。

为 CloudWatch 日志组订阅 Firehose

  1. 在 AWS 控制台中,依次前往 CloudWatch > 日志 > 日志组。
  2. 选择传输网关流日志组(例如 /aws/tgw/flowlogs)。
  3. 点击订阅过滤条件标签页。
  4. 依次点击创建 > 创建 Amazon Kinesis Data Firehose 订阅过滤器。
  5. 提供以下配置详细信息:
    • 目的地:选择交付数据流 tgw-flowlogs-to-secops
    • 授予权限:选择角色 TGWFlowLogsToFirehoseRole
    • 订阅过滤条件名称:输入一个名称(例如 tgw-flowlogs-to-chronicle)
    • 日志格式:选择其他
    • 订阅过滤条件模式:留空以发送所有事件
  6. 点击开始直播。

UDM 映射表

日志字段 UDM 映射 逻辑
packets_lost_blackhole_label additional.fields 已合并
packets_lost_mtu_exceeded_label additional.fields 已合并
packets_lost_no_route_label additional.fields 已合并
packets_lost_ttl_expired_label additional.fields 已合并
start_time_label additional.fields 已合并
tcp_flags_label additional.fields 已合并
tgw_attachment_id_label additional.fields 已合并
tgw_id_label additional.fields 已合并
tgw_pair_attachment_id_label additional.fields 已合并
type_label additional.fields 已合并
end_time metadata.event_timestamp 已解析为 UNIX
event_type metadata.event_type 直接映射
account_id metadata.product_log_id 直接映射
version metadata.product_version 直接映射
flow_direction network.direction 已映射:(?i)ingress → INBOUND,(?i)egress → OUTBOUND
bytes network.sent_bytes 直接映射
packets network.sent_packets 直接映射
tgw_src_eni principal.asset.asset_id 直接映射
srcaddr principal.asset.ip 已合并
srcaddr principal.ip 已合并
region principal.location.country_or_region 直接映射
tgw_src_az_id principal.location.country_or_region 直接映射
srcport principal.port 直接映射
pkt_src_aws_service_label principal.resource.attribute.labels 已合并
tgw_src_az_id_label principal.resource.attribute.labels 已合并
tgw_src_subnet_id principal.resource.name 直接映射
tgw_src_vpc_id principal.resource.product_object_id 直接映射
resource_type principal.resource.resource_subtype 直接映射
tgw_src_vpc_account_id principal.user.userid 直接映射
security_result_action security_result.action 已合并
protocol_label security_result.detection_fields 已合并
tgw_dst_eni target.asset.asset_id 直接映射
dstaddr target.asset.ip 已合并
dstaddr target.ip 已合并
tgw_dst_az_id target.location.country_or_region 直接映射
dstport target.port 直接映射
pkt_dst_aws_service_label target.resource.attribute.labels 已合并
tgw_dst_subnet_id target.resource.name 直接映射
tgw_dst_vpc_id target.resource.product_object_id 直接映射
tgw_dst_vpc_account_id target.user.userid 直接映射
不适用 metadata.product_name 常量:AWS VPC Transit Gateway
不适用 metadata.vendor_name 常量:AWS
不适用 network.direction 常量:INBOUND

更新日志

查看此解析器的更新日志

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