将 Security Command Center 与 Google SecOps 集成

集成版本:14.0

本文档介绍了如何将 Security Command Center 与 Google Security Operations 集成。

准备工作

如需集成 Security Command Center,您必须完成以下步骤:

  1. 创建具有必要权限的自定义 Identity and Access Management (IAM) 角色

  2. 使用以下选项之一配置身份验证:

创建和配置 IAM 角色

如需为集成创建和配置自定义 IAM 角色,请完成以下步骤:

  1. 在 Google Cloud 控制台中,前往 IAM 角色页面。

    打开“角色”

  2. 点击创建角色,以创建具有集成所需权限的自定义角色。

  3. 输入标题说明和唯一 ID

  4. 角色发布阶段设置为 General Availability

  5. 向创建的角色添加以下权限:

    • securitycenter.assets.list

    • securitycenter.findings.list

    • securitycenter.findings.setMute

    • securitycenter.findings.setState

  6. 点击创建

配置身份验证

如需对集成进行身份验证,请使用具有 JSON 密钥或 Workload Identity 的服务账号。

使用 JSON 密钥进行身份验证

此方法使用静态 JSON 密钥文件对服务账号进行身份验证。

创建服务账号

如需使用 JSON 密钥进行身份验证,您必须先创建服务账号:

  1. 在 Google Cloud 控制台中,依次前往 IAM 和管理 > 服务账号

  2. 选择要在其中创建服务账号的项目。

  3. 点击创建服务账号

    如果您想使用现有服务账号,请选择要使用的服务账号,然后生成 JSON 密钥

  4. 提供名称和说明,然后点击创建并继续

  5. 向此服务账号授予对项目的访问权限这一步中,添加您创建的自定义角色。

  6. 点击完成以完成账号的创建过程。

生成 JSON 密钥

请完成以下步骤以生成所需的 JSON 密钥文件:

  1. 在服务账号列表中,选择您创建(或选择)的服务账号的电子邮件地址,以打开其详细信息。

  2. 点击密钥标签页。

  3. 点击添加密钥 > 创建新密钥

  4. 选择 JSON 作为密钥类型,然后点击创建

  5. JSON 密钥文件将下载到您的计算机。请妥善安全地存储此文件,并在配置集成参数时将此文件的全部内容粘贴到 User's Service Account 中。

使用 Workload Identity 进行身份验证(推荐)

此方法允许集成模拟服务账号,而无需处理长期有效的密钥。

如需配置 Workload Identity,请完成以下步骤:

  1. 在 Google Cloud 控制台中,依次前往 IAM 和管理 > 服务账号

  2. 选择现有服务账号或创建新服务账号。

  3. 将您创建的自定义角色授予服务账号。

  4. 向服务账号授予 Service Usage Consumer 角色。 此权限是必需的,用于将 API 使用情况与 Quota Project ID 中定义的项目相关联。

  5. 向服务账号授予 Service Account Token Creator 角色。

    此权限允许集成生成身份验证所需的短期有效凭据。

  6. 记下服务账号的客户端电子邮件地址,并在配置集成参数时将此值用作工作负载身份电子邮件地址

集成参数

Security Command Center 集成需要以下参数:

参数 说明
API Root

必填。

Security Command Center 实例的 API 根。

Organization ID

可选。

用于限定 Security Command Center 集成查询范围的 Google Cloud 组织的 ID。

Project ID

可选。

用于限定 Security Command Center 实例查询范围的 Google Cloud 项目 ID。

Quota Project ID

可选。

用于 API 使用情况和结算的 Google Cloud 项目 ID。

User's Service Account

可选。

服务账号密钥 JSON 文件的完整内容。

仅当您使用 JSON 密钥进行身份验证时,才使用此参数。

Workload Identity Email

可选。

您服务账号的客户端电子邮件地址。

仅在您使用工作负载身份进行身份验证时使用此参数。

如果您配置此参数,还必须配置 Quota Project ID

Verify SSL

必填。

如果选中此选项,集成会在连接到 Security Command Center 服务器时验证 SSL 证书。

默认处于启用状态。

如需了解如何在 Google SecOps 中配置集成,请参阅配置集成

如有需要,您可以在稍后阶段进行更改。配置集成实例后,您可以在 playbook 中使用该实例。如需详细了解如何配置和支持多个实例,请参阅支持多个实例

操作

如需详细了解操作,请参阅 在工作台页面中处理待处理的操作执行手动操作

获取发现结果详情

使用 Get Finding Details 操作可检索 Security Command Center 中发现结果的详细信息。

此操作不适用于 Google SecOps 实体。

操作输入

获取发现详情操作需要以下参数:

参数 说明
Finding Name

必填。

