2017-03-22 24 views
2

Firebaseのクラウドファンクションが特定の場所にデータを書き込むことを許可するルールでデータベースを保護するには、以前はadminクライアントdatabaseAuthVariableOverrideにuidを追加するオプションがありました。規則セクションでは、今私たちはadmin.initializeApp(functions.config().firebase);経由で初期化ので、私は、追加のparamsを追加する方法について確認していないよ。Firebaseのクラウド機能にのみ書き込みアクセスを許可する

EDIT ではなく、このために証明書を使用して開始することをお勧めしますか?すなわちadmin.initializeApp(functions.config().firebase)が終わっ以上持っているとfunctions.config()が実際のデータを取得しているところ、この単なるノードモジュールではないんどのような利点

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

答えて

10

通常、あなたのクラウド機能コードの先頭に、あなたが持っている:

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

firebase-functionsノードモジュールの一環として、あなたはあなたがする必要があるすべてのものを持っているオブジェクトだけであるfunctions.config().firebaseへのアクセス権を持っていますデータベースURLと認証情報の実装(Application Default Credentialsに基づいて)を含むAdmin SDKを初期化します。あなたのコードにconsole.log(functions.config().firebase)があるならば、あなたはこれらのプロパティを持つオブジェクトであり、あなたのコードで使うことができるいくつかのものだけであることがわかります。

このオブジェクトにdatabaseAuthVariableOverrideを追加すると、limit the Admin SDK's privilegesに追加できます。あなただけのオブジェクト自体を上書きすることができます。

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); 
+0

IIRC、 'Object.assignへの引数の順序() 'が重要です。まれに、 'functions.config()。firebase'に' databaseAuthVariableOverride'プロパティが含まれていると、あなたが上で指定したものを上書きします。 'Object.assign({}、functions.config()。firebase、{/ *あなたの上書きする値* /}) 'を使うことをお勧めします。 – samthecodingman

+0

代わりにカスタムサービスワーカーの証明書で管理者を開始することをお勧めしますか? – Ilja

+0

@Ilja - できることですが、 'functions.config()。firebase'で提供されている資格情報を使ってこれを行うと利点はありません。そして、それはあなた自身のサービスアカウントキーファイルを管理する必要があります。これは一般に悪い習慣です。 @samthecodingman - チップをありがとう。コードサンプルを更新しました。 – jwngr

関連する問題