プロデューサー / コンシューマー モデルのインバンド統合を設定する

Network Security Integration は、プロデューサー / コンシューマー モデルを使用してデータを検査およびモニタリングします。パケット インターセプト テクノロジーを使用したインバンド統合により、サードパーティのネットワーク デバイスをネットワーク トラフィック フローに挿入し、詳細なパケット検査を実行します。

このチュートリアルでは、インバンド統合を設定するためにプロデューサーとコンシューマーのリソースを作成して構成する方法について説明します。

目標

このチュートリアルでは、プロジェクトで次のタスクを行う方法について説明します。

  • 同じプロジェクト内のプロデューサーとコンシューマー用に、サブネットを含むカスタム VPC ネットワークを作成します。
  • プロデューサーの場合は、内部パススルー ネットワーク ロードバランサ、インターセプト サービス、インターセプト デプロイ リソースなどのプロデューサー リソースを作成して構成します。
  • コンシューマーの場合、クライアントとサーバーの仮想マシン(VM)インスタンス、コンシューマー エンドポイント リソース、クライアントとサーバーのトラフィックをインターセプトするファイアウォール ポリシーを作成して構成します。
  • 接続をテストし、ネットワーク トラフィック パケットがコンシューマーのエンドポイント リソースによってインターセプトされ、プロデューサーのインターセプト リソースによって検査されることを確認します。

始める前に

  1. Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $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 を有効にします。
  7. 課金に使用する Google Cloud プロジェクトで Network Security API を有効にします。
  8. プロジェクト レベルで Compute ネットワーク管理者ロールroles/compute.networkAdmin)が付与され、組織レベルで セキュリティ プロファイル管理者ロールroles/networksecurity.securityProfileAdmin)が付与されていることを確認します。
  9. コマンドラインから作業する場合は、Google Cloud CLI をインストールします。ツールのコンセプトとインストールについては、gcloud CLI の概要をご覧ください。

    注: Google Cloud CLI を初めて実行する場合は、まず gcloud init を実行して、gcloud CLI ディレクトリを初期化します。

  10. プロジェクトの ID を取得します。インターセプト リソースとエンドポイント リソースの作成に必要です。

    gcloud CLI を使用している場合は、ここで PROJECT_ID を置き換えるか、後でそれぞれのコマンドで置き換えることができます。

  11. 組織の ID を取得します。セキュリティ プロファイルやセキュリティ プロファイル グループなどの組織レベルのリソースを作成するには、このロールが必要です。

    gcloud CLI を使用している場合は、ここで ORG_ID を置き換えるか、後でそれぞれのコマンドで置き換えることができます。

プロデューサー リソースを作成する

このセクションでは、プロデューサー用に次のリソースを作成します。

  • サブネットを含むカスタム VPC ネットワーク。
  • Generic Network Virtualization Encapsulation(GENEVE)エコーサーバーを実行する VM インスタンスを含む非マネージド インスタンス グループ。
  • バックエンド サービスと転送ルールがある内部パススルー ネットワーク ロードバランサ。
  • Google Cloud ヘルスチェックを許可するファイアウォール ルール。
  • インターセプト デプロイ グループとインターセプト デプロイ。

カスタム VPC ネットワークの作成

このセクションでは、サブネットを含む VPC ネットワークを作成します。

コンソール

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

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

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

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

  4. [説明] に「Producer VPC network」と入力します。

  5. [サブネット] セクションで、次の操作を行います。

    1. [サブネット作成モード] で [カスタム] をクリックします。
    2. [新しいサブネット] セクションに、次の情報を入力します。
      • 名前: producer-subnet
      • リージョン: us-west1
      • IP スタックタイプ: IPv4(シングルスタック)
      • IPv4 範囲: 10.10.0.0/16
    3. [完了] をクリックします。
  6. [作成] をクリックします。

  7. 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

  1. 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 バイト)の合計です。

  2. VPC ネットワークにサブネットを作成します。

    gcloud compute networks subnets create producer-subnet \
        --network=producer-network \
        --region=us-west1 \
        --range=10.10.0.0/16
    