要返回详细信息的发现结果的完整资源名称,格式为 organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID

此参数接受多个值,这些值以英文逗号分隔的列表形式提供。

操作输出

获取发现结果详情操作提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
“支持请求墙”表格 可用
丰富化表 不可用
JSON 结果 可用
输出消息 可用
脚本结果 可用
“支持请求墙”表格

获取发现结果详情操作可以返回下表:

表格标题:发现结果详情

表列:

  • 类别
  • 状态
  • 严重级别
  • 类型
JSON 结果

以下示例展示了在使用 Get Finding Details 操作时收到的 JSON 结果输出:

{
   {
      "finding_name": "organizations/ORGANIZATION_ID/sources/2678067631293752869/findings/hvX6WwbvFyBGqPbEs9WH9m",
      "finding": {
        "name": "organizations/ORGANIZATION_ID/sources/2678067631293752869/findings/hvX6WwbvFyBGqPbEs9WH9m",
        "parent": "organizations/ORGANIZATION_ID/sources/2678067631293752869",
        "resourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
        "state": "ACTIVE",
        "category": "Discovery: Service Account Self-Investigation",
        "sourceProperties": {
          "sourceId": {
            "projectNumber": "PROJECT_ID",
            "customerOrganizationNumber": "ORGANIZATION_ID"
          },
          "detectionCategory": {
            "technique": "discovery",
            "indicator": "audit_log",
            "ruleName": "iam_anomalous_behavior",
            "subRuleName": "service_account_gets_own_iam_policy"
          },
          "detectionPriority": "LOW",
          "affectedResources": [
            {
              "gcpResourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID"
            }
          ],
          "evidence": [
            {
              "sourceLogId": {
                "projectId": "PROJECT_ID",
                "resourceContainer": "projects/PROJECT_ID",
                "timestamp": {
                  "seconds": "1622678907",
                  "nanos": 448368000
                },
                "insertId": "ID"
              }
            }
          ],
          "properties": {
            "serviceAccountGetsOwnIamPolicy": {
              "principalEmail": "prisma-cloud-serv@PROJECT_ID.iam.gserviceaccount.com",
              "projectId": "PROJECT_ID",
              "callerIp": "192.0.2.41",
              "callerUserAgent": "Redlock/GC-MDC/resource-manager/PROJECT_ID Google-API-Java-Client HTTP-Java-Client/1.34.0 (gzip),gzip(gfe)",
              "rawUserAgent": "Redlock/GC-MDC/resource-manager/PROJECT_ID Google-API-Java-Client HTTP-Java-Client/1.34.0 (gzip),gzip(gfe)"
            }
          },
          "contextUris": {
            "mitreUri": {
              "displayName": "Permission Groups Discovery: Cloud Groups",
              "url": "https://attack.mitre.org/techniques/ID/003/"
            },
            "cloudLoggingQueryUri": [
              {
                "displayName": "Cloud Logging Query Link",
                "url": "https://console.cloud.google.com/logs/query;query=timestamp%3D%222021-06-03T00:08:27.448368Z%22%0AinsertId%3D%22ID%22%0Aresource.labels.project_id%3D%22PROJECT_ID%22?project=PROJECT_ID"
              }
            ]
          }
        },
        "securityMarks": {
          "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID/securityMarks"
        },
        "eventTime": "2021-06-03T00:08:27.448Z",
        "createTime": "2021-06-03T00:08:31.074Z",
        "severity": "LOW",
        "canonicalName": "projects/PROJECT_ID/sources/SOURCE_ID/findings/FINDING_ID",
        "mute": "UNDEFINED",
        "findingClass": "THREAT",
        "mitreAttack": {
          "primaryTactic": "DISCOVERY",
          "primaryTechniques": [
            "PERMISSION_GROUPS_DISCOVERY",
            "CLOUD_GROUPS"
          ]
        }
      },
      "resource": {
        "name": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
        "projectName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
        "projectDisplayName": "PROJECT_ID",
        "parentName": "//cloudresourcemanager.googleapis.com/organizations/ORGANIZATION_ID",
        "parentDisplayName": "example.net",
        "type": "google.cloud.resourcemanager.Project",
        "displayName": "PROJECT_ID"
      }
    }
}
输出消息

获取发现结果详情操作可以返回以下输出消息:

输出消息 消息说明

Successfully returned details about the following findings in Security Command Center: FINDING_NAMES.

Action wasn't able to find the following findings in Security Command Center: FINDING_NAMES.

None of the provided findings were found in Security Command Center.

操作成功。
Error executing action "Get Finding Details". Reason: ERROR_REASON

操作失败。

检查与服务器的连接、输入参数或凭据。

