修复 Security Command Center 错误

本页面提供了修复 SCC 错误的引用指南和技术列表。

准备工作

您需要足够的 Identity and Access Management (IAM) 角色来查看或修改发现结果,以及访问或修改 Google Cloud 资源。如果您遇到 在 Google Cloud 控制台,请向您的管理员寻求帮助。如需了解角色,请参阅访问权限控制。 如需解决资源错误,请阅读受影响产品的相关文档。

在 Google Cloud 控制台中查看发现结果

SCC 错误是指导致 Security Command Center 无法正常运行的配置错误。Security Command Center 来源会生成这些发现结果。

只要为您的组织项目设置了 Security Command Center,它就会在检测到错误时生成错误发现结果。您可以在 Google Cloud 控制台中查看 SCC 错误。

请按照以下过程在 Google Cloud 控制台中查看发现结果:

  1. 转到 Google Cloud 控制台中的 Security Command Center 发现结果页面。

    转至“发现结果”

  2. 选择您的 Google Cloud 项目或组织。

    项目选择器

  3. 快速过滤条件部分的来源显示名称子部分中,选择 Security Command Center

  4. 如需查看特定发现结果的详细信息,请点击 Category 下的发现结果名称。发现结果详细信息窗格会展开,显示以下信息:

    • AI 生成的摘要预览版:动态生成的对所发现问题的说明
    • 说明:检测到的错误的简要说明
    • 事件时间:检测到结果的时间
    • 资源显示名:受影响的资源
    • 后续步骤:有关如何解决该错误的说明
    • 发现结果规范名称:发现结果的唯一标识符
    • 来源显示名称Security Command Center
  5. 可选:要查看发现结果的完整 JSON 定义,请点击 JSON 标签页。

    窗格显示发现结果的 JSON 定义,您可以在其中查看发现结果的所有属性。

修复后停用 SCC 错误

修复 SCC error 发现结果后,Security Command Center 会在下一次扫描期间自动将发现结果的状态设置为 INACTIVE。至于 Security Command Center 需要多久才会将修复后的发现结果的状态设置为 INACTIVE,这取决于您修复该发现结果的时间以及系统安排检测到该错误的扫描的时间。

如需了解 SCC error 发现结果的扫描频率,请参阅错误检测器中的发现结果摘要部分。

修复 SCC 错误

本部分包含所有 SCC 错误的修复说明。

API disabled

API 中的类别名称API_DISABLED

项目已停用以下服务之一:

已停用的服务无法生成发现结果。

要修复此发现结果,请按以下步骤操作:

  1. 查看发现结果以确定停用哪个 API。
  2. 启用 API:

了解此发现结果类型支持的资产和扫描设置

APS no resource value configs match any resources

API 中的类别名称APS_NO_RESOURCE_VALUE_CONFIGS_MATCH_ANY_RESOURCES

资源值配置 是针对攻击路径模拟定义的,但与任何 API 均不匹配 资源实例。模拟将改用默认的高价值资源集。

由于以下原因,资源值配置可能与任何资源不匹配,这些原因在 Google Cloud 控制台的结果描述中进行了标识:

  • 没有任何资源值配置与任何资源实例匹配。
  • 指定 NONE 的一个或多个资源值配置会替换所有其他有效配置。
  • 所有定义的资源值配置都会指定值 NONE

要修复此发现结果,请按以下步骤操作:

  1. 转到 Security Command Center 设置中的攻击路径模拟页面:

    转到“设置”

  2. 选择您的组织。攻击路径模拟页面随即打开,并显示现有配置。

  3. 资源值配置列表的资源值列中,检查 None 的值。

  4. 对于指定了 None 的任何配置,请执行以下操作:

    1. 点击任何资源值配置的名称以显示配置规范。

    2. 如有必要,请修改资源属性规范 以减少与配置匹配的资源实例数。

  5. 如果问题不是由过于宽泛的 None 规范引起的,请执行以下操作:

    1. 点击指定值 HIGHMEDIUMLOW 的每个配置的名称以显示资源属性规范。

    2. 查看配置,并在必要时修改配置,以更正范围、资源类型、标记或标签规范以匹配预期的资源。

  6. 如有必要,请创建新的资源值配置

您的更改将应用于下一个攻击路径模拟。

了解此发现结果类型支持的资产和扫描设置

APS resource value assignment limit exceeded

API 中的类别名称APS_RESOURCE_VALUE_ASSIGNMENT_LIMIT_EXCEEDED

在上一个攻击路径模拟中,高价值资源实例(由资源值配置标识)超出了高价值资源集中 1,000 个资源实例的限制。因此,Security Command Center 从高价值资源集中排除了过多的实例。

