Cloud Storage 的组织政策限制

本页面就适用于 Cloud Storage 的组织政策限制条件提供补充信息。使用限制条件可在整个项目或组织中实施存储分区和对象行为。

Cloud Storage 限制条件

以下限制条件可应用于组织政策并与 Cloud Storage 相关:

强制执行禁止公开访问设置

API 名称constraints/storage.publicAccessPrevention

对资源应用 publicAccessPrevention 限制条件时,系统会对该资源下的所有存储分区和对象(包括新对象和现有对象)限制公共访问权限

请注意,启用或停用 publicAccessPrevention 最多可能需要 10 分钟才能生效。

保留政策时长(秒)

API 名称constraints/storage.retentionPolicySeconds

应用 retentionPolicySeconds 限制条件时,请指定一个或多个时长作为其中一项限制。设置完成后,存储分区保留政策中必须包含一个指定的时长。创建新桶或添加/更新现有存储桶的保留期限时要求应用 retentionPolicySeconds;但是,其他情况下不要求对现有存储桶应用。

如果您在不同资源级层设置多个 retentionPolicySeconds 限制条件,则这些限制条件会被分层执行。因此,我们建议您将 inheritFromParent 字段设置为 true,以确保更高层级的政策也得到考虑。

需要统一存储分区级访问权限

API 名称constraints/storage.uniformBucketLevelAccess

应用 uniformBucketLevelAccess 限制条件时,新存储分区必须启用统一存储分区级访问权限功能以及具有此功能的现有存储分区无法启用。现有存储分区已停用统一存储分区级访问权限。

详细的审核日志记录模式

API 名称constraints/gcp.detailedAuditLoggingMode

应用 detailedAuditLoggingMode 限制条件时,与 Cloud Storage 操作关联的 Cloud Audit Logs 日志包含详细的请求和响应信息。在力争满足各种合规性要求(例如 SEC Rule 17a-4(f)、CFTC Rule 1.31(c)-(d)、FINRA Rule 4511(c))时,建议将此限制条件与存储分区锁定结合使用。

记录的信息包括查询参数、路径参数和请求正文参数。日志不包括与敏感信息关联的请求和响应的某些部分。例如,日志不包括:

  • 凭据,例如 AuthorizationX-Goog-Signatureupload-id
  • 加密密钥信息,例如 x-goog-encryption-key
  • 原始对象数据。

使用此限制条件时,请注意以下事项:

  • 不保证详细的请求和响应信息;在极少数情况下,可能会返回空日志。

  • 启用 detailedAuditLoggingMode 会增加审核日志中存储的数据量,这可能会影响数据访问日志的 Cloud Logging 费用

  • 启用或停用 detailedAuditLoggingMode 最多需要 10 分钟才能生效。

  • 请求和响应以通用格式记录,该格式与 JSON API 的字段名称相匹配。

限制身份验证类型

API 名称constraints/storage.restrictAuthTypes

应用 restrictAuthTypes 限制条件时,无论请求的有效性如何,使用受限身份验证类型访问 Cloud Storage 资源的请求都会失败。当您需要满足监管要求或提高数据安全性时,建议使用此限制条件。

可以限制以下身份验证类型:

  • USER_ACCOUNT_HMAC_SIGNED_REQUESTS:限制由用户帐号 HMAC 密钥签名的请求。

  • SERVICE_ACCOUNT_HMAC_SIGNED_REQUESTS:限制由服务帐号 HMAC 密钥签名的请求。

  • in:ALL_HMAC_SIGNED_REQUESTS:限制由用户帐号或服务帐号 HMAC 密钥签名的请求。如果您需要满足数据主权要求,建议您限制所有 HMAC 签名请求。

启用此限制条件后,会发生以下情况:

  • Cloud Storage 会限制对使用受限身份验证类型进行身份验证的请求的访问权限。请求会失败并显示错误 403 Forbidden

  • 之前有权执行请求的实体会收到错误消息,说明身份验证类型已停用。

  • 如果 HMAC 密钥受到限制:

    • 系统无法再在强制执行限制条件的资源中创建或激活受限类型的 HMAC 密钥。创建或激活 HMAC 密钥的请求会失败,并显示错误 403 Forbidden

    • 现有的 HMAC 密钥仍会保留,但不再可用。该密钥可以停用或删除,但无法重新激活。

