VPC 네트워크에 연결

이 페이지에서는 서버리스 VPC 액세스를 사용하여 표준 환경의 App Engine 서비스를 VPC 네트워크에 직접 연결하고 Compute Engine VM 인스턴스, Memorystore 인스턴스, 내부 IP 주소가 있는 기타 리소스에 대한 액세스하는 방법을 보여줍니다.

시작하기 전에

서버리스 VPC 액세스 커넥터 만들기

공개 인터넷을 사용하지 않고 VPC 네트워크에 요청을 보내고 이에 대한 응답을 수신하려면 서버리스 VPC 액세스 커넥터를 사용해야 합니다.

커넥터가 VPC 네트워크와 동일한 프로젝트에 있는 경우 기존 서브넷을 사용하여 커넥터를 만들거나 커넥터와 새 서브넷을 만들 수 있습니다.

커넥터가 서비스 프로젝트에 있고 공유 VPC 네트워크를 사용하는 경우 커넥터와 연결된 VPC 네트워크는 서로 다른 프로젝트에 있습니다. 커넥터와 해당 VPC 네트워크가 서로 다른 프로젝트에 있는 경우 공유 VPC 네트워크 관리자가 커넥터를 만들기 에 공유 VPC 네트워크에서 커넥터의 서브넷을 만들어야 하고 사용자는 기존 서브넷을 사용하여 커넥터를 만들어야 합니다.

서브넷 요구사항에 대한 자세한 내용은 커넥터 서브넷 요구사항을 참조하세요.

머신 유형 및 확장을 포함한 커넥터 처리량에 대한 자세한 내용은 처리량 및 확장을 참조하세요.

Google Cloud 콘솔, Google Cloud CLI 또는 Terraform을 사용하여 커넥터를 만들 수 있습니다.

콘솔

  1. 서버리스 VPC 액세스 개요 페이지로 이동합니다.

    서버리스 VPC 액세스로 이동

  2. 커넥터 만들기를 클릭합니다.

  3. 이름 필드에 Compute Engine 이름 지정 규칙과 일치하는 커넥터의 이름을 입력합니다. 이때 추가 요구사항으로 이름은 21자 미만이어야 합니다. 하이픈(-)은 2자로 계산됩니다.

  4. 리전 필드에서 커넥터의 리전을 선택합니다. 이 리전은 서버리스 서비스의 리전과 일치해야 합니다.

    서비스 또는 작업이 us-central 또는 europe-west 리전에 있으면 us-central1 또는 europe-west1을 사용합니다.

  5. 네트워크 필드에서 커넥터를 연결할 VPC 네트워크를 선택합니다.

  6. 서브넷 필드에서 다음 옵션 중 하나를 선택합니다.

    • 기존 서브넷을 사용하여 커넥터 만들기: 서브넷 필드에서 기존 서브넷을 선택합니다.

    • 커넥터 및 새 서브넷 만들기: 서브넷 필드에서 커스텀 IP 범위를 선택합니다. 그런 다음 사용되지 않는 /28(예: 10.8.0.0/28)의 첫 번째 주소를 입력하여 Google Cloud가 커넥터의 VPC 네트워크에 생성하는 새 서브넷의 기본 IPv4 주소 범위로 사용합니다. IP 범위가 커넥터의 VPC 네트워크에 있는 기존 경로와 충돌하지 않는지 확인합니다. 새 서브넷의 이름은 프리픽스 'aet-'로 시작합니다.

  7. (선택사항) 커넥터를 추가로 제어하기 위해 확장 옵션을 설정하려면 확장 설정 표시를 클릭하여 확장 양식을 표시합니다.

    1. 커넥터의 최소 및 최대 인스턴스 수를 설정하거나 기본값 2(최소)와 10(최대)을 사용합니다. 커넥터는 트래픽 사용량이 필요하면 지정된 최대 수로 확장되지만 트래픽이 감소하면 커넥터가 축소되지 않습니다. 210 사이의 값을 사용해야 합니다.
    2. 인스턴스 유형 메뉴에서 커넥터에 사용할 머신 유형을 선택하거나 기본 e2-micro를 사용합니다. 대역폭과 비용 추정을 표시하는 인스턴스 유형을 선택하는 경우 오른쪽에 있는 비용 사이드바를 확인합니다.
  8. 만들기를 클릭합니다.

  9. 사용할 준비가 되면 커넥터 이름 옆에 녹색 체크표시가 나타납니다.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. gcloud 구성요소를 최신 버전으로 업데이트합니다.

    gcloud components update
  3. 서버리스 VPC 액세스 API가 프로젝트에 대해 사용 설정되어 있는지 확인합니다.

    gcloud services enable vpcaccess.googleapis.com
  4. 다음 옵션 중 하나를 사용하여 커넥터를 만듭니다.

    자세한 내용과 선택적 인수는 gcloud 참조를 확인하세요.

    • 기존 서브넷을 사용하여 커넥터 만들기:

      gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
       --region REGION \
       --subnet SUBNET_NAME \
       --subnet-project HOST_PROJECT_ID \
       --min-instances MIN \
       --max-instances MAX \
       --machine-type MACHINE_TYPE

      다음을 바꿉니다.

      • CONNECTOR_NAME: Compute Engine 이름 지정 규칙과 일치하는 커넥터 이름으로, 추가 요구사항으로 이름이 21자 미만이어야 합니다. 이때 하이픈(-)은 2자로 계산됩니다.
      • REGION: 커넥터의 리전으로, 서버리스 서비스 또는 작업의 리전과 일치합니다. 서비스 또는 작업이 us-central 또는 europe-west에 있으면 us-central1 또는 europe-west1을 사용합니다.
      • SUBNET_NAME: 기존 서브넷의 이름입니다.
      • HOST_PROJECT_ID: 공유 VPC 호스트 프로젝트 ID입니다. 커넥터와 기존 서브넷이 동일한 프로젝트에 있는 경우 --subnet-project 플래그를 생략합니다.
      • MIN: 커넥터에 사용할 최소 인스턴스 수로, 2(기본값)에서 9 사이의 정수를 사용합니다.
      • MAX: 커넥터에 사용할 최대 인스턴스 수로, 3에서 10(기본값) 사이의 정수를 사용합니다. 커넥터가 최대 인스턴스 수까지 확장되면 축소되지 않습니다.
      • MACHINE_TYPE: 다음 f1-micro, e2-micro 또는 e2-standard-4 중 하나여야 합니다.
    • 커넥터 및 새 서브넷 만들기:

      gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
       --region REGION \
       --network VPC_NETWORK \
       --range IP_RANGE
       --min-instances MIN \
       --max-instances MAX \
       --machine-type MACHINE_TYPE

      다음을 바꿉니다.

      • CONNECTOR_NAME: Compute Engine 이름 지정 규칙과 일치하는 커넥터 이름으로, 추가 요구사항으로 이름이 21자 미만이어야 합니다. 이때 하이픈(-)은 2자로 계산됩니다.
      • REGION: 커넥터의 리전으로, 서버리스 서비스 또는 작업의 리전과 일치합니다. 서비스 또는 작업이 us-central 또는 europe-west에 있으면 us-central1 또는 europe-west1을 사용합니다.
      • VPC_NETWORK: 커넥터를 연결할 VPC 네트워크의 이름으로, 커넥터와 VPC 네트워크는 동일한 프로젝트에 있어야 합니다.
      • IP_RANGE: Google Cloud에서 커넥터의 VPC 네트워크에 생성하는 새 서브넷의 기본 IPv4 주소 범위로 사용할 미사용 /28 CIDR(예: 10.8.0.0/28)을 제공합니다. IP 범위가 커넥터의 VPC 네트워크에 있는 기존 경로와 충돌하지 않는지 확인합니다. 새 서브넷의 이름은 프리픽스 'aet-'로 시작합니다.
      • MIN: 커넥터에 사용할 최소 인스턴스 수로, 2(기본값)에서 9 사이의 정수를 사용합니다.
      • MAX: 커넥터에 사용할 최대 인스턴스 수로, 3에서 10(기본값) 사이의 정수를 사용합니다. 커넥터가 최대 인스턴스 수까지 확장되면 축소되지 않습니다.
      • MACHINE_TYPE: 다음 f1-micro, e2-micro 또는 e2-standard-4 중 하나여야 합니다.
  5. 커넥터를 사용하기 전에 커넥터가 READY 상태인지 확인합니다.

    gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \
    --region REGION

    다음을 바꿉니다.

    • CONNECTOR_NAME: 커넥터 이름이며, 이전 단계에서 지정한 이름입니다.
    • REGION: 커넥터의 리전이며, 이전 단계에서 지정한 리전입니다.

    출력에는 state: READY 줄이 포함되어야 합니다.

