创建和管理 Event Threat Detection 的自定义模块

本页介绍了如何为 Event Threat Detection 创建和管理自定义模块。

须知事项

本部分介绍使用 Event Threat Detection 自定义模块的要求。

Security Command Center 高级版和 Event Threat Detection

如需使用 Event Threat Detection 自定义模块,必须启用 Event Threat Detection。如需启用 Event Threat Detection,请参阅启用或停用内置服务

IAM 角色

IAM 角色决定您可以使用 Event Threat Detection 自定义模块执行的操作。

下表列出了 Event Threat Detection 自定义模块权限以及可提供这些权限的预定义 IAM 角色。这些权限至少有效期到 2024 年 1 月 22 日。在此日期之后,您将需要具备下表第二部分列出的权限。

您可以使用 Google Cloud 控制台或 Security Command Center API 在组织、文件夹或项目级应用这些角色。

2024 年 1 月 22 日之前需要的权限 角色
securitycenter.eventthreatdetectioncustommodules.create
securitycenter.eventthreatdetectioncustommodules.update
securitycenter.eventthreatdetectioncustommodules.delete
roles/securitycenter.settingsEditor
roles/securitycenter.admin
securitycenter.eventthreatdetectioncustommodules.get
securitycenter.eventthreatdetectioncustommodules.list
roles/securitycenter.settingsViewer
roles/securitycenter.adminViewer
roles/securitycenter.admin

下表列出了 2024 年 1 月 22 日当天或之后需要的 Event Threat Detection 自定义模块权限,以及包含这些权限的预定义 IAM 角色。

您可以使用 Google Cloud 控制台或 Security Command Center API 在组织、文件夹或项目级应用这些角色。

2024 年 1 月 22 日之后所需的权限 角色
securitycentermanagement.eventThreatDetectionCustomModules.create
securitycentermanagement.eventThreatDetectionCustomModules.update
securitycentermanagement.eventThreatDetectionCustomModules.delete
roles/securitycentermanagement.etdCustomModulesEditor
roles/securitycenter.settingsEditor
roles/securitycenter.admin
securitycentermanagement.eventThreatDetectionCustomModules.list
securitycentermanagement.eventThreatDetectionCustomModules.get
securitycentermanagement.effectiveEventThreatDetectionCustomModules.list
securitycentermanagement.effectiveEventThreatDetectionCustomModules.get
securitycentermanagement.eventThreatDetectionCustomModules.validate
roles/securitycentermanagement.etdCustomModulesViewer
roles/securitycentermanagement.etdCustomModulesEditor
roles/securitycenter.adminViewer
roles/securitycenter.admin

如果您在 Security Command Center 中遇到访问错误,请让您的管理员寻求帮助。请参阅以下页面之一,具体取决于您激活 Security Command Center 的级层:

必要的日志

确保为您的组织、文件夹和项目启用了相关日志。如需了解每种自定义模块类型需要哪些日志,请参阅自定义模块和模板中的表格。

不支持来自 Google Cloud 以外来源的日志。

自定义模块级别

本文档使用以下术语来描述自定义模块的创建级别:

住宅模块
模块是在当前视图或范围中创建的。例如,如果您在 Google Cloud 控制台的组织视图中,住宅模块是指在组织级别创建的模块。
继承的模块
模块是在父视图或作用域中创建的。例如,在组织级别创建的模块是任何文件夹或项目级别的继承模块。
派生模块
模块是在子视图或作用域中创建的。例如,在文件夹级或项目级创建的模块是组织级的派生模块。

创建自定义模块

您可以通过 Google Cloud 控制台或者通过修改 JSON 模板并通过 gcloud CLI 提交该模板来创建 Event Threat Detection 自定义模块。只有在您打算使用 gcloud CLI 创建自定义模块时,才需要 JSON 模板。

如需查看支持的模块模板的列表,请参阅自定义模块和模板

模板结构

模板用于定义自定义模块用于在日志中识别威胁的参数。模板采用 JSON 编写,其结构与 Security Command Center 生成的发现结果类似。只有在您计划使用 gcloud CLI 创建自定义模块时,才需要配置 JSON 模板。

