测试 Security Health Analytics 的自定义模块

本页面介绍了如何通过上传包含测试数据的 YAML 文件,在 Google Cloud 控制台中测试 Security Health Analytics 自定义模块。

准备工作

您需要先满足以下前提条件,然后才能测试自定义模块:

  • 使用 Security Health Analytics 自定义模块时适用的所有一般前提条件,包括以下各项:

    • 激活高级服务层级
    • 启用 Security Command Center API

    如需查看前提条件的完整列表,请参阅使用 Security Health Analytics 的自定义模块

  • 您的用户账号必须获得一个或多个 Identity and Access Management (IAM) 角色,这些角色不仅可让您使用 Security Command Center 和自定义模块,还可以提供 securitycenter.securityhealthanalyticscustommodules.test 权限。如需详细了解使用自定义模块所需的权限和角色,请参阅所需的 IAM 权限

  • 对自定义模块进行测试的 API 调用受配额限制。如需了解详情,请参阅自定义模块配额

在 YAML 文件中创建测试资源

如需测试自定义模块,您可以在 YAML 文件中定义虚构资源定义和/或虚构政策定义。

这些定义不对应于实际的资源或政策实例,但必须符合自定义模块中指定的资源或政策类型的架构。

在测试定义中,您只需指定自定义模块评估的属性。您无需添加自定义模块未引用的资源属性。

如需在自定义模块中测试 CEL 表达式,请在测试文件中指定属性值,以使 CEL 表达式解析为 true

测试数据的格式

文件的第一行应为 testData:,后跟一个或多个 - asset 定义。

testData:
- asset:
    resource: ARBITRARY_ASSET_NAME_1
    assetType: RESOURCE_TYPE_1
    resourceData:
      PROPERTIES_TO_TEST_1: PROPERTY_VALUE_1
        SUB_PROPERTY: SUB_PROPERTY_VALUE
      PROPERTIES_TO_TEST_2: PROPERTY_VALUE_2
- asset:
    resource: ARBITRARY_ASSET_NAME_2
    assetType: RESOURCE_TYPE_2
    iamPolicyData:
      PROPERTIES_TO_TEST_3: PROPERTY_VALUE_3
      PROPERTIES_TO_TEST_4: PROPERTY_VALUE_4

请替换以下内容:

  • ARBITRARY_ASSET_NAME_N:测试成功时显示在测试结果中的任意值。
  • RESOURCE_TYPE_N:自定义模块检查的资产或资源的类型,指定为 API 的服务端点的域名和资源名称,例如 cloudkms.googleapis.com/CryptoKey
  • PROPERTIES_TO_TEST_N:自定义模块的检测逻辑中用于触发发现结果的属性。
  • PROPERTY_VALUE_N:触发发现结果的属性的值。
  • SUB_PROPERTY:目标资源在其资源定义中引用的其他资源的子属性或属性。

测试定义示例

本部分包含测试资源定义和测试政策定义示例。虽然这两个示例显示为在单独的文件中定义,但资源和政策的 asset 定义可以合并到单个 testData 文件中。

资源定义示例

以下测试资源定义示例测试了一个自定义模块,该模块用于检查 CryptoKey 资源的 rotationPeriod 属性是否超过 2592000 秒(30 天)。该定义中的其他属性不会在自定义模块中使用,但仍符合资源的架构。如需查看此示例测试的自定义模块的完整定义,请参阅自定义模块定义示例

testData:
- asset:
    resource: THE CRYPTOKEY TEST WAS SUCCESSFUL!
    assetType: cloudkms.googleapis.com/CryptoKey
    resourceData:
      nextRotationTime:  '2020-02-05T12:00:55.192645Z'
      primary:
        state: 'ENABLED'
      purpose: 'ENCRYPT_DECRYPT'
      rotationPeriod: '2592001s'

政策定义示例

下面是一个 IAM 政策的测试定义示例:

testData:
- asset:
    resource: //cloudresourcemanager.googleapis.com/projects/fake-project
    assetType: cloudresourcemanager.googleapis.com/Project
    iamPolicyData:
      bindings:
      - role: "roles/viewer"
        members:
        - "serviceAccount:fake-service-account@compute-system.iam.gserviceaccount.com"
        - "user:fake-email-account"

测试自定义模块

您可以在 Google Cloud 控制台中测试新的自定义模块或现有自定义模块。

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

  1. 进入 Security Command Center 设置中的 Security Health Analytics 模块页面。

    进入“模块”

  2. 打开或创建一个自定义模块以进行测试:

    • 如需创建新的自定义模块,请点击创建模块,然后按照创建自定义模块中的说明操作。
    • 如需打开现有自定义模块,请点击要测试的模块所在行右侧的操作下的修改 () 图标。
  3. 选择测试模块标签页。

  4. 上传 YAML 文件下,点击浏览以上传包含示例资产数据的文件。在上传 YAML 文件后,测试便会立即运行。

  5. 测试结果预览下,查看结果。

    • 如果 YAML 文件中存在语法或其他错误,则浏览器页面底部附近会显示浮动错误消息。
    • 如果测试成功,则测试会返回以下信息:

      • 自定义模块的显示名称。
      • 您在测试数据文件的 resource 属性中指定的任意名称。
      • 在其中已创建或将创建自定义模块的组织、文件夹或项目。

    测试结果不会存储或写入到 Security Command Center。

后续步骤