Terraform

Terraform 리소스를 사용하여 vpcaccess.googleapis.com API를 사용 설정할 수 있습니다.

resource "google_project_service" "vpcaccess-api" {
  project = var.project_id # Replace this with your project ID in quotes
  service = "vpcaccess.googleapis.com"
}

Terraform 모듈을 사용하여 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-serverless-network"
  mtu          = 1460

  subnets = [
    {
      subnet_name   = "serverless-subnet"
      subnet_ip     = "10.10.10.0/28"
      subnet_region = "us-central1"
    }
  ]
}

module "serverless-connector" {
  source     = "terraform-google-modules/network/google//modules/vpc-serverless-connector-beta"
  version    = "~> 9.0"
  project_id = var.project_id
  vpc_connectors = [{
    name        = "central-serverless"
    region      = "us-central1"
    subnet_name = module.test-vpc-module.subnets["us-central1/serverless-subnet"].name
    # host_project_id = var.host_project_id # Specify a host_project_id for shared VPC
    machine_type  = "e2-standard-4"
    min_instances = 2
    max_instances = 7
    }
    # Uncomment to specify an ip_cidr_range
    #   , {
    #     name          = "central-serverless2"
    #     region        = "us-central1"
    #     network       = module.test-vpc-module.network_name
    #     ip_cidr_range = "10.10.11.0/28"
    #     subnet_name   = null
    #     machine_type  = "e2-standard-4"
    #     min_instances = 2
    #   max_instances = 7 }
  ]
  depends_on = [
    google_project_service.vpcaccess-api
  ]
}

커넥터를 사용하도록 서비스 구성

서버리스 VPC 액세스 커넥터를 만든 후에는 VPC 네트워크에 연결할 App Engine 앱의 각 서비스를 구성해야 합니다.

앱에서 서비스에 커넥터를 지정하려면 다음 안내를 따르세요.

  1. 서비스의 app.yaml 파일에 vpc_access_connector 필드를 추가합니다.

    vpc_access_connector:
     name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

    여기서 PROJECT_ID는 Google Cloud 프로젝트 ID이고 REGION은 커넥터가 있는 리전이며 CONNECTOR_NAME은 커넥터 이름입니다.

  2. 서비스를 배포합니다.

    gcloud app deploy
    

서비스를 배포한 후에는 내부 IP 주소로 요청을 보내 VPC 네트워크의 리소스에 액세스할 수 있습니다.

VPC 리소스에 대한 액세스 권한

서비스 프로젝트의 커넥터에 필요한 방화벽 규칙

독립형 VPC 네트워크 또는 공유 VPC 네트워크의 호스트 프로젝트에서 커넥터를 만들면 Google Cloud는 커넥터 작동에 필요한 모든 방화벽 규칙을 만듭니다. 자세한 내용은 독립형 VPC 네트워크 또는 공유 VPC 호스트 프로젝트의 커넥터에 대한 방화벽 규칙을 참조하세요.

하지만 서비스 프로젝트에서 커넥터를 만들고 커넥터가 호스트 프로젝트의 공유 VPC 네트워크를 대상으로 하는 경우 다음 범위에서 커넥터 작동에 필요한 트래픽을 허용하도록 방화벽 규칙을 추가해야 합니다.

이러한 범위는 Cloud Run, Cloud Run Functions, App Engine 표준 환경의 Google 인프라에서 사용됩니다. 이러한 IP 주소의 모든 요청은 Google 인프라에서 발생하여 각 서버리스 리소스가 연결된 커넥터와만 통신할 수 있게 합니다.

커넥터의 서브넷에서 VPC 네트워크의 리소스로의 트래픽을 허용해야 합니다.

이 단계를 수행하려면 호스트 프로젝트에 대한 다음 역할 중 하나가 있어야 합니다.

기본 구성에서는 공유 VPC 네트워크에 연결된 모든 서비스 프로젝트의 서버리스 리소스가 네트워크의 모든 리소스에 요청을 보낼 수 있도록 규칙을 적용합니다.

