グローバル ネットワーク ファイアウォール ポリシーを使用して下り(外向き)トラフィックを許可する

仮想マシン(VM)インスタンスからの下り(外向き)トラフィックを制限してネットワークを保護する方法について説明します。このクイックスタートでは、VM インスタンスから特定の IP アドレスへの下り(外向き)トラフィックを許可し、同じ Virtual Private Cloud(VPC)ネットワーク内の VM インスタンスからの他のすべての下り(外向き)トラフィックを ブロックするように、 グローバル ネットワーク ファイアウォール ポリシー を構成する方法について説明します。

このクイックスタートでは、次のタスクを行います。

始める前に

  1. Google Cloud アカウントにログインします。 を初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。 Google Cloud新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. プロジェクトで Compute Engine API を有効にします。

必要なロール

カスタムモードの VPC ネットワーク、VM インスタンス、グローバル ネットワーク ファイアウォール ポリシーを作成する、またはログを表示するには、プロジェクトに必要な Identity and Access Management(IAM)ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、 フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、 カスタムロールや他の 事前定義ロールから取得することもできます。

サブネットを含むカスタムモードの VPC ネットワークを作成する

このセクションでは、VM をホストするカスタムモードの VPC ネットワークと IPv4 サブネットを作成します。

  1. コンソール Google Cloud で、[VPC ネットワーク] ページに移動します。

    [VPC ネットワーク] に移動

  2. [VPC ネットワークを作成] をクリックします。

  3. [名前] に「vpc-fw-rules」と入力します。

  4. [説明] に「VPC network for the firewall rules quickstart」と入力します。

  5. [**サブネット作成モード**] で [**カスタム**] を選択します。

  6. [新しいサブネット] セクションで、次の情報を指定します。

    • 名前: subnet-fw-rules
    • リージョン: us-central1
    • IPv4 範囲: 10.0.0.0/24
    • プライベート Google アクセス: オン

    [**プライベート Google アクセス**] を [**オン**] に設定すると、このサブネット内の VM は外部 IP アドレスを使用せずに アクセス Google Cloud サービスにアクセスできます。

  7. [完了] をクリックし、[作成] をクリックします。

デフォルトでは、VPC ネットワークには次の暗黙的な IPv4 ルールが含まれています。

  • 宛先が 0.0.0.0/0 で、最も低い優先度 (65535)の下り(外向き)許可ルール。 によってブロックされたトラフィックを除き、すべてのインスタンスが任意の宛先にトラフィックを送信できるようにします。 Google Cloud
  • 送信元が 0.0.0.0/0 で、最も低い優先度(65535)の上り(内向き)拒否ルール。受信接続をブロックすることですべてのインスタンスを保護します。

上り(内向き)または下り(外向き)トラフィックの暗黙的なルールまたはアクションの詳細については、ファイアウォール ルールの評価プロセスをご覧ください。

クライアント VM とサーバー VM を作成する

このセクションでは、以前に作成した VPC ネットワークのサブネットに、外部 IP アドレスを持たない 2 つの Linux VM を作成します。

  1. Google Cloud コンソールで [インスタンスの作成] ページに移動します。

    [インスタンスの作成] に移動

  2. [名前] に「vm-fw-rules-server」と入力します。

  3. [リージョン] で us-central1 (Iowa) を選択します。

  4. [ネットワーキング] メニューの [ネットワーク インターフェース] で、次のように選択します。

    • ネットワーク: vpc-fw-rules
    • サブネットワーク: subnet-fw-rules IPv4 (10.0.0.0/24)
    • 外部 IPv4 アドレス: エフェメラル
  5. [完了] をクリックし、[作成] をクリックします。

  6. 作成した VM の内部 IP アドレスをメモします。

  7. 同じネットワーク設定を使用して vm-fw-rules-client という名前の 2 つ目の VM を作成しますが、[外部 IPv4 アドレス] を [なし] に設定します。

vm-fw-rules-server に nginx ウェブサーバーをインストールして実行する手順は次のとおりです。

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. vm-fw-rules-server の [SSH] をクリックします。

  3. [ブラウザでの SSH] ダイアログで [承認] をクリックし、接続が確立されるのを待ちます。

  4. nginx ウェブサーバーをインストールして実行するには、sudo apt update && sudo apt install nginx コマンドを実行します。

グローバル ネットワーク ファイアウォール ポリシーを作成する

