Network Security Integration は、プロデューサー / コンシューマー モデルを使用してデータを検査およびモニタリングします。パケット インターセプト テクノロジーを使用したインバンド統合により、サードパーティのネットワーク デバイスをネットワーク トラフィック フローに挿入し、詳細なパケット検査を実行します。
このチュートリアルでは、インバンド統合を設定するためにプロデューサーとコンシューマーのリソースを作成して構成する方法について説明します。
目標
このチュートリアルでは、プロジェクトで次のタスクを行う方法について説明します。
- 同じプロジェクト内のプロデューサーとコンシューマー用に、サブネットを含むカスタム VPC ネットワークを作成します。
- プロデューサーの場合は、内部パススルー ネットワーク ロードバランサ、インターセプト サービス、インターセプト デプロイ リソースなどのプロデューサー リソースを作成して構成します。
- コンシューマーの場合、クライアントとサーバーの仮想マシン(VM)インスタンス、コンシューマー エンドポイント リソース、クライアントとサーバーのトラフィックをインターセプトするファイアウォール ポリシーを作成して構成します。
- 接続をテストし、ネットワーク トラフィック パケットがコンシューマーのエンドポイント リソースによってインターセプトされ、プロデューサーのインターセプト リソースによって検査されることを確認します。
始める前に
- Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- プロジェクトで Compute Engine API を有効にします。
- 課金に使用する Google Cloud プロジェクトで Network Security API を有効にします。
- プロジェクト レベルで Compute ネットワーク管理者ロール(
roles/compute.networkAdmin)が付与され、組織レベルで セキュリティ プロファイル管理者ロール(roles/networksecurity.securityProfileAdmin)が付与されていることを確認します。 - コマンドラインから作業する場合は、Google Cloud CLI をインストールします。ツールのコンセプトとインストールについては、gcloud CLI の概要をご覧ください。
注: Google Cloud CLI を初めて実行する場合は、まず
gcloud initを実行して、gcloud CLI ディレクトリを初期化します。 プロジェクトの ID を取得します。インターセプト リソースとエンドポイント リソースの作成に必要です。
gcloud CLI を使用している場合は、ここで
PROJECT_IDを置き換えるか、後でそれぞれのコマンドで置き換えることができます。組織の ID を取得します。セキュリティ プロファイルやセキュリティ プロファイル グループなどの組織レベルのリソースを作成するには、このロールが必要です。
gcloud CLI を使用している場合は、ここで
ORG_IDを置き換えるか、後でそれぞれのコマンドで置き換えることができます。
プロデューサー リソースを作成する
このセクションでは、プロデューサー用に次のリソースを作成します。
- サブネットを含むカスタム VPC ネットワーク。
- Generic Network Virtualization Encapsulation(GENEVE)エコーサーバーを実行する VM インスタンスを含む非マネージド インスタンス グループ。
- バックエンド サービスと転送ルールがある内部パススルー ネットワーク ロードバランサ。
- Google Cloud ヘルスチェックを許可するファイアウォール ルール。
- インターセプト デプロイ グループとインターセプト デプロイ。
カスタム VPC ネットワークの作成
このセクションでは、サブネットを含む VPC ネットワークを作成します。
コンソール
Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。
[VPC ネットワークを作成] をクリックします。
[名前] に「
producer-network」と入力します。[説明] に「
Producer VPC network」と入力します。[サブネット] セクションで、次の操作を行います。
- [サブネット作成モード] で [カスタム] をクリックします。
- [新しいサブネット] セクションに、次の情報を入力します。
- 名前:
producer-subnet - リージョン:
us-west1 - IP スタックタイプ: IPv4(シングルスタック)
- IPv4 範囲:
10.10.0.0/16
- 名前:
- [完了] をクリックします。
[作成] をクリックします。
Google Cloud CLI を開き、次のコマンドを実行して VPC ネットワークの最大伝送ユニット(MTU)を増やします。
gcloud compute networks update producer-network \ --mtu=1768このコマンドでは、1, 768 バイトの MTU を指定します。これは、VPC ネットワークのデフォルトの MTU(1, 460 バイト)と Network Security Integration の Geneve カプセル化オーバーヘッド(308 バイト)の合計です。
gcloud
VPC ネットワークを作成します。
gcloud compute networks create producer-network \ --subnet-mode=custom \ --mtu=1768 \ --description="Producer VPC network"このコマンドでは、最大伝送単位(MTU)として 1, 768 バイトを指定します。これは、VPC ネットワークのデフォルトの MTU(1, 460 バイト)とNetwork Security Integration GENEVE カプセル化オーバーヘッド(308 バイト)の合計です。
VPC ネットワークにサブネットを作成します。
gcloud compute networks subnets create producer-subnet \ --network=producer-network \ --region=us-west1 \ --range=10.10.0.0/16
非マネージド インスタンス グループを作成する
このセクションでは、非マネージド インスタンス グループを作成します。
コンソール
Google Cloud コンソールで、[インスタンス グループ] ページに移動します。
[インスタンス グループを作成] をクリックします。
[新しい非マネージド インスタンス グループ] をクリックします。
[名前] に「
producer-instance-group」と入力します。[ロケーション] セクションで、[リージョン] に
us-west1を選択し、[ゾーン] にus-west1-bを選択します。[ネットワーク] で
producer-networkを選択します。[サブネットワーク] で、[
producer-subnet] を選択します。[作成] をクリックします。
gcloud
gcloud compute instance-groups unmanaged create producer-instance-group \
--zone=us-west1-b
ロードバランサ コンポーネントを構成する
このセクションでは、バックエンド サービスや転送ルールなど、内部パススルー ネットワーク ロードバランサのコンポーネントを作成します。
コンソール
構成を開始する
Google Cloud コンソールで、[ロード バランシング] ページに移動します。
- [ロードバランサを作成] をクリックします。
- [ロードバランサの種類] で [ネットワーク ロードバランサ(TCP / UDP / SSL)] を選択し、[次へ] をクリックします。
- [プロキシまたはパススルー] で [パススルー ロードバランサ] を選択し、[次へ] をクリックします。
- [インターネット接続または内部] で [内部] を選択し、[次へ] をクリックします。
- [構成] をクリックします。
基本構成
[Create internal passthrough Network Load Balancer] ページで、次の情報を入力します。
- ロードバランサの名前:
producer-ilb - リージョン:
us-west1 - ネットワーク:
producer-network
バックエンドを構成する
- [バックエンドの構成] をクリックします。
- [プロトコル] で、[
UDP] を選択します。 - [ヘルスチェック] リストから [ヘルスチェックを作成] を選択し、次の情報を入力して [作成] をクリックします。
- 名前:
producer-health-check - 範囲: リージョン
- ポート:
80 - プロキシのプロトコル:
NONE
- 名前:
- [バックエンド] の [新しいバックエンド] セクションで、[IP スタックタイプ] に [IPv4(シングルスタック)] を選択します。
- [インスタンス グループ] で、
producer-instance-groupインスタンス グループを選択し、[完了] をクリックします。 - 続行する前に、[バックエンドの構成] の隣に青いチェックマークがあることを確認します。
フロントエンドを構成する
[新しいフロントエンドの IP とポート] セクションで、次の操作を行います。
- [名前] に「
producer-ilb-fr」と入力します。 - [サブネットワーク] で、[
producer-subnet] を選択します。 - [ポート] で [単一] を選択し、[ポート番号] に
6081を入力します。 - 続行する前に、[フロントエンドの構成] の隣に青いチェックマークがあることを確認します。
構成を確認する
- [確認と完了] をクリックします。
- ロードバランサの構成を確認します。
- [作成] をクリックします。
gcloud
リージョン ヘルスチェックを作成します。
gcloud compute health-checks create tcp producer-health-check \ --region=us-west1 \ --port=80バックエンド サービスを作成します。
gcloud compute backend-services create producer-backend-service \ --protocol=UDP \ --region=us-west1 \ --health-checks=producer-health-check \ --health-checks-region=us-west1 \ --load-balancing-scheme=INTERNALバックエンド サービスの転送ルールを作成します。
gcloud compute forwarding-rules create producer-ilb-fr \ --backend-service=producer-backend-service \ --region=us-west1 \ --network=producer-network \ --subnet=producer-subnet \ --ip-protocol=UDP \ --load-balancing-scheme=INTERNAL \ --ports=6081
VM インスタンスを作成してインスタンス グループに追加する
このセクションでは、GENEVE カプセル化パケットのエコーサーバーを設定する起動スクリプトを使用して VM インスタンスを作成します。
VM インスタンスを作成する前に、内部パススルー ネットワーク ロードバランサの転送ルールとサブネットのゲートウェイの IP アドレスを取得します。スタートアップ スクリプトの IP アドレスが必要です。
コンソール
内部パススルー ネットワーク ロードバランサの IP アドレスを取得する
Google Cloud コンソールで、[ロード バランシング] ページに移動します。
producer-ilbロードバランサをクリックします。[フロントエンド] セクションで、[IP:ポート] 列の転送ルールの IP アドレスをメモします。
サブネット ゲートウェイの IP アドレスを取得する
Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。
producer-networkVPC ネットワークをクリックします。[サブネット] タブをクリックします。
[サブネット] セクションで、[ゲートウェイ] 列のゲートウェイ IP アドレスをメモします。
VM インスタンスを作成する
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
- [インスタンスを作成] をクリックします。
- [名前] に「
producer-instance」と入力します。 - [リージョン] で、
us-west1を選択します。 - [ゾーン] で、[
us-west1-b] を選択します。 [ネットワーキング] をクリックして次のフィールドを構成します。
[ネットワーク インターフェース] セクションで、
defaultをクリックしてネットワーク インターフェースを編集します。- ネットワーク:
producer-network - サブネット:
producer-subnet - 外部 IPv4 アドレス: なし
- ネットワーク:
[詳細] をクリックし、[起動スクリプト] に次のスクリプトを入力します。
#!/bin/bash # Enable IP forwarding. echo 1 > /proc/sys/net/ipv4/ip_forward # Log incoming packets from the gateway IP and the GENEVE 6081 # port. iptables -t nat -A PREROUTING -p udp -s GATEWAY_IP/32 --dport 6081 -j LOG --log-prefix="[NSI INTERCEPT] " # Apply DNAT (Destination NAT) on incoming packets from the gateway IP # and the GENEVE 6081 port. # Set the destination IP to the gateway IP so the packet is rerouted # back to the sender. iptables -t nat -A PREROUTING -p udp -s GATEWAY_IP/32 --dport 6081 -j DNAT --to-destination GATEWAY_IP # Apply SNAT (Source NAT) on outgoing packets that have the GENEVE 6081 # port and source IP that equals the gateway IP. # Set the source IP to the internal load balancer IP which # effectively swaps the IPs of the original packet. iptables -t nat -A POSTROUTING -p udp -s GATEWAY_IP/32 --dport 6081 -j SNAT --to-source LOAD_BALANCER_IP # Spin up a simple server for health checks on port 80. nohup python3 -u -m http.server 80 &
次のように置き換えます。
GATEWAY_IP: サブネット ゲートウェイの IP アドレス。LOAD_BALANCER_IP: ロードバランサの転送ルールの IP アドレス。
[作成] をクリックします。
インスタンス グループに VM インスタンスを追加する
Google Cloud コンソールで、[インスタンス グループ] ページに移動します。
[
producer-instance-group] をクリックします。[編集] をクリックします。
[VM インスタンス] セクションの [VM を選択] リストから、
producer-instanceVM を選択します。[保存] をクリックします。
gcloud
ロードバランサの転送ルールの IP アドレスを取得します。
ILB_IP=$(gcloud compute forwarding-rules describe producer-ilb-fr \ --region=us-west1 \ --format="get(IPAddress)")サブネットのゲートウェイの IP アドレスを取得します。
GW_IP=$(gcloud compute networks subnets describe producer-subnet \ --region=us-west1 \ --format="get(gatewayAddress)")VM インスタンスを作成します。
gcloud compute instances create producer-instance \ --image-project=debian-cloud \ --image-family=debian-11 \ --machine-type=e2-micro \ --zone=us-west1-b \ --network-interface="subnet=producer-subnet,no-address" \ --metadata=startup-script='#!/bin/bash # Enable IP forwarding. echo 1 > /proc/sys/net/ipv4/ip_forward # Log incoming packets from the gateway IP and the GENEVE 6081 port. iptables -t nat -A PREROUTING -p udp -s '"$GW_IP"'/32 --dport 6081 -j LOG --log-prefix="[NSI INTERCEPT] " # Apply DNAT (Destination NAT) on incoming packets from the gateway # IP and the GENEVE 6081 port. # Set the destination IP to the gateway IP so the packet is rerouted # back to the sender. iptables -t nat -A PREROUTING -p udp -s '"$GW_IP"'/32 --dport 6081 -j DNAT --to-destination '"$GW_IP"' # Apply SNAT (Source NAT) on outgoing packets that have the GENEVE # 6081 port and source IP that equals the gateway IP. # Set the source IP to the internal load balancer IP which # effectively swaps the IPs of the original packet. iptables -t nat -A POSTROUTING -p udp -s '"$GW_IP"'/32 --dport 6081 -j SNAT --to-source '"$ILB_IP"' # Spin up a simple server for health checks on port 80. nohup python3 -u -m http.server 80 &'VM インスタンスをインスタンス グループに追加します。
gcloud compute instance-groups unmanaged add-instances producer-instance-group \ --instances=producer-instance \ --zone=us-west1-bバックエンド サービスにインスタンス グループを追加します。
gcloud compute backend-services add-backend producer-backend-service \ --region=us-west1 \ --instance-group=producer-instance-group \ --instance-group-zone=us-west1-b
ファイアウォール ポリシーを作成し、ファイアウォール ルールを追加する
このセクションでは、ファイアウォール ポリシーを作成し、ファイアウォール ルールを追加して、Identity-Aware Proxy(IAP)を介してプロデューサー VM インスタンスへの UDP 接続、 Google Cloud ヘルスチェック、SSH 接続を許可します。
コンソール
Google Cloud コンソールで、[ファイアウォール ポリシー] ページに移動します。
[ファイアウォール ポリシーを作成] をクリックします。
[名前] フィールドに「
producer-firewall-policy」と入力します。[デプロイのスコープ] で [グローバル] を選択し、[続行] をクリックします。
ポリシーに次のルールを作成します。
VPC ゲートウェイ IP アドレスからの GENEVE ポートを使用した UDP 接続を許可する
- [ファイアウォール ルールを作成] をクリックし、次のフィールドを構成します。
- 優先度:
100 - トラフィックの方向: 上り(内向き)
- 一致したときのアクション: 許可
- ソースフィルタ > IP 範囲:
GATEWAY_IP - プロトコルとポート: [指定したプロトコルとポート] を選択し、[UDP] チェックボックスをオンにして、[ポート] に「
6081」と指定します。
- 優先度:
- [作成] をクリックします。
GATEWAY_IPは、サブネット ゲートウェイの IP アドレスに置き換えます。Google Cloud ヘルスチェックを許可する
- [ファイアウォール ルールを作成] をクリックし、次のフィールドを構成します。
- 優先度:
101 - トラフィックの方向: 上り(内向き)
- 一致したときのアクション: 許可
- IP 範囲:
35.191.0.0/16と130.211.0.0/22 - プロトコルとポート: [指定したプロトコルとポート] を選択し、[TCP] チェックボックスをオンにして、[ポート] に「
80」と入力します。
- 優先度:
- [作成] をクリックします。
Identity-Aware Proxy を介してプロデューサー VM インスタンスへの SSH 接続を許可する
- [ファイアウォール ルールを作成] をクリックし、次のフィールドを構成します。
- 優先度:
102 - トラフィックの方向: 上り(内向き)
- 一致したときのアクション: 許可
- IP 範囲:
35.235.240.0/20 - プロトコルとポート: [指定したプロトコルとポート] を選択し、[TCP] チェックボックスをオンにして、[ポート] に「
22」と入力します。
- 優先度:
- [作成] をクリックします。
- [ファイアウォール ルールを作成] をクリックし、次のフィールドを構成します。
ポリシーをネットワークに関連付けるには、[続行] をクリックしてから [関連付け] をクリックします。
producer-networkチェックボックスをオンにします。[続行] をクリックします。
[作成] をクリックします。
gcloud
グローバル ネットワーク ファイアウォール ポリシーを作成します。
gcloud compute network-firewall-policies create producer-firewall-policy \ --globalファイアウォール ポリシーをプロデューサー ネットワークに関連付けます。
gcloud compute network-firewall-policies associations create \ --name=producer-firewall-policy-assoc \ --firewall-policy=producer-firewall-policy \ --global-firewall-policy \ --network=producer-networkVPC ゲートウェイの IP アドレスからの GENEVE ポートを使用した UDP 接続を許可するファイアウォール ルールを作成します。
gcloud compute network-firewall-policies rules create 100 \ --firewall-policy=producer-firewall-policy \ --global-firewall-policy \ --action=allow \ --direction=INGRESS \ --layer4-configs=udp:6081 \ --src-ip-ranges=$GW_IP/32Google Cloud ヘルスチェックを許可するファイアウォール ルールを作成します。
gcloud compute network-firewall-policies rules create 101 \ --firewall-policy=producer-firewall-policy \ --global-firewall-policy \ --action=allow \ --direction=INGRESS \ --layer4-configs=tcp:80 \ --src-ip-ranges=35.191.0.0/16,130.211.0.0/22Identity-Aware Proxy を介してプロデューサー VM インスタンスへの SSH 接続を許可するファイアウォール ルールを作成します。
gcloud compute network-firewall-policies rules create 102 \ --firewall-policy=producer-firewall-policy \ --global-firewall-policy \ --action=allow \ --direction=INGRESS \ --layer4-configs=tcp:22 \ --src-ip-ranges=35.235.240.0/20
プロデューサー インターセプト リソースを作成する
このセクションでは、インターセプト デプロイ グループとインターセプト デプロイを作成します。
コンソール
Google Cloud コンソールで、[デプロイ グループ] ページに移動します。
[デプロイ グループを作成] をクリックします。
[名前] に「
producer-deployment-group」と入力します。[ネットワーク] で
producer-networkを選択します。[目的] で [NSI インバンド] を選択します。
[インターセプト デプロイ] セクションで、[インターセプト デプロイを作成] をクリックし、次のフィールドを指定して、[作成] をクリックします。
- 名前:
producer-deployment - リージョン:
us-west1。 - ゾーン:
us-west1-b。 - 内部ロードバランサ:
producer-ilb。
- 名前:
[作成] をクリックします。
gcloud
インターセプト デプロイ グループを作成します。
gcloud network-security intercept-deployment-groups create producer-deployment-group \ --location=global \ --network=projects/PROJECT_ID/global/networks/producer-network \ --no-asyncPROJECT_IDは、プロジェクトの ID に置き換えます。インターセプト デプロイを作成します。
gcloud network-security intercept-deployments create producer-deployment \ --location=us-west1-b \ --forwarding-rule=producer-ilb-fr \ --forwarding-rule-location=us-west1 \ --intercept-deployment-group=projects/PROJECT_ID/locations/global/interceptDeploymentGroups/producer-deployment-group \ --no-asyncPROJECT_IDは、プロジェクトの ID に置き換えます。
コンシューマー リソースを作成する
このセクションでは、コンシューマー用に次のリソースを作成します。
- サブネットを含むカスタム VPC ネットワーク。
- サーバー VM とクライアント VM。
- トラフィックをインターセプトするファイアウォール ポリシーとルール。
- インターセプト エンドポイント グループとインターセプト エンドポイント グループの関連付け。
- セキュリティ プロファイルとセキュリティ プロファイル グループ。
カスタム VPC ネットワークの作成
このセクションでは、サブネットを含む VPC ネットワークを作成します。
コンソール
Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。
[VPC ネットワークを作成] をクリックします。
[名前] に「
consumer-network」と入力します。[説明] に「
Consumer VPC network」と入力します。[サブネット] セクションで、次の操作を行います。
- [サブネット作成モード] を [カスタム] に設定します。
- [新しいサブネット] セクションに、次の情報を入力します。
- 名前:
consumer-subnet - リージョン:
us-west1 - IP スタックタイプ: IPv4(シングルスタック)
- IPv4 範囲:
10.10.0.0/16
- 名前:
- [完了] をクリックします。
[作成] をクリックします。
gcloud
コンシューマー VPC ネットワークを作成します。
gcloud compute networks create consumer-network \ --subnet-mode=custom \ --description="Consumer VPC network"VPC ネットワークにサブネットを作成します。
gcloud compute networks subnets create consumer-subnet \ --network=consumer-network \ --region=us-west1 \ --range=10.10.0.0/16
サーバー VM とクライアント VM を作成する
このセクションでは、サーバー VM とクライアント VM を作成します。
コンソール
サーバー VM を作成する
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
[インスタンスを作成] をクリックします。
[名前] を
consumer-server-vmに設定します。[リージョン] を
us-west1に設定します。[ゾーン] を
us-west1-bに設定します。[マシンタイプ] を e2-micro に設定します。
[ネットワーキング] をクリックして次のフィールドを構成します。
[ネットワーク インターフェース] セクションで、
defaultをクリックしてネットワーク インターフェースを編集します。- ネットワーク:
consumer-network - サブネット:
consumer-subnet - 外部 IPv4 アドレス: なし
- ネットワーク:
[詳細] をクリックし、[起動スクリプト] に次のスクリプトを入力します。
echo success > /tmp/connection_test && nohup python3 -u -m http.server --directory /tmp 8000
[作成] をクリックします。
クライアント VM を作成する
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
[インスタンスを作成] をクリックします。
[名前] を
consumer-client-vmに設定します。[リージョン] を
us-west1に設定します。[ゾーン] を
us-west1-bに設定します。[マシンタイプ] を e2-micro に設定します。
[ネットワーキング] をクリックして次のフィールドを構成します。
[ネットワーク インターフェース] セクションで、
defaultをクリックしてネットワーク インターフェースを編集します。- ネットワーク:
consumer-network - サブネット:
consumer-subnet - 外部 IPv4 アドレス: なし
- ネットワーク:
[作成] をクリックします。
gcloud
サーバー VM を作成する。
gcloud compute instances create consumer-server-vm \ --image-project=debian-cloud \ --image-family=debian-11 \ --machine-type=e2-micro \ --zone=us-west1-b \ --network-interface="subnet=consumer-subnet,no-address" \ --metadata=startup-script="echo success > /tmp/connection_test && nohup python3 -u -m http.server --directory /tmp 8000"クライアント VM を作成する。
gcloud compute instances create consumer-client-vm \ --image-project=debian-cloud \ --image-family=debian-11 \ --machine-type=e2-micro \ --zone=us-west1-b \ --network-interface="subnet=consumer-subnet,no-address"
SSH アクセスを許可するファイアウォール ポリシーを作成する
このセクションでは、ファイアウォール ポリシーを作成し、コンシューマー VM への SSH アクセスを許可するファイアウォール ルールを追加します。
コンソール
Google Cloud コンソールで、[ファイアウォール ポリシー] ページに移動します。
[ファイアウォール ポリシーを作成] をクリックします。
[名前] フィールドに「
consumer-firewall-policy」と入力します。[デプロイのスコープ] で [グローバル] を選択し、[続行] をクリックします。
[ファイアウォール ルールを作成] をクリックし、次のフィールドを構成して、[作成] をクリックします。
- 優先度:
100 - トラフィックの方向: 上り(内向き)
- 一致したときのアクション: 許可
- ソースフィルタ > IP 範囲:
35.235.240.0/20 - プロトコルとポート: [指定したプロトコルとポート] を選択し、[TCP] チェックボックスをオンにして、[ポート] に「
22」と入力します。
IPv4 範囲
35.235.240.0/20には、Identity-Aware Proxy が TCP 転送に使用するすべての IP アドレスが含まれています。詳細については、TCP 転送用のプロジェクトを準備するをご覧ください。- 優先度:
ポリシーをネットワークに関連付けるには、[続行] をクリックしてから [関連付け] をクリックします。
consumer-networkチェックボックスをオンにします。[続行] をクリックします。
[作成] をクリックします。
gcloud
グローバル ネットワーク ファイアウォール ポリシーを作成します。
gcloud compute network-firewall-policies create consumer-firewall-policy \ --globalファイアウォール ポリシーをコンシューマー ネットワークに関連付けます。
gcloud compute network-firewall-policies associations create \ --name=consumer-firewall-policy-assoc \ --firewall-policy=consumer-firewall-policy \ --global-firewall-policy \ --network=consumer-networkIdentity-Aware Proxy を介してクライアント VM インスタンスへの SSH 接続を許可する SSH 許可ルールを作成します。
gcloud compute network-firewall-policies rules create 101 \ --firewall-policy=consumer-firewall-policy \ --global-firewall-policy \ --action=allow \ --direction=INGRESS \ --layer4-configs=tcp:22 \ --src-ip-ranges=35.235.240.0/20IPv4 範囲
35.235.240.0/20には、Identity-Aware Proxy(IAP)が TCP 転送に使用するすべての IP アドレスが含まれています。詳細については、TCP 転送用のプロジェクトの準備をご覧ください。
コンシューマー エンドポイント グループを作成する
このセクションでは、インターセプト エンドポイント グループとインターセプト エンドポイント グループの関連付けを作成します。
コンソール
Google Cloud コンソールで、[エンドポイント グループ] ページに移動します。
[エンドポイント グループを作成] をクリックします。
[名前] に「
consumer-endpoint-group」と入力します。[デプロイ グループ] で、[プロジェクトを選択] メニューから [現在のプロジェクトを選択] を選択します。
[インターセプト デプロイ グループ] で、
producer-deployment-groupを選択します。[続行] をクリックします。
[エンドポイント グループの関連付けを追加] をクリックします。
[プロジェクト] で、現在のプロジェクトを選択します。
[ネットワーク] で
consumer-networkを選択します。[作成] をクリックします。
gcloud
インターセプト エンドポイント グループを作成します。
gcloud network-security intercept-endpoint-groups create consumer-endpoint-group \ --location=global \ --intercept-deployment-group=projects/PROJECT_ID/locations/global/interceptDeploymentGroups/producer-deployment-group \ --no-asyncPROJECT_IDは、プロジェクトの ID に置き換えます。インターセプト エンドポイント グループの関連付けを作成します。
gcloud network-security intercept-endpoint-group-associations create consumer-endpoint-group-association \ --location=global \ --intercept-endpoint-group=projects/PROJECT_ID/locations/global/interceptEndpointGroups/consumer-endpoint-group \ --network=consumer-network \ --no-asyncPROJECT_IDは、プロジェクトの ID に置き換えます。
セキュリティ プロファイルとセキュリティ プロファイル グループを作成する
トラフィックをインターセプトするセキュリティ プロファイル グループとカスタム セキュリティ プロファイルを作成します。
コンソール
セキュリティ プロファイルを作成する
Google Cloud コンソールで、[セキュリティ プロファイル] ページに移動します。
組織選択ツールから自分の組織を選択します。
[セキュリティ プロファイル] タブで、[プロファイルを作成] をクリックします。
[名前] に「
consumer-security-profile」と入力します。[セキュリティ プロファイルの目的] で、[NSI インバンド] を選択します。
[プロジェクト] で、現在のプロジェクトを選択します。
[インターセプト エンドポイント グループ] で
consumer-endpoint-groupを選択します。[作成] をクリックします。
セキュリティ プロファイル グループを作成する
Google Cloud コンソールで、[セキュリティ プロファイル グループ] ページに移動します。
組織選択ツールから自分の組織を選択します。
[セキュリティ プロファイル グループ] タブで、[プロファイル グループを作成] をクリックします。
[名前] に「
consumer-security-profile-group」と入力します。[セキュリティ プロファイル グループの目的] で、[NSI インバンド] を選択します。
[カスタム インターセプト プロファイル] で、
consumer-security-profileを選択します。[作成] をクリックします。
gcloud
インターセプト セキュリティ プロファイルを作成します。
gcloud network-security security-profiles custom-intercept create consumer-security-profile \ --location=global \ --organization=ORG_ID \ --intercept-endpoint-group=projects/PROJECT_ID/locations/global/interceptEndpointGroups/consumer-endpoint-group \ --no-async次のように置き換えます。
ORG_ID: 組織の ID。セキュリティ プロファイルは組織レベルのリソースです。作成するには、組織レベルでセキュリティ プロファイル管理者のロール(networksecurity.securityProfileAdmin)が必要です。PROJECT_ID: 実際のプロジェクトの ID。
インターセプト セキュリティ プロファイル グループを作成します。
gcloud network-security security-profile-groups create consumer-security-profile-group \ --location=global \ --organization=ORG_ID \ --custom-intercept-profile=consumer-security-profile \ --billing-project=PROJECT_ID \ --no-async次のように置き換えます。
ORG_ID: 組織の ID。セキュリティ プロファイル グループは組織レベルのリソースです。作成するには、組織レベルでセキュリティ プロファイル管理者ロール(networksecurity.securityProfileAdmin)が必要です。PROJECT_ID: 実際のプロジェクトの ID。
トラフィックをインターセプトするファイアウォール ポリシーを作成する
このセクションでは、トラフィックをインターセプトするファイアウォール ポリシーとファイアウォール ルールを作成します。
コンソール
Google Cloud コンソールで、[ファイアウォール ポリシー] ページに移動します。
[
consumer-firewall-policy] をクリックします。[ファイアウォール ルールを作成] をクリックし、次のフィールドを構成します。
- 優先度:
100 - トラフィックの方向: 上り(内向き)
- 一致したときのアクション: L7 の検査に進む
- 目的: NSI インバンド
- セキュリティ プロファイル グループ:
consumer-security-profile-group - IP 範囲:
10.10.0.0/16 - プロトコルとポート: [指定したプロトコルとポート] を選択し、[TCP] チェックボックスをオンにして、[ポート] に「
8000」と入力します。
- 優先度:
[作成] をクリックします。
gcloud
ファイアウォール ルールを追加して、サーバー VM の TCP ポート 8000 でトラフィックをインターセプトします。
gcloud compute network-firewall-policies rules create 100 \ --firewall-policy=consumer-firewall-policy \ --global-firewall-policy \ --action=apply_security_profile_group \ --security-profile-group=organizations/ORG_ID/locations/global/securityProfileGroups/consumer-security-profile-group \ --direction=INGRESS \ --layer4-configs=tcp:8000 \ --src-ip-ranges=10.10.0.0/16ORG_IDは組織の ID に置き換えます。
接続をテストする
このセクションでは、コンシューマー クライアント VM インスタンスからコンシューマー サーバー VM インスタンスにネットワーク トラフィックを送信し、プロデューサー VM インスタンスのログを調べてインターセプトを確認します。
次のコマンドを実行して、SSH 経由でコンシューマー クライアント VM インスタンスに接続し、コンシューマー サーバー VM インスタンスにリクエストを送信します。
gcloud compute ssh consumer-client-vm \ --tunnel-through-iap \ --zone=us-west1-b \ --command="curl -m 3 -s http://consumer-server-vm:8000/connection_test || echo fail"前のコマンドを実行すると、
successメッセージが表示されます。これは、トラフィックがクライアントからサーバーに送信されることを示します。次のコマンドを実行して、プロデューサー VM インスタンスのログを確認します。
gcloud compute ssh producer-instance \ --tunnel-through-iap \ --zone=us-west1-b \ --command="cat /var/log/syslog | grep 'NSI INTERCEPT'"[NSI INTERCEPT] IN=ens4 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=10.10.0.1 DST=10.10.0.2 LEN=136 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=45554 DPT=6081 LEN=116のようなメッセージが表示されます。これは、クライアント サーバー トラフィックがプロデューサー VM インスタンスによってインターセプトされたことを示します。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
コンシューマー リソースを削除する
ファイアウォール ポリシーとコンシューマー ネットワークの関連付けを解除し、ファイアウォール ポリシーを削除します。
コンソール
Google Cloud コンソールで、[ファイアウォール ポリシー] ページに移動します。
consumer-firewall-policyポリシーをクリックします。[関連付け] タブをクリックします。
consumer-network関連付けのチェックボックスをオンにします。[関連付けを削除] をクリックします。
[削除] をクリックします。
ページの上部にある [削除] をクリックします。
もう一度 [削除] をクリックして確定します。
gcloud
関連付けを削除します。
gcloud compute network-firewall-policies associations delete \ --name=consumer-firewall-policy-assoc \ --firewall-policy=consumer-firewall-policy \ --global-firewall-policyファイアウォール ポリシーを削除します。
gcloud compute network-firewall-policies delete consumer-firewall-policy \ --global
セキュリティ プロファイル グループを削除します。
コンソール
Google Cloud コンソールで、[セキュリティ プロファイル] ページに移動します。
組織選択ツールから自分の組織を選択します。
[セキュリティ プロファイル グループ] タブで、
consumer-security-profile-groupセキュリティ プロファイル グループを選択し、[削除] をクリックします。もう一度 [削除] をクリックして確定します。
gcloud
gcloud network-security security-profile-groups delete consumer-security-profile-group \ --location=global \ --organization=ORG_ID \ --billing-project=PROJECT_ID \ --quiet次のように置き換えます。
ORG_ID: 組織の IDPROJECT_ID: オブジェクトの ID
セキュリティ プロファイルを削除します。
コンソール
Google Cloud コンソールで、[セキュリティ プロファイル] ページに移動します。
組織選択ツールから自分の組織を選択します。
[セキュリティ プロファイル] タブで、
consumer-security-profileセキュリティ プロファイルを選択し、[削除] をクリックします。もう一度 [削除] をクリックして確定します。
gcloud
gcloud network-security security-profiles custom-intercept delete consumer-security-profile \ --location=global \ --organization=ORG_ID \ --billing-project=PROJECT_ID \ --quiet次のように置き換えます。
ORG_ID: 組織の IDPROJECT_ID: オブジェクトの ID
インターセプト エンドポイント グループの関連付けを削除します。
コンソール
Google Cloud コンソールで、[エンドポイント グループ] ページに移動します。
[
consumer-endpoint-group] をクリックします。consumer-network関連付けを選択し、[削除] をクリックします。もう一度 [削除] をクリックして確定します。
gcloud
gcloud network-security intercept-endpoint-group-associations delete consumer-endpoint-group-association \ --location=global \ --no-asyncインターセプト エンドポイント グループを削除します。
コンソール
Google Cloud コンソールで、[エンドポイント グループ] ページに移動します。
[
consumer-endpoint-group] を選択し、[削除] をクリックします。もう一度 [削除] をクリックして確定します。
gcloud
gcloud network-security intercept-endpoint-groups delete consumer-endpoint-group \ --location=global \ --no-asyncサーバー VM とクライアント VM を削除します。
コンソール
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
consumer-client-vmとconsumer-server-vmのチェックボックスをオンにして、[削除] をクリックします。もう一度 [削除] をクリックして確定します。
gcloud
クライアント VM を削除します。
gcloud compute instances delete consumer-client-vm \ --zone=us-west1-b \ --quietサーバー VM を削除します。
gcloud compute instances delete consumer-server-vm \ --zone=us-west1-b \ --quiet
コンシューマー ネットワークとサブネットを削除します。
コンソール
Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。
[
consumer-network] をクリックします。[サブネット] タブで、
consumer-subnetのチェックボックスをオンにして、[削除] をクリックします。もう一度 [削除] をクリックして確定します。
[VPC ネットワークの削除] をクリックします。
テキスト フィールドに
consumer-networkと入力して、[削除] をクリックします。
gcloud
サブネットを削除します。
gcloud compute networks subnets delete consumer-subnet \ --region=us-west1 \ --quietVPC ネットワークを削除します。
gcloud compute networks delete consumer-network \ --quiet
プロデューサー リソースを削除する
ファイアウォール ポリシーとプロデューサー ネットワークの関連付けを解除し、ファイアウォール ポリシーを削除します。
コンソール
Google Cloud コンソールで、[ファイアウォール ポリシー] ページに移動します。
producer-firewall-policyポリシーをクリックします。[関連付け] タブをクリックします。
producer-network関連付けのチェックボックスをオンにします。[関連付けを削除] をクリックします。
[削除] をクリックします。
ページの上部にある [削除] をクリックします。
もう一度 [削除] をクリックして確定します。
gcloud
関連付けを削除します。
gcloud compute network-firewall-policies associations delete \ --name=producer-firewall-policy-assoc \ --firewall-policy=producer-firewall-policy \ --global-firewall-policyファイアウォール ポリシーを削除します。
gcloud compute network-firewall-policies delete producer-firewall-policy \ --global
インターセプト デプロイとインターセプト デプロイ グループを削除します。
コンソール
Google Cloud コンソールで、[デプロイ グループ] ページに移動します。
[
producer-deployment-group] をクリックします。producer-deploymentを削除します。producer-deploymentチェックボックスをオンにして、[削除] をクリックします。- もう一度 [削除] をクリックして確定します。
ページ上部にある [削除] ボタンをクリックします。
もう一度 [削除] をクリックして確定します。
gcloud
インターセプト デプロイを削除します。
gcloud network-security intercept-deployments delete producer-deployment \ --location=us-west1-b \ --no-asyncインターセプト デプロイ グループを削除します。
gcloud network-security intercept-deployment-groups delete producer-deployment-group \ --location=global \ --no-async
ロードバランサ リソースを削除します。
コンソール
Google Cloud コンソールで、[ロード バランシング] ページに移動します。
producer-ilbチェックボックスをオンにします。ページ上部にある [削除] ボタンをクリックします。
producer-health-checkチェックボックスをオンにして、[ロードバランサと選択したリソースを削除] をクリックします。
gcloud
転送ルールを削除します。
gcloud compute forwarding-rules delete producer-ilb-fr \ --region=us-west1 \ --quietバックエンド サービスを削除します。
gcloud compute backend-services delete producer-backend-service \ --region=us-west1 \ --quietヘルスチェックを削除します。
gcloud compute health-checks delete producer-health-check \ --region=us-west1 \ --quiet
プロデューサー VM インスタンスを削除します。
コンソール
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
producer-instanceのチェックボックスをオンにして、[削除] をクリックします。もう一度 [削除] をクリックして確定します。
gcloud
gcloud compute instances delete producer-instance \ --zone=us-west1-b \ --quietインスタンス グループを削除します。
コンソール
Google Cloud コンソールで、[インスタンス グループ] ページに移動します。
producer-instance-groupチェックボックスをオンにします。[削除] をクリックします。
確認ウィンドウで [削除] をクリックします。
gcloud
gcloud compute instance-groups unmanaged delete producer-instance-group \ --zone=us-west1-b \ --quietプロデューサー ネットワークとサブネットを削除します。
コンソール
Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。
[
producer-network] をクリックします。[サブネット] タブで、
producer-subnetのチェックボックスをオンにして、[削除] をクリックします。もう一度 [削除] をクリックして確定します。
[VPC ネットワークの削除] をクリックします。
テキスト フィールドに
producer-networkと入力して、[削除] をクリックします。
gcloud
サブネットを削除します。
gcloud compute networks subnets delete producer-subnet \ --region=us-west1 \ --quietネットワークを削除します。
gcloud compute networks delete producer-network \ --quiet
次のステップ
- インターセプト デプロイ グループの概要
- インターセプト デプロイの概要
- インターセプト エンドポイント グループと関連付けの概要
- セキュリティ プロファイルの概要
- セキュリティ プロファイル グループの概要
- Google Cloud に関するリファレンス アーキテクチャ、図、ベスト プラクティスを確認する。Cloud アーキテクチャ センターをご覧ください。