非マネージド インスタンス グループを作成する

このセクションでは、非マネージド インスタンス グループを作成します。

コンソール

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

    [インスタンス グループ] に移動

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

  3. [新しい非マネージド インスタンス グループ] をクリックします。

  4. [名前] に「producer-instance-group」と入力します。

  5. [ロケーション] セクションで、[リージョン] に us-west1 を選択し、[ゾーン] に us-west1-b を選択します。

  6. [ネットワーク] で producer-network を選択します。

  7. [サブネットワーク] で、[producer-subnet] を選択します。

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

gcloud

gcloud compute instance-groups unmanaged create producer-instance-group \
    --zone=us-west1-b

ロードバランサ コンポーネントを構成する

このセクションでは、バックエンド サービスや転送ルールなど、内部パススルー ネットワーク ロードバランサのコンポーネントを作成します。

コンソール

構成を開始する

  1. Google Cloud コンソールで、[ロード バランシング] ページに移動します。

    [ロード バランシング] に移動

  2. [ロードバランサを作成] をクリックします。
  3. [ロードバランサの種類] で [ネットワーク ロードバランサ(TCP / UDP / SSL)] を選択し、[次へ] をクリックします。
  4. [プロキシまたはパススルー] で [パススルー ロードバランサ] を選択し、[次へ] をクリックします。
  5. [インターネット接続または内部] で [内部] を選択し、[次へ] をクリックします。
  6. [構成] をクリックします。

基本構成

[Create internal passthrough Network Load Balancer] ページで、次の情報を入力します。

  • ロードバランサの名前: producer-ilb
  • リージョン: us-west1
  • ネットワーク: producer-network

バックエンドを構成する

  1. [バックエンドの構成] をクリックします。
  2. [プロトコル] で、[UDP] を選択します。
  3. [ヘルスチェック] リストから [ヘルスチェックを作成] を選択し、次の情報を入力して [作成] をクリックします。
    • 名前: producer-health-check
    • 範囲: リージョン
    • ポート: 80
    • プロキシのプロトコル: NONE
  4. [バックエンド] の [新しいバックエンド] セクションで、[IP スタックタイプ] に [IPv4(シングルスタック)] を選択します。
  5. [インスタンス グループ] で、producer-instance-group インスタンス グループを選択し、[完了] をクリックします。
  6. 続行する前に、[バックエンドの構成] の隣に青いチェックマークがあることを確認します。

フロントエンドを構成する

[新しいフロントエンドの IP とポート] セクションで、次の操作を行います。

  1. [名前] に「producer-ilb-fr」と入力します。
  2. [サブネットワーク] で、[producer-subnet] を選択します。
  3. [ポート] で [単一] を選択し、[ポート番号] に 6081 を入力します。
  4. 続行する前に、[フロントエンドの構成] の隣に青いチェックマークがあることを確認します。

構成を確認する

  1. [確認と完了] をクリックします。
  2. ロードバランサの構成を確認します。
  3. [作成] をクリックします。

gcloud

  1. リージョン ヘルスチェックを作成します。

    gcloud compute health-checks create tcp producer-health-check \
        --region=us-west1 \
        --port=80
    
  2. バックエンド サービスを作成します。

    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
    
  3. バックエンド サービスの転送ルールを作成します。

    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 アドレスを取得する

  1. Google Cloud コンソールで、[ロード バランシング] ページに移動します。

    [ロード バランシング] に移動

  2. producer-ilb ロードバランサをクリックします。

  3. [フロントエンド] セクションで、[IP:ポート] 列の転送ルールの IP アドレスをメモします。