脚本结果

下表列出了使用 Get Finding Details 操作时脚本结果输出的值:

脚本结果名称
is_success truefalse

列出资产漏洞

使用 List Asset Vulnerabilities 操作列出与 Security Command Center 中的实体相关的漏洞。

此操作不适用于 Google SecOps 实体。

操作输入

列出资产漏洞操作需要以下参数:

参数 说明
Asset Resource Names

必填。

以逗号分隔的列表,其中包含要检索相关数据的资产的唯一标识符(完整资源名称)。

Timeframe

可选。

用于搜索漏洞或错误配置的时间范围。

可能的值如下:

  • Last Week
  • Last Month
  • Last Year
  • All Time

默认值为 All Time

Record Types

可选。

要返回的记录类型。

可能的值如下:

  • Vulnerabilities + Misconfigurations
  • Vulnerabilities
  • Misconfigurations

默认值为 Vulnerabilities + Misconfigurations

Output Type

可选。

要在每个资产的 JSON 结果中返回的输出类型。

可能的值如下:

  • Statistics
  • Data
  • Statistics + Data

默认值为 Statistics

Max Records To Return

可选。

每种记录类型要返回的记录数上限。

默认值为 100

操作输出

列出资产漏洞操作提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
“支持请求墙”表格 可用
丰富化表 不可用
JSON 结果 可用
输出消息 可用
脚本结果 可用
“支持请求墙”表格

列出资产漏洞操作可以返回以下表格:

表格标题:ASSET_ID 漏洞

表列:

  • 类别
  • 说明
  • 严重级别
  • 活动时间
  • CVE

表格标题:ASSET_ID 错误配置

表列:

  • 类别
  • 说明
  • 严重级别
  • 活动时间
  • 建议
JSON 结果

以下示例展示了使用列出资产漏洞操作时收到的 JSON 结果输出:

{
   ."siemplify_asset_display_name":[1] [2]  ""
"vulnerabilities": {
        "statistics": {
            "critical": 1,
            "high": 1,
            "medium": 1,
            "low": 1,
            "undefined": 1
        },
        "data": [
            {
                "category": "CATEGORY"
                "description": "DESCRIPTION"
                "cve_id": "CVE_ID"
                "event_time": "EVENT_TIME"
                "related_references": "RELATED_REFERENCES"
                "severity": "SEVERITY"
            }
        ]
    },
    "misconfigurations": {
        "statistics": {
            "critical": 1,
            "high": 1,
            "medium": 1,
            "low": 1,
            "undefined": 1
        },
        "data": [
            {
                "category": "CATEGORY"
                "description": "DESCRIPTION"
                "recommendation": "RECOMMENDATION"
                "event_time": "EVENT_TIME"
                "severity": "SEVERITY"
            }
        ]
    },
}
输出消息

列出资产漏洞操作可以返回以下输出消息:

输出消息 消息说明

Successfully returned related vulnerabilities and misconfigurations to the following entities in Security Command Center: ASSET_IDS.

No vulnerabilities and misconfigurations were found to the following entities in Security Command Center: ASSET_IDS.

No vulnerabilities and misconfigurations were found for the provided assets in Security Command Center.

操作成功。
Error executing action "List Asset Vulnerabilities". Reason: ERROR_REASON

操作失败。

检查与服务器的连接、输入参数或凭据。

脚本结果

下表列出了使用 List Asset Vulnerabilities 操作时脚本结果输出的值:

脚本结果名称
is_success truefalse

Ping

使用 Ping 操作测试与 Security Command Center 的连接。

此操作不适用于 Google SecOps 实体。

操作输入

无。

操作输出

Ping 操作提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
“支持请求墙”表格 不可用
丰富化表 不可用
JSON 结果 不可用
输出消息 可用
脚本结果 可用
输出消息

Ping 操作可以返回以下输出消息:

输出消息 消息说明
Successfully connected to the Security Command Center server with the provided connection parameters! 操作成功。
Failed to connect to the Security Command Center server! Error is ERROR_REASON

操作失败。

检查与服务器的连接、输入参数或凭据。

脚本结果

下表列出了使用 Ping 操作时脚本结果输出的值:

脚本结果名称
is_success truefalse

更新发现结果

使用 Update Finding 操作更新 Security Command Center 中的现有发现结果。

此操作不适用于 Google SecOps 实体。

操作输入

更新发现操作需要以下参数:

参数 说明
Finding Name

必填。

要返回详细信息的发现结果的完整资源名称,格式为 organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID

此参数接受多个值,这些值以英文逗号分隔的列表形式提供。

Mute Status

可选。

相应发现结果的忽略状态。

可能的值如下:

  • Mute
  • Unmute
