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.com
和 firestorekeyvisualizer.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 舊版套裝組合服務的流量。舊版套裝組合服務包括:
- Java 8 Datastore 與 App Engine API
- 適用於 Datastore 的 Python 2 NDB 用戶端程式庫
- Go 1.11 Datastore 與 App Engine API
匯入和匯出作業的輸出保護措施
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 服務代理程式。
-
前往 Google Cloud 控制台的「Databases」頁面。
- 從資料庫清單中選取所需資料庫。
-
按一下導覽選單中的「匯入/匯出」。
- 查看「匯入/匯出工作的執行身分」標籤旁的授權帳戶。
如果專案未使用 Firestore 服務代理人,您可以透過下列任一方法遷移至 Firestore 服務代理人:
- 檢查並更新 Cloud Storage 值區權限,藉此遷移專案 (建議)。
- 新增機構層級的政策限制,影響機構內的所有專案。
建議使用第一種方法,因為這樣可將影響範圍限制在單一 Firestore 專案。第二種方法不建議使用,因為不會遷移現有的 Cloud Storage 值區權限。不過,這項服務提供機構層級的安全合規性。
檢查並更新 Cloud Storage 值區權限,然後進行遷移
遷移程序分為兩個步驟:
- 更新 Cloud Storage 值區權限。詳情請參閱下節。
- 確認遷移至 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 服務代理。遷移作業完成後就無法復原。
-
前往 Google Cloud 控制台的「Databases」頁面。
- 從資料庫清單中選取所需資料庫。
-
按一下導覽選單中的「匯入/匯出」。
-
如果專案尚未遷移至 Firestore 服務代理程式,您會看到說明遷移作業的橫幅和「檢查 Bucket 狀態」按鈕。下一個步驟將協助您找出並修正潛在的權限錯誤。
按一下「Check Bucket Status」(檢查值區狀態)。
系統會顯示選單,提供完成遷移作業的選項,以及 Cloud Storage 值區清單。清單可能需要幾分鐘才能載入完成。
這份清單包含最近用於匯入和匯出作業的值區,但目前未授予 Firestore 服務代理人讀取和寫入權限。
- 請記下專案 Firestore 服務代理人的主體名稱。服務代理名稱會顯示在「應授予存取權的服務代理」標籤下方。
-
如要使用清單中的任何水桶進行日後的匯入或匯出作業,請完成下列步驟:
-
在該儲存區的表格列中,按一下「修正」。 系統會在新的分頁中開啟該值區的權限頁面。
- 按一下「新增」。
- 在「New principals」(新增主體) 欄位中,輸入 Firestore 服務代理程式的名稱。
- 在「Select a role」(請選擇角色) 欄位中,依序選取「Service Agents」(服務代理人) >「Firestore Service Agent」(Firestore 服務代理人)。
- 按一下 [儲存]。
- 返回「Firestore Import/Export」(Firestore 匯入/匯出) 頁面的分頁。
- 針對清單中的其他值區重複上述步驟。請務必查看清單的所有頁面。
-
-
按一下「遷移至 Firestore 服務代理人」。如果仍有值區的權限檢查失敗,請按一下「遷移」確認遷移。
遷移作業完成後,系統會發出快訊通知。遷移作業無法復原。
查看遷移狀態
如要確認專案的遷移狀態,請按照下列步驟操作:
-
前往 Google Cloud 控制台的「Databases」頁面。
- 從資料庫清單中選取所需資料庫。
-
按一下導覽選單中的「匯入/匯出」。
-
在「匯入/匯出工作的執行身分」標籤旁,尋找主體。
如果主體是
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com
,表示專案已遷移至 Firestore 服務代理程式。遷移作業無法復原。如果專案尚未遷移,頁面頂端會顯示橫幅和「檢查 Bucket 狀態」按鈕。請參閱「遷移至 Firestore 服務代理人」一文,完成遷移作業。
新增全機構適用的政策限制
-
在機構政策中設定下列限制:
必須使用 Firestore 服務代理才能執行匯入/匯出工作 (
firestore.requireP4SAforImportExport
)。這項限制規定匯入和匯出作業必須使用 Firestore 服務代理授權要求。如要設定這項限制,請參閱「 建立及管理機構政策 」。
套用這項機構政策限制後,系統不會自動為 Firestore 服務代理授予適當的 Cloud Storage bucket 權限。
如果限制導致任何匯入或匯出工作流程發生權限錯誤,您可以停用限制,改回使用預設服務帳戶。檢查並更新 Cloud Storage bucket 權限後,即可再次啟用限制。