이러한 규칙을 적용하려면 호스트 프로젝트에서 다음 명령어를 실행합니다.

  1. Google의 서버리스 인프라 및 상태 점검 프로브의 요청이 네트워크의 모든 커넥터에 도달하도록 허용하는 방화벽 규칙을 만듭니다. 이러한 명령어에서 UDP 포트와 TCP 포트는 각각 프록시 및 HTTP 상태 점검에 사용됩니다. 지정된 포트를 변경하지 마세요.

    gcloud compute firewall-rules create serverless-to-vpc-connector \
        --allow tcp:667,udp:665-666,icmp \
        --source-ranges=35.199.224.0/19 \
        --direction=INGRESS \
        --target-tags vpc-connector \
        --network=VPC_NETWORK
    gcloud compute firewall-rules create vpc-connector-to-serverless \
        --allow tcp:667,udp:665-666,icmp \
        --destination-ranges=35.199.224.0/19 \
        --direction=EGRESS \
        --target-tags vpc-connector \
        --network=VPC_NETWORK
    gcloud compute firewall-rules create vpc-connector-health-checks \
        --allow tcp:667 \
        --source-ranges=35.191.0.0/16,35.191.192.0/18,130.211.0.0/22 \
        --direction=INGRESS \
        --target-tags vpc-connector \
        --network=VPC_NETWORK

    VPC_NETWORK를 커넥터를 연결할 VPC 네트워크의 이름으로 바꿉니다.

  2. VPC 네트워크에 이 네트워크를 대상으로 하는 커넥터의 요청을 허용하는 인그레스 방화벽 규칙을 만듭니다.

    gcloud compute firewall-rules create vpc-connector-requests \
        --allow tcp,udp,icmp \
        --direction=INGRESS \
        --source-tags vpc-connector \
        --network=VPC_NETWORK

    이 규칙으로 커넥터에서 네트워크의 모든 리소스에 액세스할 수 있습니다. 서버리스 VPC 액세스를 사용하여 서버리스 환경에서 도달할 수 있는 리소스를 제한하려면 커넥터 VM의 VPC 네트워크 리소스 액세스 제한을 참조하세요.

특정 커넥터의 방화벽 규칙 만들기

서비스 프로젝트의 커넥터에 필요한 방화벽 규칙의 절차를 따르면 현재의 커넥터와 향후 생성되는 커넥터를 포함한 모든 커넥터에 방화벽 규칙이 적용됩니다. 이를 원하지 않고 대신에 특정 커넥터에만 적용되는 규칙을 만들고 싶다면 해당 커넥터에만 적용되도록 규칙의 범위를 좁혀서 지정할 수 있습니다.

규칙의 범위를 특정 커넥터로 제한하려면 다음 메커니즘 중 하나를 사용하면 됩니다.

  • 네트워크 태그: 모든 커넥터에는 2개의 네트워크 태그인 vpc-connectorvpc-connector-REGION-CONNECTOR_NAME이 있습니다. 후자 형식을 사용하여 방화벽 규칙의 범위를 특정 커넥터로 제한합니다.
  • IP 범위: 이 옵션은 인그레스 규칙에서 작동하지 않으므로 이그레스 규칙에만 사용합니다. 커넥터 서브넷의 IP 범위를 사용하여 방화벽 규칙의 범위를 단일 VPC 커넥터로 제한할 수 있습니다.

커넥터 VM 액세스 VPC 네트워크 리소스 제한

VPC 방화벽 규칙 또는 방화벽 정책의 규칙을 사용하여 대상 VPC 네트워크의 리소스에 대한 커넥터의 액세스를 제한할 수 있습니다. 다음 전략 중 하나를 사용하여 이러한 제한을 수행할 수 있습니다.

  • 대상이 커넥터 VM 액세스를 제한하려는 리소스를 나타내고 소스가 커넥터 VM을 나타내는 인그레스 규칙을 만듭니다.
  • 대상이 커넥터 VM을 나타내고 대상이 커넥터 VM 액세스를 제한하려는 리소스를 나타내는 이그레스 규칙을 만듭니다.

다음 예시에서는 각 전략을 보여줍니다.

인그레스 규칙을 사용하여 액세스 제한

네트워크 태그나 CIDR 범위를 선택하여 VPC 네트워크로 들어오는 트래픽을 제어합니다.

네트워크 태그

다음 단계에서는 커넥터 네트워크 태그를 기준으로 VPC 네트워크에 대한 커넥터의 액세스를 제한하는 인그레스 규칙을 만드는 방법을 설명합니다.

  1. 방화벽 규칙을 삽입하는 데 필요한 권한이 있는지 확인하세요. 다음 Identity and Access Management(IAM) 역할 중 하나가 있어야 합니다.

  2. VPC 네트워크에서 커넥터 트래픽을 거부하세요.

    커넥터 네트워크 태그에서 인그레스를 거부하려면 VPC 네트워크에서 우선순위가 1000보다 낮은 인그레스 방화벽 규칙을 만듭니다. 이렇게 하면 기본적으로 서버리스 VPC 액세스가 VPC 네트워크에서 만드는 암시적 방화벽 규칙이 재정의됩니다.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --rules=PROTOCOL \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY

    다음을 바꿉니다.

    • RULE_NAME: 새 방화벽 규칙의 이름. 예를 들면 deny-vpc-connector입니다.

    • PROTOCOL: VPC 커넥터에서 허용할 하나 이상의 프로토콜. 지원되는 프로토콜은 tcp 또는 udp입니다. 예를 들어 tcp:80,udp는 포트 80을 통한 TCP 트래픽 및 UDP 트래픽을 허용합니다. 자세한 내용은 allow 플래그 문서를 참조하세요.

      보안 및 검증을 위해 지원되지 않는 프로토콜 ah, all, esp, icmp, ipip, sctp에 대한 트래픽을 차단하도록 거부 규칙을 구성할 수도 있습니다.

    • VPC_CONNECTOR_NETWORK_TAG: 향후 모든 커넥터를 포함하여 모든 커넥터에 대한 액세스를 제한하려는 경우 범용 커넥터 네트워크 태그 또는 특정 커넥터에 대한 액세스를 제한하려는 경우 고유한 네트워크 태그

      • 범용 네트워크 태그: vpc-connector
      • 고유 네트워크 태그: vpc-connector-REGION-CONNECTOR_NAME

        다음과 같이 바꿉니다.

        • REGION: 제한할 커넥터의 리전
        • CONNECTOR_NAME: 제한할 커넥터의 이름

      커넥터 네트워크 태그에 대한 자세한 내용은 네트워크 태그를 참조하세요.

    • VPC_NETWORK: VPC 네트워크의 이름

    • PRIORITY: 0~65535 사이의 정수. 예를 들어 0은 가장 높은 우선순위입니다.

  3. 커넥터 트래픽을 수신할 리소스에 대한 커넥터 트래픽을 허용하세요.

    allowtarget-tags 플래그를 사용하여 VPC 커넥터에서 액세스할 VPC 네트워크의 리소스를 타겟팅하는 인그레스 방화벽 규칙을 만듭니다. 이 규칙의 우선순위를 이전 단계에서 만든 규칙의 우선순위보다 낮은 값으로 설정합니다.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOL \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY

    다음을 바꿉니다.

    • RULE_NAME: 새 방화벽 규칙의 이름. 예를 들면 allow-vpc-connector-for-select-resources입니다.

    • PROTOCOL: VPC 커넥터에서 허용할 하나 이상의 프로토콜. 지원되는 프로토콜은 tcp 또는 udp입니다. 예를 들어 tcp:80,udp는 포트 80을 통한 TCP 트래픽 및 UDP 트래픽을 허용합니다. 자세한 내용은 allow 플래그 문서를 참조하세요.

    • VPC_CONNECTOR_NETWORK_TAG: 향후 모든 커넥터를 포함하여 모든 커넥터에 대한 액세스를 제한하려는 경우 범용 커넥터 네트워크 태그 또는 특정 커넥터에 대한 액세스를 제한하려는 경우 고유한 네트워크 태그. 이 태그는 이전 단계에서 지정한 네트워크 태그와 일치해야 합니다.

      • 범용 네트워크 태그: vpc-connector
      • 고유 네트워크 태그: vpc-connector-REGION-CONNECTOR_NAME

        다음과 같이 바꿉니다.

        • REGION: 제한할 커넥터의 리전
        • CONNECTOR_NAME: 제한할 커넥터의 이름

      커넥터 네트워크 태그에 대한 자세한 내용은 네트워크 태그를 참조하세요.

    • VPC_NETWORK: VPC 네트워크의 이름

    • RESOURCE_TAG: VPC 커넥터에서 액세스할 VPC 리소스의 네트워크 태그

    • PRIORITY: 이전 단계에서 설정한 우선순위보다 작은 정수. 예를 들어 이전 단계에서 만든 규칙의 우선순위를 990으로 설정하면 980을 시도합니다.

