VPC 흐름 로그 구성

이 페이지에서는 VPC 흐름 로그를 구성하는 방법을 설명합니다. 여기에서는 사용자가 VPC 흐름 로그VPC 흐름 로그 레코드 정보에 설명된 개념들에 익숙하다고 가정합니다.

VPC 흐름 로그 사용 설정

VPC 흐름 로그를 사용 설정하면 서브넷의 모든 VM에 대해 로깅이 사용 설정됩니다. 그러나 로깅에 기록되는 정보의 양을 줄일 수 있습니다. 제어할 수 있는 매개변수에 대한 자세한 내용은 로그 샘플링 및 처리를 참조하세요.

메타데이터 필드를 맞춤설정하거나 로그 필터링을 구성하려면 Google Cloud CLI 또는 API를 사용합니다.

서브넷을 만들 때 VPC 흐름 로그 사용 설정

콘솔

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  2. 서브넷을 추가할 네트워크를 클릭합니다.

  3. 서브넷 추가를 클릭합니다.

  4. 흐름 로그에서 사용을 선택합니다.

  5. 로그 샘플링 및 집계를 조정하려는 경우 로그 구성을 클릭하고 다음을 조정합니다.

    • 집계 간격
    • 최종 로그 항목에 메타데이터를 포함할지 여부. 기본적으로 메타데이터 포함에는 모든 필드가 포함됩니다.
    • 샘플링 레이트. 100%는 모든 항목이 유지됨을 의미합니다.
  6. 기타 필드를 적절히 지정합니다.

  7. 추가를 클릭합니다.

gcloud

  1. Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.

    Cloud Shell 활성화

    Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

  2. 다음 명령어를 실행합니다.

    gcloud compute networks subnets create SUBNET_NAME \
       --enable-flow-logs \
       [--logging-aggregation-interval=AGGREGATION_INTERVAL] \
       [--logging-flow-sampling=SAMPLE_RATE] \
       [--logging-filter-expr=FILTER_EXPRESSION] \
       [--logging-metadata=LOGGING_METADATA] \
       [--logging-metadata-fields=METADATA_FIELDS] \
       [other flags as needed]
    

    다음을 바꿉니다.

    • AGGREGATION_INTERVAL: 해당 서브넷에서 흐름 로그의 집계 간격. 이 간격은 5초(기본값), 30초, 1분, 5분, 10분, 15분 중 하나로 설정할 수 있습니다.
    • SAMPLE_RATE: 흐름 샘플링 레이트. 흐름 샘플링은 0.0(샘플링 없음)에서 1.0(모든 로그)까지 설정할 수 있습니다. 기본값은 0.5입니다.
    • FILTER_EXPRESSION: 보관할 로그를 정의하는 표현식입니다. 표현식은 2,048자로 제한됩니다. 자세한 내용은 로그 필터링을 참조하세요.
    • LOGGING_METADATA: 로그에 포함할 메타데이터 주석입니다.

      • include-all을 사용하여 모든 메타데이터 주석을 포함합니다.
      • exclude-all을 사용하여 모든 메타데이터 주석을 제외합니다(기본값).
      • custom을 사용하여 METADATA_FIELDS에 지정하는 메타데이터 필드의 커스텀 목록을 포함합니다.
    • METADATA_FIELDS: 로그에 포함할 메타데이터 필드의 쉼표로 구분된 목록입니다. 예를 들면 src_instance,dst_instance입니다. LOGGING_METADATAcustom으로 설정된 경우에만 설정할 수 있습니다.

API

새 서브넷을 만들 때 VPC 흐름 로그를 사용 설정합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks
{
  "logConfig": {
    "aggregationInterval": "AGGREGATION_INTERVAL",
    "flowSampling": SAMPLING_RATE,
    "filterExpr": EXPRESSION,
    "metadata": METADATA_SETTING,
    "metadataFields": METADATA_FIELDS,
    "enable": true
  },
  "ipCidrRange": "IP_RANGE",
  "network": "NETWORK_URL",
  "name": "SUBNET_NAME"
}

