身分與存取權管理 (IAM)

使用 Identity and Access Management (IAM) 管理資源存取權。 IAM 可讓您以更精細的方式授予特定 Google Cloud資源的存取權,避免其他資源遭到未經授權者擅自存取。本頁面說明 Firestore 的 IAM 權限和角色。如需 IAM 的詳細說明,請參閱 IAM 說明文件

IAM 可讓您採取最低權限的安全性原則,僅將必要的資源存取權限授予使用者。

設定 IAM 政策之後,即可控管哪些使用者具備何種角色權限,可以存取哪些資源。身分與存取權管理政策可將一或多個角色授予使用者,讓對方擁有特定權限。舉例來說,您可以將 datastore.indexAdmin 角色授予使用者,讓該使用者能夠建立、修改、刪除、列出或查看索引。

權限與角色

本節概述 Firestore 支援的權限與角色。

API 方法的所需權限

下表列出呼叫者執行各項操作時必須具備的權限:

方法 所需權限
projects.databases.MongoDBCompatible
ListDatabases datastore.databases.getMetadata
ListIndexes datastore.indexes.list
Find datastore.entities.get
datastore.entities.list
Aggregate datastore.entities.get
datastore.entities.list
GetMore

與建立游標的呼叫項目所需的權限相同。

ListCollections datastore.entities.list
Count datastore.entities.list
Distinct datastore.entities.get
datastore.entities.list
CommitTransaction datastore.databases.get
AbortTransaction datastore.databases.get
EndSessions datastore.databases.get
KillCursors datastore.databases.get
Insert datastore.entities.create
Update datastore.entities.get
datastore.entities.list
datastore.entities.update
datastore.entities.create (僅適用於 upsert)
FindAndModify datastore.entities.get
datastore.entities.list
datastore.entities.update (僅適用於取代或更新)
datastore.entities.create (僅適用於 upsert)
datastore.entities.delete (僅適用於刪除)
CreateCollection datastore.entities.create
projects.databases.indexes
create datastore.indexes.create
delete datastore.indexes.delete
get datastore.indexes.get
list datastore.indexes.list
projects.databases
create datastore.databases.create
delete datastore.databases.delete
get datastore.databases.getMetadata
list datastore.databases.list
patch datastore.databases.update
restore datastore.backups.restoreDatabase
projects.locations
get datastore.locations.get
list datastore.locations.list
projects.databases.backupschedules
get datastore.backupSchedules.get
list datastore.backupSchedules.list
create datastore.backupSchedules.create
update datastore.backupSchedules.update
delete datastore.backupSchedules.delete
projects.locations.backups
get datastore.backups.get
list datastore.backups.list
delete datastore.backups.delete
projects.databases.usercreds
get datastore.userCreds.get
list datastore.userCreds.list
create datastore.userCreds.create
enable datastore.userCreds.update
disable datastore.userCreds.update
resetPassword datastore.userCreds.update
delete datastore.userCreds.delete

預先定義的角色

若使用 IAM,Firestore 中的每一種 API 方法均要求提出 API 要求的帳戶必須具備使用該項資源的適當權限。只要設定政策將角色授予使用者、群組或服務帳戶,即可授予權限。除了原始角色 (即擁有者、編輯者和檢視者) 外,您還可以將 Firestore 角色授予專案使用者。

下表列出 Firestore IAM 角色。您可以將多個角色授予使用者、群組或服務帳戶。

角色 權限 說明
roles/datastore.owner appengine.applications.get

datastore.*

resourcemanager.projects.get
resourcemanager.projects.list
具備 Firestore 的完整存取權。
roles/datastore.user appengine.applications.get

datastore.databases.get
datastore.databases.getMetadata
datastore.databases.list
datastore.entities.*
datastore.indexes.list
datastore.namespaces.get
datastore.namespaces.list
datastore.statistics.get
datastore.statistics.list

resourcemanager.projects.get
resourcemanager.projects.list
在 Firestore 資料庫讀取/寫入資料的存取權。適用於應用程式開發人員和服務帳戶。
roles/datastore.viewer appengine.applications.get

datastore.databases.get
datastore.databases.getMetadata
datastore.databases.list
datastore.entities.get
datastore.entities.list
datastore.indexes.get
datastore.indexes.list
datastore.namespaces.get
datastore.namespaces.list
datastore.statistics.get
datastore.statistics.list

resourcemanager.projects.get
resourcemanager.projects.list
具備所有 Firestore 資源的讀取權限。
roles/datastore.indexAdmin appengine.applications.get

datastore.databases.getMetadata

datastore.indexes.*

resourcemanager.projects.get
resourcemanager.projects.list
具備管理索引定義的完整權限。
roles/datastore.backupSchedulesViewer datastore.backupSchedules.get
datastore.backupSchedules.list
具備 Firestore 資料庫備份排程的讀取權限。
roles/datastore.backupSchedulesAdmin datastore.backupSchedules.get
datastore.backupSchedules.list
datastore.backupSchedules.create
datastore.backupSchedules.update
datastore.backupSchedules.delete
datastore.databases.list
datastore.databases.getMetadata
具備 Firestore 資料庫備份排程的完整存取權。
roles/datastore.backupsViewer datastore.backups.get
datastore.backups.list
具備 Firestore 位置備份資訊的讀取權限。
roles/datastore.backupsAdmin datastore.backups.get
datastore.backups.list
datastore.backups.delete
具備 Firestore 位置中備份的完整存取權。
roles/datastore.restoreAdmin datastore.backups.get
datastore.backups.list
datastore.backups.restoreDatabase
datastore.databases.list
datastore.databases.create
datastore.databases.getMetadata
datastore.operations.list
datastore.operations.get
能夠將 Firestore 備份還原至新資料庫。這個角色也能建立新資料庫,不一定要從備份還原。
roles/datastore.statisticsViewer resourcemanager.projects.get
resourcemanager.projects.list
datastore.databases.getMetadata
datastore.insights.get
datastore.keyVisualizerScans.get
datastore.keyVisualizerScans.list
datastore.statistics.list
datastore.statistics.get
具備深入分析資訊、統計資料和 Key Visualizer 掃描作業的讀取權限。
roles/datastore.userCredsViewer datastore.userCreds.get
datastore.userCreds.list
具備 Firestore 資料庫中使用者憑證的讀取權限。
roles/datastore.userCredsAdmin datastore.userCreds.get
datastore.userCreds.list
datastore.userCreds.create
datastore.userCreds.update
datastore.userCreds.delete
datastore.databases.list
datastore.databases.getMetadata
具備 Firestore 資料庫中使用者憑證的完整存取權限。

