配置制品安全防护政策

本文档介绍了如何创建和管理制品安全防护政策。如需简要了解该服务,请参阅 制品安全防护概览

准备工作

在创建制品安全防护政策之前,您必须在 Security Command Center 中启用制品安全防护,并获取所需的 Identity and Access Management (IAM) 角色

此外,请熟悉制品安全防护服务限制

如果您计划使用 gcloud CLI 管理政策或 CI/CD 连接器,请查看 gcloud CLI 前提条件

启用制品安全防护服务

按照配置 Security Command Center 服务中的步骤启用制品安全防护。

所需角色

如需获得使用制品防护所需的权限,请让管理员向您授予项目或组织的以下 Identity and Access Management (IAM) 角色:

  • Artifact Scan Guard Evaluation Admin (roles/artifactscanguard.policyEvaluator)

您可以使用 Google Cloud 控制台或运行以下 gcloud CLI 命令来授予此角色:

项目

  gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
      --role="roles/artifactscanguard.policyEvaluator"

替换以下内容:

  • PROJECT_ID:您的项目 ID。
  • SERVICE_ACCOUNT_EMAIL:您的服务账号的电子邮件地址。

组织

  gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
      --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
      --role="roles/artifactscanguard.policyEvaluator"

替换以下内容:

  • ORGANIZATION_ID:您的组织 ID。
  • SERVICE_ACCOUNT_EMAIL:您的服务账号的电子邮件地址。

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

如需了解更多制品安全防护角色,请参阅制品安全防护角色和权限

gcloud CLI 前提条件

如需使用 gcloud CLI 管理政策或 CI/CD 连接器,请确保您的环境满足以下要求:

  • 您的 gcloud CLI 版本为 559.0.0 或更高版本。
  • 您的项目已设置为配置项目。

如需更新 gcloud CLI 并设置项目,请运行以下命令:

gcloud components update --version=559.0.0
gcloud config set project PROJECT_ID

PROJECT_ID 替换为您的项目 ID。

创建政策

控制台

如需在 Google Cloud 控制台中创建制品安全防护政策,请按照以下步骤操作:

  1. 在 Google Cloud 控制台中,依次前往安全性 > 规则,然后点击创建制品安全防护政策创建政策
  2. 输入政策 ID 和政策说明,然后点击继续
  3. 选择政策范围和操作:
    • CI/CD 平台
      • 选择连接器:选择要与此政策关联的连接器。扫描器会针对与所选连接器关联的每个 CI/CD build 评估此政策。
      • 政策操作:选择违反政策时要采取的操作。
        • 阻止不符合政策的 build:如果政策失败,则 build 会被阻止。
        • 允许构建但发送提醒:关联的 build 流水线会显示 CI/CD 扫描器政策评估结果。
    • 注册表
      • Container Analysis 项目:此设置仅适用于组织,不适用于项目。添加要应用此政策的 Google Cloud 项目。
      • Artifact Registry 制品库:选择要应用此政策的制品库。这些必须是有效的 Artifact Registry 仓库。如果留空,制品安全防护会向所有代码库应用相应政策。
      • 政策操作:选择违反政策时要采取的操作。
        • 仅审核:制品安全防护会评估政策并记录任何违规情况以供审核,但不会阻止资源。
        • 准入控制:如果在政策评估期间发生违规行为,准入控制会阻止部署资源。
          • 将 Binary Authorization 政策设置为试运行模式:如需详细了解试运行模式,请参阅启用试运行模式
          • Binary Authorization 项目:此设置仅适用于组织,不适用于项目。添加要应用准入控制的 Google Cloud 项目。
          • GKE 集群:如果留空,准入控制将应用于所有 GKE 集群。
          • 覆盖 Binary Authorization 政策:选中此复选框可更新准入控制的 Binary Authorization 政策。
    • 运行时
      • 运行时项目:此设置仅适用于组织,不适用于项目。添加包含 GKE 集群的运行时项目。
      • GKE 集群:选择要应用此政策的 GKE 集群。如果留空,制品安全防护会将政策应用于所选项目中的所有 GKE 集群。
  4. 定义政策规则。政策规则是一组条件,用于确定您的环境中允许哪些漏洞和软件包。政策规则包含以下内容:
    • 严重程度阈值:设置漏洞的最低严重程度,以便将其纳入政策评估。 漏洞必须达到或超过此阈值才能纳入。

      例如,将规则配置为,则评估中会包含所有严重漏洞。

    • 漏洞数量阈值:设置在应用其他政策过滤条件后允许的最大漏洞数量。只有当这些特定的过滤后漏洞的数量超过限制时,才会违反政策。

      例如,如果您将严重性阈值设置为,排除修复不可用的漏洞,并将数量阈值设置为 5,那么如果 build 包含超过 5 个评级为严重的可修复漏洞,则该 build 会失败。

    • 漏洞状态:指定是否仅包含有可用修复的漏洞。这样一来,您就可以通过定位所有漏洞或仅定位可修复的漏洞来优先进行修复。
    • 例外情况和限制:您可以在这些部分中创建可覆盖常规政策的特定允许或阻止规则。
      • 豁免的 CVE:指定在指定时长内被视为在您的环境中可接受的 CVE。这有助于实现临时变通方法。您可以为这些例外情况设置到期日期。在此日期之后,该漏洞将不再被允许,并会导致政策失败。
      • 受限 CVE:指定始终要屏蔽的 CVE,无论其严重程度评级如何。这对于表示对特定应用或基础设施构成独特风险的漏洞特别有用。
      • 允许的软件包:列出被视为安全的软件包。可以定义软件包版本;否则,允许所有版本。
      • 受限软件包:要限制的软件包的列表。 受限软件包会导致政策失败。可以定义软件包版本;否则,所有版本都会受到限制。
  5. 点击创建

