フォルダ内の特定の Virtual Private Cloud(VPC)ネットワークから特定の IP アドレス(宛先)への下り(外向き)トラフィックを許可する階層型ファイアウォール ポリシーを作成して構成する方法について説明します。ファイアウォール ポリシーは、フォルダから発信される他の下り(外向き)トラフィックをすべてブロックします。このページでは、2 つの VPC ネットワークを作成して、VPC ネットワークに仮想マシン(VM)インスタンスを作成します。さらに、ファイアウォール ルールを使用して階層型ファイアウォール ポリシーを設定し、ファイアウォール ポリシーをテストする例について説明します。
始める前に
- 組織リソースにアクセスできることを確認します。
- 次の Identity and Access Management(IAM)ロールがあることを確認します。
- 組織管理者ロール
(roles/resourcemanager.organizationAdmin)
- フォルダ管理者ロール(
(roles/resourcemanager.folderAdmin)
) - プロジェクト作成者ロール(
(roles/resourcemanager.projectCreator)
) -
プロジェクト削除者ロール(
(roles/resourcemanager.projectDeleter)
) - Compute ネットワーク管理者ロール(
roles/compute.networkAdmin
) - Compute 組織ファイアウォール ポリシー管理者ロール(
roles/compute.orgFirewallPolicyAdmin
)
- 組織管理者ロール
-
Enable the Compute Engine and Identity-Aware Proxy (IAP) APIs.
フォルダを作成する
組織内にフォルダを作成します。
Google Cloud コンソールで、[リソースの管理] ページに移動します。
[フォルダを作成] をクリックします。
[フォルダ名] に「
test-folder
」と入力します。[組織] リストで、組織リソースの名前を選択します。
[ロケーション] フィールドで [参照] をクリックし、組織リソースを選択します。
[作成] をクリックします。
プロジェクトを作成する
前のセクションで作成したフォルダにプロジェクトを作成します。
Google Cloud コンソールで、[リソースの管理] ページに移動します。
[プロジェクトの作成] をクリックします。
[プロジェクト名] に「
test-project
」と入力します。プロジェクトの請求先アカウントを選択します。
[組織] リストで、組織リソースの名前を選択します。
[ロケーション] フィールドで [参照] をクリックし、組織リソース名を開いて [test-folder] を選択します。
[作成] をクリックします。
IPv4 サブネットを持つ 2 つのカスタム VPC ネットワークを作成する
前のセクションで作成したプロジェクトに、IPv4 専用サブネットを持つ myvpc
と 2 つの IPv4 専用サブネットを持つ test-vpc
の 2 つのカスタムモードの VPC ネットワークを作成します。
Google Cloud コンソールのプロジェクト セレクタ ページで、[test-project] を選択します。
Google Cloud コンソールの [VPC ネットワーク] ページに移動します。
[VPC ネットワークを作成] をクリックします。
[名前] に「
myvpc
」と入力します。[サブネット作成モード] で [カスタム] を選択します。
[新しいサブネット] セクションで、サブネットに次の構成パラメータを指定します。
- 名前: 「
myvpc-subnet-1
」と入力します。 - リージョン: [us-central1] を選択します。
- IPv4 範囲: 「
10.0.0.0/24
」と入力します。
- 名前: 「
[完了]、[作成] の順にクリックします。
別の VPC ネットワークを作成するには、[VPC ネットワークを作成] をクリックします。
[名前] に「
test-vpc
」と入力します。[サブネット作成モード] で [カスタム] を選択します。
[新しいサブネット] セクションで、サブネットに次の構成パラメータを指定し、[完了] をクリックします。
- 名前: 「
testvpc-subnet-1
」と入力します。 - リージョン: [us-central1] を選択します。
- IPv4 範囲: 「
10.0.0.0/16
」と入力します。
- 名前: 「
test-vpc
ネットワークに別のサブネットを追加するには、[サブネットを追加] をクリックします。[新しいサブネット] セクションで、サブネットに次の構成パラメータを指定し、[完了] をクリックします。
- 名前: 「
testvpc-subnet-ext
」と入力します。 - リージョン: [us-central1] を選択します。
- IPv4 範囲: 「
192.168.1.0/24
」と入力します。
- 名前: 「
[作成] をクリックします。
VM を作成する
前のセクションで構成したサブネットに 3 つの VM を作成します。
myvpc
ネットワークに VM を作成する
myvpc
ネットワークに外部 IP アドレスのない VM を作成します。
Google Cloud コンソールで、[インスタンスの作成] ページに移動します。
[インスタンスを作成] をクリックします。
[名前] に「
myvpc-vm
」と入力します。[リージョン] で [us-central1 (アイオワ)] を選択します。
[詳細オプション] を開き、[ネットワーキング] を開きます。
[ネットワーク インターフェース] セクションで、既存のネットワーク インターフェースを開き、次の構成パラメータを指定します。
- ネットワーク: [
myvpc
] を選択します。 - サブネットワーク: [subnet-1 IPv4(10.0.0.0/24)] を選択します。
- 外部 IPv4 アドレス: [なし] を選択します。
- ネットワーク: [
[完了] をクリックします。
[作成] をクリックします。
test-vpc
ネットワークに 2 つの VM を作成する
2 つの VM を作成します。1 つは外部 IP アドレスのない VM、もう 1 つは外部 IP アドレスを持つ VM です。外部 IP アドレスを持つ VM を作成するときに、起動スクリプトを渡して、その VM に Apache ウェブサーバーをインストールして起動します。
外部 IP アドレスのない VM を作成します。
Google Cloud コンソールで、[インスタンスの作成] ページに移動します。
[インスタンスを作成] をクリックします。
[名前] に「
testvpc-vm
」と入力します。[リージョン] で [
us-central1 (Iowa)
] を選択します。[詳細オプション] を開き、[ネットワーキング] を開きます。
[ネットワーク インターフェース] セクションで、既存のネットワーク インターフェースを開き、次の構成パラメータを指定します。
- ネットワーク: [test-vpc] を選択します。
- サブネットワーク: [testvpc-subnet-1 IPv4(10.0.0.0/16)] を選択します。
- 外部 IPv4 アドレス: [なし] を選択します。
[完了] をクリックします。
[作成] をクリックします。
エフェメラル外部 IP アドレスを持つ VM を作成し、起動スクリプトを渡して Apache ウェブサーバーをインストールし、起動します。
- [インスタンスを作成] をクリックします。
- [名前] に「
testvpc-apache-vm
」と入力します。 - [リージョン] で [
us-central1 (Iowa)
] を選択します。 - [詳細オプション] を開き、[ネットワーキング] を開きます。
- [ネットワーク インターフェース] セクションで、既存のネットワーク インターフェースを開き、次の構成パラメータを指定します。
- ネットワーク: [test-vpc] を選択します。
- サブネットワーク: [testvpc-subnet-ext IPv4(192.168.1.0/24)] を選択します。
- 外部 IPv4 アドレス: [エフェメラル] を選択します。
- [管理] を開きます。
[メタデータ] セクションの [起動スクリプト] フィールドに、次のスクリプトを入力します。
#! /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 ウェブサーバーをデプロイして起動します。
[完了] をクリックします。
[作成] をクリックします。
[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 ゲートウェイを作成します。
Google Cloud コンソールで、[Cloud NAT] ページに移動します。
[開始] または [Cloud NAT ゲートウェイを作成] をクリックします。
注: Cloud NAT ゲートウェイを初めて作成する場合は、[開始] をクリックします。既存のゲートウェイがある場合は、Google Cloud に [Cloud NAT ゲートウェイを作成] ボタンが表示されます。別のゲートウェイを作成するには、[Cloud NAT ゲートウェイを作成] をクリックします。
[ゲートウェイ名] に「
myvpc-gateway
」と入力します。[NAT タイプ] で、[パブリック] を選択します。
[Cloud Router の選択] セクションで、次の構成パラメータを指定します。
- ネットワーク: [myvpc] を選択します。
- リージョン: [us-central1(アイオワ)] を選択します。
- Cloud Router: [新しいルーターを作成] をクリックします。
- [名前] に「
myvpc-router
」と入力します。 - [作成] をクリックします。
- [名前] に「
[作成] をクリックします。
階層型ファイアウォール ポリシーを作成し、ファイアウォール ルールを追加する
階層型ファイアウォール ポリシーを作成し、次のファイアウォール ポリシー ルールを追加します。
test-folder
内のすべての VM で IAP を有効にして、VM への管理者権限を有効にします。test-vpc
ネットワーク内のすべての VM への上り(内向き)トラフィックを許可します。myvpc
ネットワークからの下り(外向き)トラフィックを階層内の次のルール(VPC firewall implied IPv4 rule egress all
ルール)に委任します。test-folder
内の他のすべての VPC ネットワークから送信される下り(外向き)トラフィックを拒否します。
階層型ファイアウォール ポリシーを作成する手順は次のとおりです。
Google Cloud コンソールでプロジェクト セレクタ ページに移動し、[test-folder] を選択します。
Google Cloud コンソールで [ファイアウォール ポリシー] ページに移動します。
[ファイアウォール ポリシーを作成] をクリックします。
[ポリシーの構成] セクションの [ポリシー名] に「
fw-egress-specific-vpc
」と入力します。[説明] に「
example-firewall-policy
」と入力します。[続行] をクリックします。
[ルールを追加] セクションで、[続行] をクリックします。このクイックスタートの後の方で、ファイアウォール ルールを追加します。
[ポリシーとリソースの関連付け] セクションで、[追加] をクリックします。
組織を開き、[test-folder] を選択して [追加] をクリックします。
[作成] をクリックします。
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
など)。
ファイアウォール ルールを追加する手順は次のとおりです。
Google Cloud コンソールで [ファイアウォール ポリシー] ページに移動します。
[fw-egress-specific-vpc]、[ルールを追加] の順にクリックします。
[優先度] に「
100
」と入力します。[説明] に「
enable-iap
」と入力します。[トラフィックの方向] で [上り(内向き)] をオンにします。
[一致したときのアクション] で [許可] をオンにします。
[送信元] セクションの [IP 範囲] に「
35.235.240.0/20
」と入力します。[プロトコルとポート] セクションで、[指定したプロトコルとポート] を選択します。
[TCP] チェックボックスをオンにし、[ポート] に「
22
」と入力します。[作成] をクリックします。
test-vpc
ネットワークで上り(内向き)トラフィックを許可するファイアウォール ルールを追加する
ファイアウォール ルールを追加して、test-vpc
ネットワーク内のすべての VM への TCP ポート 80 での受信 HTTP ウェブ トラフィックを許可します。
Google Cloud コンソールで [ファイアウォール ポリシー] ページに移動します。
[fw-egress-specific-vpc]、[ルールを追加] の順にクリックします。
[優先度] に「
200
」と入力します。[説明] に「
allow-ingress-testvpc
」と入力します。[トラフィックの方向] で [上り(内向き)] をオンにします。
[一致したときのアクション] で [許可] をオンにします。
[ターゲット] セクションで、[ネットワークを追加] をクリックします。
test-vpc
ネットワークを含むテスト プロジェクトを選択し、ネットワークに test-vpc を選択します。[送信元] セクションの [IP 範囲] に「
0.0.0.0/0
」と入力します。[プロトコルとポート] セクションで、[指定したプロトコルとポート] を選択します。
[TCP] チェックボックスをオンにし、[ポート] に「
80
」と入力します。[作成] をクリックします。
myvpc
ネットワークからの下り(外向き)トラフィックを階層内の次のルールに委任するファイアウォール ルールを追加する
goto_next
アクションを使用して myvpc
ネットワークからの下り(外向き)トラフィックをファイアウォールの次のルール(暗黙的な IPv4 下り(外向き)許可の VPC ファイアウォール ルール)に委任するファイアウォール ルールを追加します。
Google Cloud コンソールで [ファイアウォール ポリシー] ページに移動します。
[fw-egress-specific-vpc]、[ルールを追加] の順にクリックします。
[優先度] に「
300
」と入力します。[説明] に「
delegate-egress-myvpc
」と入力します。[トラフィックの方向] に [下り(外向き)] を選択します。
[一致したときのアクション] で [次に移動] を選択します。
[ターゲット] セクションで、[ネットワークを追加] をクリックします。
myvpc
を含むテスト プロジェクト名を選択し、ネットワークにmyvpc
を選択します。[送信先] セクションの [IP 範囲] に、Apache ウェブサーバーを実行している VM のエフェメラル外部 IP アドレスを入力します。この IP アドレスは、
test-vpc
ネットワークに 2 つの VM を作成するセクションでメモしたものです。[作成] をクリックします。
他のすべての VPC ネットワークから送信される下り(外向き)トラフィックを拒否するファイアウォール ルールを追加する
最後に、test-folder
内の他のすべての VPC ネットワークから下り(外向き)に送信されるトラフィックを拒否するファイアウォール ルールを追加します。
Google Cloud コンソールで [ファイアウォール ポリシー] ページに移動します。
[fw-egress-specific-vpc]、[ルールを追加] の順にクリックします。
[優先度] に「
400
」と入力します。[説明] に「
block-egress-all-traffic
」と入力します。[トラフィックの方向] に [下り(外向き)] を選択します。
[一致したときのアクション] で [拒否] を選択します。
[送信先] セクションの [IP 範囲] に「
0.0.0.0/0
」と入力します。[作成] をクリックします。
階層型ファイアウォール ポリシーをテストする
階層型ファイアウォール ポリシーを構成したら、次の手順でポリシーをテストします。
Google Cloud コンソールに移動します。
ページ上部のプロジェクト選択ツールで、VPC ネットワークを作成した
test-project
を選択します。Google Cloud コンソールで [VM インスタンス] ページに移動します。
myvpc-vm
の [接続] 列で、[SSH] をクリックします。[ブラウザでの SSH] ダイアログで [承認] をクリックし、接続が確立されるのを待ちます。
myvpc
からtestvpc-apache-vm
への下り(外向き)トラフィックが許可されていることを確認するには、次のコマンドを実行します。curl <external_ephemeral_IP_testvpc_apache_vm> -m 2
上記のコマンドは、Apache ウェブサーバーの
index.html
ページに指定したコンテンツを返します。これは、myvpc
からの下り(外向き)接続が許可されていることを意味します。下り(外向き)トラフィックが組織内の他の VPC ネットワークからブロックされていることを確認するには、次の操作を行います。
Google Cloud コンソールで [VM インスタンス] ページに移動します。
testvpc-vm
の [接続] 列で、[SSH] をクリックします。ブラウザでの SSH ダイアログで [承認] をクリックし、接続が確立されるのを待ちます。
testvpc-vm
からtestvpc-apache-vm
への下り(外向き)トラフィックがブロックされていることを確認するには、次のコマンドを実行します。curl <internal_IP_testvpc_apache_vm> -m 2
上記のコマンドは
Connection timed out
メッセージを返します。これは、myvpc
を除く組織内のすべての VPC ネットワークからの下り(外向き)トラフィックを拒否するファイアウォール ルールを作成したためです。
クリーンアップ
このクイックスタートで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、個々のリソースを削除してから、プロジェクトとフォルダを削除します。
このクイックスタートで作成したリソースを削除するには、次の操作を行います。
階層型ファイアウォール ポリシーを削除する
Google Cloud コンソールに移動します。
ページ上部のプロジェクト選択ツールで、このクイックスタート用にリソースを作成した
test-folder
を選択します。Google Cloud コンソールで [ファイアウォール ポリシー] ページに移動します。
[このノードに関連付けられた、またはこのノードによって継承されたファイアウォール ポリシー] セクションで、[fw-egress-specific-vpc] をクリックします。
[関連付け] タブをクリックします。
test-folder のチェックボックスをオンにして、[関連付けを削除] をクリックします。
[
test-folder
との関連付けを削除] ダイアログで、[削除] をクリックします。[削除] をクリックします。
[
fw-egress-specific-vpc
を削除] ダイアログで、[削除] をクリックします。
VM を削除する
Google Cloud コンソールに移動します。
ページ上部のプロジェクト選択ツールで、[test-project] を選択します。
Google Cloud コンソールで [VM インスタンス] ページに移動します。
myvpc-vm、testvpc-vm、testvpc-apache-vm のチェックボックスをオンにします。
[削除] をクリックします。
[3 個のインスタンスを削除しますか?] ダイアログで、[削除] をクリックします。
Cloud Router と Cloud NAT ゲートウェイを削除する
Google Cloud コンソールで [Cloud Router] ページに移動します。
[myvpc-router] のチェックボックスをオンにします。
[削除] をクリックします。
[
myvpc-router
を削除] ダイアログで [削除] をクリックします。
Cloud Router を削除すると、関連する Cloud NAT ゲートウェイも削除されます。
VPC ネットワークとそのサブネットを削除する
Google Cloud コンソールの [VPC ネットワーク] ページに移動します。
[名前] 列で [myvpc] をクリックします。
[VPC ネットワークの削除] をクリックします。
[ネットワークの削除] ダイアログで [削除] をクリックします。
同様に、
test-vpc
ネットワークを削除します。
VPC ネットワークを削除すると、そのサブネットも削除されます。
プロジェクトを削除する
- In the Google Cloud console, go to the Manage resources page.
- If the project that you plan to delete is attached to an organization, expand the Organization list in the Name column.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
フォルダを削除する
Google Cloud コンソールで、[リソースの管理] ページに移動します。
削除するフォルダが組織に関連付けられている場合は、[名前] 列の [組織] リストを開きます。
フォルダリストで [test-folder] を選択し、[削除] をクリックします。
ダイアログでフォルダ ID を入力し、[削除] をクリックしてプロジェクトを削除します。
次のステップ
- ファイアウォール ポリシーのコンセプトについては、ファイアウォール ポリシーの概要をご覧ください。
- ファイアウォール ポリシー ルールのコンセプトについては、ファイアウォール ポリシー ルールの概要をご覧ください。
- VPC ファイアウォール ルールを作成、更新、モニタリング、削除するには、VPC ファイアウォール ルールを使用するをご覧ください。
- 費用を確認するには、Cloud NGFW の料金をご覧ください。