使用服務帳戶建立政策

服務帳戶是特殊的非人類 Google 帳戶,應用程式、自動化程序或運算工作負載 (例如 Compute Engine 執行個體) 會使用這類帳戶發出授權 API 呼叫。與使用者帳戶不同,服務帳戶只會透過專屬電子郵件地址識別。

應用程式會使用服務帳戶進行驗證,並取得Google Cloud 資源的存取權。應用程式使用服務帳戶進行驗證時,可存取服務帳戶已獲指派明確 Identity and Access Management 權限的資源。這項功能提供安全、可稽核且集中式的機器對機器授權方法。

對於 Secure Web Proxy,服務帳戶在授權和政策執行方面扮演重要角色。使用服務帳戶識別工作負載的流量來源後,您就能建立精細的 Secure Web Proxy 政策,根據應用程式的身分 (而非僅根據 IP 位址),具體允許或拒絕網路流量。

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

事前準備

  • 完成初始設定步驟

  • 請機構管理員授予您服務帳戶的存取權

  • 確認您已安裝 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. 在「轉送模式」中,選取下列任一選項:

    • 明確:以明確 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 規則為止。

建立服務帳戶並授予 IAM 角色

  1. 建立服務帳戶:使用 gcloud iam service-accounts create 指令在 Google Cloud專案中建立名為 my-swp-sa 的服務帳戶。

    gcloud iam service-accounts create my-swp-sa \
        --display-name="Secure Web Proxy service account" \
        --description="Service account for Secure Web Proxy instances"
  2. 將 IAM 角色授予服務帳戶:使用 gcloud projects add-iam-policy-binding 指令將必要的 IAM 角色授予服務帳戶,以便管理或使用 Google Cloud 專案中的資源。

    舉例來說,如要允許服務帳戶使用網路資源,請授予「Compute 網路使用者角色」(roles/compute.networkUser)。

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:my-swp-sa@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/compute.networkUser"

    PROJECT_ID 替換為Google Cloud 專案 ID。

建立 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. 在「Session Match」(工作階段比對) 區段中,指定您先前建立的服務帳戶電子郵件地址。例如:

        sessionMatcher: "source.matchServiceAccount(SERVICE_ACCOUNT) && host() == 'example.com'"
      

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

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

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

  5. 如要新增其他規則,請按一下「新增規則」

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,請將下列內容新增至為 sessionMatcher 建立的 YAML 檔案:

    ```yaml
    sessionMatcher: "source.matchServiceAccount('SERVICE_ACCOUNT') && host() == 'example.com'"
    ```
    

    SERVICE_ACCOUNT 替換為要允許的服務帳戶。這必須是服務帳戶的電子郵件地址。

  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 設定 (包括服務帳戶、安全政策規則和閘道) 運作正常。

如要測試連線,請從附加 SERVICE_ACCOUNT 的資源 (例如 VM 執行個體) 使用 curl 指令:

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

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

如果一切正常,您會收到 200 OK 狀態碼。這個狀態碼會確認下列主要結果:

  • 授權成功:這表示系統已透過指派的服務帳戶,正確識別來自資源的流量,且這個身分已成功比對您新增至安全性政策的 allow 規則。

  • 端對端功能:驗證流量是否正確流經設定的路徑,也就是從資源 > 到 Secure Web Proxy 執行個體 > 通過安全政策 > 到達外部目的地。

後續步驟