서버리스 VPC 액세스 구성

서버리스 VPC 액세스를 사용하면 Google Cloud의 서버리스 환경(Cloud Run(완전 관리형), Cloud Functions, App Engine 표준 환경)에서 VPC 네트워크에 직접 연결할 수 있습니다. 이렇게 연결하면 서버리스 환경에서 Compute Engine VM 인스턴스, Memorystore 인스턴스, 내부 IP 주소가 있는 다른 리소스에 액세스할 수 있습니다. 예를 들어 다음과 같은 경우 유용할 수 있습니다.

  • Memorystore를 사용하여 서버리스 서비스의 데이터를 저장하는 경우
  • 서버리스 워크로드가 Compute Engine VM에서 실행되는 타사 소프트웨어를 사용하는 경우
  • Compute Engine의 관리형 인스턴스 그룹에서 백엔드 서비스를 실행하는 데, 공개 인터넷에 노출되지 않고 이 백엔드와 통신하기 위해 서버리스 환경이 필요한 경우
  • 서버리스 환경은 Cloud VPN을 통해 온프레미스 데이터베이스의 데이터에 액세스해야 합니다.

VPC 네트워크에 연결하면 RFC 1918RFC 6598에서 정의된 대로 서버리스 환경에서 내부 DNS 이름 및 내부 IP 주소에 요청을 보낼 수 있습니다. 이러한 내부 주소는 Google Cloud 서비스에서만 액세스할 수 있습니다. 내부 주소를 사용하면 공개 인터넷에 리소스가 노출되지 않고 서비스 간의 통신 지연 시간이 단축됩니다.

서버리스 VPC 액세스는 요청이 서버리스 환경에서만 시작되도록 허용합니다. VM에서 시작된 요청은 서버리스 서비스의 외부 주소를 사용해야 합니다. 자세한 내용은 비공개 Google 액세스를 참조하세요.

서버리스 VPC 액세스는 공유 VPCCloud Interconnect, Cloud VPN, VPC 네트워크 피어링을 통해 연결된 네트워크와의 통신을 지원합니다. 서버리스 VPC 액세스는 기존 네트워크를 지원하지 않습니다.

서버리스 VPC 액세스 커넥터 정보

서버리스 VPC 액세스는 커넥터라는 리소스를 토대로 합니다. 커넥터는 서버리스 환경과 VPC 네트워크 간의 트래픽을 처리합니다. Google Cloud 프로젝트에서 커넥터를 생성할 때 특정 VPC 네트워크 및 리전에 연결합니다. 그런 다음 아웃바운드 네트워크 트래픽에 커넥터를 사용하도록 서버리스 서비스를 구성할 수 있습니다.

커넥터를 만들 때 고유한 CIDR /28 서브넷을 사용하거나 커스텀 IP 범위를 사용할 수 있습니다. 커넥터를 통해 VPC 네트워크로 전송된 트래픽은 /28 서브넷 또는 커스텀 IP 범위의 주소에서 시작됩니다. 커스텀 IP 범위를 사용하는 경우 IP 범위는 VPC 네트워크에 아직 예약되지 않은 CIDR /28 범위여야 합니다.

서브넷이 공유 서브넷이 아닌 경우, 우선순위가 1,000인 암묵적인 방화벽 규칙이 VPC 네트워크에 생성되어 커넥터의 서브넷이나 커스텀 IP 범위에서 네트워크의 모든 대상으로 이동하는 인그레스를 허용합니다.

서버리스 VPC 액세스는 커넥터를 통해 전송된 트래픽의 양에 따라 커넥터 처리량을 100Mbps 단위로 증분하여 자동 프로비저닝합니다. 자동으로 프로비저닝된 처리량은 확장만 가능하며 축소되지는 않습니다. 커넥터는 항상 200Mbps 이상을 프로비저닝하며 처리량을 1,000Mbps까지 확장할 수 있습니다. 커넥터를 만들 때 처리량 확장 한도를 구성할 수 있습니다. 특히 트래픽 버스트가 짧은 경우 커넥터를 통한 실제 처리량이 프로비저닝된 처리량을 초과할 수 있습니다.

