MENU

【GCP】「デフォルトで保護」を回避!GCSバケット作成からサービスアカウントキー発行までの完全手順

Webアプリケーションを自前サーバー(VPS)で運用する際、一番のネックになるのが「大容量ファイルの取り扱い」です。 例えば、数百MBもある財務データなどをVPSに直接アップロードしようとすると、メモリを圧迫し、最悪の場合はサーバーがダウンしてしまう危険性があります。

そこで今回は、ファイルの保存先としてGoogle Cloud Storage(GCS)を採用し、VPSの負荷を劇的に下げるインフラ基盤の準備手順をご紹介します。

特に、GCP初心者から中級者が必ずと言っていいほどつまずく「デフォルトで保護(サービスアカウントキー発行時の組織ポリシーエラー)」の解除方法についても詳しく解説していますので、ぜひ参考にしてください。

目次

1. なぜVPS単体ではなく、GCS(クラウド)を連携させるのか?

今回構築するアーキテクチャ最大の目的は、「重いデータをサーバー(VPS)に触れさせないこと」です。

通常、ユーザーがファイルをアップロードすると「ブラウザ → サーバー → ストレージ」という経路をたどります。しかし、今回はGCSの「署名付きURL(Signed URL)」という仕組みを利用し、「ブラウザ → GCS」へ直接データを送り込みます。

これにより、メモリの少ないVPS環境でも、WordPressなどの既存システムと共存させながら、SaaSのような重いデータ処理を伴うWebアプリを安定して稼働させることが可能になります。

2. プロジェクトの準備とGCSバケットの作成

まずは、データの保管庫となるGCSの準備を進めます。

  1. プロジェクトの作成: Google Cloudコンソール(またはFirebaseコンソール)から、新しいプロジェクトを作成します。
  2. バケットの作成: GCSのメニューから「バケットの作成」をクリックします。
    • バケット名: 今回は例として finance-data-puffin-2026 としました。全世界で一意である必要があります。
    • リージョン: レイテンシ(通信の遅延)を最小限にするため、日本の大阪リージョン(または東京リージョン)を選択します。

3. 【最大の壁】「デフォルトで保護」ポリシーを解除する

バケットが完成したら、次にアプリからGCSを操作するための「サービスアカウント」と「キー(鍵)」を発行します。 しかし現在、GCPではセキュリティ強化のため、デフォルトでキーの発行がブロックされる仕様になっています。ここでエラーにつまずく人が非常に多いです。

発生するエラー

サービスアカウントキーを作成しようとすると、「組織のポリシーにより、サービスアカウントキーの作成は許可されていません」といったエラー(デフォルトで保護)が表示され、JSONキーがダウンロードできません。

ポリシーの解除(上書き)手順

この制限を解除するには、以下の手順を踏みます。

  1. GCPコンソールの検索窓で「組織のポリシー」と検索し、メニューを開きます。
  2. ポリシーのリストの中から「サービス アカウント キーの作成を無効にする」(constraints/iam.disableServiceAccountKeyCreation)を探してクリックします。
  3. 画面上部の「ポリシーを管理」をクリックします。
  4. 「親のポリシーを適用する」から「ポリシーをカスタマイズする(上書き)」に変更します。
  5. ルールの値を「オン(無効化を有効にする)」から「オフ(無効化しない=キー作成を許可する)」に変更して保存します。

数分待つとポリシーが反映され、無事にキーの発行ができるようになります。

4. サービスアカウントキー(JSON)の発行と厳重管理

制限が解除できたら、再度キーの発行を実行します。

  1. 「IAMと管理」>「サービスアカウント」へ移動。
  2. 対象のサービスアカウントの「キー」タブを開き、「鍵を追加」>「新しい鍵を作成」をクリック。
  3. JSONを選択して作成します。

【超重要】キーの管理について ダウンロードされたJSONファイルは、GCP上のリソース(今回ならGCSのバケット)を自由に操作できてしまう**「マスターキー(合鍵)」**です。 絶対にGitHubなどの公開リポジトリにアップロードしてはいけません。1Passwordなどのパスワードマネージャーを使用し、プロジェクトメンバー以外がアクセスできない場所に厳重に保管してください。

まとめ:インフラの土台作りが完了!

お疲れ様でした!これでクラウド側の準備は完璧です。

  1. 大阪リージョンでのGCSバケット作成
  2. 厄介な組織ポリシーの解除
  3. JSONキーの安全な発行と保管

この3ステップが完了したことで、あとはバックエンド(FastAPIなど)からこのJSONキーを読み込ませるだけで、GCSを自由に操作できるようになります。

次のステップでは、いよいよフロントエンド(React)とバックエンドを連携させ、ブラウザから直接GCSへ大容量ファイルをアップロードする機能の開発に進んでいきましょう!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次