こんにちは。クラウドエース編集部です。
今回は筆者がGCPプロジェクトを新規に作成する時に利便性やセキュリティを考慮して必ず設定しているものを理由と共に思いつく限り挙げていきます。
必要なAPIを有効にすることは省略します。
本番環境の場合は全てをterraformで管理するケースの方が多そうなので、あくまで検証レベルで使うようなものを想定していただくと良いと思います。

default VPCネットワークを削除する

GCPプロジェクトを最初に作成すると default という名前のVCP ネットワークが作成されています。
このネットワークは全てのリージョンにサブネットワークが設定されていたり、Firewallの設定がかなり緩く設定されています。
事故を生む予感しかしないので、真っ先に削除しています。

VPCネットワークをカスタムで作成し、必要になりがちなFirewallルールを作成する

VPCネットワークが無いとVMインスタンスを起動できないので、汎用的なものを1つ作成しておきます。
私はいつもプロジェクト名と同じ名前のVPCネットワークを作成して、東京リージョンに/26/25くらいのその時の気持ちでサブネットワークを作成しています。

続いてよく使われるFirewallルールを作成します。
作成するのは以下の2つです。

  • IAPからのSSHを許可する
  • GFEからのHTTPを許可する

少し解説をします。

VMインスタンスにSSH接続するために外部IPを経由したり踏み台インスタンスを用意したくないので、筆者は常にIAPを経由してSSHしています。
IAPのIPアドレス範囲は 35.235.240.0/20 であることがドキュメントに記載されていますので、この範囲からの tcp:22を許可する設定をします。~
こうすることで、gcloud sshをする際に --tunnnel-through-iapのオプションを設定するだけでIAPを経由してSSH接続ができます。

書いていて思い出しましたが、IAPを経由するためにIAMでIAP-secured Tunnel Userの役割を自身、または自身を含むグループや組織に付与しています。

GFEからのHTTPについては、ヘルスチェックリクエストを通すために設定しています。
ポートはアプリケーションによって異なる場合がありますので、適宜変更してください。
IPアドレス範囲はドキュメント
35.191.0.0/16,130.211.0.0/22であることが記載されています。

Cloud NATを設定する

VMインスタンスに外部IPを付与するのは稀であるはずです。
とはいえインターネットに出られないと困るケースも多いので、Cloud NATを上記で作成したVPCネットワークに設定しています。


以上