サブネット ゲートウェイの IP アドレスを取得する

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

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

  2. producer-network VPC ネットワークをクリックします。

  3. [サブネット] タブをクリックします。

  4. [サブネット] セクションで、[ゲートウェイ] 列のゲートウェイ IP アドレスをメモします。

VM インスタンスを作成する

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

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

    1. [インスタンスを作成] をクリックします。
    2. [名前] に「producer-instance」と入力します。
    3. [リージョン] で、us-west1 を選択します。
    4. [ゾーン] で、[us-west1-b] を選択します。
    5. [ネットワーキング] をクリックして次のフィールドを構成します。

      [ネットワーク インターフェース] セクションで、default をクリックしてネットワーク インターフェースを編集します。

      • ネットワーク: producer-network
      • サブネット: producer-subnet
      • 外部 IPv4 アドレス: なし
    6. [詳細] をクリックし、[起動スクリプト] に次のスクリプトを入力します。

      #!/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 アドレス。
    7. [作成] をクリックします。

インスタンス グループに VM インスタンスを追加する

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

    [インスタンス グループ] に移動

  2. [producer-instance-group] をクリックします。

  3. [編集] をクリックします。

  4. [VM インスタンス] セクションの [VM を選択] リストから、producer-instance VM を選択します。

  5. [保存] をクリックします。

gcloud

  1. ロードバランサの転送ルールの IP アドレスを取得します。

    ILB_IP=$(gcloud compute forwarding-rules describe producer-ilb-fr \
        --region=us-west1 \
        --format="get(IPAddress)")
    
  2. サブネットのゲートウェイの IP アドレスを取得します。

    GW_IP=$(gcloud compute networks subnets describe producer-subnet \
        --region=us-west1 \
        --format="get(gatewayAddress)")
    
  3. 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 &'
    
  4. VM インスタンスをインスタンス グループに追加します。

    gcloud compute instance-groups unmanaged add-instances producer-instance-group \
        --instances=producer-instance \
        --zone=us-west1-b
    
  5. バックエンド サービスにインスタンス グループを追加します。

    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 接続を許可します。

コンソール

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

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

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

  3. [名前] フィールドに「producer-firewall-policy」と入力します。

  4. [デプロイのスコープ] で [グローバル] を選択し、[続行] をクリックします。

  5. ポリシーに次のルールを作成します。

    VPC ゲートウェイ IP アドレスからの GENEVE ポートを使用した UDP 接続を許可する

    1. [ファイアウォール ルールを作成] をクリックし、次のフィールドを構成します。
      • 優先度: 100
      • トラフィックの方向: 上り(内向き)
      • 一致したときのアクション: 許可
      • ソースフィルタ > IP 範囲: GATEWAY_IP
      • プロトコルとポート: [指定したプロトコルとポート] を選択し、[UDP] チェックボックスをオンにして、[ポート] に「6081」と指定します。
    2. [作成] をクリックします。

    GATEWAY_IP は、サブネット ゲートウェイの IP アドレスに置き換えます。

    Google Cloud ヘルスチェックを許可する

    1. [ファイアウォール ルールを作成] をクリックし、次のフィールドを構成します。
      • 優先度: 101
      • トラフィックの方向: 上り(内向き)
      • 一致したときのアクション: 許可
      • IP 範囲: 35.191.0.0/16130.211.0.0/22
      • プロトコルとポート: [指定したプロトコルとポート] を選択し、[TCP] チェックボックスをオンにして、[ポート] に「80」と入力します。
    2. [作成] をクリックします。

    Identity-Aware Proxy を介してプロデューサー VM インスタンスへの SSH 接続を許可する

    1. [ファイアウォール ルールを作成] をクリックし、次のフィールドを構成します。
      • 優先度: 102
      • トラフィックの方向: 上り(内向き)
      • 一致したときのアクション: 許可
      • IP 範囲: 35.235.240.0/20
      • プロトコルとポート: [指定したプロトコルとポート] を選択し、[TCP] チェックボックスをオンにして、[ポート] に「22」と入力します。
    2. [作成] をクリックします。
  6. ポリシーをネットワークに関連付けるには、[続行] をクリックしてから [関連付け] をクリックします。

  7. producer-network チェックボックスをオンにします。

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

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

