当数据由 firebase-admin 写入时,使用规则验证 Firebase
Validate Firebase with rules when data is written by firebase-admin
据我了解,admin.initializeApp()
使用的默认帐户具有编辑权限,这似乎无视所有验证和权限规则
我错过了什么吗?在写入 Firebase 时让默认服务帐户(即写入 Firebase 的服务器进程)完全绕过规则似乎没有意义。特别是因为这是示例和文档中记录的方式,并且规则模拟器给出零指示这些规则将不会在某些帐户上强制执行
我的上下文是一个将某些内容推送回 Firebase 的 Cloud Function,我希望能够使用 .validate
对其进行验证
正如您已经发现的那样,Firebase Admin SDK 以管理权限运行,这会绕过所有安全规则。来自 documentation on getting started with the Firebase Admin SDK:
The Admin SDK lets you interact with Firebase from privileged environments to perform actions like:
- Read and write Realtime Database data with full admin privileges.
这里的逻辑是您使用 Admin SDK 的代码在受信任的环境中运行,您可以相信代码是您编写的,因此会按照您的规范运行。
目前无法在强制执行安全规则的同时使用 Admin SDK。我建议你 file a feature request.
请注意,您想要的 是 可以使用实时数据库实现的,如 Authenticate with limited privileges 所示。
对于 Firestore,您可以在 Cloud Identity and Access Management 控制台中控制某些访问权限。见 documentation on securing your data.
据我了解,admin.initializeApp()
使用的默认帐户具有编辑权限,这似乎无视所有验证和权限规则
我错过了什么吗?在写入 Firebase 时让默认服务帐户(即写入 Firebase 的服务器进程)完全绕过规则似乎没有意义。特别是因为这是示例和文档中记录的方式,并且规则模拟器给出零指示这些规则将不会在某些帐户上强制执行
我的上下文是一个将某些内容推送回 Firebase 的 Cloud Function,我希望能够使用 .validate
正如您已经发现的那样,Firebase Admin SDK 以管理权限运行,这会绕过所有安全规则。来自 documentation on getting started with the Firebase Admin SDK:
The Admin SDK lets you interact with Firebase from privileged environments to perform actions like:
- Read and write Realtime Database data with full admin privileges.
这里的逻辑是您使用 Admin SDK 的代码在受信任的环境中运行,您可以相信代码是您编写的,因此会按照您的规范运行。
目前无法在强制执行安全规则的同时使用 Admin SDK。我建议你 file a feature request.
请注意,您想要的 是 可以使用实时数据库实现的,如 Authenticate with limited privileges 所示。
对于 Firestore,您可以在 Cloud Identity and Access Management 控制台中控制某些访问权限。见 documentation on securing your data.