创建和管理 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 自定义模块。只有当您计划时,才需要 JSON 模板 如何使用 gcloud CLI 创建自定义模块。

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

模板结构

模板用于定义自定义模块用于在日志中识别威胁的参数。模板采用 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. 通过 gcloud CLI 使用 JSON 文件。

创建自定义模块

本部分介绍如何通过 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:Event Threat Detection 的数字 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:Event Threat Detection 的数字 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: 事件威胁检测自定义模块,例如 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. 点击创建

后续步骤