将日志记录与 Google SecOps 集成
本文档解释了如何将云日志记录与 Google 安全运营集成。
使用场景
Logging 集成利用 Google SecOps 功能来支持以下用例:
取证日志检索: 在调查期间运行高级查询,以在您的 Google Cloud 环境中查找特定的安全事件。
自动化威胁狩猎:使用剧本定期查询日志,查找已知的入侵指标 (IoC) 或可疑模式。
准备工作
在 Google SecOps 中配置 Logging 集成之前,请完成以下先决条件步骤:
创建服务账号并授予其必要的角色。
选择并配置以下身份验证方法之一:
选项 1: Workload Identity(推荐): 此方法通过服务账号模拟使用短期临时访问令牌,因此您无需存储密钥。
方法 2:服务账号 JSON 密钥:此方法依赖于静态的长期有效的密钥文件。仅当您的环境中无法使用 Workload Identity 身份验证时,才使用此方法。
创建服务账号
如需为集成创建服务账号,请完成以下步骤:
在 Google Cloud 控制台中,依次前往 IAM 和管理 > 服务账号。
点击添加创建服务账号。
提供名称(例如,“SecOps 日志集成”)和描述,然后单击 创建并继续。
在授予此服务账号对项目的访问权限步骤,添加日志查看器(
roles/logging.viewer) 角色。点击完成。此服务账号的电子邮件地址在配置过程中使用。
配置 Workload Identity 凭据
选择此方法或 JSON 密钥方法来验证集成。 建议使用 Workload Identity,因为它使用
使用服务账号模拟的短期临时访问令牌。
识别唯一实例身份
授予 Google SecOps 实例模拟您的服务账号的权限是确保访问安全性的最后一步。
在 Google SecOps 中,前往内容中心 > 响应集成。
搜索并选择 Cloud Logging 集成,然后在 Workload Identity Email 中输入您的服务账号电子邮件地址。
在配额项目 ID 中输入有效的项目 ID。
依次点击保存 > 测试。测试预计会失败。
点击测试旁边的 close_small 按钮,然后找到以
gke-init-python@...或soar-python@...开头的身份电子邮件地址。复制此唯一电子邮件地址,并在集成配置期间将其粘贴到
Workload Identity Email中。
在 Google Cloud中授权实例身份
授权检索到的唯一身份可实现服务账号模拟,让平台无需静态密钥即可代表您执行操作。
在 Google Cloud 控制台中,依次前往 IAM 和管理 > 服务账号。
选择目标服务账号,然后依次前往权限 > 授予访问权限。
将唯一电子邮件地址粘贴到新的主账号字段中。
分配 Service Account Token Creator 角色 (
roles/iam.serviceAccountTokenCreator)。
授予配额项目访问权限
使用 Workload Identity 进行身份验证需要 Quota Project ID 来跟踪 API 使用情况和结算信息。
在 Google Cloud 控制台中,依次前往 IAM 和管理 > IAM,然后选择用作配额项目 ID 的项目。
找到您的服务账号,然后单击 编辑正文。
单击 添加另一个角色,然后选择 服务使用消费者 (
roles/serviceusage.serviceUsageConsumer)。点击保存。
配置 JSON 密钥
静态的、长期存在的密钥文件需要手动管理。仅当 Workload Identity 凭据不可用时才应使用此方法。
在 Google Cloud 控制台中,依次前往 IAM 和管理 > 服务账号,然后选择您的服务账号。
前往密钥标签页,然后依次点击添加密钥 > 创建新密钥。
选择 JSON 作为密钥类型,然后点击创建。
复制下载文件的全部内容,并在配置过程中将其粘贴到
User's Service Account中。
集成参数
Logging 集成需要以下参数:
| 参数 | 说明 |
|---|---|
API Root |
可选。 Cloud Logging API 的基本网址(例如, |
User's Service Account |
可选。 服务账号密钥 JSON 文件的完整内容。 仅在您使用 JSON 密钥进行身份验证时使用此参数。 |
Workload Identity Email |
可选。 您服务账号的客户端电子邮件地址。 仅当您使用 Workload Identity 凭据进行身份验证时才使用此参数。 |
Project ID |
可选。 集成中要使用的项目 ID。 如果未提供值,集成会从服务账号凭据中检索 ID。 |
Quota Project ID |
可选。 用于 API 使用情况和结算的项目 ID。 使用 Workload Identity 凭据进行身份验证时,此参数为必填项。 |
Organization ID |
可选。 用于限定查询范围的组织 ID。 |
Verify SSL |
可选。 如果选中,该集成会在连接到日志服务器时验证 SSL 证书。 默认处于启用状态。 |
如需了解如何在 Google SecOps 中配置集成,请参阅配置集成。
如有需要,您可以在稍后阶段进行更改。配置集成实例后,您可以在 playbook 中使用该实例。如需详细了解如何配置和支持多个实例,请参阅支持多个实例。
操作
如需详细了解操作,请参阅 在工作台页面中处理待处理的操作和执行人工处置措施。
执行查询
使用 执行查询 操作在日志记录中执行自定义查询。
此操作不适用于 Google SecOps 实体。
操作输入
这执行查询操作需要以下参数:
| 参数 | 说明 |
|---|---|
Project ID |
可选 集成中要使用的项目 ID。 如果您未为此参数设置值,则集成将从您的 Google Cloud 服务账号中检索项目 ID。 |
Organization ID |
可选 集成过程中要使用的组织 ID。 如果您未为此参数设置值,则集成将从您的 Google Cloud 服务账号中检索项目 ID。 |
Query |
必需 查询日志。 |
Time Frame |
可选 用于检索结果的时间段。 如果选择 可能的值如下:
Last Hour。 |
Start Time |
可选 开始检索结果的时间。 如果您为 要配置此参数,请使用 ISO 8601 格式。 |
End Time |
可选 获取结果的最终时间。 如果您不为此参数设置值,并且为 要配置此参数,请使用 ISO 8601 格式。 |
Max Results To Return |
可选 返回结果的最大数量。 默认值为 50。 |
操作输出
执行查询操作提供以下输出:
| 操作输出类型 | 可用性 |
|---|---|
| 案例墙附件 | 不可用 |
| 案例墙链接 | 不可用 |
| “支持请求墙”表格 | 不可用 |
| 丰富化表 | 不可用 |
| JSON 结果 | 可用 |
| 输出消息 | 可用 |
| 脚本结果 | 可用 |
JSON 结果
以下示例描述了使用 执行查询 操作时收到的 JSON 结果输出:
[{
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"authenticationInfo": {
"principalEmail": "system:clouddns"
},
"authorizationInfo": [
{
"granted": true,
"permission": "io.k8s.coordination.v1.leases.update",
"resource": "coordination.k8s.io/v1/namespaces/kube-system/leases/clouddns-lock"
}
],
"methodName": "io.k8s.coordination.v1.leases.update",
"requestMetadata": {
"callerIp": "192.0.2.6",
"callerSuppliedUserAgent": "clouddns-leader-election"
},
"resourceName": "coordination.k8s.io/v1/namespaces/kube-system/leases/clouddns-lock",
"serviceName": "k8s.io",
"status": {
"code": 0
}
},
"insertId": "ID",
"resource": {
"type": "k8s_cluster",
"labels": {
"cluster_name": "CLUSTER_NAME",
"project_id": "PROJECT_ID",
"location": "us-central1"
}
},
"timestamp": "2024-09-18T09:46:38.647428Z",
"labels": {
"authorization.k8s.io/reason": "RBAC: allowed by ClusterRoleBinding \"system:clouddns\" of ClusterRole \"system:clouddns-role\" to User \"system:clouddns\"",
"authorization.k8s.io/decision": "allow"
},
"logName": "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity",
"operation": {
"id": "ID",
"producer": "k8s.io",
"first": true,
"last": true
},
"receiveTimestamp": "2024-09-18T09:46:39.063264993Z"
}]
输出消息
执行查询操作会输出以下消息:
| 输出消息 | 消息说明 |
|---|---|
|
操作成功。 |
Error executing action "Execute Query". Reason:
ERROR_REASON |
操作失败。 检查与服务器的连接、输入参数或凭据。 |
脚本结果
下表描述了使用 执行查询 操作时脚本结果输出的值:
| 脚本结果名称 | 值 |
|---|---|
is_success |
True 或 False |
Ping
使用 Ping 操作测试与日志记录的连接。
此操作不适用于 Google SecOps 实体。
操作输入
无。
操作输出
Ping 操作提供以下输出:
| 操作输出类型 | 可用性 |
|---|---|
| 案例墙附件 | 不可用 |
| 案例墙链接 | 不可用 |
| “支持请求墙”表格 | 不可用 |
| 丰富化表 | 不可用 |
| JSON 结果 | 不可用 |
| 输出消息 | 可用 |
| 脚本结果 | 可用 |
输出消息
Ping 操作提供以下输出消息:
| 输出消息 | 消息说明 |
|---|---|
Successfully connected to the Cloud Logging server with
the provided connection parameters! |
操作成功。 |
Failed to connect to the Cloud Logging server! Error is
ERROR_REASON |
操作失败。 检查与服务器的连接、输入参数或凭据。 |
脚本结果
下表介绍了使用 Ping 操作时脚本结果输出的值:
| 脚本结果名称 | 值 |
|---|---|
is_success |
True 或 False |
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。