啟用 TLS 檢查功能

本頁面說明如何為 Secure Web Proxy 執行個體啟用傳輸層安全標準 (TLS) 檢查功能。Secure Web Proxy 提供 TLS 檢查服務,可讓您攔截 TLS 流量、檢查加密要求並強制執行安全性政策。如要進一步瞭解 TLS 檢查,請參閱「TLS 檢查總覽」。

事前準備

設定 Secure Web Proxy 執行個體以便檢查 TLS 之前,請先完成下列各節中的任務。

啟用憑證授權單位服務

Secure Web Proxy 會使用憑證授權單位服務產生用於 TLS 檢查的憑證。

如要啟用 CA 服務,請使用下列指令:

  gcloud services enable privateca.googleapis.com
  

建立憑證授權單位集區

憑證授權單位 (CA) 集區內含多個 CA,這些 CA 採用相同的憑證核發政策和 身分與存取權管理 (IAM) 政策。您可以使用 CA 集區來輪替信任鏈結,酬載不會服務中斷或停機。

您必須先建立 CA 集區,才能使用 CA 服務建立 CA。本節將逐步說明完成此工作所需的權限,並說明如何建立 CA 集區。

為產生憑證,TLS 檢查會為每個名為 service-[PROJECT_NUMBER]@gcp-sa-networksecurity.iam.gserviceaccount.com 的專案使用個別的服務帳戶。請確認您已授予此服務帳戶使用 CA 資源池的權限。如果撤銷這項存取權,TLS 檢查功能就會停止運作。

如要使用 CA 集區專案的 PROJECT_ID 擷取 PROJECT_NUMBER,請使用下列指令:

gcloud projects describe <var>PROJECT_ID</var>
    --format="value(projectNumber)"

如要建立集區,請使用 gcloud privateca pools create 指令,並指定子集區 ID、層級、專案 ID 和位置。

gcloud privateca pools create SUBORDINATE_POOL_ID \
    --tier=TIER \
    --project=PROJECT_ID \
    --location=REGION

更改下列內容:

  • SUBORDINATE_POOL_ID:CA 集區名稱
  • TIER:CA 層級,可為 devopsenterprise

    建議您在 devops 層級建立 CA 集區,因為不需要追蹤個別核發的憑證。

  • PROJECT_ID:CA 集區專案 ID

  • REGION:CA 集區的位置

建立從屬 CA 集區

如果您有多個憑證核發情境,則可以為每個情境建立從屬 CA。您可以在 CA 集區中建立從屬 CA,而根 CA會為該 CA 集區中的所有 CA 簽署。這些憑證會用於簽署為 TLS 檢查作業產生的伺服器憑證。

如要建立子 CA 集區,請使用下列其中一種方法。

使用憑證授權單位服務中儲存的現有根 CA 建立子 CA 集區

如要產生次級 CA,請按照下列步驟操作:

  1. 建立憑證授權單位集區
  2. 在 CA 集區中建立從屬 CA

使用外部持有的現有根 CA 建立子 CA 集區

如要產生次級 CA,請按照下列步驟操作:

  1. 建立憑證授權單位集區
  2. 建立由外部根 CA 簽署的從屬 CA

建立根 CA

如果沒有根 CA,您可以在 CA 服務中建立一個。

如要建立根 CA,請按照下列步驟操作:

  1. 建立根 CA
  2. 使用 CA 服務中儲存的現有根 CA 建立從屬 CA 集區

建立服務帳戶

服務帳戶可提供 TLS 檢查所需的權限,同時確保使用者帳戶或 Secure Web Proxy 執行個體本身的安全性。

如果您沒有服務帳戶,請務必建立一個,然後將必要權限授予該服務帳戶。

  1. 建立服務帳戶。

    gcloud beta services identity create \
        --service=networksecurity.googleapis.com \
        --project=PROJECT_ID
    

    Google Cloud CLI 會建立名為 service-[PROJECT_NUMBER]@gcp-sa-networksecurity.iam.gserviceaccount.com 的服務帳戶。

    如要使用 CA 集區專案的 PROJECT_ID 擷取 PROJECT_NUMBER,請使用下列指令:

    gcloud projects describe PROJECT_ID
        --format="value(projectNumber)"
    
  2. 針對您建立的服務帳戶,授予使用 CA 集區產生憑證的權限。

    gcloud privateca pools add-iam-policy-binding CA_POOL \
        --member='serviceAccount:SERVICE_ACCOUNT' \
        --role='roles/privateca.certificateManager' \
        --location='REGION'
    