每个模板都包含可自定义的字段:

  • severity:您要为此类发现分配的严重级别或风险级别,可以是 LOWMEDIUMHIGHCRITICAL
  • description:自定义模块的说明。
  • recommendation:针对自定义模块生成的发现结果建议采取的措施。
  • 检测参数:用于评估日志和触发发现结果的变量。检测参数因模块而异,但都包含以下一项或多项:
    • domains:要监视的网域
    • ips:要监控的 IP 地址
    • permissions:要监视的权限
    • regions:允许创建新 Compute Engine 实例的区域
    • roles:要监控的角色
    • accounts:要监视的账号
    • 用于定义允许的 Compute Engine 实例类型的参数,例如 seriescpusram_mb
    • 用于检查属性的正则表达式,例如 caller_patternresource_pattern

以下代码示例是 Configurable Bad IP 的 JSON 模板示例。

{
  "metadata": {
    "severity": "LOW",
    "description": "Flagged by Cymbal as malicious",
    "recommendation": "Contact the owner of the relevant project."
  },
  "ips": [
    "192.0.2.1",
    "192.0.2.0/24"
  ]
}

在上述示例中,如果日志指明某个资源已连接到 IP 地址 192.0.2.1192.0.2.0/24,自定义模块会生成低严重性发现结果。

修改模块模板

如需创建模块,您可以选择模块模板并对其进行修改。

如果您计划使用 Google Cloud CLI 创建自定义模块,则必须执行此任务。

如果您计划使用 Google Cloud 控制台创建自定义模块,请跳过此任务。您将使用屏幕上显示的选项修改模板的参数。

  1. 自定义模块和模板中选择一个模板。
  2. 将代码复制到本地文件。
  3. 更新您要用于评估日志的参数。
  4. 将文件保存为 JSON 文件。
  5. 使用 JSON 文件通过 gcloud CLI 创建自定义模块

创建自定义模块

本部分介绍如何通过 Google Cloud 控制台和 gcloud CLI 创建自定义模块。每个 Event Threat Detection 自定义模块的大小限制为 6 MB。

如需创建自定义模块,请按照以下步骤操作:

控制台

  1. 查看 Event Threat Detection 服务的模块。预定义模块和自定义模块会显示在列表中。
  2. 点击创建模块
  3. 点击要使用的模块模板。
  4. 点击选择
  5. 对于模块名称,输入新模板的显示名称。名称不得超过 128 个字符,并且只能包含字母数字字符和下划线,例如 example_custom_module
  6. 选择或添加所需的参数值。每个模块的参数都不同。例如,如果您选择了 Configurable allowed Compute Engine region 模块模板,则需要选择一个或多个区域。或者,您也可以以 JSON 格式提供列表。
  7. 点击下一步
  8. 对于严重级别,输入要为新自定义模块生成的发现结果分配的严重级别。
  9. 说明中,输入新自定义模块的说明。
  10. 对于后续步骤,请以纯文本格式输入建议的操作。 您添加的所有段落分隔符号都会被忽略。
  11. 点击创建

gcloud

  1. 创建一个包含自定义模块定义的 JSON 文件。以自定义模块和模板中的模板为指导。

  2. 通过在 gcloud 命令中发送 JSON 文件来创建自定义模块:

 gcloud alpha scc custom-modules etd create \
     --RESOURCE_FLAG=RESOURCE_ID \
     --display-name="DISPLAY_NAME" \
     --module-type="MODULE_TYPE" \
     --enablement-state="ENABLED" \
     --custom-config-from-file=PATH_TO_JSON_FILE

替换以下内容:

  • RESOURCE_FLAG:将要创建自定义模块的父级资源的范围;可以是 organizationfolderproject 之一。
  • RESOURCE_ID:父级资源的资源 ID;即组织 ID、文件夹 ID 或项目 ID。
  • DISPLAY_NAME:新模板的显示名称。名称不得超过 128 个字符,并且只能包含字母数字字符和下划线。
  • MODULE_TYPE:您要创建的自定义模块类型,例如 CONFIGURABLE_ALLOWED_COMPUTE_ENGINE_REGION
  • PATH_TO_JSON_FILE:基于模块模板的 JSON 文件,其中包含自定义模块的 JSON 定义

自定义模块创建完毕,并开始扫描。如需删除模块,请参阅删除自定义模块

自定义模块的类别名称包含模块类型的发现结果类别和您设置的模块显示名称。例如,自定义模块的类别名称可以是 Unexpected Compute Engine Region: example_custom_module。在 Google Cloud 控制台中,下划线会显示为空格。不过,在查询中,您必须添加下划线。

