限制 TLS 版本

本頁說明如何拒絕使用傳輸層安全標準 (TLS) 1.0 或 1.1 發出的要求,防止存取 Google Cloud 資源。

總覽

Google Cloud 支援多個 TLS 通訊協定版本。為符合法規要求,您可能會想拒絕使用舊版 TLS 的用戶端提出的握手要求。如要這麼做,請使用 gcp.restrictTLSVersion 機構政策限制

gcp.restrictTLSVersion 限制可套用至資源階層中的機構、資料夾或專案。這項限制使用拒絕清單,拒絕明確的值,並允許所有其他值。如果您嘗試使用允許清單,就會發生錯誤。

由於組織政策階層評估的行為,TLS 版本限制會套用至指定的資源節點及其所有子項。舉例來說,如果您拒絕機構使用 TLS 1.0 版,該機構的所有資料夾和專案 (子項) 也會拒絕使用。

如要覆寫沿用的 TLS 版本限制,請更新子項資源的機構政策。舉例來說,如果機構政策在機構層級禁止使用 TLS 1.0,您可以在子資料夾中設定個別的機構政策,移除該資料夾的限制。如果資料夾有任何子項,由於政策繼承,資料夾的政策也會套用至每個子項資源。

事前準備

  • 如要設定、變更或刪除機構政策,您必須先獲得機構政策管理員 (roles/orgpolicy.policyAdmin) 身分與存取權管理 (IAM) 角色。

限制 TLS 版本

如要限制一或多個 TLS 版本,請完成下列步驟:

主控台

  1. 在 Google Cloud 控制台中開啟「Organization policies」(機構政策) 頁面。

    前往「機構政策」

  2. 選取頁面頂端的專案挑選器。

  3. 在專案選擇工具中,選取要設定機構政策的資源。

  4. 在「Organization policies」(機構政策) 頁面上的清單中,選取「Restrict TLS Version」(限制 TLS 版本) 限制。

  5. 如要更新資源的機構政策,請按一下「編輯」

  6. 在「Edit」(編輯) 頁面選取 [Customize] (自訂)

  7. 在「Policy enforcement」(強制執行) 下方,選取強制執行選項:

    • 如要合併與評估機構政策,請選取「與上層合併」。如要進一步瞭解繼承和資源階層,請參閱「瞭解階層評估」。

    • 如要覆寫從父項資源繼承的政策,請選取「取代」

  8. 按一下 [新增規則]

  9. 在「Policy values」(政策值) 下,預設值為「Deny all」(全部拒絕)。請改選「自訂」

  10. 在「政策類型」下方,選取「拒絕」

  11. 在「自訂值」下方,輸入要拒絕的 TLS 版本。以下為有效的自訂值:

    • TLS_VERSION_1 for TLS 1.0
    • TLS_VERSION_1_1,適用於 TLS 1.1

    如要限制多個 TLS 版本,請按一下「新增值」,然後在額外欄位中輸入值。

  12. 如要完成並套用機構政策,請按一下 [Save] (儲存)

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 bucket 的 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 設為 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 版本限制機構政策限制:

  • Apigee
  • App Engine (*.appspot.com)
  • Cloud Run functions (*.cloudfunctions.net),
  • Cloud Run (*.run.app)
  • Private Service Connect
  • 自訂網域

如要限制這些服務的 TLS 版本,請搭配使用 Cloud Load BalancingSSL 政策。您也可以使用預先定義的 constraints/compute.requireSslPolicy限制,以及 SSL 政策的自訂限制,為負載平衡器強制執行 TLS 版本和加密套件限制。

後續步驟