web-dev-qa-db-ja.com

Firebase Cloud StorageルールはFirestoreデータに対して検証できますか?

Firestoreデータを使用して、Firebase Cloud Storageでホストされているファイルへのアクセスを許可または制限できますか?

Firebaseセキュリティルールとして使用したいものの例

allow write: if get(/databases/mydbname/documents/guilds/$(guildID)).data.users[(request.auth.uid)] in ["Admin", "Member"];
16
Remi

現在、別の製品のセキュリティルール内からさまざまなFirebase製品にアクセスする方法はありません。参照: Firebaseストレージルールでユーザーの役割を認証する方法はありますか?

しかし、ユーザーのグループメンバーシップを確認しようとしているようです。そのグループメンバーシップをデータベースで検索する代わりに、いわゆるカスタムクレームとしてモデル化することをお勧めします。データベースにメンバーシップを書き込む代わりに(またはそれに加えて)、 Firebase Admin SDKを使用して「ユーザー{uid}はグループ{guild1}のメンバーです」というクレームをユーザープロファイルに設定します =:

admin.auth().setCustomUserClaims(uid, {guild1: true}).then(() => {
  // The new custom claims will propagate to the user's ID token the
  // next time a new one is issued.
});

これが完了すると、セキュリティルールでギルドメンバーシップを確認できます。

allow read: if request.auth.token.guild1 == true;

(ギルドメンバーシップをマップとしてモデル化できるかどうか/どのようにモデル化できるかはわかりません。その場合は、この回答を更新します。)

11