配额用于控制您对 Event Threat Detection 自定义模块的使用。

检查延迟时间

扫描延迟时间中介绍了 Event Threat Detection 和所有其他 Security Command Center 内置服务的检测延迟时间。

审查发现结果

您可以在 Google Cloud 控制台中或使用 gcloud CLI 查看自定义模块生成的发现结果。

控制台

  1. 在 Google Cloud 控制台中,前往 Security Command Center 的发现结果页面。

    前往“发现结果”页面

  2. 选择您的 Google Cloud 项目或组织。
  3. 快速过滤条件部分的来源显示名称子部分中,选择 Event Threat Detection 自定义模块。发现结果的查询结果会更新为仅显示此来源的发现结果。
  4. 如需查看特定发现结果的详细信息,请点击类别列中的发现结果名称。 系统会打开发现结果的详细信息面板,并显示摘要标签页。
  5. 摘要标签页上,查看发现结果的详细信息,包括有关检测到的内容、受影响的资源的信息,以及您可以采取的发现结果修复步骤(如果有)。
  6. 可选:如需查看发现结果的完整 JSON 定义,请点击 JSON 标签页。

gcloud

如需使用 gcloud CLI 查看发现结果,请执行以下操作:

  1. 打开一个终端窗口。
  2. 获取 Event Threat Detection 自定义模块的来源 ID。具体命令取决于您是在组织级层还是项目级层激活 Security Command Center:

    gcloud scc sources describe RESOURCE_LEVEL/RESOURCE_ID \
        --source-display-name='Event Threat Detection Custom Modules'
    

    替换以下内容:

    • RESOURCE_LEVEL:Security Command Center 实例的激活级别;organizationsprojects 之一。
    • RESOURCE_ID:您的组织或项目的资源 ID。

    输出类似以下内容。SOURCE_ID 是服务器为安全来源分配的 ID。

    canonicalName: RESOURCE_LEVEL/RESOURCE_ID/sources/SOURCE_ID
    description: Provider used by Event Threat Detection Custom Modules
    displayName: Event Threat Detection Custom Modules
    name: RESOURCE_LEVEL/RESOURCE_ID/sources/SOURCE_ID
  3. 如需列出 Event Threat Detection 自定义模块的所有发现结果,请使用上一步中的来源 ID 运行以下命令:

    gcloud scc findings list RESOURCE_LEVEL/RESOURCE_ID --source=SOURCE_ID
    

    替换以下内容:

    • RESOURCE_LEVEL:您要列出发现的资源级别;可以是 organizationsfoldersprojects
    • RESOURCE_ID:资源的 ID,即组织 ID、文件夹 ID 或项目 ID。
    • SOURCE_ID:Event Threat Detection 自定义模块的来源 ID。
  4. 如需列出某个特定自定义模块的发现结果,请运行以下命令:

    MODULE="CUSTOM_MODULE_CATEGORY_NAME"
    FILTER="category=\"$MODULE\""
    gcloud scc findings list RESOURCE_LEVEL/RESOURCE_ID --source=SOURCE_ID --filter="$FILTER"
    

    替换以下内容:

    • CUSTOM_MODULE_CATEGORY_NAME:自定义模块的类别名称。此名称由模块类型的发现结果类别(如自定义模块和模板中所列)和模块显示名称(使用下划线而非空格)组成。例如,自定义模块的类别名称可以是 Unexpected Compute Engine region: example_custom_module
    • RESOURCE_LEVEL:您要列出发现的资源级别;可以是 organizationsfoldersprojects
    • RESOURCE_ID:资源的 ID,即组织 ID、文件夹 ID 或项目 ID。
    • SOURCE_ID:Event Threat Detection 自定义模块的来源 ID。

如需详细了解如何过滤发现结果,请参阅列出安全发现结果

管理自定义模块生成的发现结果的方式与管理 Security Command Center 中的所有发现结果一样。详情请参阅以下内容:

管理 Event Threat Detection 自定义模块

本部分介绍了如何查看、列出、更新和删除 Event Threat Detection 自定义模块。

查看或列出自定义模块

控制台

  1. 查看 Event Threat Detection 服务的模块。预定义模块和自定义模块会显示在列表中。
  2. 可选:如需仅查看自定义模块,请在过滤条件字段中输入 Type:Custom

