使用網址清單建立政策

本頁說明如何使用網址清單,在 Secure Web Proxy 執行個體中,為輸出網路流量建立及管理精細的存取權政策。您不必為每個網站建立個別規則,而是可以透過網址清單,定義可重複使用的集中式網域、主機名稱和特定網址模式集合。

使用網址清單的幾項主要好處如下:

  • 簡化政策管理:您可以在安全性政策中單一參照,套用大量 allowdeny 規則。

  • 強制執行精確控管:您可以使用特定語法比對整個網域、子網域或確切網址路徑。這有助於確保工作負載只能存取授權目的地。

  • 安全網路存取:您可以有效保護及稽核整個 Google Cloud 環境的網路存取。

事前準備

  • 完成初始設定步驟

  • 確認您已安裝 Google Cloud CLI 406.0.0 以上版本:

    gcloud version | head -n1
    

    如果您安裝的是舊版 gcloud CLI,請更新版本:

    gcloud components update --version=406.0.0
    

建立政策空白的 Secure Web Proxy 執行個體

如要建立 Secure Web Proxy 執行個體,您必須先建立空白安全政策,然後建立使用該政策的網路 Proxy。

建立空白安全性政策

控制台

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

    前往 SWP 政策

  2. 按一下「建立政策」

  3. 在「Name」(名稱) 欄位中,輸入政策名稱,例如 myswppolicy

  4. 在「Description」(說明) 欄位中輸入政策說明,例如 My new swp policy

  5. 在「區域」部分,選取要建立政策的區域,例如 us-central1

  6. 點選「建立」

Cloud Shell

  1. 使用偏好的文字編輯器建立 policy.yaml 檔案。

  2. 在您建立的 policy.yaml 檔案中新增下列內容:

    name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME
    description: POLICY_DESCRIPTION
    

    更改下列內容:

    • PROJECT_NAME:專案名稱

    • REGION:建立政策的區域,例如 us-central1

    • POLICY_NAME:政策名稱

    • POLICY_DESCRIPTION:政策說明

  3. 使用 gcloud network-security gateway-security-policies import 指令匯入安全政策:

    gcloud network-security gateway-security-policies import POLICY_NAME \
        --source=POLICY_FILE.yaml \
        --location=REGION
    

建立網路 Proxy

控制台

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

    前往「網路 Proxy」

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

  3. 在「Name」(名稱) 欄位中,輸入網頁 Proxy 的名稱,例如 myswp

  4. 在「Description」(說明) 欄位中輸入網頁 Proxy 的說明,例如 My new swp

  5. 在「Routing mode」(轉送模式) 中,選取「Explicit」(明確) 選項。

  6. 在「Regions」(區域) 中,選取要建立網頁 Proxy 的區域,例如 us-central1

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

  8. 在「子網路」部分,選取您先前在初始設定步驟中建立的虛擬私有雲子網路。

  9. 選用:在「網路 Proxy IP 位址」欄位中,輸入安全網路 Proxy IP 位址。

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

  10. 在「憑證」部分,選取要用來建立網頁 Proxy 的憑證。

  11. 在「政策」部分,選取您建立的政策,以便將網路 Proxy 與該政策建立關聯。

  12. 點選「建立」