gcloud

  1. グローバル ネットワーク ファイアウォール ポリシーを作成します。

    gcloud compute network-firewall-policies create producer-firewall-policy \
        --global
    
  2. ファイアウォール ポリシーをプロデューサー ネットワークに関連付けます。

    gcloud compute network-firewall-policies associations create \
        --name=producer-firewall-policy-assoc \
        --firewall-policy=producer-firewall-policy \
        --global-firewall-policy \
        --network=producer-network
    
  3. VPC ゲートウェイの 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/32
    
  4. Google 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/22
    
  5. Identity-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
    

プロデューサー インターセプト リソースを作成する

このセクションでは、インターセプト デプロイ グループとインターセプト デプロイを作成します。

コンソール

  1. Google Cloud コンソールで、[デプロイ グループ] ページに移動します。

    [デプロイ グループ] に移動

  2. [デプロイ グループを作成] をクリックします。

  3. [名前] に「producer-deployment-group」と入力します。

  4. [ネットワーク] で producer-network を選択します。

  5. [目的] で [NSI インバンド] を選択します。

  6. [インターセプト デプロイ] セクションで、[インターセプト デプロイを作成] をクリックし、次のフィールドを指定して、[作成] をクリックします。

    • 名前: producer-deployment
    • リージョン: us-west1
    • ゾーン: us-west1-b
    • 内部ロードバランサ: producer-ilb
  7. [作成] をクリックします。

gcloud

  1. インターセプト デプロイ グループを作成します。

    gcloud network-security intercept-deployment-groups create producer-deployment-group \
        --location=global \
        --network=projects/PROJECT_ID/global/networks/producer-network \
        --no-async
    

    PROJECT_ID は、プロジェクトの ID に置き換えます。

  2. インターセプト デプロイを作成します。

    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-async
    

    PROJECT_ID は、プロジェクトの ID に置き換えます。

コンシューマー リソースを作成する

このセクションでは、コンシューマー用に次のリソースを作成します。

  • サブネットを含むカスタム VPC ネットワーク。
  • サーバー VM とクライアント VM。
  • トラフィックをインターセプトするファイアウォール ポリシーとルール。
  • インターセプト エンドポイント グループとインターセプト エンドポイント グループの関連付け。
  • セキュリティ プロファイルとセキュリティ プロファイル グループ。

カスタム VPC ネットワークの作成

このセクションでは、サブネットを含む VPC ネットワークを作成します。

コンソール

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

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

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

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

  4. [説明] に「Consumer VPC network」と入力します。

  5. [サブネット] セクションで、次の操作を行います。

    1. [サブネット作成モード] を [カスタム] に設定します。
    2. [新しいサブネット] セクションに、次の情報を入力します。
      • 名前: consumer-subnet
      • リージョン: us-west1
      • IP スタックタイプ: IPv4(シングルスタック)
      • IPv4 範囲: 10.10.0.0/16
    3. [完了] をクリックします。
  6. [作成] をクリックします。

gcloud

  1. コンシューマー VPC ネットワークを作成します。

    gcloud compute networks create consumer-network \
        --subnet-mode=custom \
        --description="Consumer VPC network"
    
  2. 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 を作成する

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

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

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

  3. [名前] を consumer-server-vm に設定します。

  4. [リージョン] を us-west1 に設定します。

  5. [ゾーン] を us-west1-b に設定します。

  6. [マシンタイプ] を e2-micro に設定します。

  7. [ネットワーキング] をクリックして次のフィールドを構成します。

  8. [ネットワーク インターフェース] セクションで、default をクリックしてネットワーク インターフェースを編集します。

    • ネットワーク: consumer-network
    • サブネット: consumer-subnet
    • 外部 IPv4 アドレス: なし
  9. [詳細] をクリックし、[起動スクリプト] に次のスクリプトを入力します。

    echo success > /tmp/connection_test && nohup python3 -u -m http.server --directory /tmp 8000
    
  10. [作成] をクリックします。