서버리스 VPC 액세스 커넥터에는 사용량에 따라 월별 요금이 부과됩니다. 자세한 내용은 가격 책정을 참조하세요.

서버리스 VPC 액세스 예시(확대하려면 클릭)
서버리스 VPC 액세스 예시(확대하려면 클릭)

다음 사항을 참고하세요.

  • 커넥터는 연결되는 서버리스 서비스(예를 들어 Cloud Run 서비스, App Engine 앱, Cloud Functions 등)와 동일한 프로젝트에 있어야 합니다.
  • 커넥터는 연결되는 서버리스 서비스와 동일한 리전에 있어야 합니다. 커넥터를 만들 수 있는 리전 목록은 지원되는 리전을 참조하세요.
  • 내부 IP 주소 및 내부 DNS 이름으로의 트래픽은 커넥터를 통해 라우팅됩니다. 기본적으로 외부 IP 주소에 대한 트래픽은 인터넷을 통해 라우팅됩니다.
  • 공유 VPC를 사용하는 경우:

  • 여러 서버리스 서비스에 동일한 커넥터를 사용할 수 있습니다.

  • 리전 간 액세스를 허용하는 리소스(Google Cloud VM 인스턴스 또는 GKE 클러스터)의 경우 커넥터는 트래픽을 전송하는 리소스와 다른 리전에 있을 수 있습니다. 커넥터의 이그레스에 대해 요금이 청구됩니다. 가격 책정을 참조하세요.

서버리스 VPC 액세스 네트워크 태그

서버리스 VPC 액세스 네트워크 태그를 사용하면 방화벽 규칙경로에서 VPC 커넥터를 지정할 수 있습니다.

모든 서버리스 VPC 액세스 커넥터는 자동으로 두 개의 네트워크 태그(인스턴스 태그라고도 함)를 수신합니다.

  • 범용 네트워크 태그: vpc-connector 모든 기존 커넥터 및 향후의 커넥터에 적용됩니다.
  • 고유 네트워크 태그: vpc-connector-REGION-CONNECTOR_NAME REGIONCONNECTOR_NAME 커넥터에 적용됩니다.

이러한 네트워크 태그는 삭제할 수 없습니다. 새 네트워크 태그도 추가할 수 없습니다.

커넥터 만들기

커넥터를 만들려면 다음 Cloud Console 또는 gcloud 명령줄 도구를 사용하세요.

Console

  1. 공유 VPC를 사용하는 경우 호스트 프로젝트를 구성해 두어야 합니다.

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

    API 사용 설정

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

    서버리스 VPC 액세스로 이동

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

  5. 이름 필드에 커넥터 이름을 입력합니다.

  6. 리전 필드에서 커넥터의 리전을 선택합니다. 이 필드는 서버리스 서비스의 리전과 일치해야 합니다. 지원되는 리전을 참조하세요.

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

  8. 서브네트워크 풀다운 메뉴를 클릭합니다.

    • 자체 서브넷을 사용하는 경우(공유 VPC에 필요) 커넥터에 사용할 /28 서브넷을 선택하세요.
    • 공유 VPC를 사용하지 않으며 커넥터가 명시적으로 서브넷을 만드는 대신 서브넷을 만들도록 하려면 풀다운에서 커스텀 IP 범위를 선택합니다. 메뉴에서 IP 범위 필드에 예약되지 않은 CIDR /28 내부 IP 범위의 첫 번째 주소를 입력하세요. 이 IP 범위는 VPC 네트워크에 예약된 기존 IP 주소와 겹치지 않아야 합니다. 예를 들어 10.8.0.0(/28)은 대부분의 새 프로젝트에서 작동합니다.

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

    이미지

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

      이미지

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

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