规则页面上的表格中列出了可用的制品安全防护政策。

gcloud CLI

如需使用 gcloud CLI 创建政策,请运行以下命令:

gcloud alpha scc artifact-guard policies create \
    (POLICY_ID --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)) \
    --policy-file-path=PATH_TO_FILE

替换以下内容:

  • POLICY_ID:政策的标识符(例如 my-policy)。
  • LOCATION:存储数据的 Security Command Center 位置。仅支持 global
  • ORGANIZATION_ID:组织 ID。
  • PROJECT_NUMBER:数字项目编号。
  • PATH_TO_FILE:包含政策定义的 YAML 文档的本地路径。如需详细了解 YAML 文件结构,请参阅本文档的 YAML 文件部分

更新政策

控制台

如需在 Google Cloud 控制台中更新制品安全防护政策,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,依次前往安全性 > 规则
  2. 在规则表格中,点击要修改的政策的名称。
  3. 在政策详情页面上,点击修改或修改要更新的字段,例如范围、漏洞规则或启用状态。
  4. 点击保存更新

gcloud CLI

如需使用 gcloud CLI 查看现有政策并更新它们,请使用以下命令:

列出政策

gcloud alpha scc artifact-guard policies list PARENT

替换以下内容:

PARENT:组织或项目。父资源的有效格式包括:
  • organizations/ORGANIZATION_ID/locations/LOCATION
  • projects/PROJECT_NUMBER/locations/LOCATION

描述政策

gcloud alpha scc artifact-guard policies describe \
    (POLICY --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER))

替换以下内容:

POLICY:政策的完整标识符,采用以下格式之一:
  • organizations/ORGANIZATION_ID/locations/LOCATION/policies/POLICY_ID
  • projects/PROJECT_NUMBER/locations/LOCATION/policies/POLICY_ID
  • POLICY_ID --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)

更新政策

gcloud alpha scc artifact-guard policies update \
    (POLICY --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)) \
    --policy-file-path=PATH_TO_FILE [--allow-missing] \
    [--update-mask=UPDATE_MASK]

--allow_missing 是一个可选标志。如果包含此标志,则在指定政策不存在时创建新政策。

替换以下内容:

UPDATE-MASK:要更新的字段的英文逗号分隔列表。空字符串或 * 表示完整政策更新。更新掩码的有效字段包括:
  • display_name
  • description
  • scope
  • enablement_state
  • vulnerability_policy
  • annotations

政策验证

当您创建或更新政策时,制品安全防护会验证政策定义。如果验证失败,制品安全防护会拒绝请求并提供详细的出错提示。

