Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 使用Firestore进行端到端加密_Firebase_Google Cloud Functions_Google Cloud Firestore - Fatal编程技术网

Firebase 使用Firestore进行端到端加密

Firebase 使用Firestore进行端到端加密,firebase,google-cloud-functions,google-cloud-firestore,Firebase,Google Cloud Functions,Google Cloud Firestore,在Firestore中是否有任何加密数据的推荐方法?即使Firestore在默认情况下加密数据,管理员仍然可以在控制台中读取数据。我希望让数据只被允许解密的用户读取。因此,它在控制台中无法读取 我认为可能的一种方法是使用云功能,但在数据保存到磁盘之前(在写入挂钩之前),我找不到如何修改数据。控制对Firestore(或实时数据库)中所有数据的所有访问的唯一方法是在原始数据本身被传递到执行写操作的客户端API或SDK之前对其执行加密 在写操作实际提交到具有云功能的存储之前,不可能钩住它们。函数仅在

在Firestore中是否有任何加密数据的推荐方法?即使Firestore在默认情况下加密数据,管理员仍然可以在控制台中读取数据。我希望让数据只被允许解密的用户读取。因此,它在控制台中无法读取


我认为可能的一种方法是使用云功能,但在数据保存到磁盘之前(在写入挂钩之前),我找不到如何修改数据。

控制对Firestore(或实时数据库)中所有数据的所有访问的唯一方法是在原始数据本身被传递到执行写操作的客户端API或SDK之前对其执行加密

在写操作实际提交到具有云功能的存储之前,不可能钩住它们。函数仅在成功写入数据后才会接收事件


此外,请记住,如果在数据到达API之前对其进行加密,则无法使用该数据进行搜索和排序,因为它将不再以任何方式表示原始数据。您所能做的就是通过文档/位置的唯一密钥访问文档/位置(假设该密钥也未加密,或者加密的id是(加密的)通过另一个安全通道在双方之间共享。

在将客户端设备上的数据写入Firestore之前,您需要对其进行加密。当另一个设备读取数据时,对其进行解密

密钥管理是您需要花费一些时间来实现的:两台设备上的用户都需要本地拥有私钥,其他用户可以使用公钥来加密消息。然后,您需要创建一个数据加密密钥来加密/解密聊天室中的消息。此数据加密密钥,您将使用参与用户的公钥。和所有密钥,存储在Firebase中,加密

查看以下两个示例应用程序,了解Firestore聊天应用程序示例:

  • iOS:
  • 安卓:

David

谢谢。我不想执行搜索和对加密数据进行排序。例如,存储私人笔记。仍然可以按标题或元数据进行搜索。因此,基本上,加密必须在firebase之外进行,并以加密方式存储。不完全正确,您仍然可以按加密搜索项搜索数据,以查找相同的运算符。我正在查找相同的解决方案,@alexndm您是否找到了解决方案。我没有找到任何好的解决方案。所有问题都指向手动实施加密。我希望Firestore/GCP有一个选项和一个服务来实现这一点。与KMS一样,但对于数据…如何使用多个用户密钥加密聊天室密钥?是否需要按特定顺序加密?