使用 VPC Service Controls 保護資源


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

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

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

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

如果提出的要求違反服務範圍,要求會失敗,並傳回以下錯誤:

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

安全性優勢

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

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

此外,現在您也可以透過受限制的虛擬 IP (VIP) 存取 Compute Engine API。這麼做可簡化邊界內需要存取此 API 的用戶端 Cloud DNS 和路由設定。

限制

  • 階層式防火牆不會受到服務範圍的影響。
  • VPC 對等互連作業不會強制執行 VPC 服務範圍限制。
  • 共用虛擬私有雲的 projects.ListXpnHosts API 方法不會對傳回的專案強制執行服務範圍限制。

權限

請確認您具備適當的角色,才能管理貴機構的 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

設定服務範圍後,只要要求中受影響的資源包含在相同的服務範圍內,您就不需要對現有的 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,則執行個體範本中參照的任何資源,必須屬於您執行指令的服務範圍,或透過服務範圍橋接連線。如果執行個體範本參照服務範圍以外的資源,即使執行個體範本本身位於範圍內,要求也會失敗。

如需範例情境,請參閱「API 要求的範例,這些要求可透過結合入站和出站規則來允許」。在這個情境中,Compute Engine 用戶端位於外圍,使用位於外圍的 Cloud KMS 金鑰,在外圍建立 Compute Engine 磁碟。

公開映像檔專案

OS 詳細資料頁面上列出的所有圖片專案都會自動納入所有服務範圍。此外,系統也會自動納入 Fedora CloudopenSUSEHPC OS 的映像檔專案。

如果您使用的圖片專案不在服務範圍內,且不想直接新增這些專案,建議您將這些圖片專案複製到個別專案。接著,您可以將該專案新增至服務範圍。

使用 VPC Service Controls 複製圖片

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

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 使用的共用虛擬私有雲端

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

虛擬私有雲網路對等互連

虛擬私有雲網路對等互連可讓兩個不同機構之間的虛擬私有雲網路互連。由於服務範圍僅限於機構內的專案,因此服務範圍不會影響對等互連的虛擬私有雲端網路。

階層式防火牆

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

代管執行個體群組

代管執行個體群組可協助您將一組 VM 執行個體做為單一實體來管理。代管執行個體群組 (MIG) 會使用執行個體範本建立 VM,並套用所有與映像檔或跨專案網路和子網路相關的限制。也就是說,如果要使用其他專案的圖片,請務必確保這些專案屬於相同的服務範圍,或者將所需圖片複製到其他專案,並將該專案納入服務範圍。Google 維護的公開圖像專案會自動納入所有服務範圍。

如果您想使用共用虛擬私有雲的執行個體群組,請確認您的專案位於相同的服務範圍內。

後續步驟