다음을 바꿉니다.

  • PROJECT_ID: 서브넷을 생성할 프로젝트의 ID입니다.
  • REGION: 서브넷을 생성할 리전입니다.
  • AGGREGATION_INTERVAL: 서브넷의 흐름 로그에 대한 집계 간격입니다. 간격은 INTERVAL_5_SEC, INTERVAL_30_SEC, INTERVAL_1_MIN, INTERVAL_5_MIN, INTERVAL_10_MIN, INTERVAL_15_MIN 중 하나로 설정할 수 있습니다.
  • SAMPLING_RATE: 흐름 샘플링 레이트. 흐름 샘플링은 0.0(샘플링 없음)에서 1.0(모든 로그)까지 설정할 수 있습니다. 기본값은 .0.5입니다.
  • EXPRESSION: 실제로 기록되는 로그를 필터링하는 데 사용하는 필터 표현식입니다. 표현식은 2,048자로 제한됩니다. 자세한 내용은 로그 필터링을 참조하세요.
  • METADATA_SETTING: 로그에 포함할 메타데이터 주석입니다.

    • INCLUDE_ALL_METADATA을 사용하여 모든 메타데이터 주석을 포함합니다.
    • EXCLUDE_ALL_METADATA을 사용하여 모든 메타데이터 주석을 제외합니다(기본값).
    • METADATA_FIELDS에 지정하는 메타데이터 필드의 커스텀 목록을 포함하는 custom
  • METADATA_FIELDS: metadata: CUSTOM_METADATA를 설정할 때 캡처할 메타데이터 필드입니다. 메타데이터 필드를 쉼표로 구분한 목록입니다(예: src_instance, src_vpc.project_id).

  • IP_RANGE: 서브넷의 기본 내부 IP 주소 범위입니다.

  • NETWORK_URL: 서브넷을 생성할 VPC 네트워크 URL입니다.

  • SUBNET_NAME: 서브넷의 이름입니다.

자세한 내용은 subnetworks.insert 메서드를 참조하세요.

Terraform

Terraform 모듈을 사용하여 커스텀 모드 VPC 네트워크 및 서브넷을 만들 수 있습니다.

다음 예시에서는 다음과 같이 서브넷 3개를 만듭니다.

  • subnet-01에서 VPC 흐름 로그를 사용 중지했습니다. 서브넷을 만들 때 VPC 흐름 로그를 명시적으로 사용 설정하지 않으면 사용 중지됩니다.
  • subnet-02에서는 기본 흐름 로그 설정으로 VPC 흐름 로그가 사용 설정됩니다.
  • subnet-03에서는 일부 커스텀 설정과 함께 VPC 흐름 로그가 사용 설정됩니다.
module "test-vpc-module" {
  source       = "terraform-google-modules/network/google"
  version      = "~> 9.0"
  project_id   = var.project_id # Replace this with your project ID in quotes
  network_name = "my-custom-mode-network"
  mtu          = 1460

  subnets = [
    {
      subnet_name   = "subnet-01"
      subnet_ip     = "10.10.10.0/24"
      subnet_region = "us-west1"
    },
    {
      subnet_name           = "subnet-02"
      subnet_ip             = "10.10.20.0/24"
      subnet_region         = "us-west1"
      subnet_private_access = "true"
      subnet_flow_logs      = "true"
    },
    {
      subnet_name               = "subnet-03"
      subnet_ip                 = "10.10.30.0/24"
      subnet_region             = "us-west1"
      subnet_flow_logs          = "true"
      subnet_flow_logs_interval = "INTERVAL_10_MIN"
      subnet_flow_logs_sampling = 0.7
      subnet_flow_logs_metadata = "INCLUDE_ALL_METADATA"
      subnet_flow_logs_filter   = "false"
    }
  ]
}

Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.

기존 서브넷의 VPC 흐름 로그 사용 설정

콘솔

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  2. 업데이트할 서브넷을 클릭합니다.

  3. 수정을 클릭합니다.

  4. 흐름 로그에서 사용을 선택합니다.

  5. 로그 샘플링 및 집계를 조정하려는 경우 로그 구성을 클릭하고 다음을 조정합니다.

    • 집계 간격
    • 최종 로그 항목에 메타데이터를 포함할지 여부. 기본적으로 메타데이터 포함에는 모든 필드가 포함됩니다.
    • 샘플링 레이트. 100%는 모든 항목이 유지됨을 의미합니다.
  6. 저장을 클릭합니다.

gcloud

  1. Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.

    Cloud Shell 활성화

    Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

  2. 다음 명령어를 실행합니다.

    gcloud compute networks subnets update SUBNET_NAME \
       --enable-flow-logs \
       [--logging-aggregation-interval=AGGREGATION_INTERVAL] \
       [--logging-flow-sampling=SAMPLE_RATE] \
       [--logging-filter-expr=FILTER_EXPRESSION] \
       [--logging-metadata=LOGGING_METADATA] \
       [--logging-metadata-fields=METADATA_FIELDS] \
       [other flags as needed]
    

    다음을 바꿉니다.

    • AGGREGATION_INTERVAL: 해당 서브넷에서 흐름 로그의 집계 간격. 이 간격은 5초(기본값), 30초, 1분, 5분, 10분, 15분 중 하나로 설정할 수 있습니다.
    • SAMPLE_RATE: 흐름 샘플링 레이트. 흐름 샘플링은 0.0(샘플링 없음)에서 1.0(모든 로그)까지 설정할 수 있습니다. 기본값은 0.5입니다.
    • FILTER_EXPRESSION: 보관할 로그를 정의하는 표현식입니다. 표현식은 2,048자로 제한됩니다. 자세한 내용은 로그 필터링을 참조하세요.
    • LOGGING_METADATA: 로그에 포함할 메타데이터 주석입니다.

      • include-all을 사용하여 모든 메타데이터 주석을 포함합니다.
      • exclude-all을 사용하여 모든 메타데이터 주석을 제외합니다(기본값).
      • custom을 사용하여 METADATA_FIELDS에 지정하는 메타데이터 필드의 커스텀 목록을 포함합니다.
    • METADATA_FIELDS: 로그에 포함할 메타데이터 필드의 쉼표로 구분된 목록입니다. 예를 들면 src_instance,dst_instance입니다. LOGGING_METADATAcustom으로 설정된 경우에만 설정할 수 있습니다.

