GAE/SE プロジェクト内のプライベート通信設定
はじめに
同じプロジェクト内の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.com
がprivate.googleapis.com
のIP範囲を使用するよう設定
- 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