gcloud

  1. 공유 VPC를 사용하는 경우 호스트 프로젝트를 구성해 두어야 합니다.

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

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

    gcloud services enable vpcaccess.googleapis.com
    
  4. 자체 서브넷(공유 VPC에 필요)을 사용하는 경우 다음 명령어로 커넥터를 만드세요.

    gcloud compute networks vpc-access connectors create [CONNECTOR_NAME] \
    --region [REGION] \
    --subnet [SUBNET] \
    # If you are not using Shared VPC, omit the following line.
    --subnet-project [HOST_PROJECT_ID] \
    # Optional: specify minimum and maximum instance values between 2 and 10, default is 2 min, 10 max.
    --min-instances [MIN] \
    --max-instances [MAX] \
    # Optional: specify machine type, default is e2-micro
    --machine-type [MACHINE_TYPE]
    

    각 항목의 의미는 다음과 같습니다.

    • [CONNECTOR_NAME]은 커넥터 이름입니다.
    • [REGION]은 커넥터 리전입니다. 이 필드는 서버리스 서비스의 리전과 일치해야 합니다. 지원되는 리전을 참조하세요.
    • [SUBNET]은 다른 리소스에서 사용되지 않는 자체 '/28' 전용 서브넷입니다. 제공된 값은 서브넷의 이름입니다.
    • [HOST_PROJECT_ID]는 호스트 프로젝트의 ID입니다. 공유 VPC를 사용하는 경우에만 이 정보를 제공하세요.
    • [MIN]은 커넥터에 사용할 최소 인스턴스 수입니다. 2~10 사이의 정수를 사용하세요. 기본값은 2입니다.
    • [MAX]는 커넥터에 사용할 최대 인스턴스 수입니다. 2~10 사이의 정수를 사용하세요. 기본값은 10입니다. 트래픽이 요구할 경우 커넥터는 [MAX] 인스턴스로 수평 확장되지만 축소되지는 않습니다.
    • [MACHINE_TYPE]f1-micro, e2-micro 또는 e2-standard-4입니다.

      머신 유형 예상 처리량
      (Mbps, 최대 2/최대 10회)
      가격
      (커넥터 인스턴스 + 네트워크 이그레스 비용)
      f1-micro 100(인스턴스 최소 2)/ 500(최대 10) f1-micro 가격 책정
      e2-micro 200(인스턴스 최소 2)/ 1,000(최대 10) e2-micro 가격 책정
      e2-standard-4 3200 (인스턴스 최소 2) 16000(최대 10) e2 표준 가격

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

  5. 공유 VPC를 사용하지 않으며 서브넷을 사용하는 대신 커스텀 IP 범위를 제공하려면 다음 명령어를 사용하여 커넥터를 만듭니다.

    gcloud compute networks vpc-access connectors create [CONNECTOR_NAME] \
    --network [VPC_NETWORK] \
    --region [REGION] \
    --range [IP_RANGE]
    

    각 항목의 의미는 다음과 같습니다.

    • [CONNECTOR_NAME]은 커넥터 이름입니다.
    • [VPC_NETWORK]는 커넥터를 연결할 VPC 네트워크입니다.
    • [REGION]은 커넥터 리전입니다. 이 필드는 서버리스 서비스의 리전과 일치해야 합니다. 지원되는 리전을 참조하세요.
    • [IP_RANGE]는 예약되지 않은 내부 IP 네트워크이며, 할당되지 않은 공간의 '/28'이 필요합니다. 제공된 값은 CIDR 표기법(10.8.0.0/28)의 네트워크입니다. 이 IP 범위는 VPC 네트워크에 예약된 기존 IP 주소와 겹치지 않아야 합니다. 예를 들어 10.8.0.0/28은 대부분의 새 프로젝트에서 작동합니다.

    처리량 제어와 선택적 인수를 비롯한 자세한 내용은 gcloud 참조를 확인하세요.

  6. 커넥터를 사용하기 전에 커넥터가 READY 상태인지 확인합니다.

    gcloud compute networks vpc-access connectors describe [CONNECTOR_NAME] --region [REGION]
    

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

