特定の 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. [マシンの構成] ペインで、次の操作を行います。

    1. [名前] に「myvpc-vm」と入力します。
    2. [リージョン] で us-central1 (Iowa) を選択します。
  3. ナビゲーション メニューで、[ネットワーキング] をクリックします。

    1. [ネットワーク インターフェース] セクションで、default をクリックし、次の構成パラメータを指定します。
      • ネットワーク: myvpc
      • サブネットワーク: myvpc-subnet-1 IPv4 (10.0.0.0/24)
      • 外部 IPv4 アドレス: なし
    2. [完了] をクリックします。
  4. [作成] をクリックします。

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

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

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

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

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

  2. [マシンの構成] ペインで、次の操作を行います。

    1. [名前] に「testvpc-vm」と入力します。
    2. [リージョン] で us-central1 (Iowa) を選択します。
  3. ナビゲーション メニューで、[ネットワーキング] をクリックします。

    1. [ネットワーク インターフェース] セクションで、default をクリックし、次の構成パラメータを指定します。
      • ネットワーク: test-vpc
      • サブネットワーク: testvpc-subnet-1 IPv4 (10.0.0.0/16)
      • 外部 IPv4 アドレス: なし
    2. [完了] をクリックします。
  4. [作成] をクリックします。

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

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

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

  2. [マシンの構成] ペインで、次の操作を行います。

    1. [名前] に「testvpc-apache-vm」と入力します。
    2. [リージョン] で us-central1 (Iowa) を選択します。
  3. ナビゲーション メニューで、[ネットワーキング] をクリックします。

    1. [ネットワーク インターフェース] セクションで、default をクリックし、次の構成パラメータを指定します。
      • ネットワーク: test-vpc
      • サブネットワーク: testvpc-subnet-ext IPv4 (192.168.1.0/24)
      • 外部 IPv4 アドレス: エフェメラル
    2. [完了] をクリックします。
  4. ナビゲーション メニューで [詳細設定] をクリックし、[起動スクリプト] フィールドに次のスクリプトを入力します。

    #! /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 ウェブサーバーをデプロイして起動します。

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

  6. [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-vm、testvpc-vm、testvpc-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. Google Cloud コンソールで [リソースの管理] ページに移動します。

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

  2. 削除するプロジェクトが組織に関連付けられている場合は、[名前] 列の [組織] リストを展開します。
  3. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  4. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

フォルダを削除する

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

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

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

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

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

次のステップ