如需修复此发现结果,您可以尝试以下操作:

  • 使用代码标签 减少给定资源类型的匹配项数量 或在指定范围内标记或标签必须应用于资源实例,然后才能由资源值配置进行匹配。
  • 创建一项资源值配置,用于分配 资源值 NONE 中指定的一部分资源, 另一个配置 指定 NONE 值时会替换任何其他配置,并排除高价值资源集中的资源实例。
  • 减少范围资源属性 规范了
  • 删除分配了 LOW 值的资源值配置。

如需了解如何创建、修改或删除资源值配置,请参阅定义和管理高价值资源集

了解此发现结果类型支持的资产和扫描设置

CIEM service account missing permissions

API 中的类别名称CIEM_SERVICE_ACCOUNT_MISSING_PERMISSIONS

缺少 CIEM 服务使用的服务账号 权限。CIEM 无法生成一个或多个发现结果类别。

如需修复此发现结果,请在 CIEM 服务账号上恢复所需的 IAM 角色:

  1. 在 Google Cloud 控制台中,转到 IAM 页面。

    转到 IAM

  2. 选择贵组织的 CIEM 服务账号。服务 账号标识符是一个电子邮件地址,格式如下:

    service-org-ORGANIZATION_ID@gcp-sa-ciem.iam.gserviceaccount.com
    

    ORGANIZATION_ID 替换为您的组织的数字 ID。

    如果系统未列出该服务账号,请点击授予访问权限 并输入服务账号作为新的主账号。

  3. 授予 CIEM Service Agent 角色 (roles/ciem.serviceAgent) 服务账号如果您使用自定义角色,请确保它们包含 以下权限:

    • cloudasset.assets.exportResource
    • cloudasset.assets.exportIamPolicy
  4. 点击保存

CIEM AWS CloudTrail configuration error

API 中的类别名称AWS_CLOUDTRAIL_CONFIGURATION_ERROR

未将全部或部分 CIEM AWS 发现结果发送到 Security Command Center。AWS CloudTrail Feed 发送失败,无法成功 提取数据。

此发现结果有三个可能的原因:

  • 缺少 AWS CloudTrail Feed

    如需解决此问题,请在 Security Operations 控制台中创建并配置 Feed 以注入 AWS CloudTrail 日志。将提取标签键值对设置为 CIEMTRUE

    有关创建 Feed 的说明,请参阅在 Feed

  • Feed 配置错误

    确保您已正确配置 Feed。

    要配置 Feed,请参阅在以下位置配置 Feed: Google Security Operations 可注入 AWS 日志

  • AWS CloudTrail 配置不完整

    如需解决此问题,请在您的 AWS CloudTrail 中设置 S3 存储桶 配置以同时记录所有 AWS 的数据事件管理事件 打算使用 CIEM。

    如需设置 CloudTrail,请参阅配置 AWS CloudTrail(或其他 服务)

GKE service account missing permissions

API 中的类别名称GKE_SERVICE_ACCOUNT_MISSING_PERMISSIONS

Container Threat Detection 无法为 Google Kubernetes Engine 集群生成发现结果,因为集群上的 GKE 默认服务账号缺少权限。这会阻止在集群上成功启用 Container Threat Detection。

如需修复此发现结果,请恢复 GKE 默认服务账号,并确认该服务账号具有 Kubernetes Engine 服务代理 (roles/container.serviceAgent) 角色。

了解此发现结果类型支持的资产和扫描设置

KTD blocked by admission controller

API 中的类别名称KTD_BLOCKED_BY_ADMISSION_CONTROLLER

无法对集群启用 Container Threat Detection,因为存在第三方 准入控制器阻止部署 Kubernetes DaemonSet 对象

要修复此发现结果,请确保 允许 Container Threat Detection 创建 Kubernetes 对象

检查准入控制器

检查集群中的准入控制器是否拒绝 Container Threat Detection DaemonSet 对象的部署。

  1. 在 Google Cloud 控制台的发现结果详细信息说明中,查看来自 Kubernetes 的错误消息。Kubernetes 错误消息应与以下消息类似:

    generic::failed_precondition: incompatible admission webhook:
    admission webhook "example.webhook.sh" denied the request:
    [example-constraint] you must provide labels: {"example-required-label"}.
    
  2. 在项目的 Cloud Audit Logs 管理员活动中 请在集群内找到 发现结果详情的说明字段中。

  3. 如果准入控制器工作正常,但拒绝部署 配置准入, 控制器 用于 Container Threat Detection 的服务代理 管理 kube-system 命名空间中的对象。

    Container Threat Detection 的服务代理必须能够管理 特定的 Kubernetes 对象

