VPC Service Controls 可讓組織定義 Google Cloud 資源的 perimeter,降低資料竊取風險。您可以使用 VPC Service Controls 建立 perimeter,保護您明確指定的服務資源和資料。
隨附 Cloud Firestore 服務
下列 API 在 VPC Service Controls 中會綁定在一起:
firestore.googleapis.comdatastore.googleapis.comfirestorekeyvisualizer.googleapis.com
在 perimeter 限制 firestore.googleapis.com 服務時,perimeter 也會限制 datastore.googleapis.com 和 firestorekeyvisualizer.googleapis.com 服務。
限制 datastore.googleapis.com 服務
datastore.googleapis.com 服務與 firestore.googleapis.com 服務綁定。如要限制 datastore.googleapis.com 服務,您必須按照下列方式限制 firestore.googleapis.com 服務:
- 使用 Google Cloud 控制台建立 service perimeter 時,請新增 Cloud Firestore 做為受限制的服務。
使用 Google Cloud CLI 建立 service perimeter 時,請使用
firestore.googleapis.com,而非datastore.googleapis.com。--perimeter-restricted-services=firestore.googleapis.com
Datastore 的 App Engine 舊版隨附服務
App Engine 的 Datastore 舊版隨附服務不支援 service perimeter。使用 service perimeter 保護 Datastore 服務,會封鎖來自 App Engine 舊版隨附服務的流量。舊版隨附服務包括:
- Java 8 Datastore 搭配 App Engine API
- Datastore 的 Python 2 NDB 用戶端程式庫
- Go 1.11 Datastore 搭配 App Engine API
匯入和匯出作業的輸出保護
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 控制台的「Import/Export」(匯入/匯出) 頁面,查看匯入和匯出作業使用哪個帳戶授權要求。您也可以查看資料庫是否已使用 Cloud Firestore 服務代理。
- 查看「Import/Export jobs run as」(匯入/匯出工作執行身分) 標籤旁的授權帳戶。
如果專案未使用 Cloud Firestore 服務代理,您可以使用下列任一技術,遷移至 Cloud Firestore 服務代理:
- 檢查並更新 Cloud Storage bucket 權限,藉此遷移專案 (建議做法)。
- 新增組織層級政策限制,影響組織內的所有專案。
建議採用第一種技術,因為這種技術會將影響範圍限制在單一 Cloud Firestore 專案。第二種技術不會遷移現有的 Cloud Storage bucket 權限,因此不建議使用。不過,這項服務會在組織層級提供安全性法規遵循。
檢查並更新 Cloud Storage bucket 權限,以便進行遷移
遷移程序包含兩個步驟:
- 更新 Cloud Storage bucket 權限。詳情請參閱下節。
- 確認遷移至 Cloud Firestore 服務代理。
服務代理值區權限
如果匯出或匯入作業使用「其他」專案中的 Cloud Storage bucket,您必須為該 bucket 授予 Cloud Firestore 服務代理權限。例如,將資料移至其他專案的作業需要存取該專案中的 bucket。否則,遷移至 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 bucket。
將專案遷移至 Firestore 服務代理
請完成下列步驟,從 App Engine 服務帳戶遷移至 Cloud Firestore 服務代理。遷移完成後即無法復原。
-
如果專案尚未遷移至 Cloud Firestore 服務代理,您會看到說明遷移作業的橫幅和「Check Bucket Status」(檢查 bucket 狀態) 按鈕。下一步可協助您找出並修正潛在的權限錯誤。
按一下「Check Bucket Status」(檢查值區狀態)。
畫面上會顯示選單,其中包含完成遷移的選項和 Cloud Storage bucket 清單。清單可能需要幾分鐘才能載入完畢。
這份清單包含最近用於匯入和匯出作業,但目前未授予 Cloud Firestore 服務代理讀取和寫入權限的 bucket。
- 記下專案 Cloud Firestore 服務代理的主體名稱。服務代理名稱會顯示在「Service agent to give access to」(要授予存取權的服務代理) 標籤下方。
-
針對清單中日後要用於匯入或匯出作業的任何 bucket,請完成下列步驟:
-
在值區的表格列中,按一下「修正」。 系統會在新分頁開啟該值區的權限頁面。
- 按一下 [新增]。
- 在「New principals」(新增主體) 欄位中,輸入 Cloud Firestore 服務代理程式的名稱。
- 在「Select a role」(選取角色) 欄位中,依序選取「Service Agents」(服務代理) >「Firestore Service Agent」(Firestore 服務代理)。
- 按一下 [儲存]。
- 返回 Cloud Firestore 匯入/匯出頁面的分頁。
- 對清單中的其他值區重複執行這些步驟。請務必查看清單的所有頁面。
-
-
按一下「Migrate to Firestore Service Agent」(遷移至 Firestore 服務代理)。如果仍有 bucket 未通過權限檢查,請按一下「Migrate」(遷移) 確認遷移。
遷移作業完成後,系統會發出快訊通知。遷移作業無法復原。
查看遷移狀態
如要確認專案的遷移狀態,請按照下列步驟操作:
-
找到「Import/Export jobs run as」(匯入/匯出工作執行身分) 標籤旁的主體。
如果主體是
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com,表示專案已遷移至 Cloud Firestore 服務代理。遷移作業無法復原。如果專案尚未遷移,頁面頂端會顯示橫幅,並附有「Check Bucket Status」(檢查 bucket 狀態) 按鈕。請參閱「遷移至 Firestore 服務代理」一文,完成遷移作業。
新增組織層級政策限制
-
在組織政策中設定下列限制:
必須使用 Firestore 服務代理才能執行匯入/匯出工作 (
firestore.requireP4SAforImportExport)。這項限制規定匯入和匯出作業必須使用 Cloud Firestore 服務代理授權要求。如要設定這項限制,請參閱「 建立及管理組織政策 」。
套用這項組織政策限制,並不會自動為 Cloud Firestore 服務代理授予適當的 Cloud Storage bucket 權限。
如果限制導致任何匯入或匯出工作流程發生權限錯誤,您可以停用限制,改回使用預設服務帳戶。檢查並更新 Cloud Storage bucket 權限後,即可再次啟用限制。