VPC Service Controls

VPC Service Controls 可讓機構在資源周圍定義 perimeter,藉此降低資料竊取風險。Google Cloud使用 VPC Service Controls 時,可建立 perimeter,保護您明確指定的服務資源和資料。

套裝 Cloud Firestore 服務

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

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

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

限制 datastore.googleapis.com 服務

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

  • 使用 Google Cloud 控制台建立服務範圍時,請新增 Cloud Firestore 做為受限服務。
  • 使用 Google Cloud CLI 建立 service perimeter 時,請使用 firestore.googleapis.com 而不是 datastore.googleapis.com。

    --perimeter-restricted-services=firestore.googleapis.com
    

App Engine 舊版套裝組合服務,適用於 Datastore

App Engine Datastore的舊版套裝服務不支援服務安全防護範圍。使用服務範圍保護 Datastore 服務,可封鎖來自App Engine舊版套裝服務的流量。舊版套裝組合服務包括:

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

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

Cloud Firestore 服務代理

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

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

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

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

建議使用 Cloud Firestore 服務代理,因為這是 Cloud Firestore 專用的代理。App Engine 服務帳戶由多項服務共用。

不相容。

查看授權帳戶

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

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

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

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

檢查及更新 Cloud Storage bucket 權限,然後進行遷移

遷移程序包含兩個步驟:

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

服務代理 bucket 權限

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

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

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

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

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

將專案遷移至 Firestore 服務代理人

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

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

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

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

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

  2. 請記下專案Cloud Firestore服務代理程式的主體名稱。服務代理名稱會顯示在「Service agent to give access to」(要授予存取權的服務代理) 標籤下方。
  3. 如要將清單中的任何值區用於日後的匯入或匯出作業,請完成下列步驟:

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

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

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

查看遷移狀態

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

  1. 在「Import/Export jobs run as」(匯入/匯出工作執行身分) 標籤旁,尋找主體。

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

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

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

  • 在貴機構的政策中設定下列限制條件:

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

    這項限制會要求匯入和匯出作業使用 Cloud Firestore 服務代理程式授權要求。如要設定這項限制,請參閱「 建立及管理組織政策 」。

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

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