クライアント VM を作成する

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

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

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

  3. [名前] を consumer-client-vm に設定します。

  4. [リージョン] を us-west1 に設定します。

  5. [ゾーン] を us-west1-b に設定します。

  6. [マシンタイプ] を e2-micro に設定します。

  7. [ネットワーキング] をクリックして次のフィールドを構成します。

  8. [ネットワーク インターフェース] セクションで、default をクリックしてネットワーク インターフェースを編集します。

    • ネットワーク: consumer-network
    • サブネット: consumer-subnet
    • 外部 IPv4 アドレス: なし
  9. [作成] をクリックします。

gcloud

  1. サーバー 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"
    
  2. クライアント 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 アクセスを許可するファイアウォール ルールを追加します。

コンソール

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

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

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

  3. [名前] フィールドに「consumer-firewall-policy」と入力します。

  4. [デプロイのスコープ] で [グローバル] を選択し、[続行] をクリックします。

  5. [ファイアウォール ルールを作成] をクリックし、次のフィールドを構成して、[作成] をクリックします。

    • 優先度: 100
    • トラフィックの方向: 上り(内向き)
    • 一致したときのアクション: 許可
    • ソースフィルタ > IP 範囲: 35.235.240.0/20
    • プロトコルとポート: [指定したプロトコルとポート] を選択し、[TCP] チェックボックスをオンにして、[ポート] に「22」と入力します。

    IPv4 範囲 35.235.240.0/20 には、Identity-Aware Proxy が TCP 転送に使用するすべての IP アドレスが含まれています。詳細については、TCP 転送用のプロジェクトを準備するをご覧ください。

  6. ポリシーをネットワークに関連付けるには、[続行] をクリックしてから [関連付け] をクリックします。

  7. consumer-network チェックボックスをオンにします。

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

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

gcloud

  1. グローバル ネットワーク ファイアウォール ポリシーを作成します。

    gcloud compute network-firewall-policies create consumer-firewall-policy \
        --global
    
  2. ファイアウォール ポリシーをコンシューマー ネットワークに関連付けます。

    gcloud compute network-firewall-policies associations create \
        --name=consumer-firewall-policy-assoc \
        --firewall-policy=consumer-firewall-policy \
        --global-firewall-policy \
        --network=consumer-network
    
  3. Identity-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/20
    

    IPv4 範囲 35.235.240.0/20 には、Identity-Aware Proxy(IAP)が TCP 転送に使用するすべての IP アドレスが含まれています。詳細については、TCP 転送用のプロジェクトの準備をご覧ください。

コンシューマー エンドポイント グループを作成する

このセクションでは、インターセプト エンドポイント グループとインターセプト エンドポイント グループの関連付けを作成します。

コンソール

  1. Google Cloud コンソールで、[エンドポイント グループ] ページに移動します。

    [エンドポイント グループ] に移動

  2. [エンドポイント グループを作成] をクリックします。

  3. [名前] に「consumer-endpoint-group」と入力します。

  4. [デプロイ グループ] で、[プロジェクトを選択] メニューから [現在のプロジェクトを選択] を選択します。

  5. [インターセプト デプロイ グループ] で、producer-deployment-group を選択します。

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

  7. [エンドポイント グループの関連付けを追加] をクリックします。

  8. [プロジェクト] で、現在のプロジェクトを選択します。

  9. [ネットワーク] で consumer-network を選択します。

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

gcloud

  1. インターセプト エンドポイント グループを作成します。

    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-async
    

    PROJECT_ID は、プロジェクトの ID に置き換えます。

  2. インターセプト エンドポイント グループの関連付けを作成します。

    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-async
    

    PROJECT_ID は、プロジェクトの ID に置き換えます。

