限制 TLS 版本

本页面介绍了如何通过拒绝使用传输层安全协议 (TLS) 1.0 或 1.1 发出的请求来阻止访问 Google Cloud 资源。如果您还想阻止使用 TLS 1.2,请使用 TLS 加密套件限制政策,以仅允许使用 TLS 1.3 加密套件。如需了解详情,请参阅 限制 TLS 加密套件

概览

Google Cloud 支持多个 TLS 协议 版本。为了满足合规性要求,您可能需要拒绝来自使用早期 TLS 版本的客户端的握手请求。为此,您可以使用 gcp.restrictTLSVersion 组织政策 限制条件

gcp.restrictTLSVersion 限制条件可以应用于 资源层次结构中的组织、文件夹或项目。 该限制条件使用 拒绝列表, 该列表会拒绝明确的值,并允许所有其他值。如果您尝试使用许可名单,则会发生错误。

由于 组织政策层次结构评估的行为, TLS 版本限制适用于指定的资源节点及其所有 子节点。例如,如果您拒绝某个组织的 TLS 1.0 版,那么来自该组织的所有文件夹和项目(子级)也会被拒绝。

您可以通过更新子资源的组织政策来替换继承的 TLS 版本限制。例如,如果您的组织政策在组织级层拒绝 TLS 1.0,您可以通过在该文件夹上设置单独的组织政策来移除对子文件夹的限制。如果文件夹有任何子文件夹,则由于政策继承,文件夹的政策也会应用于每个子资源。

准备工作

  • 如需设置、更改或删除组织政策,您必须先获得组织政策管理员 (roles/orgpolicy.policyAdmin) Identity and Access Management (IAM) 角色。

限制 TLS 版本

如需限制一个或多个 TLS 版本,请完成以下步骤:

控制台

  1. 在 Google Cloud 控制台中打开组织政策页面。

    转到组织政策

  2. 选择页面顶部的项目选择器。

  3. 在项目选择器中,选择要为其设置组织政策的资源。

  4. 组织政策 页面上的列表中选择 Restrict TLS Version 限制条件。

  5. 如需更新此资源的组织政策,请点击修改

  6. 修改 页面,选择自定义

  7. 强制执行下,选择强制执行选项:

    • 要合并和评估组织政策,请选择与父资源规则合并 。如需详细了解继承机制与 资源层次结构,请参阅 了解层次结构评估

    • 如需覆盖从父资源继承的政策,请选择替换

  8. 点击添加规则

  9. 政策值 下,默认值设置为全部拒绝 。请改为选择自定义

  10. 政策类型 下,选择拒绝

  11. 自定义值下,输入要拒绝的 TLS 版本。以下值是有效的自定义值:

    • TLS_VERSION_1(适用于 TLS 1.0)
    • TLS_VERSION_1_1(适用于 TLS 1.1)

    如果您要限制多个 TLS 版本,请点击添加值 ,然后在其他字段中输入值。

  12. 要完成并应用组织政策,请点击保存

gcloud

使用 gcloud org-policies set-policy 命令 在资源上设置组织政策:

gcloud org-policies set-policy POLICY_PATH

POLICY_PATH 是组织政策文件的完整路径, 如果使用 YAML 格式,其内容应如下所示:

name: RESOURCE_TYPE/RESOURCE_ID/policies/gcp.restrictTLSVersion
spec:
  rules:
  - values:
    deniedValues:
    - TLS_VERSION_1
    - TLS_VERSION_1_1

将 替换为以下代码:

  • RESOURCE_TYPEorganizationsfoldersprojects

  • RESOURCE_ID 是您的组织 ID、文件夹 ID、项目 ID 或项目编号,具体取决于在 RESOURCE_TYPE 中指定的资源类型。

运行以下命令以验证政策是否已应用:

gcloud org-policies describe gcp.restrictTLSVersion --RESOURCE_TYPE=RESOURCE_ID --effective

将 替换为以下代码:

  • RESOURCE_TYPEorganizationfolderproject

  • RESOURCE_ID 是您的组织 ID、文件夹 ID、项目 ID 或项目编号,具体取决于在 RESOURCE_TYPE 中指定的资源类型。

测试政策

您可以针对任何 适用范围内的服务测试 TLS 版本限制政策限制条件。以下示例 curl 命令验证了 Cloud Storage 存储桶的 TLS 版本限制。

  curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://storage.googleapis.com/storage/v1/b/GCS_BUCKET_NAME/o" \
  --tlsvTLS_VERSION --tls-max TLS_VERSION --ciphers DEFAULT@SECLEVEL=0

--tlsv 和值之间没有空格。例如:--tlsv1.1

将 替换为以下代码:

  • GCS_BUCKET_NAME 是您项目中的 Cloud Storage 存储桶名称,例如 mybucketname

  • TLS_VERSION 是 TLS 版本,例如在配置的政策中被拒绝的 1.01.1

以下示例 curl 请求显示 GCS_BUCKET_NAME 设置 为 mybucketnameTLS_VERSION 设置为 1.1

  curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://storage.googleapis.com/storage/v1/b/mybucketname/o" \
  --tlsv1.1 --tls-max 1.1 --ciphers DEFAULT@SECLEVEL=0

如果组织政策配置为限制 TLS_VERSION_X,那么在此示例命令中,任何尝试使用政策限制的项目中的 TLS_VERSION_X 访问资源的操作都会失败。系统会返回一条错误消息,说明此失败的原因。

Request is disallowed by organization's constraints/gcp.restrictTLSVersion
constraint for 'projects/PROJECT_NUMBER' to use service
'SERVICE_NAME.googleapis.com' by violated TLS version `TLS_VERSION_X`

此输出包括以下值:

  • PROJECT_NUMBER:托管先前命令中引用的资源的项目编号。
  • SERVICE_NAME:被 TLS 限制政策阻止的适用范围内的服务 的名称。

支持的服务

任何具有由 Google Front End (GFE)签名的标头的 资源 API 都支持 TLS 版本限制。 Google Cloud

不支持的服务

TLS 版本限制组织政策限制条件不适用于以下服务:

  • Apigee
  • App Engine (*.appspot.com)
  • Cloud Run 函数 (*.cloudfunctions.net),
  • Cloud Run (*.run.app)
  • Private Service Connect
  • 自定义网域

如需限制这些服务的 TLS 版本,请将 Cloud Load BalancingSSL 政策搭配使用。您还可以 将预定义的 constraints/compute.requireSslPolicy 限制条件 与 SSL 政策的自定义限制条件搭配使用,以 对负载平衡器强制执行 TLS 版本和加密套件限制。

后续步骤

  • 了解每个控制措施软件包支持哪些产品