GCP - VPC & Networking
GCP Compute Networking in a Nutshell
VPCは、VPCへの着信トラフィックを許可するファイアウォールルールを含みます。VPCは、仮想マシンが接続されるサブネットワークも含みます。 AWSと比較すると、ファイアウォールはAWSのセキュリティグループとNACLに最も近いものですが、この場合、これらは各インスタンスではなくVPC内で定義されています。
VPC、サブネットワーク & ファイアウォール in GCP
Compute Instancesは、VPCの一部であるサブネットワークに接続されています(Virtual Private Clouds)。GCPにはセキュリティグループはなく、VPCファイアウォールがあり、これらのルールはこのネットワークレベルで定義され、各VMインスタンスに適用されます。
サブネットワーク
VPCは複数のサブネットワークを持つことができます。各サブネットワークは1つのリージョンにあります。
ファイアウォール
デフォルトでは、すべてのネットワークには2つの暗黙のファイアウォールルールがあります:アウトバウンドを許可し、インバウンドを拒否します。
GCPプロジェクトが作成されると、**default
**というVPCも作成され、以下のファイアウォールルールが設定されます:
default-allow-internal:
default
ネットワーク上の他のインスタンスからのすべてのトラフィックを許可default-allow-ssh: どこからでも22を許可
default-allow-rdp: どこからでも3389を許可
default-allow-icmp: どこからでもpingを許可
ご覧のとおり、ファイアウォールルールは内部IPアドレスに対してより許可的である傾向があります。デフォルトのVPCは、Compute Instances間のすべてのトラフィックを許可します。
デフォルトのVPCまたは新しいVPCのために、さらにファイアウォールルールを作成できます。ファイアウォールルールは、以下の方法でインスタンスに適用できます:
VPC内のすべてのインスタンス
残念ながら、インターネット上のオープンポートを持つすべてのCompute Instancesを出力する簡単なgcloud
コマンドはありません。ファイアウォールルール、ネットワークタグ、サービスアカウント、インスタンスの間の関連をつなぐ必要があります。
このプロセスは、このpythonスクリプトを使用して自動化され、以下をエクスポートします:
インスタンス、パブリックIP、許可されたTCP、許可されたUDPを示すCSVファイル
パブリックインターネットから許可されたポートに対してすべてのインスタンスをターゲットにしたnmapスキャン
パブリックインターネットからすべてのTCPポートを許可するインスタンスのTCP範囲全体をターゲットにしたmasscan
階層的ファイアウォールポリシー
_階層的ファイアウォールポリシー_を使用すると、組織全体で一貫したファイアウォールポリシーを作成し、強制することができます。階層的ファイアウォールポリシーを組織全体または個々のフォルダー**に割り当てることができます。これらのポリシーには、接続を明示的に拒否または許可するルールが含まれています。
ファイアウォールポリシーは、別々のステップとして作成および適用します。ファイアウォールポリシーは、リソース階層の組織またはフォルダーノードで作成および適用できます。ファイアウォールポリシールールは、接続をブロック、接続を許可、またはファイアウォールルールの評価を下位フォルダーまたはVPCネットワークで定義されたVPCファイアウォールルールに委任できます。
デフォルトでは、すべての階層的ファイアウォールポリシールールは、ポリシーが関連付けられている組織またはフォルダーのすべてのプロジェクト内のすべてのVMに適用されます。ただし、ターゲットネットワークまたはターゲットサービスアカウントを指定することで、特定のルールを受け取るVMを制限できます。
階層的ファイアウォールポリシーを作成する方法については、こちらをお読みください。
ファイアウォールルールの評価
Org: 組織に割り当てられたファイアウォールポリシー
Folder: フォルダーに割り当てられたファイアウォールポリシー
VPC: VPCに割り当てられたファイアウォールルール
Global: VPCに割り当てることができる別のタイプのファイアウォールルール
Regional: VMのNICとVMのリージョンに関連付けられたVPCネットワークのファイアウォールルール。
VPCネットワークピアリング
2つの仮想プライベートクラウド(VPC)ネットワークを接続し、各ネットワーク内のリソースが互いに通信できるようにします。 ピアリングされたVPCネットワークは、同じプロジェクト内、同じ組織の異なるプロジェクト、または異なる組織の異なるプロジェクトに存在できます。
必要な権限は次のとおりです:
compute.networks.addPeering
compute.networks.updatePeering
compute.networks.removePeering
compute.networks.listPeeringRoutes
References
Last updated