프로듀서-컨슈머 모델의 대역 외 통합 설정

네트워크 보안 통합은 생산자-소비자 모델을 사용하여 데이터를 검사하고 모니터링합니다. 사용자 관리 가상 어플라이언스를 사용하여 네트워크 트래픽을 미러링하기 위해 패킷 미러링 기술과 함께 대역 외 통합을 사용합니다.

이 튜토리얼에서는 대역 외 통합을 설정하기 위해 프로듀서 및 컨슈머 리소스를 만들고 구성하는 방법을 설명합니다.

목표

이 튜토리얼에서는 프로젝트에서 다음 작업을 완료하는 방법을 보여줍니다.

  1. 동일한 프로젝트에서 프로듀서와 컨슈머를 위한 서브넷이 있는 커스텀 가상 프라이빗 클라우드 (VPC) 네트워크를 만듭니다.
  2. 프로듀서의 경우 프로듀서 리소스와 미러링 배포 리소스를 만들고 구성합니다. 프로듀서 리소스의 예는 내부 패스 스루 네트워크 부하 분산기입니다.
  3. 소비자의 경우 클라이언트-서버 트래픽을 미러링하도록 클라이언트 및 서버 가상 머신(VM) 인스턴스, 미러링 엔드포인트 리소스, 방화벽 정책을 만들고 구성합니다.
  4. 연결을 테스트하고 컨슈머 VM의 네트워크 트래픽 패킷이 프로듀서의 미러링 리소스에 미러링되는지 확인합니다.

다음 다이어그램은 프로듀서와 소비자 VPC 네트워크 간의 트래픽 흐름을 보여줍니다.

단일 프로젝트의 프로듀서 및 소비자 구성요소의 상위 수준 배포 아키텍처
그림 1. 단일 프로젝트의 프로듀서 및 소비자 구성요소의 상위 수준 배포 아키텍처 (확대하려면 클릭)

이전 다이어그램은 다음을 보여줍니다.

  • 미러링 엔드포인트 그룹을 통해 소비자 네트워크에서 프로듀서 네트워크로 흐르는 네트워크 트래픽
  • 생산자 네트워크에는 VM 인스턴스, 내부 패스 스루 네트워크 부하 분산기, 미러링 배포가 포함됩니다.
  • 프로듀서 네트워크의 미러링 배포 그룹에는 영역별 미러링 배포가 포함됩니다.
  • 소비자 네트워크에는 클라이언트 및 서버 VM 인스턴스가 포함됩니다. 소비자 네트워크 내의 방화벽 규칙 및 정책은 트래픽 흐름을 관리하고 보안 프로필 그룹은 방화벽 정책과 연결됩니다.
  • 소비자 네트워크는 미러링 엔드포인트 그룹 연결에 연결되어 있으며, 이 연결은 소비자 네트워크를 미러링 엔드포인트 그룹에 연결합니다.