Cloud Shell

  1. 使用偏好的文字編輯器建立 gateway.yaml 檔案。

  2. gateway.yaml 檔案中新增下列內容:

    name: projects/PROJECT_NAME/locations/REGION/gateways/GATEWAY_NAME
    type: SECURE_WEB_GATEWAY
    ports: [GATEWAY_PORT_NUMBERS]
    certificateUrls: [CERTIFICATE_URLS]
    gatewaySecurityPolicy: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME
    network: projects/PROJECT_NAME/global/networks/NETWORK_NAME
    subnetwork: projects/PROJECT_NAME/regions/REGION/subnetworks/SUBNETWORK
    addresses: [GATEWAY_IP_ADDRESS]
    scope: samplescope
    

    更改下列內容:

    • GATEWAY_NAME:這個 Secure Web Proxy 執行個體的名稱

    • GATEWAY_PORT_NUMBERS:這個閘道的通訊埠編號清單,例如 [80,443]

    • CERTIFICATE_URLS:SSL 憑證網址清單

    • SUBNETWORK:您先前建立的虛擬私有雲子網路,屬於初始設定步驟

    • GATEWAY_IP_ADDRESS:選用清單,列出您在先前初始設定步驟中建立的 Proxy 子網路內,Secure Web Proxy 執行個體的 IP 位址

      如果您選擇不列出 IP 位址,請省略該欄位,讓網路 Proxy 為您選擇 IP 位址。

  3. 使用 gcloud network-services gateways import 指令建立 Secure Web Proxy 執行個體:

    gcloud network-services gateways import GATEWAY_NAME \
        --source=gateway.yaml \
        --location=REGION
    

測試連線能力

如要測試連線,請從虛擬私有雲 (VPC) 網路中的任何虛擬機器 (VM) 執行個體使用 curl 指令:

  curl -x https://GATEWAY_IP_ADDRESS:PORT_NUMBER https://www.example.com --proxy-insecure

如果一切運作正常,Secure Web Proxy 執行個體會傳回 403 Forbidden 狀態碼。這項錯誤確認了下列事項:

  • Secure Web Proxy 執行個體已成功部署,並主動接收流量。

  • Secure Web Proxy 政策會正確強制執行預設安全性狀態,拒絕所有流量,直到您在下節中定義特定allow規則為止。

建立及設定網址清單

控制台

  1. 前往 Google Cloud 控制台的「網址清單」頁面。

    前往網址清單

  2. 按一下「建立網址清單」。 「建立網址清單」頁面隨即開啟。

  3. 在「Name」(名稱) 欄位中,輸入網址清單的名稱,例如 example-org-allowed-list

  4. 在「說明」欄位中,輸入網址清單的說明,例如 My new URL list

  5. 在「區域」部分,選取要建立網址清單的區域,例如 us-central1

  6. 如要新增主機、網址或要比對的模式清單,請在「網址清單」欄位中輸入詳細資料,或按一下「上傳清單」上傳自訂網址清單。詳情請參閱「UrlList 語法參考資料」。

  7. 點選「建立」

Cloud Shell

  1. 使用偏好的文字編輯器建立 url_list.yaml 檔案。

  2. url_list.yaml 檔案中新增下列內容:

      name: projects/PROJECT_ID/locations/REGION/urlLists/URL_LIST_NAME
      values: URL_LIST
    

    更改下列內容:

    • PROJECT_ID:專案的專屬 ID Google Cloud

    • REGION:建立網址清單的區域,例如 us-central1

    • URL_LIST_NAME:網址清單名稱

    • URL_LIST:要比對的主機、網址或模式清單

    詳情請參閱 UrlList 語法參考資料

    以下是網址清單規則檔案範例:

    name: projects/PROJECT_ID/locations/REGION/urlLists/example-org-allowed-list
    values:
      - www.example.com
      - about.example.com
      - "*.google.com"
      - "github.com/example-org/*"
    

    星號 (*) 字元在 YAML 中具有特殊意義。如果網址包含 * 字元,請務必在網址前後加上引號。

  3. 使用 gcloud network-security url-lists import 指令匯入您建立的網址清單,以便 Secure Web Proxy 規則參照該清單。

    gcloud network-security url-lists import URL_LIST_NAME \
        --location=REGION \
        --project=PROJECT_ID \
        --source=url_list.yaml
    

新增 Secure Web Proxy 規則

