限制 TLS 版本
本页介绍了如何通过拒绝使用传输层安全协议 (TLS) 1.0 或 1.1 发出的请求来阻止访问 Google Cloud 资源。
概览
Google Cloud 支持多个 TLS 协议版本。为了满足合规性要求,您可能需要拒绝来自使用较低 TLS 版本的客户端的握手请求。为此,您可以使用 gcp.restrictTLSVersion
组织政策限制条件。
gcp.restrictTLSVersion
限制条件可应用于资源层次结构中的组织、文件夹或项目。该限制条件使用
拒绝名单、
这会拒绝显式值并允许所有其他值。如果您修改了
尝试使用许可名单
由于组织政策层次结构评估的行为,TLS 版本限制会应用于指定的资源节点及其所有子节点。举例来说,如果您为某个组织拒绝 TLS 1.0 版, 对于其下的所有文件夹和项目(子项目),也会被拒绝 组织。
您可以通过更新 组织政策。例如,如果您的组织政策在组织级别拒绝 TLS 1.0,您可以通过为该子文件夹设置单独的组织政策来移除对该子文件夹的限制。如果文件夹有任何子级,则由于政策继承,文件夹的政策也会应用于每个子资源。
准备工作
- 如需设置、更改或删除组织政策,您必须先获得 Organization Policy Administrator (
roles/orgpolicy.policyAdmin
) Identity and Access Management (IAM) 角色。
限制 TLS 版本
如需限制一个或多个 TLS 版本,请完成以下步骤:
控制台
打开 Google Cloud 控制台中的组织政策页面。
选择页面顶部的项目选择器。
在项目选择器中,选择要为其设置组织政策的资源。
从组织政策页面上的列表中选择限制 TLS 版本限制条件。
如需更新该资源的组织政策,请点击修改。
在修改页面,选择自定义。
在强制执行下,选择强制执行选项:
要合并和评估组织政策,请选择与父资源规则合并。如需详细了解继承机制与资源层次结构,请参阅了解层次结构评估。
如需覆盖从父资源继承的政策,请选择替换。
点击添加规则。
在政策值下,默认值设为全部拒绝。选择 改为自定义。
在政策类型下,选择拒绝。
在自定义值下,输入要拒绝的 TLS 版本。以下值是有效的自定义值:
TLS_VERSION_1
(适用于 TLS 1.0)TLS_VERSION_1_1
(适用于 TLS 1.1)
如果您要限制多个 TLS 版本,请点击添加值,然后在额外的字段中输入值。
要完成并应用组织政策,请点击保存。
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_TYPE
是organizations
、folders
或projects
。RESOURCE_ID
是您的组织 ID、文件夹 ID、项目 ID 或项目编号,具体取决于在RESOURCE_TYPE
中指定的资源类型。
运行以下命令,验证您的政策是否已应用:
gcloud org-policies describe gcp.restrictTLSVersion --RESOURCE_TYPE=RESOURCE_ID --effective
将其替换为以下内容:
RESOURCE_TYPE
是organization
、folder
或project
。RESOURCE_ID
是您的组织 ID、文件夹 ID、项目 ID 或项目编号,具体取决于在RESOURCE_TYPE
中指定的资源类型。
测试政策
可以针对任何 范围内的服务。以下示例 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.0
或1.1
。
以下示例 curl
请求显示了 GCS_BUCKET_NAME 集
设置为 mybucketname
,将 TLS_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) 签名的标头的 Google Cloud 资源 API 都支持 TLS 版本限制。
不支持的服务
TLS 版本限制组织政策限制条件不适用于以下服务:
- App Engine (
*.appspot.com
) - Cloud Run 函数 (
*.cloudfunctions.net
) - Cloud Run (
*.run.app
) - Private Service Connect
- 自定义网域
如需限制这些服务的 TLS 版本,请将 Cloud Load Balancing 与 SSL 政策搭配使用。您还可以
请使用预定义的 constraints/compute.requireSslPolicy
限制条件
以及 SSL 政策的自定义限制条件
为您的负载平衡器强制执行 TLS 版本和加密套件限制。
后续步骤
- 了解每个控制包支持哪些产品。