VPC Service Controls

VPC Service Controls 可讓機構在 Google Cloud 資源周圍定義安全範圍,以降低資料竊取風險。透過 VPC Service Controls,您可以建立 perimeter,保護您明確指定的服務資源和資料。

套裝組合 Firestore 服務

VPC Service Controls 會將下列 API 組合在一起:

  • firestore.googleapis.com
  • datastore.googleapis.com
  • firestorekeyvisualizer.googleapis.com

在範圍中限制 firestore.googleapis.com 服務時,範圍也會限制 datastore.googleapis.comfirestorekeyvisualizer.googleapis.com 服務。

限制 datastore.googleapis.com 服務

datastore.googleapis.com 服務會與 firestore.googleapis.com 服務一併提供。如要限制 datastore.googleapis.com 服務,請按照下列步驟限制 firestore.googleapis.com 服務:

  • 使用 Google Cloud 控制台建立服務範圍時,請將 Firestore 新增為受限制的服務。
  • 使用 Google Cloud CLI 建立服務安全防護時,請使用 firestore.googleapis.com,而非 datastore.googleapis.com
    --perimeter-restricted-services=firestore.googleapis.com

Datastore 的 App Engine 舊版套裝組合服務

App Engine 舊版套裝組合服務 (適用於 Datastore) 不支援服務周邊。使用服務範圍保護 Datastore 服務時,會封鎖來自 App Engine 舊版套裝組合服務的流量。舊版套裝組合服務包括:

匯入和匯出作業的輸出保護措施

Firestore 支援 VPC Service Controls,但需要額外設定,才能在匯入和匯出作業中獲得完整的輸出保護。您必須使用 Firestore 服務代理人授權匯入和匯出作業,而不是使用預設的 App Engine 服務帳戶。請按照下列操作說明,查看及設定匯入和匯出作業的授權帳戶。

Firestore 服務代理

Firestore 會使用 Firestore 服務代理授權匯入和匯出作業,而不是使用 App Engine 服務帳戶。服務代理程式和服務帳戶使用下列命名慣例:

Firestore 服務代理
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com

Firestore 之前使用 App Engine 預設服務帳戶,而非 Firestore 服務代理。如果資料庫仍使用 App Engine 服務帳戶匯入或匯出資料,建議按照本節的說明,改用 Firestore 服務代理。

App Engine 服務帳戶
PROJECT_ID@appspot.gserviceaccount.com

Firestore 服務代理人是較好的選擇,因為這是專為 Firestore 設計的代理人。App Engine 服務帳戶由多項服務共用。

查看授權帳戶

您可以在 Google Cloud 控制台的「匯入/匯出」頁面中,查看匯入和匯出作業授權要求時使用的帳戶。您也可以查看資料庫是否已使用 Firestore 服務代理程式。

  1. 前往 Google Cloud 控制台的「Databases」頁面。

    前往「資料庫」

  2. 從資料庫清單中選取所需資料庫。
  3. 按一下導覽選單中的「匯入/匯出」

  4. 查看「匯入/匯出工作的執行身分」標籤旁的授權帳戶。

如果專案未使用 Firestore 服務代理人,您可以透過下列任一方法遷移至 Firestore 服務代理人:

建議使用第一種方法,因為這樣可將影響範圍限制在單一 Firestore 專案。第二種方法不建議使用,因為不會遷移現有的 Cloud Storage 值區權限。不過,這項服務提供機構層級的安全合規性。

檢查並更新 Cloud Storage 值區權限,然後進行遷移

遷移程序分為兩個步驟:

  1. 更新 Cloud Storage 值區權限。詳情請參閱下節。
  2. 確認遷移至 Firestore 服務代理人。

服務代理 bucket 權限

如要執行匯出或匯入作業,並使用其他專案中的 Cloud Storage 值區,您必須授予 Firestore 服務代理程式該值區的權限。舉例來說,將資料移至其他專案的作業,需要存取該專案中的值區。否則,遷移至 Firestore 服務代理人後,這些作業就會失敗。