방화벽 규칙을 만드는 데 사용되는 필수 및 선택적 플래그에 대한 자세한 내용은 gcloud compute firewall-rules create 문서를 참조하세요.

CIDR 범위

다음 단계에서는 커넥터의 CIDR 범위를 기준으로 VPC 네트워크에 대한 커넥터의 액세스를 제한하는 인그레스 규칙을 만드는 방법을 설명합니다.

  1. 방화벽 규칙을 삽입하는 데 필요한 권한이 있는지 확인하세요. 다음 Identity and Access Management(IAM) 역할 중 하나가 있어야 합니다.

  2. VPC 네트워크에서 커넥터 트래픽을 거부하세요.

    커넥터의 CIDR 범위에서 인그레스를 거부하려면 VPC 네트워크에서 우선순위가 1000보다 낮은 인그레스 방화벽 규칙을 만듭니다. 이렇게 하면 기본적으로 서버리스 VPC 액세스가 VPC 네트워크에서 만드는 암시적 방화벽 규칙이 재정의됩니다.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --rules=PROTOCOL \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY

    다음을 바꿉니다.

    • RULE_NAME: 새 방화벽 규칙의 이름. 예를 들면 deny-vpc-connector입니다.

    • PROTOCOL: VPC 커넥터에서 허용할 하나 이상의 프로토콜. 지원되는 프로토콜은 tcp 또는 udp입니다. 예를 들어 tcp:80,udp는 포트 80을 통한 TCP 트래픽 및 UDP 트래픽을 허용합니다. 자세한 내용은 allow 플래그 문서를 참조하세요.

      보안 및 검증을 위해 지원되지 않는 프로토콜 ah, all, esp, icmp, ipip, sctp에 대한 트래픽을 차단하도록 거부 규칙을 구성할 수도 있습니다.

    • VPC_CONNECTOR_CIDR_RANGE: 액세스를 제한하는 커넥터의 CIDR 범위

    • VPC_NETWORK: VPC 네트워크의 이름

    • PRIORITY: 0~65535 사이의 정수. 예를 들어 0은 가장 높은 우선순위입니다.

  3. 커넥터 트래픽을 수신할 리소스에 대한 커넥터 트래픽을 허용하세요.

    allowtarget-tags 플래그를 사용하여 VPC 커넥터에서 액세스할 VPC 네트워크의 리소스를 타겟팅하는 인그레스 방화벽 규칙을 만듭니다. 이 규칙의 우선순위를 이전 단계에서 만든 규칙의 우선순위보다 낮은 값으로 설정합니다.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOL \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY

    다음을 바꿉니다.

    • RULE_NAME: 새 방화벽 규칙의 이름. 예를 들면 allow-vpc-connector-for-select-resources입니다.

    • PROTOCOL: VPC 커넥터에서 허용할 하나 이상의 프로토콜. 지원되는 프로토콜은 tcp 또는 udp입니다. 예를 들어 tcp:80,udp는 포트 80을 통한 TCP 트래픽 및 UDP 트래픽을 허용합니다. 자세한 내용은 allow 플래그 문서를 참조하세요.

    • VPC_CONNECTOR_CIDR_RANGE: 액세스를 제한하는 커넥터의 CIDR 범위

    • VPC_NETWORK: VPC 네트워크의 이름

    • RESOURCE_TAG: VPC 커넥터에서 액세스할 VPC 리소스의 네트워크 태그

    • PRIORITY: 이전 단계에서 설정한 우선순위보다 작은 정수. 예를 들어 이전 단계에서 만든 규칙의 우선순위를 990으로 설정하면 980을 시도합니다.

방화벽 규칙을 만드는 데 사용되는 필수 및 선택적 플래그에 대한 자세한 내용은 gcloud compute firewall-rules create 문서를 참조하세요.

이그레스 규칙을 사용하여 액세스 제한

