本页面提供了修复 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 或 project, 它在检测到错误时会生成错误发现结果。您可以在 Google Cloud 控制台中查看 SCC 错误。
请按照以下过程在 Google Cloud 控制台中查看发现结果:
Google Cloud 控制台
- 在 Google Cloud 控制台中,前往 Security Command Center 的发现结果页面。
- 选择您的 Google Cloud 项目或组织。
- 在快速过滤条件部分的来源显示名称子部分中,选择 Security Command Center。发现结果查询结果会更新,以仅显示 来自此来源的发现结果。
- 如需查看特定发现结果的详细信息,请点击类别下的发现结果名称。通过 相应发现结果的详细信息面板随即会打开,并显示摘要标签页。
- 在摘要标签页中,查看发现结果的详细信息,包括 检测到的内容、受影响的资源以及您可以采取的步骤(如果有) 来补救发现结果。
- 可选:如需查看发现结果的完整 JSON 定义,请点击 JSON 标签页。
Security Operations 控制台
-
在 Security Operations 控制台中,转到发现结果页面。
https://CUSTOMER_SUBDOMAIN.backstory.chronicle.security/posture/findings
将
CUSTOMER_SUBDOMAIN
替换为您的客户专用标识符。 - 在汇总部分中,点击以展开来源显示名称子部分。
- 选择 Security Command Center。发现结果的查询结果会更新为仅显示此来源的发现结果。
- 如需查看特定发现结果的详细信息,请点击类别下的发现结果名称。通过 相应发现结果的详细信息面板随即会打开,并显示摘要标签页。
- 在摘要标签页中,查看发现结果的详细信息,包括 检测到的内容、受影响的资源以及您可以采取的步骤(如果有) 来补救发现结果。
- 可选:如需查看发现结果的完整 JSON 定义,请点击 JSON 标签页。
修复后停用 SCC 错误
您修复 SCC error
发现结果后,Security Command Center 会自动
在下次扫描期间将发现结果的状态设置为 INACTIVE
。至于 Security Command Center 需要多久才会将修复后的发现结果的状态设置为 INACTIVE
,这取决于您修复该发现结果的时间以及系统安排检测到该错误的扫描的时间。
如需了解 SCC error
发现结果的扫描频率,请参阅错误检测器中的发现结果摘要部分。
修复 SCC 错误
本部分包含所有 SCC 错误的修复说明。
API disabled
API 中的类别名称:API_DISABLED
项目已停用以下服务之一:
已停用的服务无法生成发现结果。
要修复此发现结果,请按以下步骤操作:
- 查看发现结果以确定停用哪个 API。
启用 API:
APS no resource value configs match any resources
API 中的类别名称:APS_NO_RESOURCE_VALUE_CONFIGS_MATCH_ANY_RESOURCES
资源值配置是为攻击路径模拟而定义的,但它们与您环境中的任何资源实例都不匹配。模拟将改用默认的高价值资源集。
由于以下原因,资源值配置可能与任何资源不匹配,这些原因在 Google Cloud 控制台的结果描述中进行了标识:
- 没有任何资源值配置与任何资源实例匹配。
- 指定
NONE
的一个或多个资源值配置会替换所有其他有效配置。 - 所有定义的资源值配置都会指定值
NONE
。
要修复此发现结果,请按以下步骤操作:
转到 Security Command Center 设置中的攻击路径模拟页面:
选择您的组织。系统随即会打开攻击路径模拟页面,其中包含 现有配置。
在资源值配置列表的资源值列中,检查
None
的值。对于指定了
None
的任何配置,请执行以下操作:- 点击任何资源值配置的名称以显示配置规范。
- 如有必要,请修改资源属性规范以减少与配置匹配的资源实例数。
如果问题不是由过于宽泛的
None
规范引起的,请执行以下操作:- 点击指定值
HIGH
、MEDIUM
或LOW
的每个配置的名称以显示资源属性规范。 - 查看配置,并在必要时修改配置,以更正范围、资源类型、标记或标签规范以匹配预期的资源。
- 点击指定值
如有必要,请创建新的资源值配置。
您的更改将应用于下一个攻击路径模拟。
了解此发现结果类型的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 角色:
在 Google Cloud 控制台中,转到 IAM 页面。
选择贵组织的 CIEM 服务账号。服务 账号标识符是一个电子邮件地址,格式如下:
service-org-ORGANIZATION_ID@gcp-sa-ciem.iam.gserviceaccount.com
将
ORGANIZATION_ID
替换为贵组织的 数字 ID。如果您没有看到所列的服务账号,请点击页面顶部的授予访问权限,然后输入该服务账号作为新的主账号。
授予 CIEM Service Agent 角色 (
roles/ciem.serviceAgent
) 服务账号如果您使用自定义角色,请确保它们包含 以下权限:cloudasset.assets.exportResource
cloudasset.assets.exportIamPolicy
点击保存。
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 日志。将提取标签键值对设置为
CIEM
和TRUE
。有关创建 Feed 的说明,请参阅 创建 Feed 。
Feed 配置中存在错误
确保您已正确配置 Feed。
如需配置 Feed,请参阅 Google SecOps 文档中的在 Google 安全运营中配置 Feed 以提取 AWS 日志。
AWS CloudTrail 配置不完整
如需解决此问题,请在 AWS CloudTrail 配置中设置 S3 存储桶,以记录您打算使用 CIEM 的所有 AWS 账号中的数据事件和管理事件。
如需设置 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 对象。
在 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"}.
在包含您的 请在集群的说明字段中查找 以及发现结果详情
如果您的准入控制器工作正常,但拒绝部署 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 是否处于活跃状态:
前往控制台中的 Kubernetes Engine 工作负载页面。
如有必要,请选择显示系统工作负载。
在工作负载页面上,先按集群名称过滤工作负载。
查找
container-watcher
工作负载。如果存在container-watcher
其状态显示为OK
,表示 Container Threat Detection 已启用。
KTD image pull failure
API 中的类别名称:KTD_IMAGE_PULL_FAILURE
无法对集群启用容器威胁检测,因为所需的容器
无法从 gcr.io
拉取(下载)映像,
Container Registry 映像主机。
拉取或下载容器映像可能会因多种可能的原因而失败。
请检查以下各项:
- 确保您的 VPC 网络、DNS 或防火墙设置没有阻止从集群到
gcr.io
映像主机的网络访问。 - 如果集群是专用集群,请确保已启用专用 Google 访问通道,以允许访问
gcr.io
映像主机。 - 如果网络设置和专用 Google 访问通道不是失败的原因,请参阅 GKE 问题排查文档中的
ImagePullBackOff
和ErrImagePull
错误。
KTD service account missing permissions
API 中的类别名称:KTD_SERVICE_ACCOUNT_MISSING_PERMISSIONS
发现结果详情中标识的 Container Threat Detection 服务账号 缺少必需的权限。全部或 部分 Container Threat Detection 发现结果未发送到 Security Command Center。
要修复此发现结果,请按以下步骤操作:
授予 容器威胁检测服务代理 角色 (
roles/containerthreatdetection.serviceAgent
) 分配给 服务账号。如需了解详情,请参阅 授予单个角色。或者,如果要使用自定义角色,请确保该角色具有 Container Threat Detection Service Agent 角色中的权限。
确保没有 IAM 拒绝政策阻止服务账号使用 Container Threat Detection Service Agent 角色中的任何权限。如果有拒绝政策阻止访问,请在拒绝政策中将服务账号添加为例外主账号。
如需详细了解容器威胁检测服务账号及其所需的角色和权限,请参阅所需的 IAM 权限
了解此发现结果类型的Misconfigured Cloud Logging Export
API 中的类别名称:MISCONFIGURED_CLOUD_LOGGING_EXPORT
为以下项目配置的项目: 持续导出到 Cloud Logging 不可用。因此,Security Command Center 无法将发现结果发送到 Logging。
要修复此发现结果,请执行以下操作之一:
如果项目恢复期尚未结束,请恢复缺失的项目。
如果项目已永久删除,请为 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
:关键字org
或project
,具体取决于服务账号所属的资源 -
RESOURCE_ID
:以下各项之一:- 如果服务账号归组织所有,则为组织 ID
- 如果服务账号归项目所有,则为项目编号
如果您同时拥有组织级和项目级服务账号,请应用 对两者进行补救
要修复此发现结果,请按照下列步骤操作。
第 1 步:确定哪个服务边界会阻止 Security Health Analytics
获取 VPC Service Controls 唯一 ID 和与 发现:
- 如需查看发现结果的详细信息,请点击其类别名称。
- 在说明字段中,复制 VPC Service Controls 唯一 ID,例如
5e4GI409D6BTWfOp_6C-uSwmTpOQWcmW82sfZW9VIdRhGO5pXyCJPQ
。 - 在资源路径字段中,复制项目的 ID。
获取访问政策 ID 和服务边界的名称:
在 Google Cloud 控制台中,转到日志浏览器页面。
在工具栏中,选择与发现结果关联的项目。
在搜索框中,输入该错误的唯一 ID。
如果查询结果中未显示错误,请在直方图中延长时间轴,然后重新运行查询。
点击显示的错误。
点击展开嵌套字段。
复制
servicePerimeterName
字段的值。该值的格式如下:accessPolicies/ACCESS_POLICY/servicePerimeters/SERVICE_PERIMETER
在本示例中,服务边界的完整资源名称为
accessPolicies/540107806624/servicePerimeters/vpc_sc_misconfigured
。ACCESS_POLICY
是访问政策 ID, 示例:540107806624
。SERVICE_PERIMETER
是服务边界的名称,例如vpc_sc_misconfigured
。
要获取与访问权限政策 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 步中识别的服务边界创建入站规则。
要授予服务账号对服务边界的入站访问权限,请按照下列步骤操作: 这些步骤。
转到 VPC Service Controls。
在工具栏中,选择您的 Google Cloud 组织。
在下拉列表中,选择包含要授予访问权限的服务边界的访问权限政策。
与访问权限政策关联的服务边界将显示在列表中。
点击服务边界的名称。
点击
修改边界。在导航菜单中,点击入站流量政策。
点击添加规则。
按如下方式配置规则:
API 客户端的“来自于”特性
- 在来源部分,选择所有来源。
- 在身份部分,选择选定的身份。
- 在添加用户/服务账号字段中,点击选择。
- 输入服务账号电子邮件地址。 如果您同时拥有组织级层和项目级层服务账号,请同时添加这两个服务账号。
- 点击保存。
GCP 服务/资源的“至”特性
对于项目,选择所有项目,或选择发现结果中指定的项目。
对于服务,选择所有服务或选择以下各项 Security Health Analytics 所需的各项服务:
- BigQuery API
- Binary Authorization API
- Cloud Logging API
- Cloud Monitoring API
- Compute Engine API
- Kubernetes Engine API
如果服务边界限制对某项必需服务的访问,则 Security Health Analytics 无法为该服务生成发现结果。
在导航菜单中,点击保存。
如需了解详情,请参阅配置入站和出站政策。
了解此发现结果类型的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
:关键字org
或project
,具体取决于服务账号所属的资源 -
RESOURCE_ID
:以下各项之一:- 组织 ID(如果服务账号归组织所有)
- 如果服务账号归项目所有,则为项目编号
如果您同时拥有组织级层和项目级层服务账号,请对这两个服务账号都应用相应修复措施。
要修复此发现结果,请按以下步骤操作:
向服务账号授予 Security Center Service Agent (
roles/securitycenter.serviceAgent
) 角色。如需了解详情,请参阅 授予单个角色。
或者,如果要使用自定义角色,请确保它具有 Security Center Service Agent 角色中的权限。
确保没有 IAM 拒绝政策阻止服务账号使用所需角色中的任何权限。如果出现拒绝 政策禁止访问,请将服务账号添加为 拒绝中的 exception principal 政策。
后续步骤
了解 Security Command Center 错误。