收集 Cloud VPC 流日志
本文档介绍了如何使用 Google Cloud将 Cloud VPC 流日志导出到 Google Security Operations。解析器会将日志从内置 JSON 格式转换为 Google 安全运营 UDM。它会提取源 IP 地址、目的地 IP 地址、端口、协议和发送的字节等相关字段,然后将其映射到相应的 UDM 字段,同时考虑网络方向和特殊情况,以便在 Google SecOps 中准确表示。
准备工作
- 确保您拥有 Google SecOps 实例。
- 确保 VPC 流已在您的 Google Cloud 环境中设置并处于活跃状态。
- 确保您拥有对 Google Cloud的特权访问权限。
创建 Google Cloud Storage 存储分区
- 登录 Google Cloud 控制台。
前往 Cloud Storage 存储分区页面。
点击创建。
在创建存储桶页面上,输入您的存储桶信息。完成以下各步骤后,点击继续以进入下一步:
在开始使用部分中,执行以下操作:
- 输入符合存储分区名称要求的唯一名称;例如 vpcflow-logs。
如需启用分层命名空间,请点击展开箭头以展开优化文件导向型和数据密集型工作负载部分,然后选择在此存储分区上启用分层命名空间。
如需添加存储分区标签,请点击展开箭头以展开标签部分。
点击添加标签,然后为标签指定键和值。
在选择数据存储位置部分中,执行以下操作:
- 选择位置类型。
使用位置类型菜单选择一个位置,用于永久存储存储分区中的对象数据。
如需设置跨存储分区复制,请展开设置跨存储分区复制部分。
在为数据选择一个存储类别部分中,为存储分区选择默认存储类别,或者选择 Autoclass 对存储分区数据进行自动存储类别管理。
在选择如何控制对对象的访问权限部分中,选择否以强制执行禁止公开访问,然后为存储分区对象选择访问权限控制模型。
在“选择如何保护对象数据”部分,执行以下操作:
- 在“数据保护”下,选择您要为存储分区设置的任何选项。
- 如需选择对象数据的加密方式,请点击标有数据加密的展开箭头,然后选择数据加密方法。
点击创建。
在 Google Cloud VPC 流中配置日志导出
- 使用特权账号登录 Google Cloud 账号。
- 在欢迎页面上,点击 VPC 网络。
- 点击默认,系统随即会显示子网页面。
- 选择所有日志。
- 依次点击流日志 > 配置。
- 选择汇总间隔时间;例如,30 秒。
- 提供抽样率;例如,50%。
- 点击保存
- 在搜索栏中搜索日志记录,然后点击 Enter。
- 在 Logs Explorer 中,在日志名称中选择 VPC_flows,然后点击应用以过滤日志。
- 点击更多操作。
- 点击创建接收器。
- 提供以下配置:
- 接收器详情:输入名称和说明。
- 点击下一步。
- 接收器目标位置:选择 Cloud Storage 存储分区。
- Cloud Storage 存储分区:选择之前创建的存储分区或创建新存储分区。
- 点击下一步。
- 选择要包含在接收器中的日志:当您在 Cloud Storage 存储分区中选择一个选项时,系统会填充一个默认日志。
- 点击下一步。
- 可选:选择要从接收器中过滤掉的日志:选择您不想写入接收器的日志。
- 点击创建接收器。
在 Google SecOps 中配置 Feed 以提取 Google Cloud VPC 流日志
- 依次前往 SIEM 设置 > Feed。
- 点击新增。
- 在Feed 名称字段中,输入 Feed 的名称;例如 Google Cloud VPC 流量日志。
- 选择 Google Cloud Storage 作为来源类型。
- 选择 GCP VPC 流作为日志类型。
- 点击获取服务账号作为 Chronicle 服务账号。
- 点击下一步。
为以下输入参数指定值:
- 存储分区 URI: Google Cloud 采用
gs://my-bucket/<value>
格式的存储分区网址。 - URI 类型:选择包含子目录的目录。
来源删除选项:根据您的偏好选择删除选项。
资源命名空间:资源命名空间。
提取标签:应用于此 Feed 中事件的标签。
- 存储分区 URI: Google Cloud 采用
点击下一步。
在最终确定界面中查看新的 Feed 配置,然后点击提交。
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
connection.dest_ip | target.asset.ip target.ip |
当 network.direction 为 OUTBOUND 时,使用直接映射。 当 network.direction 为 INBOUND 时,从 principal.ip 映射而来。 |
connection.dest_port | target.port | 如果大于 -1,则转换为整数。 |
connection.protocol | network.ip_protocol | 转换为字符串,然后映射为整数。 根据整数值映射到 IP 协议名称(例如TCP、UDP、ICMP)。 |
connection.src_ip | principal.ip | 直接映射。 |
connection.src_port | principal.port | 转换为整数。 |
dest_instance.region | target.location.name | 直接映射。 |
dest_instance.vm_name | target.asset.hostname | 直接映射。 |
dest_location.city | target.location.city | 直接映射。 |
dest_location.country | target.location.country_or_region | 直接映射。 |
dest_location.region | target.location.state | 直接映射。 |
dest_vpc.project_id | target.namespace | 与 dest_vpc.vpc_name 搭配使用,以构成 target.namespace。 |
dest_vpc.vpc_name | target.namespace | 与 dest_vpc.project_id 搭配使用,以构成 target.namespace。 |
insertId | metadata.product_log_id | 直接映射。 |
jsonPayload.bytes_sent | network.sent_bytes | 已重命名为 network.sent_bytes 并转换为 uinteger。 |
jsonPayload.packets_sent | network.sent_packets | 转换为整数。 |
labels.tunnel_id | additional.fields | 已合并到键为 Tunnel Id 且类型为 string_value 的 additional.fields 中。 |
logName | security_result.category_details | 直接映射。 |
resource.labels.project_id | target.resource.name | 用于构建格式为 //cloudresourcemanager.googleapis.com/projects/{resource.labels.project_id} 的 target.resource.name。 |
resource.labels.region | target.location.country_or_region | 直接映射。 |
resource.labels.subnetwork_id | target.user.attribute.labels | 已合并到 target.user.attribute.labels 中,键为 subnetwork_id 。 |
resource.type | metadata.product_event_type | 直接映射。 |
和程度上减少 | security_result.severity | 如果值为 DEBUG ,则映射到 LOW 。 |
src_gke_details.cluster.cluster_location | principal.resource.attribute.labels | 已合并到 principal.resource.attribute.labels 中,键为 cluster_location 。 |
src_gke_details.cluster.cluster_name | principal.resource.attribute.labels | 已合并到 principal.resource.attribute.labels 中,键为 cluster_name 。 |
src_gke_details.pod.pod_name | principal.resource.attribute.labels | 已合并到 principal.resource.attribute.labels 中,键为 pod_name 。 |
src_gke_details.pod.pod_namespace | principal.resource.attribute.labels | 已合并到 principal.resource.attribute.labels 中,键为 pod_namespace 。 |
src_instance.region | principal.location.name | 直接映射。 |
src_instance.vm_name | principal.asset.hostname | 直接映射。 |
src_location.city | principal.location.city | 直接映射。 |
src_location.country | principal.location.country_or_region | 直接映射。 |
src_location.region | principal.location.state | 直接映射。 |
src_vpc.project_id | principal.namespace | 与 src_vpc.vpc_name 搭配使用,以构成 principal.namespace。 |
src_vpc.vpc_name | principal.namespace | 与 src_vpc.project_id 搭配使用,以构成 principal.namespace。 |
textPayload | additional.fields | 已合并到键为 Textpayload 且类型为 string_value 的 additional.fields 中。 |
时间戳 | metadata.event_timestamp | 如果 jsonPayload.end_time 为空,则用于填充 event_timestamp。 |
metadata.description | 系统会根据“reporter”(报告方)字段生成网络流的说明,其中包括报告方(SRC 或 DEST)和方向(INBOUND 或 OUTBOUND)。 | |
metadata.event_type | 对于 VPC 流日志,请将其设置为 NETWORK_CONNECTION ;对于其他日志类型,请将其设置为 USER_RESOURCE_ACCESS 。 |
|
metadata.log_type | 设置为 GCP_VPC_FLOW 。 |
|
metadata.product_name | 设置为 GCP VPC Flow Logs 。 |
|
metadata.product_version | 设置为 1.0 。 |
|
metadata.vendor_name | 设置为 Google Cloud 。 |
|
network.direction | 根据 target.port 确定。如果端口是众所周知的端口或预留端口,则被视为入站;否则,则被视为出站。 | |
security_result.severity | 默认设置为 LOW 。 |
|
target.resource.attribute.cloud.environment | 设置为 GOOGLE_CLOUD_PLATFORM 。 |
|
target.resource.resource_type | 设置为 CLOUD_PROJECT 。 |
变化
2024-10-24
增强功能:
- 将
principal.ip
和principal.port
的映射分别替换为target.ip
和target.port
。
2024-03-15
增强功能:
- 将
jsonPayload.src_gke_details.pod.pod_namespace
、jsonPayload.src_gke_details.pod.pod_name
、jsonPayload.src_gke_details.cluster.cluster_name
、jsonPayload.src_gke_details.cluster.cluster_location
映射到principal.resource.attribute.labels
。 - 将
jsonPayload.dest_gke_details.pod.pod_namespace
、jsonPayload.dest_gke_details.pod.pod_name
、jsonPayload.dest_gke_details.cluster.cluster_name
、jsonPayload.dest_gke_details.cluster.cluster_location
映射到target.resource.attribute.labels
。
2023-05-23
增强功能:
- 当字段“logName”不包含“vpc_flows”时,将“metadata.event_type”映射到“USER_RESOURCE_ACCESS”。
- 将“timestamp”映射到“events.timestamp”。
- 将“textPayload”“labels.tunnel_id”映射到“additional.fields”。
- 将“resource.labels.region”映射到“target.location.country_or_region”。
- 在需要时为各种字段添加了 null 检查。
2023-04-10
增强功能:
- 将
target.resource.attribute.cloud.environment
设置为GOOGLE_CLOUD_PLATFORM
。 - 将
target.resource.name
设置为完整资源名称值。
2022-07-22
增强功能:
- 将
resource.labels.location
映射到principal.location.name
。 - 将
resource.labels.subnetwork_id
映射到target.user.attribute.labels
。 - 将
logName
映射到security_result.category_details
。
需要更多帮助?向社区成员和 Google SecOps 专业人士寻求解答。