다음 단계에서는 커넥터 액세스를 제한하는 이그레스 규칙을 만드는 방법을 설명합니다.

  1. 방화벽 규칙을 삽입하는 데 필요한 권한이 있는지 확인하세요. 다음 Identity and Access Management(IAM) 역할 중 하나가 있어야 합니다.

  2. 커넥터의 이그레스 트래픽을 거부하세요.

    서버리스 VPC 액세스 커넥터에서 설정된 응답을 제외한 발신 트래픽을 대상으로 보내지 않도록 이그레스 방화벽 규칙을 만듭니다.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --rules=PROTOCOL \
    --direction=EGRESS \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --network=VPC_NETWORK \
    --priority=PRIORITY

    다음을 바꿉니다.

    • RULE_NAME: 새 방화벽 규칙의 이름. 예를 들면 deny-vpc-connector입니다.

    • PROTOCOL: VPC 커넥터에서 허용할 하나 이상의 프로토콜. 지원되는 프로토콜은 tcp 또는 udp입니다. 예를 들어 tcp:80,udp는 포트 80을 통한 TCP 트래픽 및 UDP 트래픽을 허용합니다. 자세한 내용은 allow 플래그 문서를 참조하세요.

      보안 및 검증을 위해 지원되지 않는 프로토콜 ah, all, esp, icmp, ipip, sctp에 대한 트래픽을 차단하도록 거부 규칙을 구성할 수도 있습니다.

    • VPC_CONNECTOR_NETWORK_TAG: 규칙을 모든 기존 VPC 커넥터와 나중에 생성되는 VPC 커넥터에 적용하려는 경우에는 범용 VPC 커넥터 네트워크 태그. 또는 특정 커넥터를 제어하려는 경우에는 고유한 VPC 커넥터 네트워크 태그입니다.

    • VPC_NETWORK: VPC 네트워크의 이름

    • PRIORITY: 0~65535 사이의 정수. 예를 들어 0은 가장 높은 우선순위입니다.

  3. 대상이 커넥터에서 액세스하려는 CIDR 범위에 있으면 이그레스 트래픽을 허용합니다.

    allowdestination-ranges 플래그를 사용하여 특정 대상 범위의 커넥터에서 이그레스 트래픽을 허용하는 방화벽 규칙을 만듭니다. 대상 범위를 커넥터에서 액세스할 VPC 네트워크의 리소스 CIDR 범위로 설정합니다. 이 규칙의 우선순위를 이전 단계에서 만든 규칙의 우선순위보다 낮은 값으로 설정합니다.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOL \
    --destination-ranges=RESOURCE_CIDR_RANGE \
    --direction=EGRESS \
    --network=VPC_NETWORK \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --priority=PRIORITY

    다음을 바꿉니다.

    • RULE_NAME: 새 방화벽 규칙의 이름. 예를 들면 allow-vpc-connector-for-select-resources입니다.

    • PROTOCOL: VPC 커넥터에서 허용할 하나 이상의 프로토콜. 지원되는 프로토콜은 tcp 또는 udp입니다. 예를 들어 tcp:80,udp는 포트 80을 통한 TCP 트래픽 및 UDP 트래픽을 허용합니다. 자세한 내용은 allow 플래그 문서를 참조하세요.

    • RESOURCE_CIDR_RANGE: 액세스를 제한하는 커넥터의 CIDR 범위

    • VPC_NETWORK: VPC 네트워크의 이름

    • VPC_CONNECTOR_NETWORK_TAG: 규칙을 모든 기존 VPC 커넥터와 나중에 생성되는 VPC 커넥터에 적용하려는 경우에는 범용 VPC 커넥터 네트워크 태그. 또는 특정 커넥터를 제어하려는 경우에는 고유한 VPC 커넥터 네트워크 태그입니다. 이전 단계에서 고유한 네트워크 태그를 사용한 경우 해당 고유한 네트워크 태그를 사용합니다.

    • PRIORITY: 이전 단계에서 설정한 우선순위보다 작은 정수. 예를 들어 이전 단계에서 만든 규칙의 우선순위를 990으로 설정하면 980을 시도합니다.

방화벽 규칙을 만드는 데 사용되는 필수 및 선택적 플래그에 대한 자세한 내용은 gcloud compute firewall-rules create 문서를 참조하세요.

커넥터 관리

서비스에서 이그레스 트래픽 제어

기본적으로 내부 IP 주소 및 내부 DNS 이름에 대한 요청만 서버리스 VPC 액세스 커넥터를 통해 라우팅됩니다. app.yaml 파일에서 서비스의 이그레스 설정을 지정할 수 있습니다.

이그레스 설정은 URL Fetch 서비스와 호환되지 않습니다. urlfetch 라이브러리를 사용하면 이그레스 설정이 무시되며 요청은 서버리스 VPC 액세스 커넥터를 통해 라우팅되지 않습니다.

App Engine 서비스의 이그레스 동작을 구성하려면 다음 안내를 따르세요.

  1. 서비스 app.yaml 파일의 vpc_access_connector 필드에 egress_setting 속성을 추가합니다.

    vpc_access_connector:
      name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
      egress_setting: EGRESS_SETTING

    다음과 같이 바꿉니다.

    • PROJECT_ID: Google Cloud 프로젝트 ID
    • REGION: 커넥터가 위치한 리전
    • CONNECTOR_NAME: 커넥터 이름
    • EGRESS_SETTING: 다음 중 하나로 바꿉니다.
      • private-ranges-only: 기본값. RFC 1918RFC 6598 IP 주소 범위 또는 내부 DNS 이름으로의 요청만 VPC 네트워크로 라우팅됩니다. 다른 모든 요청은 인터넷으로 직접 라우팅됩니다.
      • all-traffic: 서비스의 모든 아웃바운드 요청은 VPC 네트워크로 라우팅됩니다. 그런 다음 요청에 VPC 네트워크의 방화벽, DNS, 라우팅 규칙이 적용됩니다. 모든 아웃바운드 요청을 VPC 네트워크에 라우팅하면 서버리스 VPC 액세스 커넥터에서 처리되는 이그레스 양이 늘어나고 요금이 청구될 수 있습니다.
  2. 서비스를 배포합니다.

    gcloud app deploy
    

VPC 네트워크에서 서비스 연결 해제

VPC 네트워크에서 서비스의 연결을 해제하려면 app.yaml 파일에서 vpc_access_connector 필드를 삭제하고 서비스를 다시 배포합니다.

커넥터에 트래픽이 없고 연결이 끊겨도 요금은 계속 청구됩니다. 자세한 내용은 가격 책정을 참조하세요. 커넥터가 더 이상 필요하지 않으면 계속 결제되지 않도록 커넥터를 삭제해야 합니다.

커넥터 업데이트

Google Cloud 콘솔, Google Cloud CLI, API를 사용하여 커넥터의 다음 속성을 업데이트 및 모니터링할 수 있습니다.

  • 머신(인스턴스) 유형
  • 최소 및 최대 인스턴스 수
  • 최근 처리량, 인스턴스 수, CPU 사용률

머신 유형 업데이트

콘솔

  1. 서버리스 VPC 액세스 개요 페이지로 이동합니다.

    서버리스 VPC 액세스로 이동

  2. 수정할 커넥터를 선택하고 수정을 클릭합니다.

  3. 인스턴스 유형 목록에서 원하는 머신(인스턴스) 유형을 선택합니다. 사용 가능한 머신 유형에 대한 자세한 내용은 처리량 및 확장에 대한 문서를 참조하세요.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. 커넥터 머신 유형을 업데이트하려면 터미널에서 다음 명령어를 실행합니다.

    gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --machine-type=MACHINE_TYPE
    다음을 바꿉니다.

    • CONNECTOR_NAME: 커넥터 이름
    • REGION: 커넥터 리전의 이름
    • MACHINE_TYPE: 선호하는 머신 유형. 사용 가능한 머신 유형에 대한 자세한 내용은 처리량 및 확장에 대한 문서를 참조하세요.