設定 Secure Web Proxy 以檢查 TLS

您必須先完成「事前準備」一節中列出的先決條件工作,才能繼續執行本節中的任務。

如要設定 TLS 檢查功能,請完成下列各節中的任務。

建立 TLS 檢查政策

主控台

  1. 在 Google Cloud 控制台中,前往「TLS inspection policies」頁面。

    前往 TLS 檢查政策

  2. 在專案選取器選單中選取專案。

  3. 按一下「建立 TLS 檢查政策」

  4. 在「Name」 中輸入名稱。

  5. 選用:在「說明」欄位中輸入說明。

  6. 在「Region」清單中,選取要建立 TLS 檢查政策的區域。

  7. 在「CA pool」清單中,選取要建立憑證的 CA 集區。

    如果您尚未設定 CA 集區,請按一下「New Pool」(新集區),然後按照「Create a CA pool」(建立 CA 集區) 一文中的指示操作。

  8. 選用:在「Minimum TLS version」清單中,選取政策支援的最低 TLS 版本。

  9. 在「信任設定」中,選取下列任一選項:

    • 僅限公開 CA:如果您想信任使用公開簽署憑證的伺服器,請選取這個選項。
    • 僅限私人 CA:如果您想信任使用私人簽署憑證的伺服器,請選取這個選項。

      在「Private trust configuration」清單中,選取信任設定,並使用已設定的信任存放區,用於信任上游伺服器憑證。如要進一步瞭解如何建立信任設定,請參閱「建立信任設定」。

    • 公開與私人 CA:如果您想同時使用公開與私人 CA,請選取這個選項。

  10. 選用:在「加密套件設定檔」清單中,選取 TLS 設定檔類型。您可以選擇下列任一值:

    • Compatible:允許與負載平衡器交涉 TLS 的用戶端組合範圍最廣,涵蓋僅支援過時 TLS 功能的用戶端。
    • 新式:支援廣泛的 TLS 功能組合,可讓新式用戶端與 TLS 交涉。
    • Restricted:支援較少的 TLS 功能組合,適用於較嚴格的法規遵循規定。
    • 自訂:可讓您個別選取 TLS 功能。

      在「Cipher suites」清單中,選取自訂設定檔支援的加密套件

  11. 按一下 [建立]。

gcloud

  1. 建立 TLS_INSPECTION_FILE.yaml 檔案。請將 TLS_INSPECTION_FILE 替換為必要的檔案名稱。

  2. 將下列程式碼新增至 YAML 檔案,設定必要的 TlsInspectionPolicy:

    name: projects/PROJECT_ID/locations/REGION/tlsInspectionPolicies/TLS_INSPECTION_NAME
    caPool: projects/PROJECT_ID/locations/REGION/caPools/CA_POOL
    

    更改下列內容:

    • PROJECT_ID:專案 ID
    • REGION:要建立政策的區域
    • TLS_INSPECTION_NAME:Secure Web Proxy TLS 檢查政策的名稱
    • CA_POOL:要用來建立憑證的 CA 集區名稱

    CA 集區必須位於相同區域。

匯入 TLS 檢查政策

匯入先前步驟中建立的 TLS 檢查政策:

gcloud network-security tls-inspection-policies import TLS_INSPECTION_NAME \
    --source=TLS_INSPECTION_FILE.yaml \
    --location=REGION

將 TLS 檢查政策新增至安全性政策

控制台

