設定階層式安全性政策

本頁說明如何設定階層式安全性政策,保護機構、資料夾或專案。設定階層式安全政策前,請務必先詳閱階層式安全政策總覽中的資訊。

設定階層式安全政策的 IAM 權限

如要執行下列作業,您必須在目標資源階層節點上,或在政策本身 (如果政策已存在) 具備 Identity and Access Management (IAM) 角色「Compute Organization Security Policy Admin」(roles/compute.orgSecurityPolicyAdmin):

  • 建立新的階層式安全性政策
  • 新增、更新或刪除規則,藉此修改階層式安全性政策
  • 刪除階層式安全性政策

如要執行下列作業,您必須在目標資源階層節點上,同時具備 IAM Compute 機構資源管理員角色 (roles/compute.orgSecurityResourceAdmin),以及Compute 機構安全性政策管理員角色 (roles/compute.orgSecurityPolicyAdmin) 或 Compute 機構安全性政策使用者角色 (roles/compute.orgSecurityPolicyUser),且這些角色必須位於目標資源階層節點或政策本身:

  • 將階層式安全性政策與資源階層節點建立關聯

最後,請參閱下表,瞭解您在擁有任何列出的角色時,可以執行的其他作業:

作業 角色
查看後端資源的所有有效 Google Cloud Armor 規則
查看 organizationSecurityPolicy 涵蓋的有效後端資源

設定階層式安全性政策

下列各節說明如何建立階層式安全性政策、將政策與資源階層節點建立關聯、在節點之間移動政策、刪除政策,以及如何查看適用於受保護資源的所有 Google Cloud Armor 安全性政策規則。

建立階層式安全性政策

您可以使用 gcloud beta compute org-security-policies create 指令建立階層式安全政策。您可以使用 --organization--folder 標記,以及對應的 ORGANIZATION_IDFOLDER_ID,在機構或資料夾下建立階層式安全性政策。請參考下列範例建立階層式安全性政策,並將 POLICY_NAME 替換為新安全性政策的名稱:

  • 建立機構層級的階層式安全性政策:

    gcloud beta compute org-security-policies create \
        --organization=ORGANIZATION_ID \
        --type=CLOUD_ARMOR \
        --short-name=POLICY_NAME
    
  • 建立資料夾層級的階層式安全性政策:

    gcloud beta compute org-security-policies create \ 
        --folder=FOLDER_ID \
        --type=CLOUD_ARMOR \
        --short-name=POLICY_NAME
    

將現有安全性政策與資源階層節點建立關聯

如果您已有安全性政策,可以使用 gcloud beta compute org-security-policies associations create 指令,將政策與資源階層節點建立關聯。更改下列內容:

  • POLICY_ID:安全政策的 ID
  • POLICY_NAME:安全性政策的名稱
  • ORGANIZATION_ID:機構 ID
  • FOLDER_ID:資料夾的 ID
  • PROJECT_ID:專案 ID

  • 將階層式安全性政策與機構建立關聯:

    gcloud beta compute org-security-policies associations create \
        --security-policy=POLICY_ID \
        --organization=ORGANIZATION_ID \
        --name=ASSOCIATION_NAME
    
  • 將階層式安全性政策與資料夾建立關聯:

    gcloud beta compute org-security-policies associations create \
        --security-policy=POLICY_ID \
        --folder=FOLDER_ID \
        --name=ASSOCIATION_NAME
    
  • 將階層式安全性政策與專案建立關聯:

    gcloud beta compute org-security-policies associations create \
      --security-policy=POLICY_ID \
      --project-number=PROJECT_ID \
      --name=ASSOCIATION_NAME
    

從階層式安全政策排除專案

此外,您也可以從資料夾層級的階層式安全性政策排除專案,並從機構層級的階層式安全性政策排除專案和資料夾:

  • 您可以使用帶有 --excluded-projects 旗標的 beta compute org-security-policies associations create 指令,從階層式安全政策中排除專案。

    以下範例指令會將安全防護政策 example-policy 與機構 10000001 建立關聯,同時排除 ID 為 2000000002 的專案:

    gcloud beta compute org-security-policies associations create \
        --security-policy=example-policy \
        --excluded-projects="projects/2000000002" \
        --organization=10000001
    
  • 如要從機構層級的階層式安全性政策排除資料夾,請使用 beta compute org-security-policies associations create 指令搭配 --excluded-folders 標記。

    下列指令範例會將安全性政策 example-policy 與機構 10000001 建立關聯,同時排除 ID 為 3000000003 的資料夾:

    gcloud beta compute org-security-policies associations create \
        --security-policy=example-policy \
        --excluded-folders="folders/3000000003" \
        --organization=10000001
    

移動階層式安全性政策

如要變更階層式安全政策的父項,請使用 gcloud beta compute org-security-policies move 將階層式安全政策移至其他父項資源階層節點下。您會將來源提供為第一個標記,目的地提供為第二個標記。 移動階層式安全性政策會變更擁有權,但不會影響與該政策相關聯的資源。只有機構和資料夾可以擁有階層式安全防護政策,因此您無法將其移至專案底下。

