特定の VPC ネットワークからの下り(外向き)トラフィックを許可する階層型ファイアウォール ポリシーを構成する

フォルダ内の特定の Virtual Private Cloud(VPC)ネットワークから特定の IP アドレス(宛先)への下り(外向き)トラフィックを許可する階層型ファイアウォール ポリシーを作成して構成する方法について説明します。ファイアウォール ポリシーは、フォルダから発信される他の下り(外向き)トラフィックをすべてブロックします。このページでは、2 つの VPC ネットワークを作成して、VPC ネットワークに仮想マシン(VM)インスタンスを作成します。さらに、ファイアウォール ルールを使用して階層型ファイアウォール ポリシーを設定し、ファイアウォール ポリシーをテストする例について説明します。

始める前に

フォルダを作成する

組織内にフォルダを作成します。

  1. Google Cloud コンソールで、[リソースの管理] ページに移動します。

    [リソースの管理] に移動

  2. [フォルダを作成] をクリックします。

  3. [フォルダ名] に「test-folder」と入力します。

  4. [組織] リストで、組織リソースの名前を選択します。

  5. [ロケーション] フィールドで [参照] をクリックし、組織リソースを選択します。

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

プロジェクトを作成する

前のセクションで作成したフォルダにプロジェクトを作成します。

  1. Google Cloud コンソールで、[リソースの管理] ページに移動します。

    [リソースの管理] に移動

  2. [プロジェクトの作成] をクリックします。

  3. [プロジェクト名] に「test-project」と入力します。

  4. プロジェクトの請求先アカウントを選択します。

  5. [組織] リストで、組織リソースの名前を選択します。

  6. [ロケーション] フィールドで [参照] をクリックし、組織リソース名を開いて [test-folder] を選択します。

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

IPv4 サブネットを持つ 2 つのカスタム VPC ネットワークを作成する

前のセクションで作成したプロジェクトに、IPv4 専用サブネットを持つ myvpc と 2 つの IPv4 専用サブネットを持つ test-vpc の 2 つのカスタムモードの VPC ネットワークを作成します。

  1. Google Cloud コンソールのプロジェクト セレクタ ページで、[test-project] を選択します。

    プロジェクト セレクタに移動

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

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

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

  4. [名前] に「myvpc」と入力します。

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

  6. [新しいサブネット] セクションで、サブネットに次の構成パラメータを指定します。

    • 名前: 「myvpc-subnet-1」と入力します。
    • リージョン: [us-central1] を選択します。
    • IPv4 範囲: 「10.0.0.0/24」と入力します。
  7. [完了]、[作成] の順にクリックします。

  8. 別の VPC ネットワークを作成するには、[VPC ネットワークを作成] をクリックします。

  9. [名前] に「test-vpc」と入力します。

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

  11. [新しいサブネット] セクションで、サブネットに次の構成パラメータを指定し、[完了] をクリックします。

    • 名前: 「testvpc-subnet-1」と入力します。
    • リージョン: [us-central1] を選択します。
    • IPv4 範囲: 「10.0.0.0/16」と入力します。
  12. test-vpc ネットワークに別のサブネットを追加するには、[サブネットを追加] をクリックします。

  13. [新しいサブネット] セクションで、サブネットに次の構成パラメータを指定し、[完了] をクリックします。

    • 名前: 「testvpc-subnet-ext」と入力します。
    • リージョン: [us-central1] を選択します。
    • IPv4 範囲: 「192.168.1.0/24」と入力します。
  14. [作成] をクリックします。

VM を作成する

前のセクションで構成したサブネットに 3 つの VM を作成します。

myvpc ネットワークに VM を作成する

myvpc ネットワークに外部 IP アドレスのない VM を作成します。

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

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

  2. [インスタンスを作成] をクリックします。

  3. [名前] に「myvpc-vm」と入力します。

  4. [リージョン] で [us-central1 (アイオワ)] を選択します。

  5. [詳細オプション] を開き、[ネットワーキング] を開きます。

  6. [ネットワーク インターフェース] セクションで、既存のネットワーク インターフェースを開き、次の構成パラメータを指定します。

    • ネットワーク: [myvpc] を選択します。
    • サブネットワーク: [subnet-1 IPv4(10.0.0.0/24)] を選択します。
    • 外部 IPv4 アドレス: [なし] を選択します。
  7. [完了] をクリックします。

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

test-vpc ネットワークに 2 つの VM を作成する

2 つの VM を作成します。1 つは外部 IP アドレスのない VM、もう 1 つは外部 IP アドレスを持つ VM です。外部 IP アドレスを持つ VM を作成するときに、起動スクリプトを渡して、その VM に Apache ウェブサーバーをインストールして起動します。

外部 IP アドレスのない VM を作成します。

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

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

  2. [インスタンスを作成] をクリックします。

  3. [名前] に「testvpc-vm」と入力します。

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

  5. [詳細オプション] を開き、[ネットワーキング] を開きます。

  6. [ネットワーク インターフェース] セクションで、既存のネットワーク インターフェースを開き、次の構成パラメータを指定します。

    • ネットワーク: [test-vpc] を選択します。
    • サブネットワーク: [testvpc-subnet-1 IPv4(10.0.0.0/16)] を選択します。
    • 外部 IPv4 アドレス: [なし] を選択します。
  7. [完了] をクリックします。

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

エフェメラル外部 IP アドレスを持つ VM を作成し、起動スクリプトを渡して Apache ウェブサーバーをインストールし、起動します。

  1. [インスタンスを作成] をクリックします。
  2. [名前] に「testvpc-apache-vm」と入力します。
  3. [リージョン] で [us-central1 (Iowa)] を選択します。
  4. [詳細オプション] を開き、[ネットワーキング] を開きます。
  5. [ネットワーク インターフェース] セクションで、既存のネットワーク インターフェースを開き、次の構成パラメータを指定します。
    • ネットワーク: [test-vpc] を選択します。
    • サブネットワーク: [testvpc-subnet-ext IPv4(192.168.1.0/24)] を選択します。
    • 外部 IPv4 アドレス: [エフェメラル] を選択します。
  6. [管理] を開きます。
  7. [メタデータ] セクションの [起動スクリプト] フィールドに、次のスクリプトを入力します。

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      # Read VM network configuration:
      md_vm="http://169.254.169.254/computeMetadata/v1/instance/"
      vm_hostname="$(curl $md_vm/name -H "Metadata-Flavor:Google" )"
      filter="{print \$NF}"
      vm_network="$(curl $md_vm/network-interfaces/0/network \
      -H "Metadata-Flavor:Google" | awk -F/ "${filter}")"
      vm_zone="$(curl $md_vm/zone \
      -H "Metadata-Flavor:Google" | awk -F/ "${filter}")"
      # Apache configuration:
      echo "Page on $vm_hostname in network $vm_network zone $vm_zone" | \
      tee /var/www/html/index.html
      systemctl restart apache2
    

    上記のスクリプトは、この VM に Apache ウェブサーバーをデプロイして起動します。

  8. [完了] をクリックします。

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

  10. [VM インスタンス] ページで、この VM に割り当てられているエフェメラル外部 IP アドレスをメモします。この外部 IP アドレスは後で必要になります。

Cloud Router と Cloud NAT ゲートウェイを作成する

前のセクションでは、myvpc ネットワークで、外部 IP アドレスのない myvpc-vm VM を作成しました。myvpc-vm VM が公共のインターネット経由を介して testvpc-apache-vm で実行されている Apache ウェブサーバーにアクセスできるようにするには、myvpc-vm VM を作成したサブネットに Cloud Router と Cloud NAT ゲートウェイを作成します。

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

    [Cloud NAT] に移動

  2. [開始] または [Cloud NAT ゲートウェイを作成] をクリックします。

    注: Cloud NAT ゲートウェイを初めて作成する場合は、[開始] をクリックします。既存のゲートウェイがある場合は、Google Cloud に [Cloud NAT ゲートウェイを作成] ボタンが表示されます。別のゲートウェイを作成するには、[Cloud NAT ゲートウェイを作成] をクリックします。

  3. [ゲートウェイ名] に「myvpc-gateway」と入力します。

  4. [NAT タイプ] で、[パブリック] を選択します。

  5. [Cloud Router の選択] セクションで、次の構成パラメータを指定します。

    • ネットワーク: [myvpc] を選択します。
    • リージョン: [us-central1(アイオワ)] を選択します。
    • Cloud Router: [新しいルーターを作成] をクリックします。
      1. [名前] に「myvpc-router」と入力します。
      2. [作成] をクリックします。
  6. [作成] をクリックします。

階層型ファイアウォール ポリシーを作成し、ファイアウォール ルールを追加する

階層型ファイアウォール ポリシーを作成し、次のファイアウォール ポリシー ルールを追加します。

  • test-folder 内のすべての VM で IAP を有効にして、VM への管理者権限を有効にします。
  • test-vpc ネットワーク内のすべての VM への上り(内向き)トラフィックを許可します。
  • myvpc ネットワークからの下り(外向き)トラフィックを階層内の次のルール(VPC firewall implied IPv4 rule egress all ルール)に委任します。
  • test-folder 内の他のすべての VPC ネットワークから送信される下り(外向き)トラフィックを拒否します。