セキュリティ プロファイルとセキュリティ プロファイル グループを作成する

トラフィックをインターセプトするセキュリティ プロファイル グループとカスタム セキュリティ プロファイルを作成します。

コンソール

セキュリティ プロファイルを作成する

  1. Google Cloud コンソールで、[セキュリティ プロファイル] ページに移動します。

    [セキュリティ プロファイル] に移動

  2. 組織選択ツールから自分の組織を選択します。

  3. [セキュリティ プロファイル] タブで、[プロファイルを作成] をクリックします。

  4. [名前] に「consumer-security-profile」と入力します。

  5. [セキュリティ プロファイルの目的] で、[NSI インバンド] を選択します。

  6. [プロジェクト] で、現在のプロジェクトを選択します。

  7. [インターセプト エンドポイント グループ] で consumer-endpoint-group を選択します。

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

セキュリティ プロファイル グループを作成する

  1. Google Cloud コンソールで、[セキュリティ プロファイル グループ] ページに移動します。

    [セキュリティ プロファイル グループ] に移動

  2. 組織選択ツールから自分の組織を選択します。

  3. [セキュリティ プロファイル グループ] タブで、[プロファイル グループを作成] をクリックします。

  4. [名前] に「consumer-security-profile-group」と入力します。

  5. [セキュリティ プロファイル グループの目的] で、[NSI インバンド] を選択します。

  6. [カスタム インターセプト プロファイル] で、consumer-security-profile を選択します。

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

gcloud

  1. インターセプト セキュリティ プロファイルを作成します。

    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。
  2. インターセプト セキュリティ プロファイル グループを作成します。

    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。

トラフィックをインターセプトするファイアウォール ポリシーを作成する

このセクションでは、トラフィックをインターセプトするファイアウォール ポリシーとファイアウォール ルールを作成します。

コンソール

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

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

  2. [consumer-firewall-policy] をクリックします。

  3. [ファイアウォール ルールを作成] をクリックし、次のフィールドを構成します。

    • 優先度: 100
    • トラフィックの方向: 上り(内向き)
    • 一致したときのアクション: L7 の検査に進む
    • 目的: NSI インバンド
    • セキュリティ プロファイル グループ: consumer-security-profile-group
    • IP 範囲: 10.10.0.0/16
    • プロトコルとポート: [指定したプロトコルとポート] を選択し、[TCP] チェックボックスをオンにして、[ポート] に「8000」と入力します。
  4. [作成] をクリックします。

gcloud

  1. ファイアウォール ルールを追加して、サーバー 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/16
    

    ORG_ID は組織の ID に置き換えます。

接続をテストする

このセクションでは、コンシューマー クライアント VM インスタンスからコンシューマー サーバー VM インスタンスにネットワーク トラフィックを送信し、プロデューサー VM インスタンスのログを調べてインターセプトを確認します。

  1. 次のコマンドを実行して、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 メッセージが表示されます。これは、トラフィックがクライアントからサーバーに送信されることを示します。

  2. 次のコマンドを実行して、プロデューサー 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 アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

