👾

GAE/SE プロジェクト内のプライベート通信設定

2023/11/27に公開

はじめに

同じプロジェクト内のGAEサービス間の通信方法を記載します。
公式資料の手順に沿った内容となります。一部読み替えが必要でわかりにくい部分があったので、備忘録も兼ねてまとめました。

前提

本内容では、hogehogeプロジェクト内のdefaultサービスからnodeサービスへアクセスする際、内部通信を介するように対応します。

  • 環境:GoogleAppEngine/Standard php8.1
  • プロジェクト名:hogehoge
  • リージョン:asia-northeast1
  • 送信元サービス:default
  • 宛先サービス:node

設定

1. 宛先側の上り通信を内部に変更

AppEngine > サービス より、宛先側(nodeサービス)の上りを内部に変更
※これにより外部からのアクセスを制限できます。

2. サーバーレスVPCアクセスコネクタの利用

送信側の下り通信が内部通信を介するよう設定

2-1. サーバーレスVPCアクセスコネクタを作成

サーバーレスVPCアクセス より、コネクタを作成
※IP範囲はこだわりがなければ例に記載の10.8.0.0/28でOK

2-2. app.yamlを更新

2-1.で作成したコネクタを利用するよう定義(app.yamlに↓を追加)
参考

vpc_access_connector:
  name: projects/hogehoge/locations/asia-northeast1/connectors/connecter

2-3. 限定公開のGoogleアクセスを有効化

VPCネットワーク > default より、asia-northeast1の限定公開アクセスをオンに変更

2-4. DNSエントリを追加

ネットワークサービス > Cloud DNS からDNSゾーンを作成
DNS名は「appspot.com」を指定

*.appspot.comprivate.googleapis.comIP範囲を使用するよう設定

  • 199.36.153.8
  • 199.36.153.9
  • 199.36.153.10
  • 199.36.153.11

3. IAM(権限)設定

IAM にてCloudBuildのサービスアカウントに以下の権限を付与
※「Google提供のロール付与を含める」にチェックを入れるとサービスアカウントが表示されるのでロールを追加

  • サーバーレスVPCアクセスユーザー
  • Compute閲覧者

※権限がない場合、デプロイ時にエラーが発生します。


参考1
参考2

動作確認

curl https://node-dot-hogehoge.appspot.com を叩いて動作確認してみます。

ローカルからアクセス

404が返ってきます。

プロジェクト内(defaultサービス)からアクセス

何かしら応答(200)が返ってきます。

さいごに

以上で設定は完了です。
上記の通り、プロジェクト外からのアクセスはできなくなっているはずです。

おまけ

ホワイトリストのファイアーウォールを設定している場合、0.0.0.0を許可することで通信できます。参考

Discussion