结果包括:

  • 所有住宅版 Event Threat Detection 自定义模块。
  • 所有继承的 Event Threat Detection 自定义模块。例如,如果您使用的是项目视图,则结果中会包含在该项目的父级文件夹和组织中创建的自定义模块。
  • 在子资源中创建的所有 Event Threat Detection 后代自定义模块。例如,如果您目前位于组织视图中,则结果中会包含在该组织下的文件夹和项目中创建的自定义模块。

gcloud

gcloud alpha scc custom-modules etd list \
    --RESOURCE_FLAG=RESOURCE_ID

替换以下内容:

  • RESOURCE_FLAG:您要列出自定义模块的范围;可以是 organizationfolderproject 之一。
  • RESOURCE_ID:资源的 ID,即组织 ID、文件夹 ID 或项目 ID。

结果包括:

  • 所有住宅版 Event Threat Detection 自定义模块。
  • 所有继承的 Event Threat Detection 自定义模块。例如,当您在项目级列出自定义模块时,系统会在结果中包含在该项目的父级文件夹和组织中创建的自定义模块。

结果中的每个项都包含模块的名称、状态和属性。每个模块的属性各不相同。

每个模块的名称都包含其自定义模块 ID。本页上的许多 gcloud 操作都需要自定义模块 ID。

name: RESOURCE_LEVEL/RESOURCE_ID/eventThreatDetectionSettings/customModules/CUSTOM_MODULE_ID

停用自定义模块

控制台

请参阅启用或停用模块

停用继承的自定义模块后,所做的更改只会应用于当前的资源级别。位于父级级别的原始自定义模块不会受到影响。例如,如果您在项目级别,并且停用了从父级文件夹继承的自定义模块,则自定义模块只会在项目级别停用。

您无法停用派生自定义模块。例如,如果您在组织视图中,则无法停用在项目级别创建的自定义模块。

gcloud

gcloud alpha scc custom-modules etd update CUSTOM_MODULE_ID \
    --RESOURCE_FLAG=RESOURCE_ID \
    --enablement-state="DISABLED"

替换以下内容:

  • CUSTOM_MODULE_ID:事件威胁检测自定义模块的数字 ID,例如 1234567890。在查看自定义模块列表时,您可以从相关自定义模块的 name 字段中获取数字 ID。
  • RESOURCE_FLAG:自定义模块所在的父级资源的范围;可以是 organizationfolderproject 之一。
  • RESOURCE_ID:父级资源的 ID;即组织 ID、文件夹 ID 或项目 ID。

启用自定义模块

控制台

请参阅启用或停用模块

启用继承的自定义模块后,所做更改仅应用于当前资源级别。位于父级级别的原始自定义模块不会受到影响。例如,如果您位于项目级别,并且启用了从父级文件夹继承的自定义模块,则该自定义模块仅在项目级别启用。

您无法启用派生自定义模块。例如,如果您在组织视图中,则无法启用在项目级别创建的自定义模块。

gcloud

gcloud alpha scc custom-modules etd update CUSTOM_MODULE_ID \
    --RESOURCE_FLAG=RESOURCE_ID \
    --enablement-state="ENABLED"

请替换以下内容:

  • CUSTOM_MODULE_ID:事件威胁检测自定义模块的数字 ID,例如 1234567890。在查看自定义模块列表时,您可以从相关自定义模块的 name 字段获取数字 ID。
  • RESOURCE_FLAG:自定义模块所在的父级资源的范围;可以是 organizationfolderproject 之一。
  • RESOURCE_ID:父级资源的 ID;即组织 ID、文件夹 ID 或项目 ID。

更新自定义模块的定义

本部分介绍如何通过 Google Cloud 控制台和 gcloud CLI 更新自定义模块。每个 Event Threat Detection 自定义模块的大小限制为 6 MB。

您无法更新自定义模块的模块类型。

如需更新自定义模块,请按照以下步骤操作:

控制台

您只能修改住宅自定义模块。例如,如果您在组织视图中,则只能修改在组织级别创建的自定义模块。

  1. 查看 Event Threat Detection 服务的模块。预定义模块和自定义模块会显示在列表中。
  2. 找到您要修改的自定义模块。
  3. 对于该自定义模块,点击 操作 > 修改
  4. 根据需要修改自定义模块。
  5. 点击保存

gcloud