최소 및 최대 인스턴스 수 줄이기

최소 및 최대 인스턴스 수를 줄이려면 다음을 수행해야 합니다.

  1. 선호하는 값으로 새 커넥터를 만듭니다.
  2. 새 커넥터를 사용하도록 서비스 또는 함수를 업데이트합니다.
  3. 트래픽이 이동되면 이전 커넥터를 삭제합니다.

자세한 내용은 서버리스 VPC 액세스 커넥터 만들기를 참조하세요.

최소 및 최대 인스턴스 수 증가

콘솔

  1. 서버리스 VPC 액세스 개요 페이지로 이동합니다.

    서버리스 VPC 액세스로 이동

  2. 수정할 커넥터를 선택하고 수정을 클릭합니다.

  3. 최소 인스턴스 필드에서 선호하는 최소 인스턴스 수를 선택합니다.

    이 필드에서 사용할 수 있는 최솟값은 현재 값입니다. 이 필드에서 사용할 수 있는 최댓값은 최대 인스턴스 필드의 현재 값에서 1을 뺀 값입니다. 예를 들어 최대 인스턴스 필드 값이 8인 경우 최소 인스턴스 필드에서 사용 가능한 최댓값은 7입니다.

  4. 최대 인스턴스 필드에서 선호하는 최대 인스턴스 수를 선택합니다.

    이 필드에서 사용할 수 있는 최솟값은 현재 값입니다. 이 필드에서 사용할 수 있는 최댓값은 10입니다.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. 커넥터의 최소 또는 최대 인스턴스 수를 늘리려면 터미널에서 다음 명령어를 실행합니다.

    gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --min-instances=MIN_INSTANCES --max-instances=MAX_INSTANCES
    다음을 바꿉니다.

  • CONNECTOR_NAME: 커넥터 이름
  • REGION: 커넥터 리전의 이름
  • MIN_INSTANCES: 선호하는 최소 인스턴스 수.
    • 이 필드에서 사용할 수 있는 최솟값은 min_instances의 현재 값입니다. 현재 값을 찾으려면 현재 속성 값 찾기를 참조하세요.
    • min_instancesmax_instances보다 작아야 하므로 이 필드에서 사용할 수 있는 최댓값은 현재 max_instances 값에서 1을 뺀 값입니다. 예를 들어 max_instances가 8이면 이 필드에서 사용할 수 있는 최댓값은 7입니다. 커넥터가 기본값인 max-instances 10을 사용할 경우 이 필드에서 사용할 수 있는 최댓값은 9입니다. max-instances의 값을 찾으려면 현재 속성 값 찾기를 참조하세요.
  • MAX_INSTANCES:

    • 이 필드에서 사용할 수 있는 최솟값은 max_instances의 현재 값입니다. 현재 값을 찾으려면 현재 속성 값 찾기를 참조하세요.
    • 이 필드에서 사용할 수 있는 최댓값은 10입니다.

    최소 인스턴스 수만 늘리고 최댓값은 높이고 싶지 않은 경우에도 최대 인스턴스 수를 지정해야 합니다. 반대로 최대 인스턴스 수만 업데이트하고 최솟값은 업데이트하지 않으려면 최소 인스턴스 수를 지정해야 합니다. 인스턴스의 최소 또는 최대 수를 현재 값으로 유지하려면 현재 값을 지정합니다. 현재 값을 찾으려면 현재 속성 값 찾기를 참조하세요.

현재 속성 값 찾기

커넥터의 현재 속성 값을 찾으려면 터미널에서 다음을 실행합니다.

gcloud compute networks vpc-access connectors describe CONNECTOR_NAME --region=REGION --project=PROJECT
다음을 바꿉니다.

  • CONNECTOR_NAME: 커넥터 이름
  • REGION: 커넥터 리전의 이름
  • PROJECT: Google Cloud 프로젝트 이름

커넥터 사용량 모니터링

커넥터 설정 조정 시기를 결정하는 데 도움이 되는 시간별 사용량을 모니터링합니다. 예를 들어 CPU 사용률이 급증하면 좋은 결과를 얻기 위해 인스턴스 최대 개수 증가를 시도할 수 있습니다. 또는 처리량을 최대치로 설정한 경우 더 큰 머신 유형으로 전환할 수 있습니다.

Google Cloud 콘솔을 사용하여 시간 경과에 따른 커넥터의 처리량, 인스턴스 수, CPU 사용률 측정항목에 대한 차트를 표시하려면 다음 안내를 따르세요.

  1. 서버리스 VPC 액세스 개요 페이지로 이동합니다.

    서버리스 VPC 액세스로 이동

  2. 모니터링할 커넥터 이름을 클릭합니다.

  3. 1~90일 중에서 표시할 일수를 선택합니다.

  4. 처리량 차트에서 차트 위로 마우스를 가져가 커넥터의 최근 처리량을 확인합니다.

  5. 인스턴스 수 차트에서 차트 위로 마우스를 가져가 커넥터가 최근에 사용한 인스턴스 수를 확인합니다.

  6. CPU 사용률 차트에서 차트 위로 마우스를 가져가서 커넥터의 최근 CPU 사용량을 확인합니다. 차트에는 50번째, 95번째, 99번째 백분위수의 인스턴스에 분산된 CPU 사용량이 표시됩니다.

커넥터 삭제

커넥터를 삭제하기 전에 연결된 서비스 또는 작업이 없는지 확인합니다.

공유 VPC 호스트 프로젝트에서 커넥터를 설정하는 공유 VPC 사용자의 경우 gcloud compute networks vpc-access connectors describe 명령어를 사용하여 해당 커넥터를 사용하는 서비스 또는 작업이 있는 프로젝트를 나열할 수 있습니다.

커넥터를 삭제하려면 Google Cloud 콘솔 또는 Google Cloud CLI를 사용하세요.

콘솔

  1. Google Cloud 콘솔에서 서버리스 VPC 액세스 개요 페이지로 이동합니다.

    서버리스 VPC 액세스로 이동

  2. 삭제할 커넥터를 선택합니다.

  3. 삭제를 클릭합니다.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. 커넥터를 삭제하려면 다음 gcloud 명령어를 사용하세요.

    gcloud compute networks vpc-access connectors delete CONNECTOR_NAME --region=REGION
    

    다음을 바꿉니다.

    • CONNECTOR_NAME: 삭제할 커넥터의 이름
    • REGION을 커넥터가 위치한 리전으로 바꿉니다.

프로젝트의 맞춤 제약조건 관리