このセクションでは、グローバル ネットワーク ファイアウォール ポリシーを作成し、以前に作成した VPC ネットワークに関連付けます。

  1. コンソール Google Cloud で、[**ファイアウォール ポリシー**] ページに移動します。

    [ファイアウォール ポリシー] に移動

  2. [ファイアウォール ポリシーを作成] をクリックします。

  3. [**ポリシー名**] に fw-policy と入力します。

  4. [**デプロイのスコープ**] で [**グローバル**] を選択します。

  5. [続行] をクリックして、ルール セクションをスキップします。このクイックスタートの次のセクションで、ファイアウォール ルールを追加します。

  6. [ポリシーとネットワークの関連付け] セクションで、[関連付け] をクリックします。

  7. [vpc-fw-rules] チェックボックスをオンにして [関連付け] をクリックし、VPC ネットワークをポリシーに関連付けます。

  8. [**続行**] をクリックしてから [**作成**] をクリックします。

ファイアウォール ルールを追加する

このセクションでは、以前に作成したグローバル ネットワーク ファイアウォール ポリシーにファイアウォール ルールを追加します。

  1. コンソール Google Cloud で、[**ファイアウォール ポリシー**] ページに移動します。

    [ファイアウォール ポリシー] に移動

  2. ファイアウォール ポリシーの名前をクリックします。ポリシーの [ファイアウォール ルール] タブで、[ファイアウォール ルールを作成] をクリックします。

  3. ポート 22 への TCP トラフィックを許可する上り(内向き)ルールを追加します。このルールにより、VPC ネットワーク内の VM インスタンスへの Identity-Aware Proxy(IAP)アクセスが可能になります。IAP サービスは、クライアント VM とサーバー VM へのアクセスを支援するため、中央の認可レイヤを使用します。詳細については、Identity-Aware Proxy の概要をご覧ください。

    • [**優先度**] に「100」と入力します。
    • [ターゲット タイプ] で、[インスタンス] を選択します。
    • [ターゲット] で、[すべてに適用] を選択します。
    • [**トラフィックの方向**] で [**上り(内向き)**] をオンにします。
    • [一致したときのアクション] で [許可] をオンにします。
    • [**ログ**] で [**有効**] を選択します。

      注: ログを有効にすると、大量のログが生成され、費用が増加する可能性があります。

    • [**ソース ネットワーク コンテキスト**] で [**すべてのネットワーク コンテキスト**] を選択します。

    • [**ソース**] セクションの [**IP タイプ**] で、[**IPv4**] を選択します。 [**IP 範囲**] に「35.235.240.0/20」と入力します。

    • [**プロトコルとポート**] で [**指定したプロトコルとポート**] を選択し、 [**TCP**] を選択します。[ポート] に 22 と入力します。

    • [**適用**] で [**有効**] を選択します。

  4. [作成] をクリックします。

  5. クライアント VM からサーバー VM への上り(内向き)トラフィックを許可する上り(内向き)ルールを追加します。

    • [**優先度**] に 200 と入力します。
    • [ターゲット タイプ] で、[インスタンス] を選択します。
    • [ターゲット] で、[すべてに適用] を選択します。
    • [**トラフィックの方向**] で [**上り(内向き)**] をオンにします。
    • [一致したときのアクション] で [許可] をオンにします。
    • [**ログ**] で [**有効**] を選択します。

      注: ログを有効にすると、大量のログが生成され、費用が増加する可能性があります。

    • [ソース ネットワーク コンテキスト] で [特定のネットワーク コンテキスト] を選択し、[VPC 内] を選択します。

    • [**ソース**] セクションの [**IP タイプ**] で、[**IPv4**] を選択します。 [**IP 範囲**] で、クライアント VM の内部 IP アドレスを指定します。例: 10.0.0.2/32。

    • [**送信先**] セクションの [**IP タイプ**] で、[**IPv4**] を選択します。 [**IP 範囲**] で、サーバー VM の内部 IP アドレスを指定します。例: 10.0.0.1/32。

    • [**プロトコルとポート**] で [**指定したプロトコルとポート**] を選択し、 [**TCP**] を選択します。[ポート] に 80 と入力します。

    • [**適用**] で [**有効**] を選択します。

  6. [作成] をクリックします。

  7. セキュリティを強化するため、すべての下り(外向き)トラフィックを制限し、特定されたトラフィックのみを許可する、狭く定義された下り(外向き)ルールを作成できます。

    1. 下り(外向き)ルールを追加して、クライアント VM (サーバー VM 宛)からの下り(外向き)トラフィックを、 ファイアウォール ルールの評価順序の次のルール(すべての下り(外向き)トラフィックを許可する暗黙的な IPv4 アクション)に委任します。
      • [**優先度**] に「300」と入力します。
      • [ターゲット タイプ] で、[インスタンス] を選択します。
      • [ターゲット] で、[すべてに適用] を選択します。
      • [**トラフィックの方向**] に [**下り(外向き)**] を選択します。
      • [**一致したときのアクション**] で [**次に移動**] を選択します。
      • [宛先ネットワーク コンテキスト] で [特定のネットワーク コンテキスト] を選択し、[非インターネット] を選択します。
      • [**送信先**] セクションの [**IP タイプ**] で、[**IPv4**] を選択します。 [**IP 範囲**] で、サーバー VM の内部 IP アドレスを指定します。例: 10.0.0.1/32。
      • [**ソース**] セクションの [**IP タイプ**] で、[**IPv4**] を選択します。 [**IP 範囲**] で、クライアント VM の内部 IP アドレスを指定します。例: 10.0.0.2/32。
      • [**プロトコルとポート**] で [**指定したプロトコルとポート**] を選択し、 [**TCP**] を選択します。[ポート] に 80 と入力します。
      • [**適用**] で [**有効**] を選択します。
    2. [作成] をクリックします。
    3. すべての VM からの下り(外向き)トラフィックを拒否する下り(外向き)ルールを追加します。

      • [**優先度**] に「400」と入力します。
      • [ターゲット タイプ] で、[インスタンス] を選択します。
      • [ターゲット] で、[すべてに適用] を選択します。
      • [**トラフィックの方向**] に [**下り(外向き)**] を選択します。
      • [**一致したときのアクション**] で [**拒否**] を選択します。
      • [**ログ**] で [**有効**] を選択します。

        注: ログを有効にすると、大量のログが生成され、費用が増加する可能性があります。

      • [**宛先ネットワーク コンテキスト**] で [**すべてのネットワーク コンテキスト**] を選択します。

      • [**送信先**] セクションの [**IP タイプ**] で、[**IPv4**] を選択します。 [**IP 範囲**] に「0.0.0.0/0」と入力します。

      • [**プロトコルとポート**] で [**すべて許可**] を選択します。

      • [**適用**] で [**有効**] を選択します。

    4. [作成] をクリックします。

