本页面介绍了如何使用 Google Cloud 控制台或 Google Cloud CLI 创建、查看、更新和删除 Security Health Analytics 的自定义模块。
如需更多介绍性信息,请参阅 Security Health Analytics 自定义模块概览。
准备工作
您需要先满足以下前提条件,然后才能使用自定义模块:
- 您需要使用 Security Command Center 的高级层级。更多信息 有关 Security Command Center 层级的信息,请参阅 Security Command Center 激活概览。
- 必须启用 Security Health Analytics。如需了解如何启用 Security Health Analytics,请参阅 启用或停用内置服务。
- 您的用户账号必须获得一个或多个可提供所需权限的 Identity and Access Management (IAM) 角色。如需了解详情,请参阅所需的 IAM 权限。
- 如果您打算编写自己的自定义模块并使用
gcloud
命令将其上传到 Security Command Center,则需要使用 Google Cloud CLI。如需详细了解如何安装 gcloud CLI,请参阅安装 gcloud CLI。 - 如果 Security Command Center API 尚未启用,则需要先启用它,然后才能使用 Security Health Analytics 的自定义模块。您可以 启用 Security Command Center API, “API 库”页面 Google Cloud 控制台中。
- 如需了解 Security Health Analytics 的用量限额,请参阅自定义模块配额。
必需的 IAM 权限
如需使用自定义模块,您需要以下 Identity and Access Management (IAM) 权限:
权限 | 角色 |
---|---|
securitycenter.securityhealthanalyticscustommodules.create securitycenter.securityhealthanalyticscustommodules.update securitycenter.securityhealthanalyticscustommodules.delete |
roles/securitycenter.settingsEditor roles/securitycenter.admin |
securitycenter.securityhealthanalyticscustommodules.get securitycenter.securityhealthanalyticscustommodules.list |
roles/securitycenter.settingsViewer roles/securitycenter.adminViewer roles/securitycenter.admin |
securitycenter.securityhealthanalyticscustommodules.test | roles/securitycenter.securityHealthAnalyticsCustomModulesTester roles/securitycenter.adminViewer roles/securitycenter.adminEditor roles/securitycenter.admin |
如需详细了解 IAM 权限和角色 如何授予这些权限,请参阅 使用 Google Cloud 控制台授予 IAM 角色。
创建自定义模块
本部分介绍了如何使用 Google Cloud 控制台或 gcloud CLI 创建自定义模块。
要在创建过程中测试自定义模块,您需要执行以下操作: 在 YAML 文件中准备测试资源定义如需查看相关说明,请参阅在 YAML 文件中创建测试资源。
要创建自定义模块,请选择您要使用的方法: 以下标签页:
Google Cloud 控制台
如需在 Google Cloud 控制台中创建自定义模块,请完成 操作步骤:
转到 Google Cloud 控制台中的 Security Command Center 设置页面。
如果出现提示,请选择需要在其中创建自定义模块的组织、文件夹或项目。
在 Security Health Analytics 卡片上,点击管理设置。
点击模块标签页。
点击
Create module。 系统会打开 Create module for Security Health Analytics(创建 Security Health Analytics 的模块)页面。在配置模块面板上,定义显示名称、要扫描的资源以及检测逻辑:
在模块名称字段中,指定模块的名称。该名称必须介于 1 到 128 个字符之间,以小写字母开头,并且只能包含字母数字字符或下划线。此名称将成为检测器生成的发现结果的类别。学习完模块后便无法更改名称 。
在添加资源类型下,指定要扫描的资源类型(一到五个)。您不能多次指定资源类型。
如需查看支持的资源类型列表,请参阅支持的资源类型。
在表达式编辑器中,编写 CEL 表达式 对资源的一个或多个属性运行布尔值检查 您在上一步中指定的键值对如需触发发现结果,表达式必须解析为
TRUE
。 例如,如果CryptoKey
资源定义了轮替周期且轮替周期超过 2,592,000 秒(30 天),则以下表达式会触发发现结果:has(resource.rotationPeriod) && (resource.rotationPeriod > duration('2592000s'))
详情请参阅以下内容:
点击下一步。系统会打开定义发现结果详情面板。
在定义发现结果详情面板上,描述自定义模块检测到的问题,包括其严重程度、问题是什么、如何解决问题,以及您要在发现结果中添加作为自定义来源属性的任何数据:
在严重程度字段中,指定问题的严重程度。 您可以指定
Low
、Medium
、High
或Critical
。默认值为Medium
。如需了解严重级别,请参阅发现结果的严重程度分类。
在发现结果说明字段中,说明 自定义模块检测到的此说明出现在每项发现结果中 帮助安全团队了解并解决 检测到的问题。
在发现结果后续步骤字段中,说明安全团队可以执行来修复或解决检测到的问题的步骤。
这些步骤会随每个发现结果实例一起显示。其中包括安全团队可以执行以尽快解决问题的具体步骤。
可选:在 Custom finding properties(自定义发现结果属性)字段中,最多指定 10 个名称-值对,以定义随每个发现结果实例一起返回的自定义来源属性。该信息会作为发现结果 JSON 中的来源属性返回,并显示在 Google Cloud 控制台的发现结果详情中的来源属性标签页上。以键值对形式指定文本或属性值:
- 在“属性名称”字段中,指定自定义项目的名称
来源媒体资源。该名称必须符合以下规则:
- 名称必须以小写字母开头。
- 名称只能包含字母数字字符或下划线。
- 名称的长度必须介于 1 到 128 个字符之间。
- 每个名称在其他来源媒体资源中必须是唯一的。
- 在属性值字段中,指定以下值之一(不超过 1024 个字符):
- 用英文引号括起来的文本字符串。英文引号包含在 1024 个字符的限制内。例如:
"This string provides additional useful information."
- 要扫描的资源的任何属性。
例如,如果您要检查
CryptoKey
资源, 您可以指定resource.rotationPeriod
。rotationPeriod
属性。
- 用英文引号括起来的文本字符串。英文引号包含在 1024 个字符的限制内。例如:
- 在“属性名称”字段中,指定自定义项目的名称
来源媒体资源。该名称必须符合以下规则:
点击下一步。系统会打开启用模块面板。
可选:使用启用模块面板的下拉菜单指定自定义模块在创建后处于启用状态还是停用状态。默认情况下,自定义模块在创建后处于启用状态。如果您指定了停用,则稍后可以在 Security Health Analytics 设置页面的模块标签页中启用模块。
点击下一步。系统会打开测试模块面板。
可选:在创建自定义模块之前,我们建议您 进行测试。
如需测试自定义模块,请按照以下步骤操作:
创建一个 YAML 文件,其中包含自定义模块检查的资源的测试资源定义。
如需了解如何创建测试数据文件,请参阅 在 YAML 文件中创建测试资源。
在上传 YAML 文件下,点击浏览以上传 YAML 包含测试资源定义的文件上传该文件后,测试会自动开始。
在测试结果预览下,查看结果。
- 如果 YAML 文件中存在语法或其他错误,则浏览器页面底部附近会显示浮动错误消息。
如果测试成功,则测试会返回以下信息:
- 自定义模块的显示名称。
- 您在
resource
属性中指定的任意名称 测试数据文件中 - 在其中已创建或将创建自定义模块的组织、文件夹或项目。
测试结果不会存储或写入到 Security Command Center。
如需了解详情,请参阅测试自定义模块。
点击创建。您会返回到模块页面,并且应该会看到自己创建的模块,其状态为已启用。
新自定义模块并非立即可供以下人员使用: 扫描中的 Security Health Analytics。如需了解详情,请参阅检查延迟时间。
gcloud CLI
如需使用 gcloud
命令创建自定义模块,您首先需要执行以下操作:
将自定义模块的定义编码到 YAML 文件中,该文件包含
用于检测逻辑和输出属性的 CEL 表达式。
完成定义后,您可以将定义上传到 使用 gcloud CLI 命令监控 Security Command Center。
- 按照对 Security Health Analytics 的自定义模块进行编码中的说明,在 YAML 文件中对自定义模块定义进行编码。
- 将 YAML 文件保存到实例可访问的位置 gcloud CLI
将自定义设置上传到 Security Command Center:
gcloud scc custom-modules sha create \ PARENT_FLAG=PARENT_ID \ --display-name="MODULE_DISPLAY_NAME" \ --enablement-state="ENABLEMENT_STATE" \ --custom-config-from-file=MODULE_FILE_NAME.yaml
请替换以下内容:
PARENT_FLAG
:创建自定义模块所在的级别,可以是--organization
、--folder
或--project
。PARENT_ID
:组织、文件夹、 或项目。ENABLEMENT_STATE
:enabled
或disabled
。MODULE_DISPLAY_NAME
:发现结果类别 您想在自定义模块返回发现结果时显示的名称。 该名称必须介于 1 到 128 个字符之间,以小写字母开头,并且只能包含字母数字字符或下划线。MODULE_FILE_NAME
: 包含自定义模块定义的 YAML 文件。
检查延迟时间
创建或更新自定义模块的定义后,新的或更新后的自定义模块最多可能要延迟几个小时才能用于扫描。
创建或修改自定义模块不会触发扫描。 自定义模块可供使用后,直到首次进行批量扫描或对目标资源的配置的更改触发实时扫描时,Security Health Analytics 才会开始使用该自定义模块。
如需详细了解 Security Health Analytics 扫描类型,请参阅 Security Health Analytics 扫描类型。
更新自定义模块
您可以更新 Security Health Analytics 自定义 模块。
自定义模块的以下属性无法更改:
- 显示名称。
- 自定义模块 ID。
- 自定义模块的完整资源名称。
更新自定义模块时,该自定义模块发出的所有发现结果 不会同时更新。如果对模块的更改使发出的发现结果发生更改,则只有在下一次 Security Health Analytics 批量或实时扫描后,发现结果才会反映这些更改。
如需修改自定义模块,您可以使用 Google Cloud 控制台 或 gcloud CLI。如需查看相关说明,请点击以下标签页之一。
Google Cloud 控制台
如需在 Google Cloud 控制台中更新现有自定义模块,请按照以下步骤操作:
转到 Google Cloud 控制台中的 Security Command Center 设置页面。
在项目选择器中,选择最初在其中创建自定义模块的组织、文件夹或项目。您无法在任何其他位置修改自定义模块。
在 Security Health Analytics 卡片上,点击管理设置。
选择模块标签页。系统会显示所有 Security Health Analytics 检测模块。
使用模块列表顶部的过滤条件字段或通过滚动找到您需要修改的自定义模块。
在自定义模块所在行的右侧,点击操作 菜单图标,
。在操作菜单中,点击修改图标 (edit)。系统会打开查看模块页面,并显示配置模块标签页。
在查看模块上修改每个标签页的自定义模块字段 页面。
可选:在保存更新之前,我们建议您先对其进行测试。
如需测试自定义模块,请按照以下步骤操作:
创建一个 YAML 文件,其中包含自定义模块检查的资源的测试资源定义。
如需了解如何创建测试数据文件,请参阅 在 YAML 文件中创建测试资源。
在上传 YAML 文件下,点击浏览以上传 YAML 包含测试资源定义的文件上传该文件后,测试会自动开始。
在测试结果预览下,查看结果。
- 如果 YAML 文件中存在语法或其他错误,则浏览器页面底部附近会显示浮动错误消息。
如果测试成功,则测试会返回以下信息:
- 自定义模块的显示名称。
- 您在
resource
属性中指定的任意名称 测试数据文件中 - 在其中已创建或将创建自定义模块的组织、文件夹或项目。
测试结果不会存储或写入到 Security Command Center。
如需了解详情,请参阅 测试自定义模块。
点击页面底部的保存。 您的更改会应用于自定义模块。
gcloud CLI
如需使用 gcloud CLI 更新自定义模块,请先修改自定义模块的 YAML 定义,然后使用 gcloud
命令在 Security Health Analytics 中更新自定义模块。
修改自定义模块定义。有关如何编写代码的信息 自定义模块定义,请参见 为 Security Health Analytics 编码自定义模块。
将修改后的 YAML 文件保存到 gcloud CLI。
通过发出以下命令在 Security Health Analytics 中更新自定义模块:
gcloud scc custom-modules sha update MODULE_ID \ PARENT_FLAG=PARENT_ID \ --enablement-state="ENABLED" \ --custom-config-from-file=MODULE_FILE_NAME.yaml
请替换以下内容:
MODULE_ID
:ID 或完整资源名称 自定义模块PARENT_FLAG
:创建自定义模块所在的级别,可以是--organization
、--folder
或--project
。PARENT_ID
:组织、文件夹、 或在其中创建自定义模块的项目中MODULE_FILE_NAME
: 包含自定义模块定义的 YAML 文件。
查看自定义模块
选择一个标签页,了解如何查看自定义模块定义。
Google Cloud 控制台
如需在 Google Cloud 控制台中查看自定义模块,请按照以下步骤操作:
进入 Security Command Center 设置中的 Security Health Analytics 页面。
点击模块标签页。 系统会打开模块面板。
如有必要,请使用模块列表顶部的过滤条件字段找到您需要修改的自定义模块。
要查看自定义模块定义的详细信息,请点击操作 菜单图标
,位于右侧 。在操作菜单中,点击修改图标 edit。系统会打开查看模块页面,并显示配置模块标签页。
点击浏览查看模块页上的各个标签,查看所有 字段。
gcloud CLI
如需查看自定义模块的详细信息,请输入以下命令:
gcloud scc custom-modules sha get MODULE_ID \ PARENT_FLAG=PARENT_ID
请替换以下内容:
MODULE_ID
:ID 或完整资源名称 自定义模块PARENT_FLAG
:创建自定义模块所在的级别,可以是--organization
、--folder
或--project
。PARENT_ID
:组织、文件夹、 或在其中创建自定义模块的项目中
列出自定义模块
选择一个标签页,了解如何显示自定义模块列表。
Google Cloud 控制台
进入 Security Command Center 设置中的 Security Health Analytics 页面。
点击模块标签页。 系统会打开模块面板。
点击要显示的模块列表顶部的过滤条件字段 过滤器类型列表
选择类型,然后输入
Custom
。该模块列表会更新,仅显示自定义模块。
gcloud CLI
要查看自定义模块列表,请输入 以下命令:
gcloud scc custom-modules sha list \ PARENT_FLAG=PARENT_ID
请替换以下内容:
PARENT_FLAG
:创建自定义模块所在的级别,可以是--organization
、--folder
或--project
。PARENT_ID
:组织、文件夹、 或在其中创建自定义模块的项目中
删除自定义模块
您可以将自定义模块从在其中创建该模块的组织、文件夹或项目或者父级组织或文件夹中删除。您无法从继承自定义模块的文件夹或项目中删除该模块。
如需了解如何删除自定义模块,请选择以下某个标签页。
Google Cloud 控制台
转到 Google Cloud 控制台中的 Security Command Center 设置页面。
如果系统提示,请选择您的组织、文件夹或项目。
在 Security Health Analytics 卡片上,点击管理设置。
选择模块标签页。系统会显示所有 Security Health Analytics 检测模块。
使用模块列表顶部的过滤条件字段或通过滚动找到您需要修改的自定义模块。
在自定义模块所在行的右侧,点击操作 菜单图标,
。在操作菜单中,点击删除。系统会打开 Delete custom module(删除自定义模块)对话框。
在该对话框中,点击删除。
gcloud CLI
如需删除自定义模块,请输入以下命令:
gcloud scc custom-modules sha delete MODULE_ID \ PARENT_FLAG=PARENT_ID
请替换以下内容:
MODULE_ID
:ID 或完整资源名称 自定义模块PARENT_FLAG
:创建自定义模块所在的级别,可以是--organization
、--folder
或--project
。PARENT_ID
:组织、文件夹、 或在其中创建自定义模块的项目中
已删除自定义模块的发现结果标记为无效 Security Health Analytics。
审核发现结果
您可以在 Google Cloud 控制台中查看自定义模块生成的发现结果 或 Security Command Center API。
Google Cloud 控制台
您可以在 Google Cloud 控制台中查看自定义模块生成的发现结果以及其他 Security Command Center 发现结果。
如需查看发现结果,请按以下步骤操作:
进入 Google Cloud 控制台中的发现结果页面。
如果出现提示,请选择您的组织。
在快速过滤条件面板中,向下滚动到来源显示名称 部分,然后点击 Security Health Analytics 自定义。发现结果的查询结果面板会更新,仅显示来自 Security Health Analytics 自定义模块的发现结果。
如果您没有看到 Security Health Analytics 自定义,则表示自定义 模块已返回任何结果。
如需查看特定发现结果的详细信息,请在发现结果的查询结果面板的类别列中,点击该发现结果的类别名称。发现结果详情面板会展开,显示发现结果的详情摘要。
如果已为自定义 模块中,您可以点击来源媒体资源标签页进行查看。
如需查看发现结果的完整 JSON 定义,请点击 JSON 标签页。
gcloud CLI
如需查看发现结果,请执行以下操作:
- 打开一个终端窗口。
如需获取 Security Health Analytics 的来源 ID,请运行 以下命令:
gcloud scc sources describe organizations/ORGANIZATION_ID \ --source-display-name='Security Health Analytics Custom'
显示的输出应类似于以下内容:在本示例中,
SOURCE_ID
是由服务器分配的 ID,用于确保安全性 来源。description: ... displayName: Security Health Analytics Custom name: organizations/ORGANIZATION_ID/sources/SOURCE_ID
如需列出自定义模块生成的所有发现结果,请运行以下命令:
gcloud scc findings list ORGANIZATION_ID --source=SOURCE_ID
如需列出某个特定自定义模块的发现结果,请运行以下命令:
gcloud scc findings list ORGANIZATION_ID --source=SOURCE_ID --filter="category=\"MODULE_NAME\""
后续步骤
您可以像管理 Security Command Center 中的所有发现结果一样管理自定义模块生成的发现结果。如需查看相关说明,请参阅以下信息: