啟用 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 集區。

如要產生憑證,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. 建立 CA 集區
  2. 在 CA 集區中建立從屬 CA

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

如要產生下層 CA,請執行下列步驟:

  1. 建立 CA 集區
  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 檢查政策) 頁面。

    前往 TLS 檢查政策

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

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

  4. 在「Name」(名稱) 欄位中,輸入政策名稱。

  5. 選用:在「Description」(說明) 欄位中輸入政策的說明。

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

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

    如果尚未設定 CA 集區,請按一下「New Pool」(新集區),然後按照「建立 CA 集區」一節中的操作說明操作。

  8. 點選「建立」

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 政策) 頁面。

    前往 SWP 政策

  2. 按一下「建立政策」

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

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

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

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

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

  8. 如要為政策建立規則,請按一下「繼續」,然後點選「新增規則」。詳情請參閱「建立 Secure Web Proxy 規則」。

  9. 點選「建立」

建立 Secure Web Proxy 規則

  1. 前往 Google Cloud 控制台的「SWP Policies」(SWP 政策) 頁面。

    前往 SWP 政策

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

  3. 按一下政策名稱。

  4. 按一下「新增規則」

  5. 填寫規則欄位:

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

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

設定網路 Proxy

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

    前往「網路 Proxy」

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

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

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

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

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

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

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

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

  10. 在「政策」清單中,選取您建立的政策,將網路 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
    

後續步驟