如要集中管理並在虛擬私有雲 (VPC) 網路中持續強制執行安全政策,請將使用網路標記和來源服務帳戶的虛擬私有雲防火牆規則,遷移至全域網路防火牆政策。藉此減少攻擊面、最佳化防火牆設定,並找出及修正過於寬鬆的規則,加強安全防護界線。
本文適用於設定及管理網路安全政策的網路管理員、安全工程師和安全架構師。
如要遷移未使用網路標記或服務帳戶的規則,請參閱「遷移未使用網路標記和服務帳戶的虛擬私有雲防火牆規則」。
如要完成這項遷移作業,請執行下列工作:
- 評估您的環境。
- 列出現有網路標記和服務帳戶。
- 為每個網路標記和來源服務帳戶建立安全標記。
- 將網路標記和服務帳戶對應至您建立的安全標記。
- 將安全標記繫結至虛擬機器 (VM) 執行個體。
- 將虛擬私有雲防火牆規則遷移至全域網路防火牆政策。
- 查看新的網路防火牆政策。
- 完成遷移後工作。
事前準備
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
Enable the Compute Engine API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
Configure the gcloud CLI to use your federated identity.
For more information, see Sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init - 確認您具備 Compute 安全管理員角色 (
roles/compute.securityAdmin)。
評估您的環境
將虛擬私有雲防火牆規則遷移至全域網路防火牆政策前,請先評估現有環境和 Identity and Access Management (IAM) 角色與權限:
- 找出虛擬私有雲網路中的虛擬私有雲防火牆規則數量。
- 記下與每個 VPC 防火牆規則對應的優先順序。
- 請確認您具備必要的 IAM 角色和權限,可以建立、建立關聯、修改及查看全域網路防火牆政策。
請確認您具備必要的 IAM 角色和權限,可以建立、更新及刪除安全標記定義。
下表匯總建立及管理安全標記所需的各種角色:
角色名稱 已執行的工作 標記管理員角色 ( roles/resourcemanager.tagAdmin)建立、更新及刪除代碼定義。詳情請參閱「管理標記」。 標記檢視者角色 ( roles/resourcemanager.tagViewer)查看標記定義和附加至資源的標記。 標記使用者角色 ( roles/resourcemanager.tagUser)新增及移除附加至資源的標記。
列出現有的網路標記和服務帳戶
判斷 VPC 防火牆規則是否使用任何網路標記或服務帳戶,並建立 JSON 檔案來儲存現有網路標記和服務帳戶的詳細資料。
如要將網路中的網路標記和服務帳戶匯出至 JSON 對應檔,請使用 gcloud beta compute firewall-rules migrate
指令,並加上 --export-tag-mapping 旗標:
gcloud beta compute firewall-rules migrate \
--source-network=NETWORK_NAME \
--export-tag-mapping \
--tag-mapping-file=TAG_MAPPING_FILE
更改下列內容:
NETWORK_NAME:虛擬私有雲網路的名稱,包含您要遷移的虛擬私有雲防火牆規則。TAG_MAPPING_FILE:對應 JSON 檔案名稱。
如果 VPC 防火牆規則只包含服務帳戶,產生的 JSON 檔案也只會包含服務帳戶。同樣地,如果 VPC 防火牆規則只包含網路標記,產生的 JSON 檔案也只會包含網路標記。服務帳戶會加上 sa 前置字串,網路標記則不會加上任何前置字串。
舉例來說,以下產生的 JSON 檔案包含網路標記 sql-server 和服務帳戶 example@example.com。
{"sql-server": null, "sa:example@example.com": null}
建立安全標記
根據對應檔中列出的網路標記和來源服務帳戶,您必須在網路中建立相應的安全標記。
新的安全標記可取代網路標記和服務帳戶,並在遷移後保留原始網路設定。
以具備標記管理員角色的主體身分,為每個網路標記和服務帳戶建立對應的安全標記鍵/值組合。
如要為每個網路代碼和服務帳戶建立安全代碼鍵和值,請使用 gcloud resource-manager tags keys create 指令和 gcloud resource-manager tags values create 指令:
gcloud resource-manager tags keys create TAG_KEY \
--parent=organizations/ORGANIZATION_ID \
--purpose=GCE_FIREWALL \
--purpose-data=network=PROJECT_ID/NETWORK_NAME
gcloud resource-manager tags values create TAG_VALUE \
--parent=ORGANIZATION_ID/TAG_KEY
更改下列內容:
TAG_KEY:安全代碼金鑰的名稱。ORGANIZATION_ID:組織 ID。PROJECT_ID:專案 ID。NETWORK_NAME:虛擬私有雲網路的名稱。TAG_VALUE:要指派給安全代碼鍵的值。
舉例來說,如果您有網路標記為 sql-server 的虛擬私有雲防火牆規則,請建立對應的 sql-server:production 安全標記鍵值組。
gcloud resource-manager tags keys create sql-server \
--parent=organizations/123456 \
--purpose=GCE_FIREWALL \
--purpose-data=network=test-project/test-network
gcloud resource-manager tags values create production \
--parent=123456/sql-server
將網路標記和服務帳戶對應至安全標記
為 VPC 防火牆規則使用的各個網路標記和服務帳戶建立受 IAM 控管的安全標記後,請在 JSON 對應檔中建立兩者的關聯。
編輯 JSON 檔案,將網路標記和服務帳戶對應至相應的安全標記。
{"sql-server": "tagValues/yyyyy", "sa:example@example.com": "tagValues/zzzzz"}
舉例來說,下列 JSON 檔案會將網路標記 sql-server 對應至金鑰 sql-server 的安全標記值,並將服務帳戶 example@example.com 對應至金鑰 example@example.com 的安全標記值:
{"sql-server": "tagValues/production", "sa:example@example.com": "tagValues/example"}
將安全標記繫結至 VM
根據標記 JSON 對應檔,將新建立的安全標記繫結至已附加現有網路標記的 VM:
以具有標記管理員角色的主體身分,執行下列操作:
- 請參閱必要權限,瞭解如何將安全標記附加至 Cloud de Confiance by S3NS 資源。
- 將標記使用者角色指派給主體,該主體會使用安全標記,並將安全標記繫結至 VM。
以具有「標記使用者」角色的主體身分,使用
gcloud beta compute firewall-rules migrate指令 搭配--bind-tags-to-instances旗標,將安全標記繫結至 VM 執行個體:gcloud beta compute firewall-rules migrate \ --source-network=NETWORK_NAME \ --bind-tags-to-instances \ --tag-mapping-file=TAG_MAPPING_FILE更改下列內容:
NETWORK_NAME:虛擬私有雲網路的名稱。TAG_MAPPING_FILE:對應 JSON 檔案名稱。
將 VPC 防火牆規則遷移至全域網路防火牆政策
如要將 VPC 防火牆規則遷移至全域網路防火牆政策,請使用 gcloud beta compute firewall-rules migrate 指令:
gcloud beta compute firewall-rules migrate \
--source-network=NETWORK_NAME \
--target-firewall-policy=POLICY_NAME \
--tag-mapping-file=TAG_MAPPING_FILE
更改下列內容:
NETWORK_NAME:虛擬私有雲網路的名稱,包含您要遷移的虛擬私有雲防火牆規則。POLICY_NAME:遷移期間要建立的全域網路防火牆政策名稱。TAG_MAPPING_FILE:對應 JSON 檔案名稱。
排除不需遷移的防火牆規則
如要排除特定防火牆規則,請使用 gcloud beta compute
firewall-rules migrate 指令,並加上 --exclusion-patterns-file 旗標:
gcloud beta compute firewall-rules migrate \
--source-network=NETWORK_NAME \
--target-firewall-policy=POLICY_NAME \
--exclusion-patterns-file=EXCLUSION_PATTERNS_FILE
更改下列內容:
NETWORK_NAME:虛擬私有雲網路的名稱,包含您要遷移的虛擬私有雲防火牆規則。POLICY_NAME:遷移期間要建立的全域網路防火牆政策名稱。EXCLUSION_PATTERNS_FILE:檔案名稱,內含定義要從遷移作業排除的 VPC 防火牆命名模式的規則運算式。請務必指定檔案的完整路徑。系統會略過符合指定模式的防火牆規則。定義排除模式時,請注意下列事項:
- 每個規則運算式必須單獨一行,且代表單一防火牆命名模式。
- 規則運算式開頭或結尾不得有任何空白字元。
查看排除的防火牆規則
根據排除的防火牆規則命名模式,遷移工具不會遷移部分防火牆規則,例如 Google Kubernetes Engine (GKE) 防火牆規則。如要匯出排除的防火牆規則命名模式清單,請使用 gcloud beta compute firewall-rules migrate 指令,並加上 --export-exclusion-patterns 和 --exclusion-patterns-file 旗標。
gcloud beta compute firewall-rules migrate \
--source-network=NETWORK_NAME \
--target-firewall-policy=POLICY_NAME \
--exclusion-patterns-file=EXCLUSION_PATTERNS_FILE \
--export-exclusion-patterns
更改下列內容:
NETWORK_NAME:虛擬私有雲網路的名稱,包含您要遷移的虛擬私有雲防火牆規則。POLICY_NAME:遷移期間要建立的全域網路防火牆政策名稱。EXCLUSION_PATTERNS_FILE:檔案路徑,用於匯出下列排除的防火牆規則命名模式。gke-(.+)-ipv6-all gke-(.+)-(.+)-((master)|(vms)|(all)|(inkubelet)|(exkubelet)|(mcsd)) k8s-fw-(l7-)?(.+) k8s-(.+)-((node)|(http)|(node-http))-hc (.+)-hc k8s2-(.+)-(.+)-(.+)-(.+)(-fw)? k8s2-(.+)-l4-shared-hc-fw gke((gw)|(mcg))1-l7-(.+)-(.+)
如要遷移符合特定模式的排除防火牆規則,請從匯出的清單中移除模式,然後使用 --exclusion-patterns-file 旗標執行 gcloud beta compute
firewall-rules migrate 指令。
強制遷移,同時保留評估順序
遷移期間,如果排除的防火牆規則評估順序介於使用者指定的防火牆規則評估順序之間,遷移作業就會失敗。這是因為排除的防火牆規則不會遷移,且遷移工具無法在新網路防火牆政策中保留使用者定義規則的原始評估順序。
舉例來說,如果防火牆規則的優先順序如下,遷移作業就會失敗。
- 使用者指定的規則,優先順序為 100
- 優先順序為 200 的排除規則
- 優先順序為 300 的使用者指定規則
如要強制遷移工具遷移使用者指定的規則,同時保留原始評估順序並忽略排除的防火牆規則,請使用 gcloud beta compute firewall-rules migrate 指令並加上 --force 旗標。
gcloud beta compute firewall-rules migrate \
--source-network=NETWORK_NAME \
--target-firewall-policy=POLICY_NAME \
--force
更改下列內容:
NETWORK_NAME:虛擬私有雲網路的名稱,包含您要遷移的虛擬私有雲防火牆規則。POLICY_NAME:遷移期間要建立的全域網路防火牆政策名稱。
查看新的全域網路防火牆政策
將新建立的政策與虛擬私有雲網路建立關聯前,Google 建議您先檢查政策,確保遷移程序已確實完成。
請確認下列事項:
防火牆政策規則設定正確,且每個規則的下列規則元件都已正確遷移:
- 相對優先順序
- 流量方向
- 相符時執行的動作
- 記錄設定
- 目標參數
- 來源參數 (適用於輸入規則)
- 目的地參數 (適用於輸出規則)
- 通訊協定和通訊埠限制
確認安全標記已附加至正確的 VM。如要驗證,請使用
gcloud resource-manager tags bindings list指令:gcloud resource-manager tags bindings list \ --location=ZONE_ID \ --parent=//compute.googleapis.com/projects/PROJECT_ID/zones/ZONE_ID/instances/INSTANCE_NAME \ --effective更改下列內容:
ZONE_ID:VM 的可用區。PROJECT_ID:專案 ID。INSTANCE_NAME:VM 名稱。
遷移後工作
如要啟用及使用新的全域網路防火牆政策,請完成移轉後工作。詳情請參閱「遷移後工作」。
後續步驟
- 進一步瞭解如何遷移虛擬私有雲防火牆規則。
- 遷移沒有任何依附元件的虛擬私有雲防火牆規則。