如需详细了解如何将准入控制器与 Container Threat Detection,请参阅 PodSecurityPolicy 和准入控制器

确认修正

您修复错误后,Security Command Center 会自动尝试 启用 Container Threat Detection。等待启用完成后,您可以按照以下步骤检查 Container Threat Detection 是否处于活跃状态:

  1. 前往控制台中的 Kubernetes Engine 工作负载页面。

    转到“Kubernetes 工作负载”

  2. 如有必要,请选择显示系统工作负载

  3. 工作负载页面上,首先按集群名称过滤工作负载。

  4. 查找 container-watcher 工作负载。如果存在 container-watcher,并且其状态显示 OK,则 Container Threat Detection 处于活跃状态。

KTD image pull failure

API 中的类别名称KTD_IMAGE_PULL_FAILURE

无法为集群启用 Container Threat Detection,因为无法从 Container Registry 映像主机 gcr.io 拉取(下载)所需的容器映像。

拉取或下载容器映像可能会因多种可能的原因而失败。

请检查以下各项:

  • 确保您的 VPC 网络、DNS 或防火墙设置没有阻止从集群到 gcr.io 映像主机的网络访问。
  • 如果集群是专用集群,请确保已启用专用 Google 访问通道,以允许访问 gcr.io 映像主机。
  • 如果网络设置或专用 Google 访问通道不是失败的原因,请参阅 GKE 问题排查文档中的 ImagePullBackOff 和 ErrImagePull 错误。

了解此发现结果类型支持的资产和扫描设置

KTD service account missing permissions

API 中的类别名称KTD_SERVICE_ACCOUNT_MISSING_PERMISSIONS

通过 Google Cloud 控制台中的发现结果详情缺失 权限。未检测到所有或部分 Container Threat Detection 发现结果 发送到 Security Command Center

要修复此发现结果,请按以下步骤操作:

  1. 授予 容器威胁检测服务代理 角色 (roles/containerthreatdetection.serviceAgent) 分配给 服务账号。如需了解详情,请参阅 授予单个角色

    或者,如果要使用自定义角色,请确保该角色具有 Container Threat Detection Service Agent 角色中的权限

  2. 确保不存在 IAM 拒绝事件 政策阻止服务账号使用 拥有 Container Threat Detection Service Agent 角色的任何权限。如果有 是阻止访问的拒绝政策,请将服务账号添加为例外 主账号

详细了解 Container Threat Detection 服务账号 及其所需的角色和权限,请参阅

了解此发现结果类型支持的资产和扫描设置

Misconfigured Cloud Logging Export

API 中的类别名称MISCONFIGURED_CLOUD_LOGGING_EXPORT

配置为持续导出到 Cloud Logging 的项目不可用。因此,Security Command Center 无法将发现结果发送到 Logging。

要修复此发现结果,请执行以下操作之一:

了解此发现结果类型支持的资产和扫描设置

VPC Service Controls Restriction

API 中的类别名称VPC_SC_RESTRICTION

Security Health Analytics 无法为项目生成某些发现结果,因为项目受服务边界保护。您必须向 Security Command Center 服务账号授予对服务边界的入站访问权限。

服务账号的标识符是具有以下格式的电子邮件地址:

service-RESOURCE_KEYWORD-RESOURCE_ID@security-center-api.iam.gserviceaccount.com

请替换以下内容:

  • RESOURCE_KEYWORD:关键字 orgproject,具体取决于服务账号所属的资源
  • RESOURCE_ID:以下各项之一:
    • 组织 ID(如果服务账号归组织所有)
    • <ph type="x-smartling-placeholder"></ph> 项目编号(如果服务账号归项目所有)

如果您同时拥有组织级和项目级服务账号,请应用 对两者进行补救

要修复此发现结果,请按照下列步骤操作。