如果匯入和匯出工作流程都在同一個專案中,就不需要變更權限。根據預設,Firestore 服務代理可以存取同一個專案中的 bucket。

更新其他專案的 Cloud Storage 值區權限,授予 service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com 服務代理人存取權。將 Firestore Service Agent 角色授予服務代理。

Firestore Service Agent 角色可授予 Cloud Storage 值區的讀取和寫入權限。如要只授予讀取或寫入權限,請使用自訂角色

下一節所述的遷移程序可協助您找出可能需要更新權限的 Cloud Storage 值區。

將專案遷移至 Firestore 服務代理

請按照下列步驟,從 App Engine 服務帳戶遷移至 Firestore 服務代理。遷移作業完成後就無法復原。

  1. 前往 Google Cloud 控制台的「Databases」頁面。

    前往「資料庫」

  2. 從資料庫清單中選取所需資料庫。
  3. 按一下導覽選單中的「匯入/匯出」

  4. 如果專案尚未遷移至 Firestore 服務代理程式,您會看到說明遷移作業的橫幅和「檢查 Bucket 狀態」按鈕。下一個步驟將協助您找出並修正潛在的權限錯誤。

    按一下「Check Bucket Status」(檢查值區狀態)。

    系統會顯示選單,提供完成遷移作業的選項,以及 Cloud Storage 值區清單。清單可能需要幾分鐘才能載入完成。

    這份清單包含最近用於匯入和匯出作業的值區,但目前未授予 Firestore 服務代理人讀取和寫入權限。

  5. 請記下專案 Firestore 服務代理人的主體名稱。服務代理名稱會顯示在「應授予存取權的服務代理」標籤下方。
  6. 如要使用清單中的任何水桶進行日後的匯入或匯出作業,請完成下列步驟:

    1. 在該儲存區的表格列中,按一下「修正」。 系統會在新的分頁中開啟該值區的權限頁面。

    2. 按一下「新增」
    3. 在「New principals」(新增主體) 欄位中,輸入 Firestore 服務代理程式的名稱。
    4. 在「Select a role」(請選擇角色) 欄位中,依序選取「Service Agents」(服務代理人) >「Firestore Service Agent」(Firestore 服務代理人)
    5. 按一下 [儲存]
    6. 返回「Firestore Import/Export」(Firestore 匯入/匯出) 頁面的分頁。
    7. 針對清單中的其他值區重複上述步驟。請務必查看清單的所有頁面。
  7. 按一下「遷移至 Firestore 服務代理人」。如果仍有值區的權限檢查失敗,請按一下「遷移」確認遷移。

    遷移作業完成後,系統會發出快訊通知。遷移作業無法復原。

查看遷移狀態

如要確認專案的遷移狀態,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Databases」頁面。

    前往「資料庫」

  2. 從資料庫清單中選取所需資料庫。
  3. 按一下導覽選單中的「匯入/匯出」

  4. 在「匯入/匯出工作的執行身分」標籤旁,尋找主體。

    如果主體是 service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com,表示專案已遷移至 Firestore 服務代理程式。遷移作業無法復原。

    如果專案尚未遷移,頁面頂端會顯示橫幅和「檢查 Bucket 狀態」按鈕。請參閱「遷移至 Firestore 服務代理人」一文,完成遷移作業。

新增全機構適用的政策限制

  • 在機構政策中設定下列限制:

    必須使用 Firestore 服務代理才能執行匯入/匯出工作 (firestore.requireP4SAforImportExport)。

    這項限制規定匯入和匯出作業必須使用 Firestore 服務代理授權要求。如要設定這項限制,請參閱「 建立及管理機構政策 」。

套用這項機構政策限制後,系統不會自動為 Firestore 服務代理授予適當的 Cloud Storage bucket 權限。

如果限制導致任何匯入或匯出工作流程發生權限錯誤,您可以停用限制,改回使用預設服務帳戶。檢查並更新 Cloud Storage bucket 權限後,即可再次啟用限制。