이 섹션에서는 서버리스 VPC 액세스 커넥터에 맞게 맞춤 제약 조건을 만들고 프로젝트 수준에서 적용하는 방법을 설명합니다. 커스텀 조직 정책에 대한 자세한 내용은 커스텀 조직 정책 만들기 및 관리를 참고하세요.

Google Cloud 조직 정책을 사용하면 조직 리소스를 중앙에서 프로그래매틱 방식으로 제어할 수 있습니다. 조직 정책 관리자Google Cloud 리소스 계층 구조에서 Google Cloud 리소스 및 이러한 리소스의 하위 요소에 적용되는 제약조건이라는 제한사항 집합인 조직 정책을 정의할 수 있습니다. 조직, 폴더, 프로젝트 수준에서 조직 정책을 적용할 수 있습니다.

조직 정책은 다양한 Google Cloud 서비스에 대한 사전 정의된 제약조건을 제공합니다. 그러나 조직 정책에서 제한되는 특정 필드를 더욱 세부적으로 맞춤설정 가능한 방식으로 제어하려면 커스텀 조직 정책도 만들면 됩니다.

이점

서버리스 VPC 액세스를 사용하면 서버리스 VPC 액세스 API에서 사용자 구성 필드 대부분을 사용하여 원하는 수만큼 커스텀 제약 조건을 작성할 수 있습니다. 예를 들어 서버리스 VPC 액세스 커넥터가 사용할 수 있는 서브넷을 지정하는 맞춤 제약 조건을 만들 수 있습니다.

적용되면 요청이 커스텀 제약 조건이 적용되는 정책을 위반하면 gcloud CLI 및 서버리스 VPC 액세스 로그에 오류 메시지가 표시됩니다. 오류 메시지에는 제약 조건 ID와 위반한 커스텀 제약 조건에 대한 설명이 포함됩니다.

정책 상속

기본적으로 조직 정책은 정책을 적용하는 리소스의 하위 요소에 상속됩니다. 예를 들어 폴더에 정책을 적용하면 Google Cloud가 폴더의 모든 프로젝트에 정책을 적용합니다. 이 동작 및 이를 변경하는 방법에 대한 자세한 내용은 계층 구조 평가 규칙을 참조하세요.

제한사항

머신 유형, 최소 인스턴스 또는 최대 인스턴스를 지정하는 것은 지원되지 않습니다.

시작하기 전에

조직 ID를 알고 있어야 합니다.

필요한 역할

조직 정책을 관리하는 데 필요한 권한을 얻으려면 관리자에게 조직 리소스에 대한 조직 정책 관리자(roles/orgpolicy.policyAdmin) IAM 역할을 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

커스텀 제약조건 만들기

커스텀 제약조건은 조직 정책을 적용하는 서비스에서 지원되는 리소스, 메서드, 조건, 작업을 사용하여 YAML 파일에서 정의됩니다. 커스텀 제약조건의 조건은 Common Expression Language(CEL)를 사용하여 정의됩니다. CEL을 사용해서 커스텀 제약 조건에서 조건을 빌드하는 방법은 커스텀 제약 조건 만들기 및 관리의 CEL 섹션을 참조하세요.

서버리스 VPC 액세스 커스텀 제약조건의 YAML 파일을 만들려면 다음 예를 참고하세요.

name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- vpcaccess.googleapis.com/Connector
methodTypes:
- CREATE
condition: "CONDITION"
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION

다음을 바꿉니다.

  • ORGANIZATION_ID: 조직 ID입니다(예: 123456789).

  • CONSTRAINT_NAME: 새 커스텀 제약조건에 사용하려는 이름입니다. 커스텀 제약조건은 custom.으로 시작해야 하며 대문자, 소문자 또는 숫자만 포함할 수 있습니다(예: custom.defaultNetworkConstraint). 이 필드의 최대 길이는 프리픽스를 제외하고 70자입니다.

  • CONDITION: 지원되는 서비스 리소스의 표현에 대해 작성된 CEL 조건입니다. 이 필드의 최대 길이는 1000자(영문 기준)입니다. 예를 들면 "resource.network == default"입니다.

  • ACTION: condition이 충족될 때 수행할 작업. ALLOW 또는 DENY일 수 있습니다.

  • DISPLAY_NAME: 제약조건에 대한 사용자 친화적인 이름입니다. 이 필드의 최대 길이는 200자(영문 기준)입니다.

  • DESCRIPTION: 정책을 위반할 때 오류 메시지로 표시할 제약조건에 대한 사용자 친화적인 설명입니다(예: "Require network to not be set to default." 이 필드의 최대 길이는 2,000자(영문 기준)입니다.

커스텀 제약조건을 만드는 방법에 대한 자세한 내용은 커스텀 제약조건 정의를 참조하세요.

커스텀 제약조건 설정

새 커스텀 제약조건의 YAML 파일을 만든 후에는 조직에서 조직 정책에 사용할 수 있도록 설정해야 합니다. 커스텀 제약조건을 설정하려면 gcloud org-policies set-custom-constraint 명령어를 사용합니다.
gcloud org-policies set-custom-constraint CONSTRAINT_PATH
CONSTRAINT_PATH를 커스텀 제약조건 파일의 전체 경로로 바꿉니다. 예를 들면 /home/user/customconstraint.yaml입니다. 완료되면 Google Cloud 조직 정책 목록에서 조직 정책으로 커스텀 제약조건을 사용할 수 있습니다. 커스텀 제약조건이 존재하는지 확인하려면 gcloud org-policies list-custom-constraints 명령어를 사용합니다.
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
ORGANIZATION_ID를 조직 리소스 ID로 바꿉니다. 자세한 내용은 조직 정책 보기를 참조하세요.

커스텀 제약조건 적용

불리언 제약조건을 참조하는 조직 정책을 만들고 해당 조직 정책을 Google Cloud 리소스에 적용하여 불리언 제약조건을 적용할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 조직 정책 페이지로 이동합니다.

    조직 정책으로 이동

  2. 프로젝트 선택 도구에서 조직 정책을 설정할 프로젝트를 선택합니다.
  3. 조직 정책 페이지의 목록에서 제약조건을 선택하여 해당 제약조건의 정책 세부정보 페이지를 봅니다.
  4. 이 리소스의 조직 정책을 구성하려면 정책 관리를 클릭합니다.
  5. 정책 수정 페이지에서 상위 정책 재정의를 선택합니다.
  6. 규칙 추가를 클릭합니다.
  7. 적용 섹션에서 이 조직 정책 적용을 사용 설정할지 여부를 선택합니다.
  8. 선택사항: 태그로 조직 정책을 조건부로 만들려면 조건 추가를 클릭합니다. 조건부 규칙을 조직 정책에 추가하면 비조건부 규칙을 최소 하나 이상 추가해야 합니다. 그렇지 않으면 정책을 저장할 수 없습니다. 자세한 내용은 태그를 사용하여 조직 정책 설정을 참조하세요.
  9. 커스텀 제약조건인 경우 변경사항 테스트를 클릭하여 이 조직 정책의 효과를 시뮬레이션할 수 있습니다. 자세한 내용은 정책 시뮬레이터로 조직 정책 변경사항 테스트를 참조하세요.
  10. 조직 정책을 완료하고 적용하려면 정책 설정을 클릭합니다. 정책이 적용되는 데 최대 15분이 소요됩니다.

gcloud

불리언 제약조건을 적용하는 조직 정책을 만들려면 제약조건을 참조하는 정책 YAML 파일을 만듭니다.

      name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
      spec:
        rules:
        - enforce: true
    

다음을 바꿉니다.

  • PROJECT_ID: 제약조건을 적용할 프로젝트입니다.
  • CONSTRAINT_NAME: 커스텀 제약조건에 대해 정의된 이름입니다. 예를 들면 custom.defaultNetworkConstraint입니다.

제약조건이 포함된 조직 정책을 적용하려면 다음 명령어를 실행합니다.

    gcloud org-policies set-policy POLICY_PATH
    

POLICY_PATH를 조직 정책 YAML 파일의 전체 경로로 바꿉니다. 정책이 적용되는 데 최대 15분이 소요됩니다.

커스텀 제약조건 테스트

인그레스 설정을 제한하는 예시를 테스트하려면 네트워크를 default로 설정하여 프로젝트에 커넥터를 배포합니다.

gcloud compute networks vpc-access connectors create org-policy-test \
    --project=PROJECT_ID \
    --region=REGION_ID \
    --network=default

출력은 다음과 같습니다.

Operation denied by custom org policies: ["customConstraints/custom.defaultNetworkConstraint": "Require network to not be set to default."]

일반적인 사용 사례의 커스텀 조직 정책 예시

다음 표에는 서버리스 VPC 액세스 커넥터에서 유용할 수 있는 맞춤 제약조건의 예가 나와 있습니다.

설명 제약조건 구문
서버리스 VPC 액세스 커넥터가 특정 네트워크만 사용할 수 있어야 합니다.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.allowlistNetworks
    resourceTypes:
    - vpcaccess.googleapis.com/Connector
    methodTypes:
    - CREATE
    condition: "resource.network == 'allowlisted-network'"
    actionType: ALLOW
    displayName: allowlistNetworks
    description: Require connectors to use a specific network.
설명 제약조건 구문
서버리스 VPC 액세스 커넥터가 특정 서브넷에만 액세스할 수 있도록 합니다.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictSubnetForProject
    resourceTypes:
    - vpcaccess.googleapis.com/Connector
    methodTypes:
    - CREATE
    condition: "resource.subnet.name == 'allocated-subnet'"
    actionType: ALLOW
    displayName: restrictSubnetForProject
    description: This project is only allowed to use the subnet "allocated-subnet".

문제 해결

서비스 계정 권한

서버리스 VPC 액세스는 Google Cloud 프로젝트에서 작업을 수행하는 데 서버리스 VPC 액세스 서비스 에이전트 서비스 계정을 사용합니다. 이 서비스 계정의 이메일 주소 형식은 다음과 같습니다.

service-PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com

기본적으로 이 서비스 계정에는 서버리스 VPC 액세스 서비스 에이전트 역할(roles/vpcaccess.serviceAgent)이 있습니다. 이 계정의 권한을 변경하면 서버리스 VPC 액세스 작업이 실패할 수 있습니다.

네트워크 성능 저하 또는 유휴 CPU 사용률이 높음

수천 개의 인스턴스에 단일 커넥터를 사용하면 성능이 저하되고 유휴 CPU 사용률이 높아질 수 있습니다. 이 문제를 해결하려면 여러 커넥터 간에 서비스를 샤딩하세요.

오류

서비스 계정에 서비스 에이전트 역할 필요 오류

리소스 서비스 사용량 제한 조직 정책 제약조건을 사용하여 Cloud Deployment Manager(deploymentmanager.googleapis.com)를 차단하면 다음 오류 메시지가 표시될 수 있습니다.

Serverless VPC Access service account (service-<PROJECT_NUMBER>@gcp-sa-vpcaccess.iam.gserviceaccount.com) needs Serverless VPC Access Service Agent role in the project.

조직 정책을 설정하여 차단 목록에서 Deployment Manager를 삭제하거나 허용 목록에 추가합니다.

커넥터 생성 오류

커넥터를 만드는 중에 오류가 발생하면 다음을 시도해 보세요.

  • VPC 네트워크의 기존 IP 주소 예약과 겹치지 않는 RFC 1918 내부 IP 범위를 지정합니다.
  • ID가 serverless-vpc-access-images인 프로젝트에서 Compute Engine VM 이미지 사용 권한을 프로젝트에 부여합니다. 이에 따라 조직 정책을 업데이트하는 방법에 대한 자세한 내용은 이미지 액세스 제약조건 설정을 참조하세요.

리소스에 액세스할 수 없음

커넥터를 지정했지만 여전히 VPC 네트워크의 리소스에 액세스할 수 없는 경우 VPC 네트워크에 커넥터의 IP 주소 범위에서 인그레스를 거부하는 우선순위가 1000 이하인 우선순위를 가진 방화벽 규칙이 없는지 확인합니다.

공유 VPC 서비스 프로젝트에서 커넥터를 구성하는 경우 방화벽 규칙이 서버리스 인프라에서 커넥터로의 인그레스를 허용해야 합니다.

연결 거부 오류

네트워크 성능을 저하시키는 connection refused 또는 connection timeout 오류가 발생하면 서버리스 애플리케이션의 호출 전반에 걸쳐 무제한으로 연결이 증가할 수 있습니다. 인스턴스당 사용되는 최대 연결 수를 제한하려면 연결 풀을 지원하는 클라이언트 라이브러리를 사용합니다. 연결 풀 사용 방법에 대한 자세한 예시는 데이터베이스 연결 관리를 참조하세요.

리소스를 찾을 수 없음 오류

VPC 네트워크 또는 방화벽 규칙을 삭제할 때 다음과 비슷한 메시지가 표시될 수 있습니다. The resource "aet-uscentral1-subnet--1-egrfw" was not found.

이 오류 및 해결 방법에 대한 자세한 내용은 VPC 방화벽 규칙 문서의 리소스를 찾을 수 없음 오류를 참조하세요.

다음 단계