공유 VPC를 사용하는 경우 호스트 프로젝트 구성

공유 VPC용 커넥터를 만드는 경우 다음과 같이 호스트 프로젝트를 구성해야 합니다.

  • 필요한 IP 범위에서 커넥터에 액세스할 수 있도록 방화벽 규칙을 추가합니다.
  • 호스트 프로젝트에서 각 서비스 프로젝트에 Compute Network 사용자 역할을 부여합니다.
  • 공유 VPC 커넥터를 만들 때 호스트 프로젝트에서 사용할 서브넷을 만듭니다.

IP 범위를 허용하는 방화벽 규칙 추가

이 단계는 호스트 프로젝트에서 다음 역할 중 하나를 가진 사용자가 수행해야 합니다.

다음 IP 범위의 요청이 커넥터에 도달하고 커넥터에서 도달할 수 있도록 방화벽 규칙을 만들어야 합니다.

  • NAT 범위
    • 107.178.230.64/26
    • 35.199.224.0/19
  • 상태 확인 범위
    • 130.211.0.0/22
    • 35.191.0.0/16
    • 108.170.220.0/23

이러한 범위는 Cloud Run, Cloud Functions, App Engine Standard의 Google 인프라에서 사용됩니다. 이러한 IP의 모든 요청은 Google 인프라에서 시작되도록 보장되며, 각 Cloud Run, Cloud Functions, App Engine 서비스/함수/앱은 연결된 VPC 커넥터와만 통신합니다.

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

규칙을 적용하려면 다음 안내를 따르세요.

  1. 다음 3개의 명령어를 실행하여 서버리스 환경의 요청이 네트워크의 모든 VPC 커넥터에 도달할 수 있도록 규칙을 설정합니다.

    gcloud compute firewall-rules create serverless-to-vpc-connector \
    --allow tcp:667,udp:665-666,icmp \
    --source-ranges 107.178.230.64/26,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 107.178.230.64/26,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 130.211.0.0/22,35.191.0.0/16,108.170.220.0/23 \
    --direction=INGRESS \
    --target-tags vpc-connector \
    --network=VPC_NETWORK

    여기서 VPC_NETWORK는 커넥터를 연결할 VPC 네트워크입니다.

  2. 다음 명령어를 실행하여 VPC 커넥터의 요청을 네트워크의 모든 리소스에 허용합니다.

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

    이 규칙으로 VPC 커넥터에서 네트워크의 모든 리소스에 액세스할 수 있습니다. VPC 커넥터가 더 좁은 리소스 집합만 액세스하도록 허용하려면 방화벽 규칙의 대상을 지정합니다. 대상을 지정하는 경우 새 VPC 커넥터를 만들 때마다 새 방화벽 규칙 집합을 만들어야 합니다.

더 좁은 범위의 방화벽 규칙 만들기

IP 범위를 허용하는 방화벽 규칙 추가 절차를 따르면 현재의 커넥터와 향후 생성되는 커넥터까지 모든 커넥터에 적용되는 방화벽 규칙이 생성됩니다. 이를 원하지 않고 대신에 특정 커넥터에만 적용되는 규칙을 만들고 싶다면 해당 커넥터에만 적용되도록 규칙의 범위를 좁혀서 지정할 수 있습니다.

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

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

서비스 프로젝트의 서비스 계정에 권한 부여

VPC 커넥터를 사용할 각 서비스 프로젝트의 경우, 공유 VPC 관리자는 호스트 프로젝트의 Compute Network 사용자 역할(compute.networkUser)을 서비스 프로젝트 cloudservicesvpcaccess 서비스 계정에 부여해야 합니다.

역할 부여 방법:

  1. 다음 명령어를 사용합니다.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --role "roles/compute.networkUser" \
    --member "serviceAccount:service-SERVICE_PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com"
    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --role "roles/compute.networkUser" \
    --member "serviceAccount:SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com"
  2. @gcp-sa-vpcaccess 서비스 계정이 없는 경우 서비스 프로젝트에서 서버리스 VPC 액세스 API를 켜고 다시 시도해 보세요.

    gcloud services enable vpcaccess.googleapis.com