控制台

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

    前往 SWP 政策

  2. 按一下政策名稱,例如 myswppolicy

  3. 按一下「新增規則」

  4. 針對每項規則,請執行下列操作:

    1. 在「優先順序」中,輸入規則的評估順序 (數字)。系統會依優先順序由高至低評估規則,其中 0 為最高優先順序。

    2. 在「Name」(名稱) 欄位中,輸入規則的名稱,例如 allow-org-url-list

    3. 在「Description」(說明) 欄位中輸入規則說明。

    4. 在「動作」部分,選取下列任一選項:

      • 「允許」:允許符合規則的連線要求。
      • 拒絕:拒絕符合規則的連線要求。
    5. 在「狀態」欄位中,選取下列任一選項來強制執行規則:

      • 已啟用:在 Secure Web Proxy 執行個體上強制執行規則。
      • 已停用:不在 Secure Web Proxy 執行個體上強制執行規則。
    6. 在「工作階段比對」部分,指定您在前一節建立的網址清單專屬名稱。例如:

        sessionMatcher: "inUrlList(host(), 'projects/PROJECT_ID/locations/REGION/urlLists/URL_LIST_NAME)"
      

      如要進一步瞭解 SessionMatcher 的語法,請參閱 CEL 比對器語言參考資料

    7. 在「Application Match」(應用程式比對) 區段,指定比對要求的條件。

    8. 按一下「Add rule」(新增規則)

Cloud Shell

  1. 使用偏好的文字編輯器建立 rule.yaml 檔案。

  2. rule.yaml 檔案中新增下列內容:

    name: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/POLICY_NAME/rules/RULE_NAME
    basicProfile: ALLOW
    enabled: true
    priority: RULE_PRIORITY
    description: RULE_DESCRIPTION
    sessionMatcher: SESSION_CEL_EXPRESSION
    applicationMatcher: APPLICATION_CEL_EXPRESSION
    

    更改下列內容:

    • PROJECT_ID: Google Cloud專案的專屬 ID

    • REGION:這項規則適用的區域

    • POLICY_NAME:Secure Web Proxy 執行個體使用的現有安全性政策名稱

    • RULE_NAME:規則名稱

    • PRIORITY_VALUE:規則的優先順序;數字越小,優先順序越高

    • RULE_DESCRIPTION:規則說明

    • SESSION_CEL_EXPRESSION:一般運算語言 (CEL) 運算式。詳情請參閱 CEL 比對器語言參考資料

    • APPLICATION_CEL_EXPRESSION:應用程式的 CEL 運算式

    以下是規則檔案範例:

    name: projects/PROJECT_ID/locations/REGION/urlLists/allow-repos
    basicProfile: ALLOW
    enabled: true
    priority: 100
    description: Allow access to our list of known code repos.
    sessionMatcher: "inUrlList(host(), 'projects/PROJECT_ID/locations/REGION/urlLists/URL_LIST_NAME')"
    

  3. 使用 gcloud network-security gateway-security-policies rules import 指令匯入您建立的規則。

        gcloud network-security gateway-security-policies rules import RULE_NAME \
          --location=REGION \
          --project=PROJECT_ID \
          --source=rule.yaml \
          --gateway-security-policy=POLICY_NAME
    

測試政策設定

您可以再次測試連線,確認網址清單存取規則已正確設定,且 Secure Web Proxy 執行個體已主動強制執行這些規則。

如要測試連線,請使用下列 curl 指令:

curl -x https://SWP_IP_ADDRESS:SWP_PORT_NUMBER HTTP_TEST_ADDRESS
--proxy-insecure

更改下列內容:

  • SWP_IP_ADDRESS:Secure Web Proxy 執行個體的 IP 位址

  • SWP_PORT_NUMBER:網路 Proxy 的通訊埠號碼,例如 443

  • HTTP_TEST_ADDRESS:要測試的地址,例如 https://www.example.com。與您 url_list 中的主機或網址項目相符。

如果一切正常,您會收到 200 OK 回應。這項回應確認,安全政策規則所參照的網址清單中,列出的網址輸出流量已成功透過 Secure Web Proxy 執行個體。

後續步驟