将 Logging 与 Google SecOps 集成
本文档介绍了如何将 Cloud Logging 与 Google Security Operations 集成。
使用场景
Logging 集成使用 Google SecOps 功能来支持以下用例:
取证日志检索:运行高级查询,在调查期间查找 Google Cloud 环境中的特定安全事件。
自动威胁搜寻:使用 playbook 定期查询日志,以查找已知失陷指标 (IoC) 或可疑模式。
准备工作
在 Google SecOps 中配置 Logging 集成之前,请完成以下前提步骤:
创建服务账号并向其授予必要的角色。
选择并配置以下身份验证方法之一:
方法 1:Workload Identity(推荐):此方法通过服务账号模拟使用短期有效的临时访问令牌,因此您无需存储密钥。
方法 2:服务账号 JSON 密钥:此方法依赖于静态、长期有效的密钥文件。仅当您的环境中无法使用 Workload Identity 身份验证时,才使用此方法。
创建服务账号
如需为集成创建服务账号,请完成以下步骤:
在 Google Cloud 控制台中,前往 IAM 和管理 > 服务账号。
点击 add 创建服务账号。
提供名称(例如“SecOps Logging Integration”)和说明,然后点击创建并继续。
在向此服务账号授予对项目的访问权限步骤中,添加 日志查看器 (
roles/logging.viewer) 角色。点击完成。在配置期间,系统会使用此服务账号的邮箱。
配置 Workload Identity 凭证
选择此方法或 JSON 密钥方法来对集成进行身份验证。 建议使用 Workload Identity,因为它使用
使用服务账号模拟功能生成短期有效的临时访问令牌。
识别唯一实例身份
向 Google SecOps 实例授予模拟服务账号的权限是确保安全访问的最后一步。
在 Google SecOps 中,前往内容中心 > 响应集成。
搜索并选择 Cloud Logging 集成,然后在 Workload Identity 邮箱中输入您的服务账号邮箱。
在配额项目 ID 中输入有效的项目 ID。
依次点击保存 > 测试。测试预计会失败。
点击测试右侧的 close_small,然后在出错提示中搜索以
gke-init-python@...或soar-python@...开头的身份电子邮件。复制此唯一邮箱。
在 Google Cloud中授权实例身份
授权检索到的唯一身份后,即可启用服务账号模拟,让平台代表您执行操作,而无需使用静态密钥。
在 Google Cloud 控制台中,前往 IAM 和管理 > 服务账号。
选择目标服务账号,然后依次前往权限 > 授予访问权限。
将唯一邮箱粘贴到新的主账号字段中,并分配 Service Account Token Creator 角色 (
roles/iam.serviceAccountTokenCreator)。
授予配额项目访问权限
使用 Workload Identity 进行身份验证需要 Quota Project ID 来跟踪 API 使用情况和结算。
在 Google Cloud 控制台中,前往 IAM 和管理 > IAM,然后选择用于配额项目 ID 的项目。
找到您的服务账号,然后点击修改主账号。
点击添加其他角色,然后选择 Service Usage Consumer (
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 |
可选。 如果选中,集成会在连接到 Logging 服务器时验证 SSL 证书。 默认处于启用状态。 |
如需了解如何在 Google SecOps 中配置集成,请参阅配置集成。
如有需要,您可以在后续阶段进行更改。配置集成实例后,您可以在 playbook 中使用该实例。如需详细了解如何配置和支持多个实例,请参阅支持多个实例。
操作
如需详细了解操作,请参阅 在工作桌上响应待处理的操作和在案例中运行手动操作。
执行查询
使用执行查询操作在 Logging 中执行自定义查询。
此操作不会在 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 专业人士的解答。