TL

Cloud Service

Cloud Storage for Firebase

モバイル/Web アプリから直接ファイルを安全にアップロード・ダウンロードでき、サーバーを書かずに済む。Firebase Security Rules で認可し、不安定回線でも再開できる Cloud Storage for Firebase。AWS の Amplify Storage(S3)に相当。

基礎セキュリティ信頼性運用上の優秀性
最終更新: 2026-06-28公式ドキュメント ↗
TL;DR要点だけ先に
  • 1.クライアント SDK から直接 Cloud Storage のバケットへ読み書きできるマネージドストレージ。
  • 2.認可は Firebase Security Rules、認証は Firebase Authentication と連携して宣言的に制御。
  • 3.実体は Cloud Storage のバケット。サーバー側からは gcloud や各言語 Admin SDK でも操作できる。

解決する課題

写真・動画・ユーザー生成ファイルを扱うアプリで、アップロード用のサーバーや署名処理を自前で作らずに、クライアントから直接かつ安全にファイルを保存できます。

  • 画像・動画・音声などのユーザー生成コンテンツを、独自バックエンドを書かずに保存
  • モバイル/Web のクライアント SDK から直接アップロード/ダウンロードできる
  • 電波が不安定でもアップロード/ダウンロードを自動で再開(中断に強い)
  • Firebase Authentication のユーザーSecurity Rulesで、ファイル単位の認可を宣言的に記述

主要概念と用語

  • バケット: ファイルを入れる入れ物。実体は Cloud Storage のバケットで、Firebase プロジェクトに既定バケットが 1 つ用意される(追加バケットも利用可)
  • 参照(reference): バケット内のファイルやフォルダを指すポインタ。gs://バケット名/パス または HTTPS の形で表す
  • Firebase Security Rules: パスごとに read/write を許可/拒否する宣言的なルール言語。認可はサーバーコードではなくこのルールで行う
  • Firebase Authentication 連携: ルール内で request.auth を参照し、ログイン中ユーザーや UID 単位でアクセス制御できる
  • メタデータ: 各ファイルに付く contentType(MIME タイプ)、サイズ、作成日時、カスタムメタデータなど
  • アップロードタスク: 進捗・一時停止・再開・キャンセルを扱える、再開可能アップロードの単位
  • ダウンロード URL: クライアントから共有できる、トークン付きの HTTPS ダウンロードリンク(取り消し可能)
  • Admin SDK / サーバーアクセス: サーバー側は Google Cloud の認証情報で同じバケットを直接操作できる

仕様・制限・クォータ

  • 実体が Cloud Storage のため、1 ファイル最大 5TiB など Cloud Storage 本体の上限・耐久性を引き継ぐ
  • 認可は Security Rules が基本。ルールは既定で拒否寄りで、明示的に許可しない限りアクセスできない
  • クライアントからの認可は Security Rules、サーバー側(Admin SDK 等)からのアクセスは Cloud IAM に従う(Security Rules はサーバーアクセスには適用されない)
  • 既定バケットは Firebase プロジェクト作成時のロケーション設定に従う。ロケーションは後から変更できないため、最初の選定が重要
  • アップロード/ダウンロードは再開可能で、ネットワーク中断後に途中から続行できる
  • Security Rules の評価には複雑さの上限があり、ルールはなるべく単純に保つ
  • リクエスト数や帯域などの実数値・上限はプロジェクト設定や時期で変わるため、最新値は公式を参照

内部の仕組み

Cloud Storage for Firebase は、Cloud Storage のバケットに対してクライアント向けの認可レイヤーと SDK を載せたものです。クライアントは Firebase の SDK から直接バケットへ接続し、リクエストごとに Firebase Authentication のトークンと Security Rules が照合されて許可/拒否が決まります。

  • クライアント SDK はファイルパス(参照)への read/write を発行し、Security Rulesrequest.auth やパス・メタデータを見て判定する
  • ファイルの実体・冗長化・暗号化・耐久性は下位の Cloud Storage がそのまま担う
  • サーバー側(Admin SDK や gcloud)からのアクセスは Security Rules を経由せず、Cloud IAM の権限で同じバケットを操作する
  • アップロード/ダウンロードは分割転送で行われ、中断時は完了済みの部分を引き継いで再開する
Security Rules はクライアント経路にだけ効く

Security Rules はクライアント SDK 経由のアクセスを制御するためのものです。Admin SDK・gcloud・サーバーコードからのアクセスには適用されず、そこでは Cloud IAM が効きます。両方の経路を前提に権限設計してください。

設計パターン / ベストプラクティス

  • ユーザーごとのパス分離: user/{uid}/... のようにパスへ UID を含め、ルールで request.auth.uid と一致するパスだけ許可する
  • メタデータでバリデーション: ルールで request.resource.size(サイズ)や request.resource.contentType(MIME タイプ)を検査し、巨大ファイルや想定外形式を拒否
  • 重い後処理はサーバーへ: サムネ生成や変換は、アップロードをCloud Functions / Eventarc でトリガーし、Cloud Run などで非同期処理
  • 公開配信は分離: 公開してよいファイルは専用パス/バケットに分け、非公開データと混在させない
  • オフライン耐性: モバイルでは再開可能アップロードを前提に、進捗表示・一時停止・再開の UI を用意する

