一尘不染

只允许对Firebase的Cloud Functions进行写访问

node.js

我们如何能够通过只允许火力地堡云功能将数据写入到特定位置的规则安全数据库,以前有以UID添加到管理客户机的选择databaseAuthVariableOverride和使用规则节UID,但现在我们通过初始化admin.initializeApp(functions.config().firebase);,所以我不确定如何添加其他参数。

编辑 是为此发起证书的好主意吗?即

admin.initializeApp({
  credential: admin.credential.cert("/path-to-cert"),
  databaseURL: "database-url",
  databaseAuthVariableOverride: { uid: "some-id" }
});

admin.initializeApp(functions.config().firebase)上面有什么好处,functions.config()实际上是从哪里获取数据,这不只是节点模块吗?


阅读 175

收藏
2020-07-07

共1个答案

一尘不染

通常,在Cloud Functions代码的顶部,您具有:

var functions = require('firebase-functions');

作为firebase- functions节点模块的一部分,您可以访问,functions.config().firebase它只是一个对象,它具有初始化Admin
SDK所需的一切,包括数据库URL和凭据实现(基于Application Default
Credentials)。如果您console.log(functions.config().firebase)在代码中,将看到它只是具有这些属性的对象,以及可能要在代码中使用的其他一些对象。

您可以添加databaseAuthVariableOverride到此对象以限制Admin
SDK的特权
。您可以覆盖对象本身:

var firebaseConfig = functions.config().firebase;
firebaseConfig.databaseAuthVariableOverride = {
  uid: 'some-uid',
  foo: true,
  bar: false
};
admin.initializeApp(firebaseConfig);

或者,您可以使用类似的Object.assign()方法将相关详细信息复制到新对象中:

var firebaseConfig = Object.assign({}, functions.config().firebase, {
  databaseAuthVariableOverride: {
    uid: 'some-uid',
    foo: true,
    bar: false
  }
});
admin.initializeApp(firebaseConfig);
2020-07-07