删除政策

控制台

如需在 Google Cloud 控制台中删除制品防护政策,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,依次前往安全性 > 规则
  2. 在规则表格中,点击要删除的政策旁边的 ,然后选择删除
  3. 按照确认提示删除政策。点击取消即可中止。

gcloud CLI

如需使用 gcloud CLI 删除政策,请运行以下命令:

gcloud alpha scc artifact-guard policies delete \
    (POLICY --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)) \
    [--etag=ETAG]

替换以下内容:

ETAG:用于并发控制的可选实体标记。如果您提供值,则只有当资源的 etag 与该值匹配时,请求才会继续。

YAML 文件

使用 gcloud CLI 创建或管理制品安全防护政策时,YAML 文件必须遵循以下模板:

  displayName: <Human-readable display name for the policy>
  description: <Description of the policy>

  vulnerabilityPolicy: # (at least one of these rules must be defined)
    exemptedCves:
      - id: <cve-id-1>
        gracePeriodExpirationTime: <optional-grace-period-expiration-time>
      - id: <cve-id-2>
        gracePeriodExpirationTime: <optional-grace-period-expiration-time>

    maxAllowedSeverity: <The maximum severity allowed in the detected
    vulnerabilities. The severity values can be LOW, MEDIUM, HIGH, CRITICAL>

    maximumAllowedVulnerabilities: <The maximum number of vulnerabilities that
    can be detected>

    excludeUnfixable: <Whether to exclude the vulnerabilities without an
    available fix from the purview of the policy evaluation>

    restrictedCves:
      - <restricted-cve-id-1>
      - <restricted-cve-id-2>

    allowedPackages:
      - name: <allowed_package_name_1>
        version: <optional_version_of_allowed_package_1. If unspecified, all the
        versions of the package are allowed>
      - name: <allowed_package_name_2>
        version: <optional_version_of_allowed_package_2>

    restrictedPackages:
      - name: <restricted_package_name_1>
        version: <optional_version_of_restricted_package_1. If unspecified, all
        the versions of the package are restricted>
      - name: <restricted_package_name_2>
        version: <optional_version_of_restricted_package_2>

  scope:
    pipeline:
      connectorIds:
        - <connector_id_1>
        - <connector_id_2>
      enforcementAction: <action to take in case the policy evaluation fails.
      The supported values are AUDIT_ONLY or BLOCK_BUILD>

    registry:
      projectIds:
        - <project_id_1>
      garRepositoryNamePatterns:
        - <repository_name_pattern_1>
      imageNamePatterns:
        - <image_name_pattern_1>
      enforcementAction: <AUDIT_ONLY or ADMISSION_CONTROL>
      admissionControl:
        deploymentProjectIds:
          - <project_id_1>
        gkeClusterNames:
          - <cluster_name_1>
        dryRun: <bool>
        overrideBinauthzPolicy: <bool>

    runtime:
        deploymentProjectIds:
          - <project_id_1>
        gkeClusterNames:
          - <cluster_name_1>
        dryRun: <bool>
        overrideBinauthzPolicy: <bool>
        enforcementAction: <AUDIT_ONLY or BLOCK_DEPLOYMENT>

  enablementState: <The enablement state of the policy. The supported values are
  ACTIVE, INACTIVE>

