使用標記建立政策

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

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

  • 區隔工作負載:您可以明確識別不同環境 (例如 � 或 �) 和服務類型 (例如 � 或 �)。productiondevelopmentfrontenddatabase

  • 集中控管存取權:您可以根據這些標記制定 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. 在「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規則為止。

建立及附加 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 政策 (依賴資源管理工具標記來識別身分) 是否正常運作。

如要測試連線能力,請從與適當 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 要麼沒有指定標記,要麼標記不正確。這項強制執行措施證明,以標記為基礎的區隔和強制執行措施運作正常。

後續步驟