本頁說明如何設定階層式安全性政策,保護機構、資料夾或專案。設定階層式安全政策前,請務必先詳閱階層式安全政策總覽中的資訊。
設定階層式安全政策的 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_ID
或 FOLDER_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
:安全政策的 IDPOLICY_NAME
:安全性政策的名稱ORGANIZATION_ID
:機構 IDFOLDER_ID
:資料夾的 IDPROJECT_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
的流量:
建立名為
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
新增優先順序為
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"
最後,將安全性政策與機構建立關聯,拒絕來自
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-1
、project-2
和 project-3
的專案:
使用下列指令,將
project-1
、project-2
和project-3
移至 ID 為20000002
的資料夾:gcloud projects move project-1 --folder=20000002 gcloud projects move project-2 --folder=20000002 gcloud projects move project-3 --folder=20000002
使用下列指令建立名為
org-level-proxy-filtering
的安全性政策:gcloud beta compute org-security-policies create \ --folder=20000002 \ --type=CLOUD_ARMOR \ --short-name=org-level-proxy-filtering
新增優先順序為
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"
選用:如要將安全性政策規則套用至這些專案,以處理並非來自
192.0.2.0/24
的要求,請新增優先順序低於1000
的規則。您可以稍後再執行這個步驟。使用下列指令,將政策與 ID 為
20000002
的資料夾建立關聯。您已在步驟 1 中將專案移至這個資料夾:gcloud beta compute org-security-policies associations create \ --security-policy=org-level-proxy-filtering \ --folder=20000002