修复 Security Command Center 错误

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

准备工作

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

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

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

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

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

Google Cloud 控制台

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

    前往“发现结果”页面

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

安全运维控制台

  1. 在 Security Operations 控制台中,前往发现结果页面。
    https://CUSTOMER_SUBDOMAIN.backstory.chronicle.security/posture/findings
    

    CUSTOMER_SUBDOMAIN 替换为您的客户专用标识符。

  2. 汇总部分中,点击以展开来源显示名称子部分。
  3. 选择 Security Command Center。发现结果的查询结果会更新为仅显示此来源的发现结果。
  4. 如需查看特定发现结果的详细信息,请点击类别列中的发现结果名称。 系统会打开发现结果的详细信息面板,并显示摘要标签页。
  5. 摘要标签页上,查看发现结果的详细信息,包括有关检测到的内容、受影响的资源的信息,以及您可以采取的发现结果修复步骤(如果有)。
  6. 可选:如需查看发现结果的完整 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

资源值配置是为攻击路径模拟而定义的,但它们与您环境中的任何资源实例都不匹配。模拟将改用默认的高价值资源集。

由于以下原因,资源值配置可能与任何资源不匹配,这些原因在 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

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

    如需了解如何创建 Feed,请参阅 Google SecOps 文档中的创建 Feed

  • Feed 配置中存在错误

    确保您已正确配置 Feed。

    如需配置 Feed,请参阅 Google SecOps 文档中的在 Google 安全运营中配置 Feed 以注入 AWS 日志

  • AWS CloudTrail 配置不完整

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

    如需设置 CloudTrail,请参阅 Google SecOps 文档中的配置 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 审核日志中,查找发现结果详细信息的说明字段中显示的错误消息。

  3. 如果您的准入控制器正常运行,但拒绝 Container Threat Detection DaemonSet 对象的部署,请配置您的准入控制器以允许 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 问题排查文档中的 ImagePullBackOffErrImagePull 错误。

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

KTD service account missing permissions

API 中的类别名称KTD_SERVICE_ACCOUNT_MISSING_PERMISSIONS

Google Cloud 控制台中发现结果详情中所述的 Container Threat Detection 服务账号缺少所需权限。所有或部分容器威胁检测结果未发送到 Security Command Center。

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

  1. 向服务账号授予 Container Threat Detection Service Agent 角色 (roles/containerthreatdetection.serviceAgent)。如需了解详情,请参阅授予单个角色

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

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

如需详细了解容器威胁检测服务账号及其所需的角色和权限,请参阅所需的 IAM 权限

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

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
    • 如果服务账号归项目所有,则为 项目编号

如果您同时拥有组织级层和项目级层服务账号,请对这两个服务账号都应用相应修复措施。

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

第 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 控制台中,转到日志浏览器页面。

      转到 Logs Explorer

    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
    • 如果服务账号归项目所有,则为 项目编号

如果您同时拥有组织级层和项目级层服务账号,请对这两个服务账号都应用相应修复措施。

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

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

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

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

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

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

后续步骤

了解 Security Command Center 错误