이들 서비스 계정에 전체 공유 VPC 네트워크에 대한 액세스 권한을 부여하는 대신에 특정 서브넷에 대한 액세스 권한만 부여하려는 경우 특정 서브넷의 서비스 계정에만 이러한 역할을 부여할 수 있습니다.

서브넷 만들기

공유 VPC를 사용하는 경우 공유 VPC 관리자는 각 커넥터의 서브넷을 만들어야 합니다. 서브넷 추가 문서에 따라 /28 서브넷을 공유 VPC 네트워크에 추가합니다. 이 서브넷은 커넥터를 사용할 서버리스 서비스와 동일한 리전에 있어야 합니다.

커넥터 삭제

커넥터를 삭제하기 전에 서비스에서 커넥터를 아직 사용하고 있는지 확인합니다. 서비스에서 커넥터를 분리하는 방법에 대한 자세한 내용은 관련 제품 문서를 참조하세요.

커넥터를 삭제하려면 Cloud Console 또는 gcloud 명령줄 도구를 사용하세요.

Console

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

    서버리스 VPC 액세스로 이동

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

  3. 삭제를 클릭합니다.

gcloud

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

gcloud compute networks vpc-access connectors delete [CONNECTOR_NAME] --region [REGION]

각 항목의 의미는 다음과 같습니다.

  • [CONNECTOR_NAME]은 삭제할 커넥터의 이름입니다.
  • [REGION]은 커넥터가 위치한 리전입니다.

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

커넥터를 만든 후 커넥터를 사용하도록 서버리스 서비스를 구성할 수 있습니다. 커넥터를 사용하도록 서비스를 구성하는 방법은 제품에 따라 다릅니다. 자세한 내용은 관련 가이드를 참조하세요.

서비스가 VPC 네트워크에 연결되면 내부 IP 주소 또는 DNS 이름으로 요청을 전송하여 VM 인스턴스 및 기타 내부 리소스에 연결할 수 있습니다.

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

방화벽 규칙을 사용하여 VPC 네트워크에 대한 커넥터의 액세스를 제한할 수 있습니다.

공유 VPC 네트워크에 연결할 때 방화벽 규칙은 자동으로 생성되지 않습니다. 호스트 프로젝트에서 네트워크 관리자 역할이 있는 사용자가 호스트 프로젝트를 구성할 때 방화벽 규칙을 설정합니다. 공유 VPC를 사용하는 경우 범위가 좁은 방화벽 규칙 만들기를 참조하여 액세스 제한에 대해 알아보세요.

독립형 VPC 네트워크에 연결할 때는 우선순위가 1,000인 암묵적 방화벽 규칙이 VPC 네트워크에 생성되어 커넥터의 서브넷이나 커스텀 IP 범위에서 VPC 네트워크의 모든 대상으로 이동하는 인그레스를 허용합니다. 암묵적인 방화벽 규칙은 Google Cloud Console에 표시되지 않으며 연결된 커넥터가 존재하는 경우에만 존재합니다. 커넥터가 VPC 네트워크의 모든 대상에 도달하지 않게 하려면 액세스를 제한할 수 있습니다.

커넥터 액세스를 제한하는 방법으로는 대상 리소스에 인그레스 규칙을 만들거나 VPC 커넥터에 이그레스 규칙을 만드는 방법이 있습니다.

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

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