コンシューマー リソースを削除する

  1. ファイアウォール ポリシーとコンシューマー ネットワークの関連付けを解除し、ファイアウォール ポリシーを削除します。

    コンソール

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

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

    2. consumer-firewall-policy ポリシーをクリックします。

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

    4. consumer-network 関連付けのチェックボックスをオンにします。

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

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

    7. ページの上部にある [削除] をクリックします。

    8. もう一度 [削除] をクリックして確定します。

    gcloud

    1. 関連付けを削除します。

      gcloud compute network-firewall-policies associations delete \
          --name=consumer-firewall-policy-assoc \
          --firewall-policy=consumer-firewall-policy \
          --global-firewall-policy
      
    2. ファイアウォール ポリシーを削除します。

      gcloud compute network-firewall-policies delete consumer-firewall-policy \
          --global
      
  2. セキュリティ プロファイル グループを削除します。

    コンソール

    1. Google Cloud コンソールで、[セキュリティ プロファイル] ページに移動します。

      [セキュリティ プロファイル] に移動

    2. 組織選択ツールから自分の組織を選択します。

    3. [セキュリティ プロファイル グループ] タブで、consumer-security-profile-group セキュリティ プロファイル グループを選択し、[削除] をクリックします。

    4. もう一度 [削除] をクリックして確定します。

    gcloud

    gcloud network-security security-profile-groups delete consumer-security-profile-group \
        --location=global \
        --organization=ORG_ID \
        --billing-project=PROJECT_ID \
        --quiet
    

    次のように置き換えます。

    • ORG_ID: 組織の ID
    • PROJECT_ID: オブジェクトの ID
  3. セキュリティ プロファイルを削除します。

    コンソール

    1. Google Cloud コンソールで、[セキュリティ プロファイル] ページに移動します。

      [セキュリティ プロファイル] に移動

    2. 組織選択ツールから自分の組織を選択します。

    3. [セキュリティ プロファイル] タブで、consumer-security-profile セキュリティ プロファイルを選択し、[削除] をクリックします。

    4. もう一度 [削除] をクリックして確定します。

    gcloud

    gcloud network-security security-profiles custom-intercept delete consumer-security-profile \
        --location=global \
        --organization=ORG_ID \
        --billing-project=PROJECT_ID \
        --quiet
    

    次のように置き換えます。

    • ORG_ID: 組織の ID
    • PROJECT_ID: オブジェクトの ID
  4. インターセプト エンドポイント グループの関連付けを削除します。

    コンソール

    1. Google Cloud コンソールで、[エンドポイント グループ] ページに移動します。

      [エンドポイント グループ] に移動

    2. [consumer-endpoint-group] をクリックします。

    3. consumer-network 関連付けを選択し、[削除] をクリックします。

    4. もう一度 [削除] をクリックして確定します。

    gcloud

    gcloud network-security intercept-endpoint-group-associations delete consumer-endpoint-group-association \
        --location=global \
        --no-async
    
  5. インターセプト エンドポイント グループを削除します。

    コンソール

    1. Google Cloud コンソールで、[エンドポイント グループ] ページに移動します。

      [エンドポイント グループ] に移動

    2. [consumer-endpoint-group] を選択し、[削除] をクリックします。

    3. もう一度 [削除] をクリックして確定します。

    gcloud

    gcloud network-security intercept-endpoint-groups delete consumer-endpoint-group \
        --location=global \
        --no-async
    
  6. サーバー VM とクライアント VM を削除します。

    コンソール

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

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

    2. consumer-client-vmconsumer-server-vm のチェックボックスをオンにして、[削除] をクリックします。

    3. もう一度 [削除] をクリックして確定します。

    gcloud

    1. クライアント VM を削除します。

      gcloud compute instances delete consumer-client-vm \
          --zone=us-west1-b \
          --quiet
      
    2. サーバー VM を削除します。

      gcloud compute instances delete consumer-server-vm \
          --zone=us-west1-b \
          --quiet
      
  7. コンシューマー ネットワークとサブネットを削除します。

    コンソール

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

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

    2. [consumer-network] をクリックします。

    3. [サブネット] タブで、consumer-subnet のチェックボックスをオンにして、[削除] をクリックします。

    4. もう一度 [削除] をクリックして確定します。

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

    6. テキスト フィールドに consumer-network と入力して、[削除] をクリックします。

    gcloud

    1. サブネットを削除します。

      gcloud compute networks subnets delete consumer-subnet \
          --region=us-west1 \
          --quiet
      
    2. VPC ネットワークを削除します。

      gcloud compute networks delete consumer-network \
          --quiet
      