API

기존 서브넷의 VPC 흐름 로그를 사용 설정합니다.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
{
  "logConfig": {
    "enable": true
    ...other logging fields.
  },
  "fingerprint": "SUBNETWORK_FINGERPRINT"
}

다음을 바꿉니다.

  • PROJECT_ID: 서브넷이 있는 프로젝트의 ID입니다.
  • REGION: 서브넷이 있는 리전입니다.
  • SUBNET_NAME: 기존 서브넷의 이름입니다.
  • SUBNET_FINGERPRINT: 서브넷을 설명할 때 제공되는 기존 서브넷의 디지털 지문 ID입니다.
  • 다른 로깅 필드의 경우 서브넷을 만들 때 VPC 흐름 로깅 사용 설정을 참조하세요.

자세한 내용은 subnetworks.patch 메서드를 참조하세요.

기존 서브넷의 예상 로그 볼륨 보기

Google Cloud Console은 기존 서브넷의 예상 로그 볼륨을 제공하며, 이를 통해 흐름 로그 사용을 설정하기 위한 비용을 예측할 수 있습니다. 예상치는 지난 7일 동안 서브넷에 대해 5초 간격으로 캡처된 흐름을 기반으로 합니다. 또한 각 로그의 크기는 메타데이터 주석을 사용 설정했는지 여부에 따라 달라집니다.

콘솔

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  2. 비용을 예측할 서브넷을 클릭합니다.

  3. 수정을 클릭합니다.

  4. 흐름 로그에서 사용을 선택합니다.

  5. 로그 구성을 클릭합니다.

  6. 예상치를 보려면 예상되는 일일 생성 로그를 확인하세요.

  7. 취소를 클릭하면 변경 사항이 저장되지 않습니다.

VPC 흐름 로그가 사용 설정된 서브넷 보기

네트워크에서 VPC 흐름 로그가 사용 설정된 서브넷을 확인할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  2. 서브넷을 보려는 VPC 네트워크를 클릭합니다.

  3. 서브넷 탭을 클릭하고 흐름 로그 열에서 로깅이 사용 설정 또는 중지되었는지 확인합니다.

gcloud

  1. Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.

    Cloud Shell 활성화

    Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

  2. 다음 명령어를 실행합니다.

    gcloud compute networks subnets list \
       --project PROJECT_ID \
       --network="NETWORK" \
       --format="csv(name,region,logConfig.enable)"

    다음을 바꿉니다.

    • PROJECT_ID: 쿼리하려는 프로젝트 ID
    • NETWORK: 서브넷이 포함된 네트워크 이름

VPC 흐름 로그 매개변수 업데이트

로그 샘플링 매개변수를 수정할 수 있습니다. 지정할 수 있는 매개변수에 대한 자세한 내용은 로그 샘플링 및 처리를 참조하세요.

메타데이터 필드를 맞춤설정하거나 로그 필터링을 구성하려면 gcloud CLI 또는 API를 사용합니다.

콘솔

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  2. 업데이트할 서브넷을 클릭합니다.

  3. 수정을 클릭합니다.

  4. 로그 샘플링 및 집계를 조정하려는 경우 로그 구성을 클릭하고 다음을 조정합니다.

    • 집계 간격
    • 최종 로그 항목에 메타데이터를 포함할지 여부. 기본적으로 메타데이터 포함에는 모든 필드가 포함됩니다.
    • 샘플링 레이트. 100%는 모든 항목이 유지됨을 의미합니다.
  5. 저장을 클릭합니다.