階層型ファイアウォール ポリシーを作成する手順は次のとおりです。

  1. Google Cloud コンソールでプロジェクト セレクタ ページに移動し、[test-folder] を選択します。

    プロジェクト セレクタに移動

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

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

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

  4. [ポリシーの構成] セクションの [ポリシー名] に「fw-egress-specific-vpc」と入力します。

  5. [説明] に「example-firewall-policy」と入力します。

  6. [続行] をクリックします。

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

  8. [ポリシーとリソースの関連付け] セクションで、[追加] をクリックします。

  9. 組織を開き、[test-folder] を選択して [追加] をクリックします。

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

test-folder 内のすべての VM で IAP を有効にするファイアウォール ルールを追加します。

IAP が test-folder 内のすべての VM に接続できるようにするには、階層型ファイアウォール ポリシーに次の特性を持つファイアウォール ルールが必要です。

  • IAP TCP 転送を使用してアクセスできるようにする test-folder 内のすべての VM に適用される。
  • IP アドレス範囲 35.235.240.0/20 からの上り(内向き)トラフィックを許可する。この範囲には、IAP が TCP 転送に使用するすべての IP アドレスが含まれています。
  • IAP TCP 転送を使用してアクセスするポートへの接続をすべて許可する(SSH の場合はポート 22 など)。

ファイアウォール ルールを追加する手順は次のとおりです。

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

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

  2. [fw-egress-specific-vpc]、[ルールを追加] の順にクリックします。

  3. [優先度] に「100」と入力します。

  4. [説明] に「enable-iap」と入力します。

  5. [トラフィックの方向] で [上り(内向き)] をオンにします。

  6. [一致したときのアクション] で [許可] をオンにします。

  7. [送信元] セクションの [IP 範囲] に「35.235.240.0/20」と入力します。

  8. [プロトコルとポート] セクションで、[指定したプロトコルとポート] を選択します。

  9. [TCP] チェックボックスをオンにし、[ポート] に「22」と入力します。

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

test-vpc ネットワークで上り(内向き)トラフィックを許可するファイアウォール ルールを追加する

ファイアウォール ルールを追加して、test-vpc ネットワーク内のすべての VM への TCP ポート 80 での受信 HTTP ウェブ トラフィックを許可します。

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

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

  2. [fw-egress-specific-vpc]、[ルールを追加] の順にクリックします。

  3. [優先度] に「200」と入力します。

  4. [説明] に「allow-ingress-testvpc」と入力します。

  5. [トラフィックの方向] で [上り(内向き)] をオンにします。

  6. [一致したときのアクション] で [許可] をオンにします。

  7. [ターゲット] セクションで、[ネットワークを追加] をクリックします。

  8. test-vpc ネットワークを含むテスト プロジェクトを選択し、ネットワークに test-vpc を選択します。

  9. [送信元] セクションの [IP 範囲] に「0.0.0.0/0」と入力します。

  10. [プロトコルとポート] セクションで、[指定したプロトコルとポート] を選択します。

  11. [TCP] チェックボックスをオンにし、[ポート] に「80」と入力します。

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

myvpc ネットワークからの下り(外向き)トラフィックを階層内の次のルールに委任するファイアウォール ルールを追加する

goto_next アクションを使用して myvpc ネットワークからの下り(外向き)トラフィックをファイアウォールの次のルール(暗黙的な IPv4 下り(外向き)許可の VPC ファイアウォール ルール)に委任するファイアウォール ルールを追加します。

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

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

  2. [fw-egress-specific-vpc]、[ルールを追加] の順にクリックします。

  3. [優先度] に「300」と入力します。

  4. [説明] に「delegate-egress-myvpc」と入力します。

  5. [トラフィックの方向] に [下り(外向き)] を選択します。

  6. [一致したときのアクション] で [次に移動] を選択します。

  7. [ターゲット] セクションで、[ネットワークを追加] をクリックします。

  8. myvpc を含むテスト プロジェクト名を選択し、ネットワークに myvpc を選択します。

  9. [送信先] セクションの [IP 範囲] に、Apache ウェブサーバーを実行している VM のエフェメラル外部 IP アドレスを入力します。この IP アドレスは、test-vpc ネットワークに 2 つの VM を作成するセクションでメモしたものです。

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

他のすべての VPC ネットワークから送信される下り(外向き)トラフィックを拒否するファイアウォール ルールを追加する

