使用標記建立政策

本頁說明如何將Resource Manager 標記附加至 Secure Web Proxy 政策。Resource Manager 標記是可附加至各種 Google Cloud 資源的標籤,例如虛擬機器 (VM) 執行個體。您可以使用標記,透過現有的機構標籤,在整個網路中強制執行條件式存取權控管。

使用這些標記,您可以執行下列動作:

  • 區隔工作負載:您可以分別識別不同環境 (例如 productiondevelopment) 和服務類型 (例如 frontenddatabase)。

  • 集中控管存取權:您可以根據這些標記制定 Secure Web Proxy 政策。舉例來說,您可以建立政策規則,規定「只有來自具有 tag segment=production 標記資源的流量,才能存取一組特定網址」。

本頁面說明如何執行下列操作:

事前準備

建立具有空白政策的 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. 在「轉送模式」中,選取下列任一選項:

    • 明確:以明確 Proxy 模式部署 Secure Web Proxy 執行個體。
    • 下一個躍點:以下一個躍點模式部署 Secure Web Proxy 執行個體。
  6. 在「Regions」(區域) 中,選取要建立網頁 Proxy 的區域,例如 us-central1

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

  8. 在「Subnetwork」部分,選取虛擬私有雲子網路,這是您在初始設定期間建立的子網路。

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

    您可以輸入 IP 位址,該位址必須位於您在上一個步驟建立的子網路中,且屬於 Secure Web Proxy IP 位址範圍。如果您未輸入 IP 位址,Secure Web 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
    routingMode: ROUTING_MODE
    addresses: [GATEWAY_IP_ADDRESS]
    scope: samplescope
    

    更改下列內容:

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

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

    • CERTIFICATE_URLS:SSL 憑證網址清單

    • SUBNETWORK:您在初始設定期間建立的 VPC 子網路

    • ROUTING_MODE:指定必要的網路 Proxy 路由模式:

      • EXPLICIT_ROUTING_MODE:以明確 Proxy 模式部署 Secure Web Proxy 執行個體
      • NEXT_HOP_ROUTING_MODE:以次一躍點模式部署 Secure Web Proxy 執行個體
    • 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 規則為止。

建立及附加 Resource Manager 標記

  1. 建立安全標記鍵和值

    GCE_FIREWALL

    範例:如要為受限環境建立代碼,請按照下列步驟操作:

    1. 使用 gcloud resource-manager tags keys create 指令建立標記鍵 (access-level),並將用途設為 GCE_FIREWALL

    2. 從建立指令的輸出內容中,或使用 gcloud resource-manager tags keys list 指令,擷取標記金鑰 ID。 您需要這個 ID,才能將標記值連結至這個特定標記鍵。

    3. 使用 gcloud resource-manager tags values create 指令建立標記值 (restricted),並將標記金鑰 ID 指定為父項。

    # Create the tag key
    # The output provides a unique ID, such as "tagKeys/1234567890"
    
    gcloud resource-manager tags keys create "access-level" \
        --parent="organizations/1234567890" \
        --purpose="GCE_FIREWALL" \
        --purpose-values="execution_env=ANS"
    
    # Create the tag value and connect it to the key
    # The "--parent" flag identifies to which key this value belongs
    
    gcloud resource-manager tags values create "restricted" \
        --parent="tagKeys/1234567890"
    
  2. 將標記附加至 VM 執行個體

    附加這些標記後,VM 執行個體的輸出流量就會與特定標記身分建立關聯,讓 Proxy 能夠辨識工作負載並強制執行安全政策規則。

    範例:假設您有名為 internal-tool 的 VM 執行個體。您可以使用 gcloud resource-manager tags bindings create 指令,將 restricted 標記值附加至 internal-tool。指派這個標記後,Proxy 就能識別來自 internal-tool VM 執行個體的流量。

    # Attach the "restricted" tag to a specific VM instance
    
    
    gcloud resource-manager tags bindings create \
        --parent="//[compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/internal-tool](https://compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/internal-tool)" \
        --tag-value="tagValues/987654321"
    

建立 Secure Web Proxy 規則

控制台

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

    前往 SWP 政策

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

  3. 按一下「新增規則」

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

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

    2. 在「Name」(名稱) 欄位中,輸入規則名稱。

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

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

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

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

      sessionMatcher: "source.matchTag('TAG_VALUE') && host() == 'example.com'"
      

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

    7. 在「應用程式比對」部分,指定比對要求的條件。

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

Cloud Shell

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

  2. 如要允許從必要標記存取網址,請在 rule.yaml 檔案中新增下列內容:

    name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME/rules/RULE_NAME
    description: RULE_DESCRIPTION
    enabled: true
    priority: RULE_PRIORITY
    sessionMatcher: CEL_EXPRESSION
    basicProfile: ALLOW
    

    更改下列內容:

    • RULE_NAME:這項規則的名稱
    • RULE_DESCRIPTION:規則說明
    • RULE_PRIORITY:此規則的優先順序;數字越小,優先順序越高
    • CEL_EXPRESSION:一般運算語言 (CEL) 運算式。詳情請參閱 CEL 比對器語言參考資料

    舉例來說,如要允許從必要標記存取 example.com,請在 YAML 檔案中加入下列 sessionMatcher 行:

    sessionMatcher: "source.matchTag('TAG_VALUE') && host() == 'example.com'"
    

    TAG_VALUE 替換為您要允許的代碼。請確認代碼符合數字資源 ID 格式,例如 tagValues/567890123456

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

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

測試政策設定

您可以再次測試連線能力,驗證 Secure Web Proxy 政策 (依賴 Resource Manager 標記來識別身分) 是否正常運作。

如要測試連線能力,請從與適當 TAG_VALUE 標記相關聯的任何 VM 使用 curl 指令。

curl -x https://IPv4_ADDRESS:443 http://example.com
--proxy-insecure

IPv4_ADDRESS 替換為 Secure Web Proxy 執行個體的 IPv4 位址。

如果一切正常,您會收到 200 OK403 Forbidden 狀態碼。這些回應確認了下列重要結果:

  • 以標記為準的成功200 OK 狀態碼會驗證來自 VM 的流量 (已附加正確的 Resource Manager 標記) 是否符合政策規則,並允許流量通過 Proxy。驗證相符後,即可順利連線。

  • 以標記為準的拒絕403 Forbidden 狀態碼會驗證政策是否正確拒絕來自 VM 的流量,這些 VM 要麼沒有指定標記,要麼標記不正確。這項強制執行措施證明,以標記為準的區隔和強制執行措施運作正常。

後續步驟