네트워크 태그

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

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

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

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

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

    다음을 바꿉니다.

    • RULE_NAME: 새 방화벽 규칙의 이름입니다. 예를 들면 deny-vpc-connector입니다.
    • VPC_CONNECTOR_NETWORK_TAG: 규칙을 모든 기존 VPC 커넥터와 나중에 생성되는 VPC 커넥터에 적용하려는 경우에는 범용 VPC 커넥터 네트워크 태그입니다. 또는 특정 커넥터를 제어하려는 경우에는 고유한 VPC 커넥터 네트워크 태그입니다.
    • VPC_NETWORK: VPC 네트워크의 이름입니다.
    • PRIORITY: 1~999(포함) 사이의 정수입니다. 예를 들면 990입니다.
  3. 커넥터 트래픽을 수신할 리소스에 대한 커넥터 트래픽을 허용하세요.

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

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOLS \
    --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입니다.
    • VPC_CONNECTOR_NETWORK_TAG: 규칙을 모든 기존 VPC 커넥터와 나중에 생성되는 VPC 커넥터에 적용하려는 경우에는 범용 VPC 커넥터 네트워크 태그입니다. 또는 특정 커넥터를 제어하려는 경우에는 고유한 VPC 커넥터 네트워크 태그입니다. 이전 단계에서 고유한 네트워크 태그를 사용한 경우 해당 고유한 네트워크 태그를 사용합니다.
    • 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 네트워크에서 커넥터 트래픽을 거부하세요.

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

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

    다음을 바꿉니다.

    • RULE_NAME: 새 방화벽 규칙의 이름입니다. 예를 들면 deny-vpc-connector입니다.
    • VPC_CONNECTOR_CIDR_RANGE: 액세스를 제한하는 커넥터의 CIDR 범위입니다.
    • VPC_NETWORK: VPC 네트워크의 이름입니다.
    • PRIORITY: 1~999 사이의 정수입니다. 예를 들면 990입니다.
  3. 커넥터 트래픽을 수신할 리소스에 대한 커넥터 트래픽을 허용하세요.

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

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOLS \
    --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입니다.
    • PROTOCOLS: VPC 커넥터에서 허용하려는 프로토콜입니다. 이 값은 대소문자를 구분하는 문자열 값 tcp, udp, icmp, esp, ah, sctp 또는 아무 IP 프로토콜 번호 중에서 하나 이상일 수 있습니다. 포트 기반 프로토콜(tcp, udp, sctp)의 경우 규칙이 적용되는 대상 포트 또는 포트 범위 목록을 선택적으로 지정할 수 있습니다. 자세한 내용은 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 \
    --direction=EGRESS \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --network=VPC_NETWORK \
    --priority=PRIORITY
    

    다음을 바꿉니다.

    • RULE_NAME: 새 방화벽 규칙의 이름입니다. 예를 들면 deny-vpc-connector입니다.
    • VPC_CONNECTOR_NETWORK_TAG: 규칙을 모든 기존 VPC 커넥터와 나중에 생성되는 VPC 커넥터에 적용하려는 경우에는 범용 VPC 커넥터 네트워크 태그입니다. 또는 특정 커넥터를 제어하려는 경우에는 고유한 VPC 커넥터 네트워크 태그입니다.
    • VPC_NETWORK: VPC 네트워크의 이름입니다.
    • PRIORITY: 1~999 사이의 정수입니다. 예를 들면 990입니다.
  3. 대상이 커넥터에 액세스하려는 CIDR 범위에 있을 때 이그레스 트래픽을 허용합니다.

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

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOLS \
    --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입니다.
    • PROTOCOLS: VPC 커넥터에서 허용하려는 프로토콜입니다. 이 값은 대소문자를 구분하는 문자열 값 tcp, udp, icmp, esp, ah, sctp 또는 아무 IP 프로토콜 번호 중에서 하나 이상일 수 있습니다. 포트 기반 프로토콜(tcp, udp, sctp)의 경우 규칙이 적용되는 대상 포트 또는 포트 범위 목록을 선택적으로 지정할 수 있습니다. 자세한 내용은 allow 플래그 문서를 참조하세요.
    • RESOURCE_CIDR_RANGE: 액세스를 제한하는 커넥터의 CIDR 범위입니다.
    • VPC_NETWORK: VPC 네트워크의 이름입니다.
    • VPC_CONNECTOR_NETWORK_TAG: 규칙을 모든 기존 VPC 커넥터와 나중에 생성되는 VPC 커넥터에 적용하려는 경우에는 범용 VPC 커넥터 네트워크 태그입니다. 또는 특정 커넥터를 제어하려는 경우에는 고유한 VPC 커넥터 네트워크 태그입니다. 이전 단계에서 고유한 네트워크 태그를 사용한 경우 해당 고유한 네트워크 태그를 사용합니다.
    • PRIORITY: 이전 단계에서 설정한 우선순위보다 작은 정수입니다. 예를 들어 이전 단계에서 만든 규칙의 우선순위를 990으로 설정한 경우 980을 시도하세요.

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