在下列範例中,您要將階層式安全性政策從機構 ORGANIZATION_ID 移至資料夾 FOLDER_ID

gcloud beta compute org-security-policies move policy-1 \
    --organization ORGANIZATION_ID \
    --folder FOLDER_ID

刪除階層式安全性政策

如要刪除階層式安全防護政策,必須先刪除該政策與資源階層節點的所有關聯。在下列範例中,您可以使用 beta compute org-security-policies associations delete 指令,移除名稱為 ASSOCIATION_NAME 的關聯,該關聯位於名稱為 POLICY_NAME 的階層式安全政策與機構 ORGANIZATION_ID 之間:

gcloud beta compute org-security-policies associations delete ASSOCIATION_NAME \
    --security-policy=POLICY_NAME \
    --organization=ORGANIZATION_ID

如果安全政策不只與一個項目建立關聯,請為每個關聯重複執行上一個步驟。如果階層式安全政策沒有任何關聯,您可以使用 compute org-security-policies delete 指令刪除政策,如下列範例所示:

gcloud beta compute org-security-policies delete POLICY_NAME \
    --organization=ORGANIZATION_ID

查看受保護資源的所有有效 Google Cloud Armor 規則

您可以使用 gcloud beta compute backend-services get-effective-security-policies 指令,查看套用至受保護資源的所有 Google Cloud Armor 安全性政策規則。在下列範例中,請將 RESOURCE_NAME 替換為要檢查的受保護資源名稱:

gcloud beta compute backend-services get-effective-security-policies PROTECTED_RESOURCE

用途

以下各節說明階層式安全政策的用途。

拒絕一組 IP 位址傳送至貴機構所有應用程式負載平衡器的流量

您可以使用階層式安全政策,管理不允許存取整個機構網路的 IP 位址清單,或拒絕來自特定地區或國家/地區的流量。這有助於解決公司專屬的安全疑慮,或協助您維持法規遵循狀態。下列步驟說明如何建立機構層級的階層式安全性政策,拒絕來自 IP 位址範圍 192.0.2.0/24 的流量:

  1. 建立名為 org-level-deny-ip-policy 的階層式安全性政策,並附加至 ID 為 1000000001 的機構:

     gcloud beta compute org-security-policies create \
         --organization=1000000001 \
         --type=CLOUD_ARMOR \
         --description= "this is an org policy to deny a set of IP addresses for all resources" \
         --short-name=org-level-deny-ip-policy
    
  2. 新增優先順序為 1000 的規則,並為 IP 位址範圍 192.0.2.0/24 設定相符條件,以及 deny 動作:

     gcloud beta compute org-security-policies rules create 1000 \
         --action=deny \
         --security-policy=org-level-deny-ip-policy \
         --organization=1000000001 \
         --description "Deny traffic from 192.0.2.0/24" \
         --src-ip-ranges "192.0.2.0/24"
    
  3. 最後,將安全性政策與機構建立關聯,拒絕來自 192.0.2.0/24 IP 位址的要求,以存取機構中的所有服務:

     gcloud beta compute org-security-policies associations create \
         --security-policy=org-level-deny-ip-policy \
         --organization=ORGANIZATION_ID
    

授予一組來源 IP 位址存取機構內部分專案的權限

您可以將機構內部分專案的存取權授予一個或多個 IP 位址。如果您有信任的上游 Proxy,且只想在部分專案中排除規則評估,建議您採取這種做法。在下列以 Cloud CDN 為基礎的範例中,您會使用資料夾層級的階層式安全政策,將 IP 位址範圍 192.0.2.0/24 的存取權授予機構 10000001 中名為 project-1project-2project-3 的專案:

  1. 使用下列指令,將 project-1project-2project-3 移至 ID 為 20000002 的資料夾:

    gcloud projects move project-1 --folder=20000002
    gcloud projects move project-2 --folder=20000002
    gcloud projects move project-3 --folder=20000002
    
  2. 使用下列指令建立名為 org-level-proxy-filtering 的安全性政策:

     gcloud beta compute org-security-policies create \
         --folder=20000002 \
         --type=CLOUD_ARMOR \
         --short-name=org-level-proxy-filtering
    
  3. 新增優先順序為 1000 的規則,並為 IP 位址範圍 192.0.2.0/24 設定相符條件,以及 goto_next 規則動作。如果要求符合這項條件,Google Cloud Armor 會停止評估這項安全性政策中的規則:

     gcloud beta compute org-security-policies rules create 1000 \
         --action=goto_next \
         --security-policy=org-level-proxy-filtering \
         --organization=10000001 \
         --src-ip-ranges="192.0.2.0/24"
    
  4. 選用:如要將安全性政策規則套用至這些專案,以處理並非來自 192.0.2.0/24 的要求,請新增優先順序低於 1000 的規則。您可以稍後再執行這個步驟。

  5. 使用下列指令,將政策與 ID 為 20000002 的資料夾建立關聯。您已在步驟 1 中將專案移至這個資料夾:

     gcloud beta compute org-security-policies associations create \
         --security-policy=org-level-proxy-filtering \
         --folder=20000002
    

後續步驟