建立網路 Proxy 政策

  1. 在 Google Cloud 控制台中,前往「SWP Policies」頁面。

    前往「SWP 政策」

  2. 按一下「建立政策」

  3. 輸入要建立的政策名稱,例如 myswppolicy

  4. 輸入政策的說明,例如 My new swp policy

  5. 在「區域」清單中,選取要建立安全 Web Proxy 政策的區域。

  6. 如要設定 TLS 檢查功能,請選取「設定 TLS 檢查」

  7. 在「TLS 檢查政策」清單中,選取您建立的 TLS 檢查政策。

  8. 如要為政策建立規則,請依序點選「繼續」和「新增規則」。詳情請參閱「建立 Secure Web Proxy 規則」。

  9. 按一下 [建立]。

建立 Secure Web Proxy 規則

  1. 在 Google Cloud 控制台中,前往「SWP Policies」頁面。

    前往「SWP 政策」

  2. 在專案選取器選單中,選取機構 ID 或包含政策的資料夾。

  3. 按一下政策名稱。

  4. 按一下「新增規則」

  5. 填入規則欄位:

    1. 名稱
    2. 說明
    3. 狀態
    4. 優先順序:規則的數字評估順序。系統會從最高優先順序到最低優先順序評估規則,其中 0 為最高優先順序。
    5. 在「動作」專區中,指定要允許 (「允許」) 或拒絕 (「拒絕」) 符合規則的連線。
    6. 在「工作階段比對」部分,指定比對工作階段的條件。如要進一步瞭解 SessionMatcher 的語法,請參閱 CEL 比對器語言參考資料
    7. 如要啟用 TLS 檢查功能,請選取「Enable TLS inspection」
    8. 在「應用程式比對」部分,指定比對要求的條件。如未啟用 TLS 檢查規則,要求只能比對 HTTP 流量。
    9. 按一下 [建立]。
  6. 按一下「新增規則」即可新增其他規則。

  7. 按一下「建立」,建立政策。

設定網路 Proxy

  1. 前往 Google Cloud 控制台的「Web Proxies」頁面。

    前往「網路 Proxy」

  2. 按一下「建立安全無虞的網路 Proxy」

  3. 輸入要建立的網路 Proxy 名稱,例如 myswp

  4. 輸入網頁 Proxy 的說明,例如 My new swp

  5. 在「區域」清單中,選取要建立網路 Proxy 的區域。

  6. 在「Network」清單中,選取要建立網路 Proxy 的網路。

  7. 在「Subnetwork」清單中,選取要建立網路 Proxy 的子網路。

  8. 選用步驟:輸入 Secure Web Proxy IP 位址。您可以從上一個步驟建立的子網路中,輸入安全網路 Proxy IP 位址範圍的 IP 位址。如果您未輸入 IP 位址,安全 Web Proxy 執行個體會自動從所選子網路中選擇 IP 位址。

  9. 在「憑證」清單中,選取要用來建立網路 Proxy 的憑證。

  10. 在「Policy」清單中,選取要與網路 Proxy 建立關聯的政策。

  11. 按一下 [建立]。

Cloud Shell

  1. 建立檔案 policy.yaml

      description: basic Secure Web Proxy policy
      name: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/policy1
      tlsInspectionPolicy: projects/PROJECT_ID/locations/REGION/tlsInspectionPolicies/TLS_INSPECTION_NAME
    
  2. 建立 Secure Web Proxy 政策:

      gcloud network-security gateway-security-policies import policy1 \
          --source=policy.yaml --location=REGION
    
  3. 建立檔案 rule.yaml

      name: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/policy1/rules/allow-example-com
      description: Allow example.com
      enabled: true
      priority: 1
      basicProfile: ALLOW
      sessionMatcher: host() == 'example.com'
      applicationMatcher: request.path.contains('index.html')
      tlsInspectionEnabled: true
    
  4. 建立安全性政策規則。

      gcloud network-security gateway-security-policies rules import allow-example-com \
          --source=rule.yaml \
          --location=REGION \
          --gateway-security-policy=policy1
    
  5. 如要將 TLS 檢查政策附加至現有安全政策,請建立 POLICY_FILE.yaml 檔案。將 POLICY_FILE 替換為您的檔案名稱。

      description: My Secure Web Proxy policy
      name: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/POLICY_NAME
      tlsInspectionPolicy: projects/PROJECT_ID/locations/REGION/tlsInspectionPolicies/TLS_INSPECTION_NAME
    

後續步驟