自訂角色

如果預先定義的角色無法滿足您的業務需求,您可以使用自訂角色,並設定這些角色的權限:

建立及管理標記所需的角色

如果任何標籤出現在建立或還原動作中,則需要某些角色。如要進一步瞭解如何建立標記鍵/值組合,然後將其與資料庫資源建立關聯,請參閱「建立及管理標記」。

必須具備下列權限。

查看代碼
  • datastore.databases.listTagBindings
  • datastore.databases.listEffectiveTags
管理資源標記

您必須具備下列權限,才能為資料庫資源附加標記值。

  • datastore.databases.createTagBinding

權限

下表列出 Firestore 支援的權限。

資料庫權限名稱 說明
datastore.databases.get 開始或復原交易。
datastore.databases.getMetadata 自資料庫讀取中繼資料。
datastore.databases.list 列出專案中的資料庫。
datastore.databases.create 建立資料庫。
datastore.databases.update 更新資料庫。
datastore.databases.delete 刪除資料庫。
datastore.databases.createTagBinding 為資料庫建立標記繫結。
datastore.databases.deleteTagBinding 刪除資料庫的標記繫結。
datastore.databases.listTagBindings 列出資料庫的所有標記繫結。
datastore.databases.listEffectiveTagBindings 列出資料庫的有效標記繫結。
實體權限名稱 說明
datastore.entities.create 建立文件。
datastore.entities.delete 刪除文件。
datastore.entities.get 閱讀文件。
datastore.entities.list 列出專案中的文件名稱。
(您必須擁有 datastore.entities.get 才能存取文件資料)。
datastore.entities.update 更新文件。
索引權限名稱 說明
datastore.indexes.create 建立索引。
datastore.indexes.delete 刪除索引。
datastore.indexes.get 自索引讀取中繼資料。
datastore.indexes.list 列出專案中的索引。
datastore.indexes.update 更新索引。
作業權限名稱 說明
datastore.operations.cancel 取消長時間執行的作業。
datastore.operations.delete 刪除長時間執行的作業。
datastore.operations.get 取得長時間執行的作業的最新狀態。
datastore.operations.list 列出長時間執行的作業。
專案權限名稱 說明
resourcemanager.projects.get 瀏覽專案中的資源。
resourcemanager.projects.list 列出擁有的專案。
位置存取權名稱 說明
datastore.locations.get 取得資料庫位置的詳細資料。建立新資料庫時必須提供。
datastore.locations.list 列出可用的資料庫位置。建立新資料庫時必須提供。
Key Visualizer 權限名稱 說明
datastore.keyVisualizerScans.get 取得 Key Visualizer 掃描的詳細資料。
datastore.keyVisualizerScans.list 列出可用的 Key Visualizer 掃描作業。
備份排程權限名稱 說明
datastore.backupSchedules.get 取得備份排程的詳細資料。
datastore.backupSchedules.list 列出可用的備份排程。
datastore.backupSchedules.create 建立備份時間表。
datastore.backupSchedules.update 更新備份排程。
datastore.backupSchedules.delete 刪除備份排程。
備份權限名稱 說明
datastore.backups.get 取得備份的詳細資料。
datastore.backups.list 列出可用的備份。
datastore.backups.delete 刪除備份。
datastore.backups.restoreDatabase 從備份還原資料庫。
洞察權限名稱 說明
datastore.insights.get 取得資源的深入分析
使用者憑證權限名稱 說明
datastore.userCreds.get 取得使用者憑證的詳細資料。
datastore.userCreds.list 列出可用的使用者憑證。
datastore.userCreds.create 建立使用者憑證。
datastore.userCreds.update 啟用或停用使用者憑證,或重設使用者密碼。
datastore.userCreds.delete 刪除使用者憑證。

角色變更延遲

Firestore 快取 IAM 權限的時間是 5 分鐘,因此,角色變更約需 5 分鐘才會生效。

管理 Firestore IAM

您可以使用 Google Cloud 主控台、IAM API 或 gcloud 指令列工具取得及設定 IAM 政策。詳情請參閱授予、變更及撤銷專案成員存取權限的說明

設定條件式存取權限

您可以使用 IAM 條件定義及強制執行條件式存取權控管。

舉例來說,下列條件會指派主體 datastore.user 角色,直到指定日期為止:

{
  "role": "roles/datastore.user",
  "members": [
    "user:travis@example.com"
  ],
  "condition": {
    "title": "Expires_December_1_2023",
    "description": "Expires on December 1, 2023",
    "expression":
      "request.time < timestamp('2023-12-01T00:00:00.000Z')"
  }
}

如要瞭解如何定義暫時存取權的 IAM 條件,請參閱設定暫時存取權

如要瞭解如何為一或多個資料庫的存取權設定 IAM 條件,請參閱「設定資料庫存取條件」。

後續步驟