プロデューサー リソースを削除する

  1. ファイアウォール ポリシーとプロデューサー ネットワークの関連付けを解除し、ファイアウォール ポリシーを削除します。

    コンソール

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

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

    2. producer-firewall-policy ポリシーをクリックします。

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

    4. producer-network 関連付けのチェックボックスをオンにします。

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

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

    7. ページの上部にある [削除] をクリックします。

    8. もう一度 [削除] をクリックして確定します。

    gcloud

    1. 関連付けを削除します。

      gcloud compute network-firewall-policies associations delete \
          --name=producer-firewall-policy-assoc \
          --firewall-policy=producer-firewall-policy \
          --global-firewall-policy
      
    2. ファイアウォール ポリシーを削除します。

      gcloud compute network-firewall-policies delete producer-firewall-policy \
          --global
      
  2. インターセプト デプロイとインターセプト デプロイ グループを削除します。

    コンソール

    1. Google Cloud コンソールで、[デプロイ グループ] ページに移動します。

      [デプロイ グループ] に移動

    2. [producer-deployment-group] をクリックします。

    3. producer-deployment を削除します。

      1. producer-deployment チェックボックスをオンにして、[削除] をクリックします。
      2. もう一度 [削除] をクリックして確定します。
    4. ページ上部にある [削除] ボタンをクリックします。

    5. もう一度 [削除] をクリックして確定します。

    gcloud

    1. インターセプト デプロイを削除します。

      gcloud network-security intercept-deployments delete producer-deployment \
          --location=us-west1-b \
          --no-async
      
    2. インターセプト デプロイ グループを削除します。

      gcloud network-security intercept-deployment-groups delete producer-deployment-group \
          --location=global \
          --no-async
      
  3. ロードバランサ リソースを削除します。

    コンソール

    1. Google Cloud コンソールで、[ロード バランシング] ページに移動します。

      [ロード バランシング] に移動

    2. producer-ilb チェックボックスをオンにします。

    3. ページ上部にある [削除] ボタンをクリックします。

    4. producer-health-check チェックボックスをオンにして、[ロードバランサと選択したリソースを削除] をクリックします。

    gcloud

    1. 転送ルールを削除します。

      gcloud compute forwarding-rules delete producer-ilb-fr \
          --region=us-west1 \
          --quiet
      
    2. バックエンド サービスを削除します。

      gcloud compute backend-services delete producer-backend-service \
          --region=us-west1 \
          --quiet
      
    3. ヘルスチェックを削除します。

      gcloud compute health-checks delete producer-health-check \
          --region=us-west1 \
          --quiet
      
  4. プロデューサー VM インスタンスを削除します。

    コンソール

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

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

    2. producer-instance のチェックボックスをオンにして、[削除] をクリックします。

    3. もう一度 [削除] をクリックして確定します。

    gcloud

    gcloud compute instances delete producer-instance \
        --zone=us-west1-b \
        --quiet
    
  5. インスタンス グループを削除します。

    コンソール

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

      [インスタンス グループ] に移動

    2. producer-instance-group チェックボックスをオンにします。

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

    4. 確認ウィンドウで [削除] をクリックします。

    gcloud

    gcloud compute instance-groups unmanaged delete producer-instance-group \
        --zone=us-west1-b \
        --quiet
    
  6. プロデューサー ネットワークとサブネットを削除します。

    コンソール

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

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

    2. [producer-network] をクリックします。

    3. [サブネット] タブで、producer-subnet のチェックボックスをオンにして、[削除] をクリックします。

    4. もう一度 [削除] をクリックして確定します。

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

    6. テキスト フィールドに producer-network と入力して、[削除] をクリックします。

    gcloud

    1. サブネットを削除します。

      gcloud compute networks subnets delete producer-subnet \
          --region=us-west1 \
          --quiet
      
    2. ネットワークを削除します。

      gcloud compute networks delete producer-network \
          --quiet
      

次のステップ