VPC 서비스 제어 추가

커넥터를 만들고 서비스를 구성한 후에는 서버리스용 VPC 액세스 API의 VPC 서비스 제어를 사용하여 데이터 무단 반출 위험을 완화하고 리소스와 데이터를 보호할 수 있습니다.

VPC 서비스 제어 사용 설정에 대한 일반적인 정보는 서비스 경계 만들기를 참조하세요.

지원되는 서비스

서버리스 VPC 액세스를 사용하여 다음 서비스에서 VPC 네트워크에 연결할 수 있습니다.

지원되는 리전

다음 리전에서 서버리스 VPC 액세스 커넥터를 만들 수 있습니다.

  • asia-east1
  • asia-east2
  • asia-northeast1
  • asia-northeast2
  • asia-northeast3
  • asia-south1
  • asia-southeast1
  • asia-southeast2
  • australia-southeast1
  • europe-central2
  • europe-north1
  • europe-west1
  • europe-west2
  • europe-west3
  • europe-west4
  • europe-west6
  • northamerica-northeast1
  • southamerica-east1
  • us-central1
  • us-east1
  • us-east4
  • us-west1
  • us-west2
  • us-west3
  • us-west4

지원되는 네트워킹 프로토콜

다음 표에서는 각 서버리스 VPC 액세스 커넥터 이그레스 설정에 지원되는 프로토콜을 설명합니다. 사용 가능한 이그레스 설정에 대한 자세한 내용은 네트워크 설정 구성을 참조하세요.

프로토콜 VPC 커넥터를 통해 비공개 IP에 대한 요청만 라우팅 VPC 커넥터를 통해 모든 트래픽 라우팅
TCP
UDP
ICMP 외부 IP 주소만 지원됩니다.

선별된 IAM 역할

다음 표에서는 서버리스 VPC 액세스와 관련된 ID 및 액세스 관리(IAM) 역할을 설명합니다. 각 역할과 관련된 권한 목록은 IAM 문서의 서버리스 VPC 액세스 역할을 참조하세요.

역할 설명
서버리스 VPC 액세스 관리자
roles/vpcaccess.admin
모든 서버리스 VPC 액세스 리소스에 대한 전체 액세스 권한입니다.
서버리스 VPC 액세스 사용자
roles/vpcaccess.user
서버리스 VPC 액세스 커넥터의 사용자입니다.
서버리스 VPC 액세스 뷰어
roles/vpcaccess.viewer
모든 서버리스 VPC 액세스 리소스의 뷰어입니다.

서비스 계정

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

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

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

감사 로깅

서버리스 VPC 액세스 감사 로깅 정보를 참조하세요.

가격 책정

서버리스 VPC 액세스 가격 책정은 VPC 가격 책정 페이지의 서버리스 VPC 액세스를 참조하세요.

문제해결

커넥터를 만드는 중에 오류가 발생하면 다음을 시도하여 커넥터를 다시 만듭니다.

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

서버리스 서비스의 커넥터를 지정했지만 VPC 네트워크의 리소스에 액세스할 수 없으면 다음을 시도하세요.

  • 1,000보다 앞선 우선순위가 지정된 VPC 네트워크에 커넥터의 IP 범위 또는 네트워크 태그에서 들어오는 인그레스를 거부하는 방화벽 규칙이 없는지 확인합니다.