以下是制品安全防护政策文件示例:

  displayName: 'A sample policy'
  description: Vulnerability Policy
  vulnerabilityPolicy:
    exemptedCves:
      - id: CVE-2022-40897
        gracePeriodExpirationTime: '2026-09-10T18:58:08Z'
      - id: CVE-2024-6345
    maxAllowedSeverity: MEDIUM
    maximumAllowedVulnerabilities: 5
    excludeUnfixable: true
    restrictedCves:
      - CVE-2013-4392
      - CVE-2024-4143
    allowedPackages:
      - name: systemd
        version: '257.7'
      - name: util-linux
    restrictedPackages:
      - name: ncurses
        version: 6.5+20250216
      - name: setuptools
  scope:
    pipeline:
      connectorIds:
        - organizations/123/locations/global/connectors/demoConnector
      enforcementAction: BLOCK_BUILD
    registry:
      projectIds:
        - projects/my-registry-project-id
        - projects/another-registry-project
      garRepositoryNamePatterns:
        - us-west1-docker.pkg.dev/my-registry-project-id/my-repo
        - gcr.io/team-a/internal-artifacts
      imageNamePatterns:
        - my-repo/service-a:.*
        - my-repo/service-b:v1\..*
      enforcementAction: ADMISSION_CONTROL
      admissionControl:
        deploymentProjectIds:
          - projects/my-deployment-project
        gkeClusterNames:
          - //container.googleapis.com/projects/my-deployment-project/locations/us-central1/clusters/gke-cluster-a
          - //container.googleapis.com/projects/my-deployment-project/locations/us-central1/clusters/gke-cluster-b
        dryRun: true
        overrideBinauthzPolicy: true
    runtime:
      deploymentProjectIds:
        - projects/my-deployment-project
      gkeClusterNames:
        - //container.googleapis.com/projects/my-deployment-project/locations/us-central1/clusters/gke-cluster-a
        - //container.googleapis.com/projects/my-deployment-project/locations/us-central1/clusters/gke-cluster-b
      dryRun: false
      overrideBinauthzPolicy: false
      enforcementAction: BLOCK_DEPLOYMENT
  enablementState: ACTIVE

问题排查

本部分概述了制品安全防护政策字段以及常见错误及其解决方案。

一般政策字段

名称 说明 必需 限制条件 示例值
父级 定义政策的应用范围。 仅支持 global 位置中的政策。
  • organizations/123/locations/global
  • projects/123/locations/global
政策 ID 政策的唯一标识符。 最多 100 个字符。必须以字母开头,以字母数字字符结尾,并且只能包含字母、数字、连字符或下划线。 my-policy-1
显示名称 简单易懂的政策名称。 最多 63 个字符。建议保持唯一性。 My vulnerability policy
说明 政策的说明。 最多 2048 个字符。 Checks for critical vulnerabilities.
政策类型 所定义政策的类型。 仅支持 vulnerability_policy vulnerability_policy
启用状态 政策的启用状态。 必须为 ACTIVEINACTIVE ACTIVE

漏洞政策

名称 说明 多值 限制条件 示例值
maximumAllowedVulnerabilities 在违反政策之前允许的最大漏洞数量。 如果设置,则必须为非负数。 10
maxAllowedSeverity 政策允许的漏洞的最高严重程度。 必须为 LOWMEDIUMHIGHCRITICAL
exemptedCves 不受此政策约束的 CVE 列表。 最多 100 个条目。每个 ID 都必须采用 CVE-YYYY-NNNN 格式。 如果提供了宽限期到期时间,则该时间必须是有效的时间戳。不能与 restrictedCves 重叠。 - id: CVE-2024-12345
gracePeriodExpirationTime: 2027-01-01T00:00:00Z
- id: CVE-2025-4000
restrictedCves 此政策明确禁止的 CVE 列表。 最多 100 个条目。每个 ID 都必须采用 CVE-YYYY-NNNN 格式。 不能与 exemptedCves 重叠。 - CVE-2024-54321
- CVE-2025-5001
allowedPackages 允许的软件包列表,可能会替换其他规则。 最多 100 个条目。软件包名称不能为空。不得与 restrictedPackages 冲突。 - name: nginx
version: 1.0
- name: python
version: 3.12.4
restrictedPackages 明确禁止的软件包的列表。 最多 100 个条目。软件包名称不能为空。不得与 allowedPackages 冲突。 - name: npm
version: 9.0.0
excludeUnfixable 是否排除没有可用修复的漏洞。 布尔值。默认值为 false true
exemptionDaysPostDisclosure 自漏洞披露日期起,可豁免漏洞的天数。 如果设置,则必须为非负数。默认值为 0 30

政策范围

流水线范围

名称 说明 必需 限制条件 示例值
connectorIds 在 CI/CD 流水线扫描期间,政策所适用的连接器 ID 列表。 最少 1 个条目,最多 100 个条目。您的组织或项目必须已纳入 CI/CD 扫描计划。每个 ID 都必须采用正确的格式,属于您的组织或项目,并且指向现有的连接器。
  • organizations/123/locations/global/connectors/connector-1
  • projects/123/locations/global/connectors/connector-1