使用 restrictAuthTypes 限制条件时,请注意依赖于 HMAC 身份验证的现有资源。比方说,如果您从 Amazon Simple Storage Service (Amazon S3) 迁移,您的应用可能使用 HMAC 密钥对向 Cloud Storage 发出的请求进行身份验证。您可以使用 Cloud Monitoring 指标 storage.googleapis.com/authn/authentication_count 来跟踪 HMAC 密钥已用于对请求进行身份验证的次数。

要求使用客户管理的加密密钥 (CMEK)

API 名称constraints/gcp.restrictNonCmekServices

应用 restrictNonCmekServices 限制条件时,您可以定义其资源需要使用客户管理的加密密钥的服务。您可以通过向 Cloud Storage 对象应用此限制条件,方法是将 storage.googleapis.com 添加到受限服务列表并将限制条件设置为 Deny。根据限制条件,必须使用 Cloud KMS 密钥写入 Cloud Storage 对象,该密钥在请求中指定设置为目标存储桶的默认加密密钥

如果您尝试写入的对象不会被 Cloud KMS 密钥加密,则会收到以下错误消息:“根据一项有效的组织政策,必须使用客户管理的加密密钥 (CMEK)。请在存储桶上设置默认 CMEK 或者在请求中指定 CMEK。”

使用此限制条件时,请注意以下事项:

  • 如果您写入没有默认 Cloud KMS 密钥的存储桶或排除请求中的 Cloud KMS 密钥,则启用 restrictNonCmekServices 可能会导致破坏性更改。

  • 使用 Google 管理的加密密钥客户提供的加密密钥加密的现有对象不受此限制条件的约束。但是,此类对象的未来重写将受到限制条件的约束。

  • constraints/gcp.restrictNonCmekServices 的更改最多需要 10 分钟才能生效。

如需详细了解此限制条件,请参阅 CMEK 组织政策

使用有效的 CMEK 限制项目

API 名称constraints/gcp.restrictCmekCryptoKeyProjects

应用 restrictCmekCryptoKeyProjects 限制条件时,您可以定义 Cloud KMS 密钥可用于验证请求的项目。当您应用此限制条件时:

  • 请求中指定的任何 Cloud KMS 密钥必须来自组织政策允许的项目。

  • 如果您创建新存储桶,则您在存储桶上设置的任何 Cloud KMS 密钥都必须来自允许的项目。

  • 对于具有无效 Cloud KMS 密钥的现有存储桶,对象写入和更新将失败。您必须将存储桶的默认 Cloud KMS 密钥更改为来自允许的项目的密钥,或者从存储桶中移除 Cloud KMS。

如果您尝试在未来自允许项目的请求中指定 Cloud KMS 密钥,则会收到以下错误消息:“指定的密钥无法使用,因为其项目受组织政策限制。请使用允许的项目中的客户管理的加密密钥 (CMEK) 重试。”

如果您尝试使用并非来自允许的项目的 Cloud KMS 密钥写入存储桶,则会收到以下错误消息:“该存储桶使用有效组织政策限制的项目的默认密钥。请设置允许的客户管理的加密密钥 (CMEK) 作为存储桶的默认密钥,或者在请求中指定允许的 CMEK。”

使用此限制条件时,请注意以下事项:

  • 现有对象不受此限制条件的约束。

  • 此限制条件本身不会强制使用允许的项目中的 CMEK(客户管理的加密密钥)。如需强制使用允许的项目中的 CMEK(客户管理的加密密钥),您必须同时应用 constraints/gcp.restrictNonCmekServicesconstraints/gcp.restrictCmekCryptoKeyProjects 限制条件。

  • constraints/gcp.restrictCmekCryptoKeyProjects 的更改最多需要 10 分钟才能生效。

如需详细了解此限制条件,请参阅 CMEK 组织政策

后续步骤