最後に、test-folder 内の他のすべての VPC ネットワークから下り(外向き)に送信されるトラフィックを拒否するファイアウォール ルールを追加します。

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

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

  2. [fw-egress-specific-vpc]、[ルールを追加] の順にクリックします。

  3. [優先度] に「400」と入力します。

  4. [説明] に「block-egress-all-traffic」と入力します。

  5. [トラフィックの方向] に [下り(外向き)] を選択します。

  6. [一致したときのアクション] で [拒否] を選択します。

  7. [送信先] セクションの [IP 範囲] に「0.0.0.0/0」と入力します。

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

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

階層型ファイアウォール ポリシーを構成したら、次の手順でポリシーをテストします。

  1. Google Cloud コンソールに移動します。

    Google Cloud コンソールに移動

  2. ページ上部のプロジェクト選択ツールで、VPC ネットワークを作成した test-project を選択します。

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

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

  4. myvpc-vm の [接続] 列で、[SSH] をクリックします。

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

  6. myvpc から testvpc-apache-vm への下り(外向き)トラフィックが許可されていることを確認するには、次のコマンドを実行します。

    curl <external_ephemeral_IP_testvpc_apache_vm> -m 2
    

    上記のコマンドは、Apache ウェブサーバーの index.html ページに指定したコンテンツを返します。これは、myvpc からの下り(外向き)接続が許可されていることを意味します。

  7. 下り(外向き)トラフィックが組織内の他の VPC ネットワークからブロックされていることを確認するには、次の操作を行います。

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

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

    2. testvpc-vm の [接続] 列で、[SSH] をクリックします。

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

    4. testvpc-vm から testvpc-apache-vm への下り(外向き)トラフィックがブロックされていることを確認するには、次のコマンドを実行します。

      curl <internal_IP_testvpc_apache_vm> -m 2
      

      上記のコマンドは Connection timed out メッセージを返します。これは、myvpc を除く組織内のすべての VPC ネットワークからの下り(外向き)トラフィックを拒否するファイアウォール ルールを作成したためです。

クリーンアップ

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

このクイックスタートで作成したリソースを削除するには、次の操作を行います。

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

  1. Google Cloud コンソールに移動します。

    Google Cloud コンソールに移動

  2. ページ上部のプロジェクト選択ツールで、このクイックスタート用にリソースを作成した test-folder を選択します。

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

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

  4. [このノードに関連付けられた、またはこのノードによって継承されたファイアウォール ポリシー] セクションで、[fw-egress-specific-vpc] をクリックします。

  5. [関連付け] タブをクリックします。

  6. test-folder のチェックボックスをオンにして、[関連付けを削除] をクリックします。

  7. [test-folder との関連付けを削除] ダイアログで、[削除] をクリックします。

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

  9. [fw-egress-specific-vpc を削除] ダイアログで、[削除] をクリックします。

VM を削除する

  1. Google Cloud コンソールに移動します。

    Google Cloud コンソールに移動

  2. ページ上部のプロジェクト選択ツールで、[test-project] を選択します。

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

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

  4. myvpc-vmtestvpc-vmtestvpc-apache-vm のチェックボックスをオンにします。

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

  6. [3 個のインスタンスを削除しますか?] ダイアログで、[削除] をクリックします。

Cloud Router と Cloud NAT ゲートウェイを削除する

  1. Google Cloud コンソールで [Cloud Router] ページに移動します。

    [Cloud Router] に移動

  2. [myvpc-router] のチェックボックスをオンにします。

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

  4. [myvpc-router を削除] ダイアログで [削除] をクリックします。

Cloud Router を削除すると、関連する Cloud NAT ゲートウェイも削除されます。

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

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

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

  2. [名前] 列で [myvpc] をクリックします。

  3. [VPC ネットワークの削除] をクリックします。

  4. [ネットワークの削除] ダイアログで [削除] をクリックします。

    同様に、test-vpc ネットワークを削除します。

VPC ネットワークを削除すると、そのサブネットも削除されます。

プロジェクトを削除する

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. If the project that you plan to delete is attached to an organization, expand the Organization list in the Name column.
  3. In the project list, select the project that you want to delete, and then click Delete.
  4. In the dialog, type the project ID, and then click Shut down to delete the project.

フォルダを削除する

  1. Google Cloud コンソールで、[リソースの管理] ページに移動します。

    [リソースの管理] に移動

  2. 削除するフォルダが組織に関連付けられている場合は、[名前] 列の [組織] リストを開きます。

  3. フォルダリストで [test-folder] を選択し、[削除] をクリックします。

  4. ダイアログでフォルダ ID を入力し、[削除] をクリックしてプロジェクトを削除します。

次のステップ