使用 VPC Service Controls 保護資源

如要進一步保護 Compute Engine 資源,可以使用 VPC Service Controls

VPC Service Controls 可讓您為 Compute Engine 資源定義服務範圍。服務範圍會限制資源及其相關聯資料的匯出和匯入作業,只能在定義的範圍內進行。

建立服務範圍時,請選取一或多個要受範圍保護的專案。相同 perimeter 內專案之間的要求不受影響。只要相關資源位於同一個服務範圍內,所有現有 API 都能繼續運作。請注意,IAM 角色和政策仍適用於 service perimeter 內。

如果服務受到 perimeter 保護,perimeter「內部」的服務就無法向 perimeter「外部」的任何資源提出要求。包括將資源從 perimeter 內部匯出至外部。如果要求符合特定條件,外部要求就能存取服務範圍內的受保護資源。詳情請參閱 VPC Service Controls 說明文件中的「總覽」。

如果要求違反服務周邊防護範圍,系統會傳回下列錯誤,導致要求失敗:

"code": 403, "message": "Request is prohibited by organization's policy."

安全防護優勢

VPC Service Controls 提供下列安全性優點:

  • 您可以限制僅允許授權網路或允許清單中的 IP 位址,以私密方式存取敏感的 Compute Engine API 作業,例如變更防火牆規則。
  • Compute Engine 永久磁碟快照和自訂映像檔可限制在安全防護範圍內。
  • Compute Engine 執行個體中繼資料可做為有限的儲存系統。透過 Compute Engine API 存取執行個體中繼資料時,會受到服務範圍政策限制,因此可降低透過這個管道竊取資料的風險。

此外,現在可透過受限虛擬 IP (VIP) 存取 Compute Engine API。 這樣一來,perimeter 內需要存取這項 API 的用戶端,就能簡化 Cloud DNS 和路由設定。

限制

  • 設定負載平衡器,以便使用不同專案中的後端服務,可能會導致資料外洩。如果您將其中一個專案新增至安全範圍,即使您在不同安全範圍內限制其他專案,跨專案後端附件仍可允許資料在專案之間移動。為降低這項風險,建議您在限制 perimeter 內的 Compute Engine API 時,啟用 constraints/compute.restrictCrossProjectServices 機構政策。詳情請參閱「限制跨專案的後端值區和後端服務」。
  • 階層式防火牆不受服務周邊控管範圍影響。
  • 虛擬私有雲對等互連作業不會強制執行虛擬私有雲服務範圍限制。
  • 共用虛擬私有雲的 projects.ListXpnHosts API 方法不會對傳回的專案強制執行服務範圍限制。

權限

請確認您具備適當角色,可管理貴機構的 VPC Service Controls Perimeter 設定。

設定服務範圍

請按照 VPC Service Controls 說明文件中的「建立服務範圍」一節操作,設定服務範圍。

如果使用 Google Cloud CLI 設定服務安全防護範圍,請透過 --restricted-services 旗標指定 compute.googleapis.com,藉此限制 Compute Engine API。

將 Compute Engine 新增為現有範圍的受限制服務

如果您已有服務範圍,並想在服務範圍中新增 Compute Engine,請按照 VPC Service Controls 說明文件中的「更新服務範圍」一節操作。

使用 VPC Service Controls 建立 VM

設定 service perimeter 後,只要要求中的受影響資源包含在同一個 service perimeter 中,您就不需要對現有的 API 呼叫或工具進行任何變更。舉例來說,下列指令會使用範例映像檔建立 VM 執行個體。在這種情況下,如果 IMAGE_PROJECT 位於服務範圍外 (且專案之間沒有服務範圍橋接器),指令就會失敗。

gcloud compute instances create new-instance \
    --image-family IMAGE_FAMILY --image-project IMAGE_PROJECT \
    --zone us-central1-a --machine-type n1-standard-72

如果您要從執行個體範本建立 VM,執行個體範本中參照的所有資源都必須位於您執行指令的相同服務範圍內,或透過服務範圍橋接器連線。即使執行個體範本本身位於 service perimeter 內,如果參照的資源位於 perimeter 外部,要求仍會失敗。

如要查看範例情境,瞭解 perimeter 外部的 Compute Engine 用戶端如何使用 perimeter 內部的 Cloud KMS 金鑰,在 perimeter 外部建立 Compute Engine 磁碟,請參閱「允許的 API 要求範例 (根據輸入和輸出規則組合)」。

公開圖片專案

「作業系統詳細資料」頁面列出的所有映像檔專案,都會自動納入所有服務範圍。此外,系統也會自動納入 Fedora CloudopenSUSEHPC 就緒 VM 映像檔的映像檔專案。

如果您使用的映像檔專案未納入服務邊界,且不想直接新增這些專案,建議您將這些映像檔專案複製到另一個專案。接著,您就可以將該專案新增至 service perimeter。

使用 VPC Service Controls 複製映像檔

如果兩個專案屬於同一個服務範圍,您就可以將映像檔從一個專案複製到另一個專案。在本範例中,DST_PROJECTSRC_PROJECT 必須屬於同一個 service perimeter,要求才能正常運作。

gcloud compute images create --project DST_PROJECT IMAGE_NAME \
   --source-image SOURCE_IMAGE --source-image-project SRC_PROJECT \
    --family IMAGE_FAMILY --storage-location LOCATION

如果您選擇不直接將映像檔專案納入安全防護範圍,建議您先將所有要使用的映像檔複製到另一個專案,然後將該專案納入安全防護範圍。

搭配 VPC Service Controls 使用共用 VPC

使用共用虛擬私有雲時,服務邊界限制會套用至特定作業涉及的所有專案。換句話說,如果作業涉及主專案和服務專案之間分散的資源,建議您確保主專案和服務專案位於相同 service perimeter。

虛擬私有雲網路對等互連

虛擬私有雲網路對等互連可讓兩個不同機構的虛擬私有雲網路建立對等互連。由於 service perimeter 僅限於機構內的專案,因此不會影響對等互連的虛擬私有雲網路。

階層式防火牆

階層式防火牆是在專案外部 (資料夾或機構層級) 設定的防火牆。服務周邊限制不適用於階層式防火牆。

代管執行個體群組

代管執行個體群組可協助您將一組 VM 執行個體做為單一實體來管理。代管執行個體群組 (MIG) 會使用執行個體範本建立 VM,因此映像檔或跨專案網路和子網路的所有限制都適用。也就是說,使用其他專案的映像檔時,請確保這些專案屬於同一個安全防護範圍,或將所需映像檔複製到其他專案,然後將該專案納入服務安全防護範圍。所有服務範圍都會自動納入 Google 維護的公開映像檔專案。

如要搭配使用執行個體群組和 Shared VPC,請確認專案位於相同服務範圍。

後續步驟