gcloud

  1. Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.

    Cloud Shell 활성화

    Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

  2. 다음 명령어를 실행합니다.

    gcloud compute networks subnets update SUBNET_NAME \
       [--logging-aggregation-interval=AGGREGATION_INTERVAL] \
       [--logging-flow-sampling=SAMPLE_RATE] \
       [--logging-filter-expr=FILTER_EXPRESSION] \
       [--logging-metadata=LOGGING_METADATA] \
       [--logging-metadata-fields=METADATA_FIELDS] \
    

    다음을 바꿉니다.

    • AGGREGATION_INTERVAL: 해당 서브넷에서 흐름 로그의 집계 간격. 이 간격은 5초(기본값), 30초, 1분, 5분, 10분, 15분 중 하나로 설정할 수 있습니다.
    • SAMPLE_RATE: 흐름 샘플링 레이트. 흐름 샘플링은 0.0(샘플링 없음)에서 1.0(모든 로그)까지 설정할 수 있습니다. 기본값은 0.5입니다.
    • FILTER_EXPRESSION은 보관할 로그를 정의하는 표현식. 표현식은 2,048자로 제한됩니다. 자세한 내용은 로그 필터링을 참조하세요.
    • LOGGING_METADATA: 로그에 포함할 메타데이터 주석입니다.

      • include-all을 사용하여 모든 메타데이터 주석을 포함합니다.
      • exclude-all을 사용하여 모든 메타데이터 주석을 제외합니다(기본값).
      • custom을 사용하여 METADATA_FIELDS에 지정하는 메타데이터 필드의 커스텀 목록을 포함합니다.
    • METADATA_FIELDS: 로그에 포함할 메타데이터 필드의 쉼표로 구분된 목록입니다. 예를 들면 src_instance,dst_instance입니다. LOGGING_METADATAcustom으로 설정된 경우에만 설정할 수 있습니다.

API

로그 샘플링 필드를 수정하여 VPC 흐름 로그 동작을 업데이트합니다.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
{
  "logConfig": {
    ...fields to modify
  },
  "fingerprint": "SUBNETWORK_FINGERPRINT"
}

다음을 바꿉니다.

  • PROJECT_ID: 서브넷이 있는 프로젝트의 ID입니다.
  • REGION: 서브넷이 있는 리전입니다.
  • SUBNET_NAME: 기존 서브넷의 이름입니다.
  • SUBNET_FINGERPRINT: 서브넷을 설명할 때 제공되는 기존 서브넷의 디지털 지문 ID입니다.
  • 수정할 수 있는 필드는 서브넷을 만들 때 VPC 흐름 로깅 사용 설정을 참조하세요.

자세한 내용은 subnetworks.patch 메서드를 참조하세요.

서브넷의 VPC 흐름 로그 사용 중지

콘솔

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  2. 업데이트할 서브넷을 클릭합니다.

  3. 수정을 클릭합니다.

  4. 흐름 로그에서 사용 중지를 선택합니다.

  5. 저장을 클릭합니다.

gcloud

  1. Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.

    Cloud Shell 활성화

    Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

  2. 다음 명령어를 실행합니다.

    gcloud compute networks subnets update SUBNET_NAME \
       --no-enable-flow-logs
    

API

로그 레코드 수집을 중지하려면 서브넷에서 VPC 흐름 로그를 중지합니다.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
{
  "logConfig": {
    "enable": false
  },
  "fingerprint": "SUBNETWORK_FINGERPRINT"
}

다음을 바꿉니다.

  • PROJECT_ID: 서브넷이 있는 프로젝트의 ID입니다.
  • REGION: 서브넷이 있는 리전입니다.
  • SUBNET_NAME: 기존 서브넷의 이름입니다.
  • SUBNET_FINGERPRINT: 서브넷을 설명할 때 제공되는 기존 서브넷의 디지털 지문 ID입니다.

자세한 내용은 subnetworks.patch 메서드를 참조하세요.

문제 해결

흐름 로그를 사용 설정해도 사용 중지됨

  • 내부 애플리케이션 부하 분산기에 프록시 전용 서브넷을 구성하고 gcloud compute networks subnets 명령어를 사용하여 VPC 흐름 로그를 사용 설정하면 명령어가 성공한 것으로 표시되지만 흐름 로그는 실제로 사용 설정되지 않습니다. --purpose=INTERNAL_HTTPS_LOAD_BALANCER 플래그도 포함하면 --enable-flow-logs 플래그가 적용되지 않습니다.

    Google Cloud 콘솔 또는 API를 사용하여 흐름 로그를 사용 설정하면 'resource.enableFlowLogs' 필드의 값이 잘못되었습니다: 'true'. INTERNAL_HTTPS_LOAD_BALANCER 목적으로 서브네트워크에 설정된 필드가 잘못되었습니다'라는 오류 메시지가 표시됩니다.

    프록시 전용 서브넷에는 VM이 없으므로 VPC 흐름 로그는 지원되지 않습니다. Gmail에서는 숫자 전체를 검색해야 하며,

다음 단계