enforcementAction 违反政策时要采取的措施。 必须是 AUDIT_ONLYBLOCK_BUILD BLOCK_BUILD

注册表范围

名称 说明 必需 限制条件 示例值
projectIds 政策适用的项目 ID 列表。 最少 1 张抽奖券。每个 ID 都必须是有效的 Google Cloud 项目 ID。 projects/123, projects/456
garRepositoryNamePatterns Google Cloud Artifact Registry 代码库名称格式的列表。 最多 100 个条目。必须是有效的 Google Cloud Artifact Registry 仓库模式。 us-west1-docker.pkg.dev/my-project/my-repo, gcr.io/team-a/*
imageNamePatterns 完全限定映像名称的正则表达式模式。 最多 100 个条目。必须是有效的正则表达式。 'my-repo/service-a:.*', 'my-repo/service-b:v1..*'
enforcementAction 违反政策时要采取的操作。 必须是 AUDIT_ONLYADMISSION_CONTROL ADMISSION_CONTROL
admissionControl 准入控制的配置详细信息。 如果 enforcementActionADMISSION_CONTROL,则必须提供。

运行时范围

借助运行时范围,制品安全防护功能可以监控在 GKE 环境中运行的容器映像。将政策应用于此范围后,Security Command Center 漏洞发现结果将包含部署在指定项目或集群中的映像的政策元数据。

名称 说明 必需 限制条件 示例值
projectIds 部署了 GKE 集群并启用了漏洞评估的项目 ID 列表。 必须在组织级层选择。 projects/my-gke-deployment-123
gkeClusterNames 需要评估政策的具体 GKE 集群。 可在组织或项目级层选择。 projects/prod-env/locations/us-central1/clusters/main-cluster

如果受监控的 GKE 集群中运行的容器映像违反了某项政策,则 ArtifactGuardPolicies 元数据会添加到 Security Command Center 漏洞发现结果消息中,如下所示:

// 添加到 SCC“发现结果” ArtifactGuardPolicies artifact_guard_policies = X;

message ArtifactGuardPolicies { string resource_id = 1; // 例如,//us-docker.pkg.dev/google-samples/containers/gke/security/… repeated Policy failing_policies = 2; }

message Policy { enum Type { TYPE_UNSPECIFIED = 0; VULNERABILITY = 1; } Type type = 1; string policy_id = 2; // 例如,organizations/3392779/locations/global/policies/prod-policy string failure_reason = 3; // 例如,severity=HIGH AND max_vuln_count=2 } ```

违规处置措施

对于 BLOCK_BUILDBLOCK_DEPLOYMENT 操作,政策评估会返回建议的强制执行操作。不过,您必须使用此建议在流水线配置中配置实际的强制执行。

政策删除

如果您收到 FAILED_PRECONDITION 错误,则表示您尝试删除有效政策。如需删除政策,您必须先将其状态更改为 Inactive

常见错误

下表列出了一些常见错误以及如何解决这些错误。

错误消息提示 原因 解决方法
必须提供父级资源 请求中缺少父字段。 请以以下某种格式提供有效的父级:
  • organizations/{org_id}/locations/global
  • parents/{project_number}/locations/global
必须提供政策定义 请求中缺少政策对象。 在请求中提供有效的政策对象。
显示名称的长度上限为… 显示名称的长度超过了 63 个字符。 将显示名称缩短为 63 个字符或更少。
说明的长度上限为… 说明已超出 2048 个字符。 缩短说明,确保不超过 2048 个字符。
必须提供政策类型 请求中缺少政策类型(例如 vulnerabilityPolicy)。 向您的政策添加 vulnerabilityPolicy 或其他政策类型。
启用状态无效 使用了无效或已弃用的启用状态。 请使用 ACTIVEINACTIVE
必须指定范围 未定义任何范围(流水线、注册表或运行时)。 请为您的政策添加至少一个有效范围。
CVE 名称必须采用以下格式… exemptedCvesrestrictedCves 中的 CVE ID 无效。 确保所有 CVE ID 都遵循 CVE-YYYY-NNNN 格式。
CVE … 无法豁免和限制 exemptedCvesrestrictedCves 中都存在相同的 CVE ID。 请从其中一个列表中移除相应 CVE。
软件包名称不能为空 allowedPackagesrestrictedPackages 中的软件包名称为空。 为所有软件包提供名称。
无法同时允许和限制软件包 … 同一软件包同时列在 allowedPackagesrestrictedPackages 中。 请从其中一个列表中移除相应套餐。
必须提供连接器 ID 流水线范围中缺少“connectorIds”字段。 请提供至少一个连接器 ID。
连接器 ID 必须采用以下格式… 连接器 ID 格式错误。 确保 ID 采用以下任一格式:
  • organizations/{org_id}/locations/global/connectors/{connector_id}
  • projects/{project_number}/locations/{location}/connectors/{connector_id}
连接器 ID … 不存在 指定的连接器 ID 不存在。 验证连接器是否存在,或者将其从列表中移除。
GAR 代码库名称模式必须… 在注册表范围内提供了无效的代码库模式。 确保模式符合有效的 Google Cloud Artifact Registry 代码库格式。
项目 ID 必须是有效的 GCP 项目 ID… 在注册表或运行时范围内提供了无效的项目 ID。 提供有效的 Google Cloud 项目 ID。
应指定违规处置措施 流水线或运行时范围中缺少 enforcementAction 设置强制措施。例如,AUDIT_ONLYBLOCK_BUILD(仅限流水线)或 BLOCK_DEPLOYMENT(仅限运行时)。
每个组织的政策数量超过了上限… 您所在组织的政策数量已达到上限 (1000)。 请先删除未使用的政策,然后再创建新政策。
漏洞政策的数量 … 超出了上限… 您已达到漏洞政策数量上限 (500)。 如要创建新的漏洞政策,请先删除未使用的漏洞政策。
每个流水线的政策数量超出上限… 连接器关联的政策超过 100 项。 减少与连接器关联的政策数量。
政策修订次数 … 超出了上限… 您在 7 天内更新了政策 100 多次。 等待或降低更新频率。

常见的操作问题

除了政策内容验证失败之外,底层Google Cloud 控制平面也可能会出现问题。这些问题可能会影响 API 请求、长时间运行的操作和资源状态,通常表现为特定的错误代码或异常行为。

问题 症状 如何排查问题
并发修改 UpdatePolicyDeletePolicy 失败,并显示 ABORTED 错误代码和 "Provided etag is out of date" 消息。 问题排查:如果请求中的 etag 与政策的当前服务器版本不匹配,则会发生此错误,这表示另一个请求修改了政策。

解决方法:重新读取政策以获取最新的 etag,然后使用新的 etag 重试请求。
请求已验证但未执行 CreatePolicyUpdatePolicyDeletePolicy 请求成功返回,但您发现资源没有任何变化。 问题排查:如果请求中设置了 validate_only: true,通常会发生此错误。此标志指示服务执行所有验证,但不提交任何更改。

解决方法:将 validate_only 设置为 false 或在请求中省略该字段。
更新会创建新政策 UpdatePolicy 请求会创建政策,而不是在政策不存在时返回“未找到”错误。 问题排查:当 allow_missing: true 包含在 UpdatePolicyRequest 中时,这是预期行为。

解决方法:如果您只想更新现有政策,请将 allow_missing 设置为 false 或省略该字段。
权限遭拒或 API 未启用 请求失败,并显示 PERMISSION_DENIED 或类似 "Artifact Guard API has not been used in the project before or it is disabled." 的错误消息 问题排查:API 可能已停用,或者调用者可能没有足够的权限。

解决方法:在您的 Google Cloud 项目中,启用 Artifact Guard API (artifactscanguard.googleapis.com)。 确认执行操作的用户或服务账号具有必要的 IAM 角色。
操作超时 返回长时间运行的操作 (LRO) 的请求需要很长时间才能完成,或者失败并显示 DEADLINE_EXCEEDED 问题排查:这可能表示后端服务暂时变慢或出现问题。

解决方案:轮询 LRO 状态。如果失败或超时,请稍等片刻后重试该操作。如果问题仍然存在,请查看Google Cloud 状态信息中心, 了解是否有正在发生的突发事件,或与 Google Cloud 支持团队联系。