具有服务帐户的 Firestore 中的精细权限
Granular permissions in Firestore with service accounts
我正在编写一个从诊断包中收集信息的工具。此工具的结果将写入 Firestore 以供分析。该工具以 Python 编写并作为一个包分发,包括用于服务帐户的 .json。该服务帐户用于对数据库的读取和写入进行身份验证。以下是每个包中使用的数据库组件的片段:
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
cred=credentials.Certificate(os.path.join(os.path.dirname(os.path.abspath(__file__), 'name_of_file.json'))
firebase_admin.initialize_app(cred)
db = firestore.client()
我希望缩小对 Firestore 的权限,因为目前,所有拥有这些凭据的用户都可以完全访问 Firestore。查看文档,这似乎是不可能的:
Code that uses the Firebase Admin SDK with a service account to access Firestore currently can not be scoped to a particular user ID for the purpose of enforcing security rules. All access with the Admin SDK will bypass security rules and have full control of the database.
有人知道这种用例的解决方法吗?作为替代方案,是否可以 "hard code" 一个 Firebase 用户帐户?如果是这样,最直接的实施方式是什么?
如果有什么我可以澄清的,请告诉我,我是 Firebase 的新手,所以我可能会走完全错误的方向!
谢谢!
Firestore 目前无法将使用服务帐户的连接限定为某些有限权限。使用 Admin SDK 时,您将始终拥有对整个数据库的完全读写访问权限。这是一项普遍要求的功能,如果这对您也有用,您应该 file a feature request。
我正在编写一个从诊断包中收集信息的工具。此工具的结果将写入 Firestore 以供分析。该工具以 Python 编写并作为一个包分发,包括用于服务帐户的 .json。该服务帐户用于对数据库的读取和写入进行身份验证。以下是每个包中使用的数据库组件的片段:
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
cred=credentials.Certificate(os.path.join(os.path.dirname(os.path.abspath(__file__), 'name_of_file.json'))
firebase_admin.initialize_app(cred)
db = firestore.client()
我希望缩小对 Firestore 的权限,因为目前,所有拥有这些凭据的用户都可以完全访问 Firestore。查看文档,这似乎是不可能的:
Code that uses the Firebase Admin SDK with a service account to access Firestore currently can not be scoped to a particular user ID for the purpose of enforcing security rules. All access with the Admin SDK will bypass security rules and have full control of the database.
有人知道这种用例的解决方法吗?作为替代方案,是否可以 "hard code" 一个 Firebase 用户帐户?如果是这样,最直接的实施方式是什么?
如果有什么我可以澄清的,请告诉我,我是 Firebase 的新手,所以我可能会走完全错误的方向!
谢谢!
Firestore 目前无法将使用服务帐户的连接限定为某些有限权限。使用 Admin SDK 时,您将始终拥有对整个数据库的完全读写访问权限。这是一项普遍要求的功能,如果这对您也有用,您应该 file a feature request。