従来、セキュリティはアプリ開発の最も複雑な部分の 1 つです。ほとんどのアプリケーションでは、開発者は、認証 (ユーザーが誰であるか) と承認 (ユーザーができること) を処理するサーバーを構築して実行する必要があります。認証と承認は、セットアップが難しく、正しく行うのが難しく、製品の成功に不可欠です。
Firebase Authentication によってユーザーの認証が容易になるのと同様に、Firebase Security Rules for Cloud Storage によって、ユーザーの承認とリクエストの検証が容易になります。 Cloud Storage セキュリティ ルールは、パス ベースの権限を指定できるようにすることで複雑さを管理します。わずか数行のコードで、Cloud Storage リクエストを特定のユーザーに制限したり、アップロードのサイズを制限したりする承認ルールを記述できます。
Firebase Realtime Database には、 Firebase Realtime Database ルールと呼ばれる同様の機能があります。
認証
ユーザーが誰であるかを知ることは、アプリケーションを構築する上で重要な部分です。Firebase Authentication は、使いやすく安全なクライアント側のみの認証ソリューションを提供します。 Cloud Storage の Firebase セキュリティ ルールは、ユーザー ベースのセキュリティのために Firebase Authentication と結びついています。ユーザーが Firebase Authentication で認証されると、Cloud Storage セキュリティ ルールのrequest.auth
変数は、ユーザーの一意の ID ( request.auth.uid
) とトークン内の他のすべてのユーザー情報 ( request.auth.token
) を含むオブジェクトになります。 .ユーザーが認証されていない場合、 request.auth
はnull
です。これにより、ユーザーごとにデータ アクセスを安全に制御できます。詳細については、認証セクションをご覧ください。
認可
ユーザーの識別は、セキュリティの一部に過ぎません。彼らが誰であるかがわかったら、Cloud Storage 内のファイルへのアクセスを制御する方法が必要です。
Cloud Storage を使用すると、サーバー上にあるファイルごとおよびパスごとの承認ルールを指定して、アプリ内のファイルへのアクセスを決定できます。たとえば、デフォルトの Cloud Storage セキュリティ ルールでは、すべてのファイルに対してread
またはwrite
操作を実行するために、Firebase Authentication が必要です。
service firebase.storage { match /b/{bucket}/o { match /{allPaths=**} { allow read, write: if request.auth != null; } } }
これらのルールを編集するには、 Firebase コンソールで Firebase アプリを選択し、[ストレージ] セクションの [ Rules
] タブを表示します。
データ検証
Cloud Storage の Firebase セキュリティ ルールは、データの検証にも使用できます。これには、ファイル名とパス、およびcontentType
やsize
などのファイル メタデータ プロパティの検証が含まれます。
service firebase.storage { match /b/{bucket}/o { match /images/{imageId} { // Only allow uploads of any image file that's less than 5MB allow write: if request.resource.size < 5 * 1024 * 1024 && request.resource.contentType.matches('image/.*'); } } }