限制 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 版本,請完成下列步驟:
主控台
在 Google Cloud 控制台中開啟「Organization policies」頁面。
選取頁面頂端的專案挑選器。
在專案選擇工具中,選取要設定機構政策的資源。
在「Organization policies」頁面上的清單中,選取「Restrict TLS Version」限制條件。
如要更新此資源的機構政策,請按一下「編輯」。
在「Edit」(編輯) 頁面選取 [Customize] (自訂)。
在「Policy enforcement」(強制執行) 下方,選取強制執行選項:
如要合併與評估機構政策,請選取「Merge with parent」(與上層合併)。如要進一步瞭解繼承和資源階層,請參閱「瞭解階層評估」。
如要覆寫從父項資源繼承的政策,請選取「Replace」。
按一下 [新增規則]。
在「Policy values」下方,預設值設為「Deny all」。請改為選取「自訂」。
在「政策類型」下方,選取「拒絕」。
在「自訂值」下方輸入要拒絕的 TLS 版本。以下為有效的自訂值:
TLS_VERSION_1
(適用於 TLS 1.0)TLS_VERSION_1_1
(適用於 TLS 1.1)
如果您限制的 TLS 版本不只一個,請按一下「新增值」,然後在其他欄位中輸入值。
如要完成並套用機構政策,請按一下 [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_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
中指定的資源類型。
測試政策
您可以針對任何範圍內的服務測試 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.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 Cloud 資源 API 只要具有由 Google Front End (GFE) 簽署的標頭,就支援 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 版本和加密套件限制。
後續步驟
- 瞭解每個控制項套件支援哪些產品。