如需更新模块,请运行以下命令并添加更新后的模块模板 JSON:

 gcloud alpha scc custom-modules etd update CUSTOM_MODULE_ID \
     --RESOURCE_FLAG=RESOURCE_ID \
     --enablement-state="ENABLED" \
     --custom-config-from-file=PATH_TO_JSON_FILE

请替换以下内容:

  • CUSTOM_MODULE_ID:事件威胁检测自定义模块的数字 ID,例如 1234567890。在查看自定义模块列表时,您可以从相关自定义模块的 name 字段获取数字 ID。
  • RESOURCE_FLAG:自定义模块所在的父级资源的范围;可以是 organizationfolderproject 之一。
  • RESOURCE_ID:父级资源的 ID;即组织 ID、文件夹 ID 或项目 ID。
  • PATH_TO_JSON_FILE:包含自定义模块的 JSON 定义的 JSON 文件。

检查单个自定义模块的状态

控制台

  1. 查看 Event Threat Detection 服务的模块。预定义模块和自定义模块会显示在列表中。
  2. 从列表中找到自定义模块。

自定义模块的状态显示在状态列中。

gcloud

 gcloud alpha scc custom-modules etd get CUSTOM_MODULE_ID \
     --RESOURCE_FLAG=RESOURCE_ID

替换以下内容:

  • CUSTOM_MODULE_ID:事件威胁检测自定义模块的数字 ID,例如 1234567890。在查看自定义模块列表时,您可以从相关自定义模块的 name 字段中获取数字 ID。
  • RESOURCE_FLAG:自定义模块所在的父级资源的范围;可以是 organizationfolderproject 之一。
  • RESOURCE_ID:父级资源的 ID;即组织 ID、文件夹 ID 或项目 ID。

输出类似于以下内容,其中包含模块的状态和属性。每个模块的属性各不相同。

config:
metadata:
  description: DESCRIPTION
  recommendation: RECOMMENDATION
  severity: SEVERITY
regions:
- region: REGION
displayName: USER_SPECIFIED_DISPLAY_NAME
enablementState: STATUS
lastEditor: LAST_EDITOR
name: RESOURCE_LEVEL/RESOURCE_ID/eventThreatDetectionSettings/customModules/CUSTOM_MODULE_ID
type: MODULE_TYPE
updateTime: 'UPDATE_TIME'

删除自定义模块

删除 Event Threat Detection 自定义模块后,该模块生成的发现结果不会修改,并且仍会在 Security Command Center 中提供。相比之下,如果您删除 Security Health Analytics 自定义模块,其生成的发现结果会被标记为非活跃。

您无法恢复已删除的自定义模块。

控制台

您无法删除继承的自定义模块。例如,如果您在项目视图中,则无法删除在文件夹级或组织级创建的自定义模块。

如需通过 Google Cloud 控制台删除自定义模块,请执行以下操作:

  1. 查看 Event Threat Detection 服务的模块。预定义模块和自定义模块会显示在列表中。
  2. 找到要删除的自定义模块。
  3. 对于该自定义模块,点击 操作 > 删除。系统会显示一条消息,提示您确认删除。
  4. 点击删除

gcloud

 gcloud alpha scc custom-modules etd delete CUSTOM_MODULE_ID \
     --RESOURCE_FLAG=RESOURCE_ID

替换以下内容:

  • CUSTOM_MODULE_ID:事件威胁检测自定义模块的数字 ID,例如 1234567890。在查看自定义模块列表时,您可以从相关自定义模块的 name 字段中获取数字 ID。
  • RESOURCE_FLAG:自定义模块所在的父级资源的范围;可以是 organizationfolderproject 之一。
  • RESOURCE_ID:父级资源的 ID;即组织 ID、文件夹 ID 或项目 ID。

克隆自定义模块

克隆自定义模块时,系统会将生成的自定义模块创建为您正在查看的资源的常驻项。例如,如果您克隆项目从组织继承的自定义模块,则新自定义模块是项目中的住宅模块。

您无法克隆派生自定义模块。

如需通过 Google Cloud 控制台克隆自定义模块,请执行以下操作:

  1. 查看 Event Threat Detection 服务的模块。预定义模块和自定义模块会显示在列表中。
  2. 找到要克隆的自定义模块。
  3. 对于该自定义模块,点击 操作 > 克隆
  4. 根据需要修改自定义模块。
  5. 点击创建

后续步骤