转到控制台

服务器客户端库的安全性

使用 Cloud Firestore 的服务器客户端库时,您可以使用身份和访问权限管理 (IAM) 来管理对您的资源的访问权限。IAM 允许您为特定 Google Cloud Platform 资源指定更细化的访问权限,同时防止对其他资源的不必要访问。本页面介绍 Cloud Firestore 的 IAM 权限和角色。如需更详细的 Cloud IAM 说明,请参阅 IAM 文档

IAM 允许您采用最小权限安全原则,因此您只需授予对您的资源的必要访问权限即可。

IAM 允许您通过设置 IAM 策略来控制谁(用户)哪些资源具有什么(角色)权限。您可以使用 IAM 策略向用户授予一个或多个角色,给予用户某些权限。例如,您可以向用户授予 datastore.indexAdmin 角色,允许用户创建、修改、删除、列出或查看索引。

权限和角色

本部分概况了 Cloud Firestore 支持的权限和角色。

所需的权限

下表列出了调用者执行各个操作所必需的权限:

方法 所需权限
projects.databases.documents
batchGet datastore.entities.get
beginTransaction datastore.databases.get
在将 exists 前提条件设置为 false 的情况下,commit 更新或转换 datastore.entities.create
在将 exists 前提条件设置为 true 的情况下,commit 更新或转换 datastore.entities.update
在不设置任何前提条件的情况下,commit 更新或转换 datastore.entities.create
datastore.entities.update
commit 删除 datastore.entities.delete
createDocument datastore.entities.create
delete datastore.entities.delete
get datastore.entities.get
list datastore.entities.get
datastore.entities.list
listCollectionIds datastore.entities.list
patch datastore.entities.update
rollback datastore.databases.get
runQuery datastore.entities.get
datastore.entities.list
在将 exists 前提条件设置为 false 的情况下,write 更新或转换 datastore.entities.create
在将 exists 前提条件设置为 true 的情况下,write 更新或转换 datastore.entities.update
在不设置任何前提条件的情况下,write 更新或转换 datastore.entities.create
datastore.entities.update
write 删除 datastore.entities.delete
projects.databases.indexes
create datastore.indexes.create
delete datastore.indexes.delete
get datastore.indexes.get
list datastore.indexes.list

角色

有了 IAM,Cloud Firestore 中的每个 API 方法都要求提出 API 请求的帐号具有使用相应资源的适当权限。您可以通过设置向用户、群组或服务帐号授予角色的策略来授予权限。除了所有者、编辑者和查看者这些基本角色外,您还可以向您的项目的用户授予 Cloud Firestore 角色。

下表列出了 Cloud Firestore IAM 角色。您可以向用户、群组或服务帐号授予多个角色。

角色 权限 说明
roles/datastore.owner appengine.applications.get

datastore.*

resourcemanager.projects.get
resourcemanager.projects.list
对 Cloud Firestore 拥有完全访问权限。
roles/datastore.user appengine.applications.get

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

resourcemanager.projects.get
resourcemanager.projects.list
对 Cloud Firestore 数据库中的数据拥有读/写权限。适用于应用开发者和服务帐号。
roles/datastore.viewer appengine.applications.get

datastore.databases.get
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
对所有 Cloud Firestore 资源拥有读取权限。
roles/datastore.indexAdmin appengine.applications.get

datastore.indexes.*

resourcemanager.projects.get
resourcemanager.projects.list
拥有管理索引定义所需的完全访问权限。

权限

下表列出了 Cloud Firestore 支持的权限。

数据库权限名称 说明
datastore.databases.create 创建数据库。
datastore.databases.delete 删除数据库。
datastore.databases.get 开始或回滚事务。
从数据库中读取元数据。
datastore.databases.getIamPolicy 读取数据库的 IAM 政策。
datastore.databases.list 列出项目中的数据库。
datastore.databases.setIamPolicy 更新数据库的 IAM 策略。
datastore.databases.update 更新数据库。
实体权限名称 说明
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 更新索引。
项目权限名称 说明
resourcemanager.projects.get 浏览项目中的资源。
resourcemanager.projects.list 列出拥有的项目。

角色更改延迟时间

Cloud Firestore 会将 IAM 权限缓存 5 分钟,因此角色更改最多需要 5 分钟才会生效。

管理 Cloud Firestore IAM

您可以使用 Google API 控制台、IAM API 或 gcloud 命令行工具获取和设置 IAM 策略。如需了解详情,请参阅授予、更改和撤消项目成员的访问权限

后续步骤