State Status

可选。

发现的状态。

可能的值如下:

  • Active
  • Inactive

操作输出

更新发现操作提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
“支持请求墙”表格 不可用
丰富化表 不可用
JSON 结果 不可用
输出消息 可用
脚本结果 可用
输出消息

更新发现结果操作可以返回以下输出消息:

输出消息 消息说明

Successfully updated the following findings in Security Command Center: FINDING_NAMES

Action wasn't able to find the following findings in Security Command Center: FINDING_NAMES

None of the provided findings were found in Security Command Center.

操作成功。
Error executing action "Update Finding". Reason: ERROR_REASON

操作失败。

检查与服务器的连接、输入参数或凭据。

脚本结果

下表列出了使用更新发现操作时脚本结果输出的值:

脚本结果名称
is_success truefalse

连接器

如需详细了解如何在 Google SecOps 中配置连接器,请参阅注入数据(连接器)

Security Command Center - 发现结果连接器

使用 Security Command Center - 发现结果连接器检索有关 Security Command Center 发现结果的信息。

此连接器支持使用动态列表按类别过滤发现结果。

连接器输入源

Security Command Center - 发现结果连接器需要以下参数:

参数 说明
Product Field Name

必填。

存储商品名称的字段的名称。

商品名称主要会影响映射。为了简化和改进连接器的映射流程,默认值会解析为从代码引用的回退值。默认情况下,此参数的任何无效输入都会解析为回退值。

默认值为 Product Name

Event Field Name

必填。

用于确定事件名称(子类型)的字段的名称。

Environment Field Name

可选。

存储环境名称的字段的名称。

如果缺少环境字段,连接器会使用默认值。

默认值为 ""

Environment Regex Pattern

可选。

要对 Environment Field Name 字段中的值运行的正则表达式模式。此参数可让您使用正则表达式逻辑来操纵环境字段。

使用默认值 .* 可检索所需的原始 Environment Field Name 值。

如果正则表达式模式为 null 或空,或者环境值为 null,则最终环境结果为默认环境。

PythonProcessTime

必填。

运行当前脚本的 Python 进程的超时时间限制(以秒为单位)。

默认值为 180

API Root

必填。

Security Command Center 实例的 API 根。

Organization ID

可选。

要使用的 Google Cloud 组织的 ID

Project ID

可选。

需使用的 Google Cloud 项目 ID。

Quota Project ID

可选。

需使用的 Google Cloud 项目 ID。

User's Service Account

必填。

服务账号密钥 JSON 文件的完整内容。

仅当您使用 JSON 密钥进行身份验证时,才使用此参数。

Workload Identity Email

可选。

您服务账号的客户端电子邮件地址。

仅在您使用工作负载身份进行身份验证时使用此参数。

如果您配置此参数,还必须配置 Quota Project ID

Finding Class Filter

可选。

一个以英文逗号分隔的列表,其中包含从来源提取数据时要纳入的安全发现结果类型。

可能的值如下:

  • Threat
  • Vulnerability
  • Misconfiguration
  • SCC_Error
  • Observation
  • Toxic Combination
  • Chokepoint

如果未提供任何值,则会注入所有类别的发现结果。

Lowest Severity To Fetch

可选。

要检索的提醒的最低严重程度。

如果您未配置此参数,连接器会提取所有严重程度的提醒。

可能的值如下:

  • Low
  • Medium
  • High
  • Critical

如果严重程度未定义的发现结果被分配了 Fallback Severity 级别,则该发现结果不受此参数的过滤。

如果未提供任何值,则注入所有严重程度类型。

Fallback Severity

可选。

要分配给任何已提取但来源未定义或无法识别严重程度评级的安全发现结果的严重程度。

可能的值如下:

  • Low
  • Medium
  • High
  • Critical

默认值为 Medium

Max Hours Backwards

可选。

要检索的发现结果的小时数(相对于当前时间)。

此参数可应用于首次启用连接器后的初始连接器迭代,也可作为已过期的连接器时间戳的回退值。

最大值为 24

默认值为 1

Max Findings To Fetch

可选。

每次连接器迭代要处理的发现结果数量。

最大值为 1000

默认值为 100

Use dynamic list as a blacklist

必填。

如果选中此选项,连接器会将动态列表用作屏蔽列表。

默认情况下,该环境处于停用状态。

Verify SSL

必填。

如果选中此选项,集成会在连接到 Security Command Center 服务器时验证 SSL 证书。

默认情况下,该环境处于停用状态。

Proxy Server Address

可选。

要使用的代理服务器的地址。

Proxy Username

可选。

用于进行身份验证的代理用户名。

Proxy Password

可选。

用于进行身份验证的代理密码。

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