第 1 步:确定哪个服务边界会阻止 Security Health Analytics

  1. 获取 VPC Service Controls 的唯一 ID 以及与发现结果关联的项目 ID:
    1. 如需查看发现结果的详细信息,请点击其类别名称。
    2. 说明字段中,复制 VPC Service Controls 唯一 ID,例如 5e4GI409D6BTWfOp_6C-uSwmTpOQWcmW82sfZW9VIdRhGO5pXyCJPQ
    3. 资源路径字段中,复制项目的 ID。
  2. 获取访问政策 ID 和服务边界的名称:

    1. 在 Google Cloud 控制台中,转到日志浏览器页面。

      转到日志浏览器

    2. 在工具栏中,选择与发现结果关联的项目。

      项目选择器

    3. 在搜索框中,输入该错误的唯一 ID。

      按错误 UID 搜索

      如果查询结果中未显示错误,请在直方图中延长时间轴,然后重新运行查询。

    4. 点击显示的错误。

    5. 点击展开嵌套字段

    6. 复制 servicePerimeterName 字段的值。该值的格式如下:

      accessPolicies/ACCESS_POLICY/servicePerimeters/SERVICE_PERIMETER

      在本示例中,服务边界的完整资源名称为 accessPolicies/540107806624/servicePerimeters/vpc_sc_misconfigured

      • ACCESS_POLICY 是访问政策 ID,例如 540107806624
      • SERVICE_PERIMETER 是服务边界的名称,例如 vpc_sc_misconfigured

      服务边界的完整资源名称

    7. 要获取与访问权限政策 ID 对应的显示名,请使用 gcloud CLI。

      如果您无法进行组织级查询,请让您的管理员执行此步骤。

      gcloud access-context-manager policies list --organization ORGANIZATION_ID
      

      ORGANIZATION_ID 替换为您的组织的数字 ID。

      您将看到类似于以下内容的输出:

      NAME          ORGANIZATION  SCOPES                 TITLE           ETAG
      540107806624  549441802605                         default policy  2a9a7e30cbc14371
      352948212018  549441802605  projects/393598488212  another_policy  d7b47a9ecebd4659

      显示名称是与访问政策 ID 对应的标题。记下访问政策的显示名称和服务边界的名称。下一部分将会用到它们。

第 2 步:创建授予项目访问权限的入站规则

此部分要求您拥有以下项目的组织级访问权限: VPC Service Controls。如果您没有组织级访问权限,请让您的管理员执行这些步骤。

在以下步骤中,您将为在第 1 步中识别的服务边界创建入站规则。

要授予服务账号对服务边界的入站访问权限,请按照下列步骤操作: 这些步骤。

  1. 转到 VPC Service Controls。

    转到 VPC Service Controls

  2. 在工具栏中,选择您的 Google Cloud 组织。

    项目选择器

  3. 在下拉列表中,选择包含要授予访问权限的服务边界的访问权限政策。

    访问权限政策列表

    与访问权限政策关联的服务边界将显示在列表中。

  4. 点击服务边界的名称。

  5. 点击 修改边界

  6. 在导航菜单中,点击入站流量政策

  7. 点击添加规则

  8. 按如下方式配置规则:

    API 客户端的“来自于”特性

    1. 来源部分,选择所有来源
    2. 身份部分,选择选定的身份
    3. 添加用户/服务账号字段中,点击选择
    4. 输入服务账号电子邮件地址。 如果您同时拥有组织级层和项目级层服务账号,请同时添加这两个服务账号。
    5. 点击保存

    GCP 服务/资源的“至”特性

    1. 对于项目,选择所有项目,或选择发现结果中指定的项目。

    2. 服务部分,选择所有服务或选择以下各项 Security Health Analytics 所需的各项服务:

      • BigQuery API
      • Binary Authorization API
      • Cloud Logging API
      • Cloud Monitoring API
      • Compute Engine API
      • Kubernetes Engine API

    如果服务边界限制对所需服务的访问 Security Health Analytics 无法为该服务生成发现结果。

  9. 在导航菜单中,点击保存

如需了解详情,请参阅配置入站和出站政策

了解此发现结果类型支持的资产和扫描设置

Security Command Center service account missing permissions

API 中的类别名称SCC_SERVICE_ACCOUNT_MISSING_PERMISSIONS

Security Command Center 的服务代理 缺少正常运行所需的权限。

服务账号的标识符是具有以下格式的电子邮件地址:

service-RESOURCE_KEYWORD-RESOURCE_ID@security-center-api.iam.gserviceaccount.com

请替换以下内容:

  • RESOURCE_KEYWORD:关键字 orgproject,具体取决于服务账号所属的资源
  • RESOURCE_ID:以下各项之一:
    • 组织 ID(如果服务账号归组织所有)
    • <ph type="x-smartling-placeholder"></ph> 项目编号(如果服务账号归项目所有)

如果您同时拥有组织级和项目级服务账号,请应用 对两者进行补救

要修复此发现结果,请按以下步骤操作:

  1. 向服务账号授予 Security Center Service Agent (roles/securitycenter.serviceAgent) 角色。

    如需了解详情,请参阅授予单个角色

    或者,如果要使用自定义角色,请确保它具有 Security Center Service Agent 角色中的权限。

  2. 确保没有 IAM 拒绝政策阻止服务账号使用所需角色中的任何权限。如果有 是阻止访问的拒绝政策,请将服务账号添加为例外 主账号

了解此发现结果类型支持的资产和扫描设置

后续步骤

了解 Security Command Center 错误