시작하기 전에

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  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 네트워크
  • 수신되는 일반 네트워크 가상화 캡슐화(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. gcloud CLI를 열고 다음 명령어를 실행하여 Google Cloud 콘솔 네트워크의 최대 전송 단위 (MTU)를 늘립니다.

    gcloud compute networks update producer-network \
        --mtu=1856
    

    명령어에서 Google Cloud 콘솔 네트워크의 기본 MTU (1, 460바이트)와 네트워크 보안 통합 GENEVE 캡슐화 오버헤드(396바이트)의 합계인 1, 856바이트의 MTU를 지정합니다.

gcloud

  1. VPC 네트워크를 만듭니다.

    gcloud compute networks create producer-network \
        --subnet-mode=custom \
        --mtu=1856 \
        --description="Producer VPC network"
    

    명령어에서 Google Cloud 콘솔 네트워크의 기본 MTU (1, 460바이트)와 네트워크 보안 통합 GENEVE 캡슐화 오버헤드(396바이트)의 합계인 1, 856바이트의 MTU를 지정합니다.

  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. 네트워크 및 인스턴스 섹션에서 다음을 수행합니다.

    1. 네트워크에서 producer-network를 선택합니다.
    2. 서브네트워크producer-subnet을 선택합니다.
  7. 만들기를 클릭합니다.

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. 구성을 클릭합니다.

기본 구성

내부 패스 스루 네트워크 부하 분산기 만들기 페이지에서 다음 정보를 입력합니다.

  • 부하 분산기 이름: producer-ilb
  • 리전: us-west1
  • 네트워크: producer-network

백엔드 구성

  1. 백엔드 구성을 클릭합니다.
  2. 프로토콜에서 UDP를 선택합니다.
  3. 상태 점검 목록에서 상태 점검 만들기를 선택하고 다음 정보를 입력한 후 만들기를 클릭합니다.
    • 이름: producer-health-check
    • 범위: 리전별
    • 포트: 80
    • 프록시 프로토콜: NONE
  4. 백엔드새 백엔드 섹션에서 IP 스택 유형IPv4 (단일 스택)으로 선택합니다.
  5. 인스턴스 그룹에서 producer-instance-group 인스턴스 그룹을 선택하고 완료를 클릭합니다.

  6. 계속하기 전에 백엔드 구성 옆에 파란색 체크표시가 있는지 확인합니다.

프런트엔드 구성

  1. 새 프런트엔드 IP 및 포트 섹션에 다음 정보를 입력하고 완료를 클릭합니다.
    1. 이름producer-ilb-fr를 입력합니다.
    2. 서브네트워크producer-subnet을 선택합니다.
    3. 포트단일을 선택한 후 포트 번호6081을 입력합니다.
    4. 고급 구성 섹션의 패킷 미러링에서 패킷 미러링에 이 부하 분산기 사용 설정을 선택합니다.
    5. 계속하기 전에 프런트엔드 구성 옆에 파란색 체크표시가 있는지 확인합니다.

구성 검토

  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 \
        --is-mirroring-collector \
        --ports=6081
    

VM 인스턴스를 만들고 인스턴스 그룹에 추가

이 섹션에서는 GENEVE 캡슐화 패킷의 로깅 서버를 설정하는 시작 스크립트를 사용하여 VM 인스턴스를 만듭니다. VM 인스턴스를 만들기 전에 서브넷의 게이트웨이 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. 머신 유형e2-micro로 설정합니다.
    6. 네트워킹을 클릭한 다음 네트워크 인터페이스 섹션에서 네트워크 인터페이스 추가를 클릭하고 다음을 설정합니다.
      • 네트워크: producer-network
      • 서브넷: producer-subnet
      • 외부 IPv4 주소: 없음
    7. 고급을 클릭하고 시작 스크립트에 다음 스크립트를 입력합니다.

      #!/bin/bash
      # Log incoming packets from the gateway IP and the GENEVE 6081 port.
      iptables -A INPUT -p udp -s '"$GW_IP"'/32 --dport 6081 -j LOG --log-prefix "[NSI MIRRORING] "
      
      # Spin up a simple server for health checks on port 80.
      nohup python3 -u -m http.server 80 &
      

      다음을 바꿉니다.

      • GW_IP: 서브넷 게이트웨이의 IP 주소입니다.
    8. 만들기를 클릭합니다.

인스턴스 그룹에 VM 인스턴스 추가

  1. Google Cloud 콘솔에서 인스턴스 그룹 페이지로 이동합니다.

    인스턴스 그룹으로 이동

  2. producer-instance-group을 클릭합니다.

  3. 수정을 클릭합니다.

  4. VM 인스턴스 섹션의 VM 선택 목록에서 producer-instance VM을 선택합니다.

  5. 저장을 클릭합니다.

gcloud

  1. 서브넷 게이트웨이의 IP 주소를 가져옵니다.

    GW_IP=$(gcloud compute networks subnets describe producer-subnet \
        --region=us-west1 \
        --format="get(gatewayAddress)")
    
  2. 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
         # Log incoming packets from the gateway IP and the GENEVE 6081 port.
         iptables -A INPUT -p udp -s '"$GW_IP"'/32 --dport 6081 -j LOG --log-prefix "[NSI MIRRORING] "
    
         # Spin up a simple server for health checks on port 80.
         nohup python3 -u -m http.server 80 &'
    
    
  3. VM 인스턴스를 인스턴스 그룹에 추가합니다.

    gcloud compute instance-groups unmanaged add-instances producer-instance-group \
        --instances=producer-instance \
        --zone=us-west1-b
    
  4. 인스턴스 그룹을 백엔드 서비스에 추가합니다.

    gcloud compute backend-services add-backend producer-backend-service \
        --region=us-west1 \
        --instance-group=producer-instance-group \
        --instance-group-zone=us-west1-b
    

방화벽 정책 만들기 및 방화벽 규칙 추가

이 섹션에서는 방화벽 정책을 만들고 방화벽 규칙을 추가하여 IAP (Identity-Aware Proxy)를 통해 프로듀서 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 # Google Cloud health check ranges
    
  5. IAP(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 # Google Cloud IAP range
    

프로듀서 미러링 리소스 만들기

이 섹션에서는 미러링 배포 그룹과 미러링 배포를 만듭니다.

콘솔

  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 mirroring-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 mirroring-deployments create producer-deployment \
        --location=us-west1-b \
        --forwarding-rule=producer-ilb-fr \
        --forwarding-rule-location=us-west1 \
        --mirroring-deployment-group=projects/PROJECT_ID/locations/global/mirroringDeploymentGroups/producer-deployment-group \
        --no-async
    

소비자 리소스 만들기

이 섹션에서는 소비자를 위해 다음 리소스를 만듭니다.

  • 서브넷이 있는 커스텀 VPC 네트워크
  • 서버 및 클라이언트 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.11.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.11.0.0/16
    

서버 및 클라이언트 VM 만들기

이 섹션에서는 서버 및 클라이언트 VM을 만듭니다.

콘솔

서버 VM 만들기

  1. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

  2. 인스턴스 만들기를 클릭합니다.

  3. 이름consumer-server-vm로 설정합니다.

  4. 리전us-west1로 설정합니다.

  5. 영역us-west1-b로 설정합니다.

  6. 머신 유형e2-micro로 설정합니다.

  7. 네트워킹을 클릭한 다음 네트워크 인터페이스 섹션에서 네트워크 인터페이스 추가를 클릭하고 다음을 설정합니다.

    • 네트워크: consumer-network
    • 서브넷: consumer-subnet
    • 외부 IPv4 주소: 없음
  8. 고급을 클릭하고 시작 스크립트에 다음 스크립트를 입력합니다.

    echo success > /tmp/connection_test && nohup python3 -u -m http.server --directory /tmp 8000 &
    

  9. 만들기를 클릭합니다.

클라이언트 VM 만들기

  1. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

  2. 인스턴스 만들기를 클릭합니다.

  3. 이름consumer-client-vm로 설정합니다.

  4. 리전us-west1로 설정합니다.

  5. 영역us-west1-b로 설정합니다.

  6. 머신 유형e2-micro로 설정합니다.

  7. 네트워킹을 클릭한 다음 네트워크 인터페이스 섹션에서 네트워크 인터페이스 추가를 클릭하고 다음을 설정합니다.

    • 네트워크: consumer-network
    • 서브넷: consumer-subnet
    • 외부 IPv4 주소: 없음
  8. 만들기를 클릭합니다.

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"
    

인그레스 트래픽을 허용하는 방화벽 정책 만들기

이 섹션에서는 방화벽 정책을 만들고 소비자 VM에 대한 인그레스 트래픽을 허용하는 방화벽 규칙을 추가합니다.

콘솔

  1. Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.

    방화벽 정책으로 이동

  2. 방화벽 정책 만들기를 클릭합니다.

  3. 이름 필드에 consumer-firewall-policy를 입력합니다.

  4. 배포 범위에서 전역을 선택하고 계속을 클릭합니다.

  5. 방화벽 규칙 만들기를 클릭하고 다음 필드를 구성한 후 만들기를 클릭합니다.

    • 우선순위: 101
    • 트래픽 방향: 인그레스
    • 일치 시 작업: 허용
    • 소스 필터 > IP 범위: 35.235.240.0/20
    • 프로토콜 및 포트: 지정된 프로토콜 및 포트를 선택하고 TCP 체크박스를 선택한 후 포트22를 지정합니다.

    IPv4 범위 35.235.240.0/20에는 IAP(Identity-Aware Proxy)가 TCP 전달을 위해 사용하는 모든 IP 주소가 포함됩니다. 자세한 내용은 IAP TCP 전달을 위한 프로젝트 준비를 참고하세요.

  6. TCP 포트 8000의 트래픽이 서버 VM으로 전송되도록 허용하려면 방화벽 규칙 만들기를 클릭하고 다음 필드를 구성합니다.

    • 우선순위: 102
    • 트래픽 방향: 인그레스
    • 일치 시 작업: 허용
    • 소스 필터 > IP 범위: 10.11.0.0/16
    • 프로토콜 및 포트: 지정된 프로토콜 및 포트를 선택하고 TCP 체크박스를 선택한 후 포트8000를 지정합니다.
    • 만들기를 클릭합니다.
  7. 정책을 네트워크와 연결하려면 계속을 클릭한 다음 연결을 클릭합니다.

  8. consumer-network 체크박스를 선택합니다.

  9. 계속을 클릭합니다.

  10. 만들기를 클릭합니다.

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 # Google Cloud IAP range
    

    IPv4 범위 35.235.240.0/20에는 IAP가 TCP 전달을 위해 사용하는 모든 IP 주소가 포함됩니다. 자세한 내용은 IAP TCP 전달을 위한 프로젝트 준비를 참고하세요.

  4. TCP 포트 8000에서 서버 VM으로 트래픽을 허용하는 방화벽 규칙을 만듭니다.

    gcloud compute network-firewall-policies rules create 102 \
        --firewall-policy=consumer-firewall-policy \
        --global-firewall-policy \
        --action=allow \
        --direction=INGRESS \
        --layer4-configs=tcp:8000 \
        --src-ip-ranges=10.11.0.0/16
    

소비자 엔드포인트 그룹 만들기

이 섹션에서는 미러링 엔드포인트 그룹과 미러링 엔드포인트 그룹 연결을 만듭니다.

콘솔

  1. Google Cloud 콘솔에서 엔드포인트 그룹 페이지로 이동합니다.

    엔드포인트 그룹으로 이동

  2. 엔드포인트 그룹 만들기를 클릭합니다.

  3. 이름consumer-endpoint-group를 입력합니다.

  4. 용도에서 NSI 대역 외를 선택합니다.

  5. 배포 그룹에서 프로젝트 내를 선택합니다.

  6. 배포 그룹 이름producer-deployment-group를 입력합니다.

  7. 계속을 클릭합니다.

  8. 엔드포인트 그룹 연결 추가를 클릭합니다.

  9. 프로젝트에서 현재 프로젝트를 선택합니다.

  10. 네트워크에서 consumer-network를 선택합니다.

  11. 만들기를 클릭합니다.

gcloud

  1. 미러링 엔드포인트 그룹을 만듭니다.

    gcloud network-security mirroring-endpoint-groups create consumer-endpoint-group \
        --location=global \
        --mirroring-deployment-group=projects/PROJECT_ID/locations/global/mirroringDeploymentGroups/producer-deployment-group \
        --no-async
    

    PROJECT_ID를 프로젝트의 ID로 바꿉니다.

  2. 미러링 엔드포인트 그룹 연결을 만듭니다.

    gcloud network-security mirroring-endpoint-group-associations create consumer-endpoint-group-association \
        --location=global \
        --mirroring-endpoint-group=projects/PROJECT_ID/locations/global/mirroringEndpointGroups/consumer-endpoint-group \
        --network=consumer-network \
        --no-async
    

보안 프로필 및 보안 프로필 그룹 만들기

트래픽을 미러링할 보안 프로필 그룹과 맞춤 보안 프로필을 만듭니다.

콘솔

커스텀 보안 프로필 만들기

  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-mirroring create consumer-security-profile \
        --location=global \
        --organization=ORG_ID \
        --mirroring-endpoint-group=projects/PROJECT_ID/locations/global/mirroringEndpointGroups/consumer-endpoint-group \
        --billing-project=PROJECT_ID \
        --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-mirroring-profile=organizations/ORG_ID/locations/global/securityProfiles/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. 미러링 규칙 탭을 클릭합니다.

  4. 미러링 규칙 만들기를 클릭하고 다음 필드를 구성합니다.

    • 우선순위: 100
    • 트래픽 방향: 인그레스
    • 일치 시 작업: 미러링
    • 보안 프로필 그룹: consumer-security-profile-group
    • 소스: IPv4
    • IP 범위: 10.11.0.0/16
    • 프로토콜 및 포트: 지정된 프로토콜 및 포트를 선택하고 TCP 체크박스를 선택한 후 포트8000를 지정합니다.
  5. 만들기를 클릭합니다.

gcloud

  1. 서버 VM의 TCP 포트 8000에서 트래픽을 미러링하는 방화벽 규칙을 추가합니다.

    gcloud compute network-firewall-policies mirroring-rules create 100 \
        --firewall-policy=consumer-firewall-policy \
        --global-firewall-policy \
        --action=mirror \
        --security-profile-group=organizations/ORG_ID/locations/global/securityProfileGroups/consumer-security-profile-group \
        --direction=INGRESS \
        --layer4-configs=tcp:8000 \
        --src-ip-ranges=10.11.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 MIRRORING'"
    

    [NSI MIRRORING] 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-mirroring delete consumer-security-profile \
        --location=global \
        --organization=ORG_ID \
        --billing-project=PROJECT_ID \
        --quiet
    
  4. 미러링 엔드포인트 그룹 연결을 삭제합니다.

    콘솔

    1. Google Cloud 콘솔에서 엔드포인트 그룹 페이지로 이동합니다.

      엔드포인트 그룹으로 이동

    2. consumer-endpoint-group을 클릭합니다.

    3. consumer-network 연결을 선택하고 삭제를 클릭합니다.

    4. 삭제를 다시 클릭하여 확인합니다.

    gcloud

    gcloud network-security mirroring-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 mirroring-endpoint-groups delete consumer-endpoint-group \
        --location=global \
        --no-async
    
  6. 서버 및 클라이언트 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 mirroring-deployments delete producer-deployment \
          --location=us-west1-b \
          --no-async
      
    2. 미러링 배포 그룹을 삭제합니다.

      gcloud network-security mirroring-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
      

다음 단계