ファイアウォール ポリシーをテストする

このセクションでは、グローバル ネットワーク ファイアウォール ポリシーをテストします。

vm-fw-rules-client が vm-fw-rules-server にトラフィックを送信できることを確認する手順は次のとおりです。

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. vm-fw-rules-client の [SSH] をクリックします。

  3. [ブラウザでの SSH] ダイアログで [承認] をクリックし、接続が確立されるのを待ちます。

  4. 接続が成功したことを確認するには、次のコマンドを実行します。

    curl <IP_vm-fw-rules-server> -m 2

    IP_vm-fw-rules-server は、 vm-fw-rules-server VM の内部 IP アドレスに置き換えます。

VPC ネットワーク内の任意の VM からの下り(外向き)トラフィックがブロックされていることを確認する手順は次のとおりです。

  1. コンソール Google Cloud で、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. vm-fw-rules-server の [SSH] をクリックします。

  3. [ブラウザでの SSH] ダイアログで [承認] をクリックし、接続が確立されるのを待ちます。

  4. 接続がタイムアウトすることを確認するには、次のコマンドを実行します。

    curl <IP_vm-fw-rules-client> -m 2

    IP_vm-fw-rules-client は、 vm-fw-rules-client VM の内部 IP アドレスに置き換えます。

クリーンアップ

このクイックスタートで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

このセクションでは、このクイックスタートで作成したリソースを削除します。

ファイアウォール ポリシーを削除する

  1. コンソール Google Cloud で、[**ファイアウォール ポリシー**] ページに移動します。

    [ファイアウォール ポリシー] に移動

  2. [ネットワーク ファイアウォール ポリシー] セクションで、fw-policy 名を選択します。

  3. [関連付け] タブをクリックし、vpc-fw-rules との関連付けを削除します。

  4. fw-policy の横にある [削除] をクリックして、ファイアウォール ポリシーを削除します。

VM を削除する

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. vm-fw-rules-client VM と vm-fw-rules-server VM のチェックボックスをオンにします。

  3. [削除] をクリックします。

VPC ネットワークとそのサブネットを削除する

  1. Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。

    [VPC ネットワーク] に移動

  2. [名前] 列で [vpc-fw-rules] をクリックします。

  3. [VPC ネットワークを削除] をクリックします。VPC を削除すると、そのサブネットも削除されます。

次のステップ