運用・監視

  • バケットは Cloud Storage の実体なので、Cloud Monitoring で容量・リクエスト数・エラー率を可視化できる
  • Cloud Audit Logs でアクセスを監査(特にサーバー経路や設定変更)
  • アップロード/ダウンロードの失敗の多くは Security Rules の拒否・認証トークン切れ・パス不一致が原因。まずルールとログを確認
  • Security Rules は本番反映前にシミュレーター/テストで挙動を検証し、想定外の許可がないかを点検
  • ストレージの棚卸し・コスト分析は Storage Insights など Cloud Storage 側のツールを併用

コスト

課金は実体である Cloud Storage の料金に従い、「保存量」「オペレーション(API 呼び出し)」「ネットワーク下り(ダウンロード転送)」が中心です。Firebase 側の料金プラン(無料枠を含む従量課金プラン)と組み合わさります。

課金要素課金対象抑え方
保存量保存しているデータ量不要ファイルの削除・ライフサイクル管理
オペレーションアップロード/ダウンロード等の API 回数無駄な再取得を減らしキャッシュを使う
下り転送クライアントへのダウンロード量配信は CDN 併用・画像は適切なサイズに
ライフサイクルとクラスは Cloud Storage 側で

実体が Cloud Storage なので、オブジェクトライフサイクル管理やストレージクラス(Nearline/Coldline 等)での階層化もそのまま使えます。古いファイルを自動で安いクラスへ移すとコストを抑えられます。

セキュリティ

  • 認可の基本は Firebase Security Rules。既定は拒否寄りで、許可は明示的に書く
  • Firebase Authentication と連携し、request.auth でログイン状態や UID 単位の制御ができる
  • ルールでファイルサイズ・MIME タイプ・パスを検査し、不正なアップロードを入口で弾く
  • 保存時暗号化は Cloud Storage により既定で有効。要件に応じて CMEK などへ切替可能(バケット設定に従う)
  • サーバー経路は Cloud IAM で最小権限。サービスアカウント鍵の管理に注意
全許可ルールを本番に残さない

allow read, write: if true; のような全許可ルールは、誰でも全ファイルを読み書きできる状態です。開発初期の暫定設定をそのまま本番に出すと情報漏えい・改ざんの直接原因になります。公開前に必ず認証・パス・メタデータで絞り込んでください。

関連サービス・比較

サーバーレスな保存先という点で Cloud Firestore と混同されがちですが、役割が異なります。バイナリの大きなファイルは Cloud Storage for Firebase、構造化データやリアルタイム同期は Firestore が適します。

観点Cloud Storage for FirebaseCloud Firestore
主な用途画像/動画など大きなファイル構造化データ/ドキュメント
データ形式オブジェクト(バイナリ)ドキュメント/コレクション
認可Firebase Security RulesFirebase Security Rules
実体Cloud Storage のバケットFirestore データベース
向く処理アップロード/ダウンロード/配信クエリ/リアルタイム同期
役割分担の定番

ファイル本体は Cloud Storage for Firebase に保存し、そのパスやメタデータ(URL・所有者・タグ)を Firestore に持つ構成が定番です。検索や一覧は Firestore、実体の取得は Storage に分担させます。

ハンズオン / CLI例

クライアントは Firebase SDK から操作しますが、バケットの実体は Cloud Storage なのでサーバー側からは gcloud storage でも扱えます。Security Rules のデプロイは Firebase CLI を使います。

# Firebase プロジェクトの既定バケットを確認(Google Cloud CLI)
gcloud storage buckets list --project=my-firebase-project

# サーバー側からファイルをアップロード(実体は Cloud Storage バケット)
gcloud storage cp ./avatar.png gs://my-firebase-project.appspot.com/user/uid123/avatar.png

# バケットのライフサイクルを適用(30日経過で Nearline へ等を JSON で定義)
gcloud storage buckets update gs://my-firebase-project.appspot.com \
  --lifecycle-file=lifecycle.json

# Security Rules を Firebase CLI でデプロイ(storage.rules を反映)
firebase deploy --only storage

Google Cloud Service

Cloud Storage for Firebaseを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

ストレージ

比較で見る軸

クラウド: Google Cloud / カテゴリ: ストレージ / 難易度: basic

導入後に効く点

認可は Firebase Security Rules、認証は Firebase Authentication と連携して宣言的に制御。

先に潰すリスク

サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。

数字・仕様の読み方
クラウド
Google Cloud
カテゴリ
ストレージ
難易度
basic
関連資格
設計柱
security / reliability / operational

判断チェックリスト

  • 自社の用途が「ストレージ / security」に近いか確認する。
  • 強みである「クライアント SDK から直接 Cloud Storage のバケットへ読み書きできるマネージドストレージ。」が本当に評価軸になるか確認する。
  • 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

ストレージsecurityreliabilityoperational