fujiokayu / S4

simple serverless secure storage
MIT License
1 stars 0 forks source link

Should: new application for administrator #16

Closed fujiokayu closed 3 years ago

fujiokayu commented 3 years ago

セキュリティを考慮した実装については以下のドキュメントが参考になる。 7 tips on Firebase security rules and the Admin SDK

fujiokayu commented 3 years ago

Custom claim の付与を bc767fcb065dc762bf0a15ecdb19090535953265 で、admin 向けの権限を 0925331e1287d6a5f3189bbd53a76a3cf3f9a106 と 50940b7d285a1c45786bb3c5357a911e5dbdff9d で 実装。

admin の場合複数のフォルダを表示する際にもっと見やすくしたいが、権限管理をバックエンドで行っているため UI に権限の概念を持ち込むと性能面で懸念がある。

fujiokayu commented 3 years ago

admin の場合複数のフォルダを表示する際にもっと見やすくしたいが、権限管理をバックエンドで行っているため UI に権限の概念を持ち込むと性能面で懸念がある。

性能面以上にセキュリティの懸念もある。CloudStorage の SecurityRule でほとんど対処可能だと思うが、運用で誤って Access Token を発行した場合に露出しないかを懸念している。 一旦は Admin custom claim を使って(見づらいけど)運用し、利用者が増えてファイルがの判別が難しくなってきたら管理者用アプリを開発するのが良いだろう。

fujiokayu commented 3 years ago

custom claim を使って Admin UI を 0dc13aed5bf5c0d62190ddadcc18de5ef5171d8d で実装。 Controlling Data Access Using Firebase Auth Custom Claims を読んだが、クライアント上で admin かどうかを判断して分岐するのはセキュアではないが、SecurityRule でちゃんと防げばクライアント側の制御を迂回されてもアプリは正常に動作しないようにしていればセキュリティ上の懸念はクリアできる。

administorators ドキュメントと invite ドキュメントを間違って更新したら問題が起こり得るが、administorators は一度登録したら Read \ Write を false にしておくのでも良い。