정적 외부 IP 주소 예약


가상 머신(VM) 인스턴스에 고정 외부 IP 주소를 예약할 수 있습니다. VM의 고정 IP 주소를 변경, 나열, 해제할 수도 있습니다.

외부 IP 주소는 고정 또는 임시 주소일 수 있습니다. VM에 변경되지 않는 고정 외부 IP 주소가 필요한 경우 고정 외부 IP 주소를 가져올 수 있습니다. 새 외부 IP 주소를 예약하거나 기존 임시 외부 IP 주소를 승격하는 것도 가능합니다.

내부 Compute Engine 네트워크에 고정 IP 주소가 필요한 경우 고정 내부 주소 예약을 참조하세요.

시작하기 전에

  • IP 주소에 대해 알아봅니다.
  • 고정 외부 IP 주소의 할당량 및 한도에 대해 읽어봅니다.
  • 외부 IP 주소 가격 책정에 대해 읽어봅니다.
  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.

    이 페이지의 샘플 사용 방법에 대한 탭을 선택하세요.

    콘솔

    Google Cloud 콘솔을 사용하여 Google Cloud 서비스 및 API에 액세스할 때는 인증을 설정할 필요가 없습니다.

    gcloud

    1. Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

      gcloud init
    2. 기본 리전 및 영역을 설정합니다.

    Terraform

    로컬 개발 환경에서 이 페이지의 Terraform 샘플을 사용하려면 gcloud CLI를 설치 및 초기화한 다음 사용자 인증 정보로 애플리케이션 기본 사용자 인증 정보를 설정하세요.

    1. Google Cloud CLI를 설치합니다.
    2. gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.

      gcloud init
    3. Google 계정의 로컬 인증 사용자 인증 정보를 만듭니다.

      gcloud auth application-default login

    자세한 내용은 로컬 개발 환경의 인증 설정를 참조하세요.

    REST

    로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공한 사용자 인증 정보를 사용합니다.

      Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

      gcloud init

권한

Google Cloud 콘솔을 사용하여 리전별 고정 외부 IPv6 주소를 예약하려면 네트워크와 서브네트워크를 선택해야 합니다. 하지만 사용 가능한 네트워크 및 서브네트워크 목록을 보려면 다음 IAM 권한을 부여받아야 합니다.

  • compute.networks.list
  • compute.subnetworks.list

고정 외부 IP 주소 정보

고정 외부 IP 주소는 사용자가 해제하도록 결정할 때까지 리소스를 위해 예약되는 IP 주소입니다. 고객 또는 사용자가 서비스에 액세스하기 위해 사용하는 IP 주소가 있는 경우 해당 리소스만 사용할 수 있도록 이 IP 주소를 예약할 수 있습니다. 또한 고정 외부 IP 주소로 임시 외부 IP 주소를 승격할 수도 있습니다.

자세한 내용은 IP 주소를 참조하세요.

다음 표에는 Google Cloud에서 지원하는 고정 외부 IP 주소가 나와 있습니다.

IP 주소 유형 리소스 IP 범위 원본 연결 대상
리전 외부 IPv4 주소 VM 및 리전 부하 분산기 /32 Google의 외부 IP 주소 풀 프로젝트
리전 외부 IPv6 주소 VM 및 지원되는 리전 부하 분산기 /96 서브넷의 외부 IPv6 주소 범위 서브넷
전역 외부 IPv4 주소 전역 부하 분산기 /32 Google의 외부 IP 주소 풀 프로젝트
전역 외부 IPv6 주소 전역 부하 분산기 /64 Google의 외부 IP 주소 풀 프로젝트

리전 및 전역 부하 분산기 목록은 부하 분산기 유형 요약을 참조하세요.

고정 외부 IP 주소 사용 사양

  • 한 번에 하나의 리소스만 고정 외부 IP 주소를 사용할 수 있습니다.

  • IP 주소가 리소스에 할당되면 해당 주소가 고정 주소인지 임시 주소인지 확인할 수 있는 방법이 없습니다. IP 주소를 해당 프로젝트에 예약된 고정 외부 IP 주소 목록과 비교할 수 있습니다. 프로젝트에서 사용 가능한 고정 외부 IP 주소의 목록을 확인하려면 compute addresses list 하위 명령어를 사용하세요.

  • 각 VM은 여러 네트워크 인터페이스를 포함할 수 있지만, 각 네트워크 인터페이스는 임시 또는 고정 외부 IP 주소 중 하나만 가질 수 있습니다.

  • 고정 IP 주소 이름을 변경할 수 없습니다.

  • 할당된 외부 IP 주소는 VM과 동일한 물리적 호스트에 존재하고, 라우팅, 지연 시간, 가격 책정을 포함한 모든 목적을 위해 VM과 동일한 리전에 존재합니다. 이것은 인터넷 위치정보 조회 정보에 관계없이 적용됩니다.

참고: 네트워크 인터페이스는 여러 전달 규칙으로부터 트래픽을 수신하며 이 전달 규칙은 다른 외부 IP 주소에도 적용될 수 있습니다. 여러 외부 IP 주소가 이러한 전달 규칙을 통해 네트워크 인터페이스를 참조할 수 있지만, 각 네트워크 인터페이스는 외부 IP 주소를 하나만 포함할 수 있습니다.

부하 분산 및 전달 규칙에 대한 자세한 내용은 부하 분산 문서를 읽어보세요.

새로운 고정 외부 IP 주소 예약

주소를 예약한 다음에는 새로 만드는 새 VM에 할당하거나 기존 VM에 할당할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 고정 주소 예약 페이지로 이동합니다.

    고정 주소 예약으로 이동

  2. 새 주소의 이름을 선택합니다.

  3. 네트워크 서비스 등급이 프리미엄 또는 표준인지 지정합니다. IPv6 고정 주소 예약은 프리미엄 등급에서만 지원됩니다.

  4. IPv4 또는 IPv6 주소 여부를 지정합니다.

  5. 이 IP 주소가 리전 또는 전역인지 지정합니다.

    • 전역 부하 분산기에 대해 고정 IP 주소를 예약하는 경우에는 전역을 선택한 다음 예약을 클릭합니다.
    • VM 또는 리전 부하 분산기에 대해 고정 IP 주소를 예약하는 경우에는 리전을 선택한 다음 주소를 만들 리전을 선택합니다.
  6. 리전 외부 IPv6 주소를 예약하는 경우에는 다음을 선택합니다.

    • 네트워크: VPC 네트워크
    • 서브네트워크: 고정 리전 IPv6 주소를 할당할 서브넷
    • 엔드포인트 유형: VM 인스턴스 또는 네트워크 부하 분산기 선택
  7. 선택사항: VM에 대해 고정 외부 IP 주소를 예약하는 경우에는 연결 대상 목록에서 IP 주소를 연결할 VM을 선택합니다.

  8. 예약을 클릭하여 IP 주소를 예약합니다.

gcloud

고정 외부 IP 주소를 예약하려면 gcloud compute addresses create 명령어를 사용합니다.

다음 안내에 따라 고정 외부 IPv4 또는 IPv6 주소를 예약합니다.

  • 전역 IP 주소를 예약하려면 --global--ip-version 필드를 사용합니다. --ip-version 필드에 IPv4 또는 IPv6를 지정합니다. 전역 IP 주소는 전역 부하 분산기에만 사용될 수 있습니다.

    gcloud compute addresses create ADDRESS_NAME \
      --global \
      --ip-version [IPV4 | IPV6]
    

    ADDRESS_NAME을 이 주소와 연결할 이름으로 바꿉니다.

  • 리전 외부 IPv4 주소를 예약하려면 --region 필드를 사용합니다.

    gcloud compute addresses create ADDRESS_NAME \
       --region=REGION
    

    다음을 바꿉니다.

    • ADDRESS_NAME: 이 주소와 연결할 이름입니다.
    • REGION: 이 주소를 예약할 리전입니다. 이 리전은 IP 주소를 연결하려는 리소스와 동일한 리전이어야 합니다.
  • 리전 외부 IPv6 주소를 예약하려면 --region, --subnet, --ip-version, --endpoint-type 필드를 사용합니다. 지정된 서브넷에서 /96 IPv6 범위가 할당됩니다.

    gcloud compute addresses create IPV6_ADDRESS_NAME \
       --region=REGION \
       --subnet=SUBNET_NAME \
       --ip-version=IPV6 \
       --endpoint-type=[VM | NETLB]
    

    다음을 바꿉니다.

    • IPV6_ADDRESS_NAME: 주소의 이름
    • REGION: 주소의 리전
    • SUBNET_NAME: 할당할 고정 리전 IPv6 주소가 있는 서브넷입니다. 서브넷에는 할당된 외부 IPv6 주소 범위가 있어야 합니다.
    • VM | NETLB: 엔드포인트 유형으로, VM 또는 네트워크 부하 분산기입니다.

결과를 보려면 gcloud compute addresses describe 명령어를 사용하세요.

gcloud compute addresses describe ADDRESS_NAME

Terraform

google_compute_address 리소스를 사용하여 리전 외부 IP 주소를 만들 수 있습니다.

resource "google_compute_address" "default" {
  name   = "my-test-static-ip-address"
  region = "us-central1"
}

다음 샘플에서는 google_compute_global_address 리소스를 사용하여 전역 외부 IPv6 주소를 만드는 방법을 보여줍니다.

resource "google_compute_global_address" "default" {
  project      = var.project_id # Replace this with your service project ID in quotes
  name         = "ipv6-address"
  address_type = "EXTERNAL"
  ip_version   = "IPV6"
}

REST

  • 리전 IPv4 주소를 만들려면 리전 addresses.insert 메서드를 호출합니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
    

    요청 본문에는 다음이 포함되어야 합니다.

    {
      "name": "ADDRESS_NAME"
    }
    

    다음을 바꿉니다.

    • PROJECT_ID: 이 요청의 프로젝트 ID입니다.
    • REGION: 이 요청의 리전 이름입니다.
    • ADDRESS_NAME: 주소에 연결할 이름입니다.
  • 전역 고정 IPv4 주소의 경우 globalAddresses.insert 메서드를 호출합니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
    

    요청 본문에는 다음이 포함되어야 합니다.

    {
      "name": "ADDRESS_NAME"
    }
    
  • 전역 고정 IPv6 주소의 경우 globalAddresses.insert 메서드를 호출합니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
    

    요청 본문에는 다음이 포함되어야 합니다.

    {
      "name": "ADDRESS_NAME",
      "ipVersion": "IPV6"
    }
    

    결과를 보려면 addresses.get 메서드를 사용합니다.

  • 리전 고정 IPv6 주소의 경우 addresses.insert 메서드를 호출합니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
    

    요청 본문에는 다음이 포함되어야 합니다.

    {
      "name": "ADDRESS_NAME",
      "ipVersion": "IPV6",
      "ipv6EndpointType": "VM|LB",
      "networkTier": "PREMIUM",
      "subnetwork": "SUBNET"
    }
    

    SUBNET을 이 프로젝트의 서브넷으로 바꿉니다.

    결과를 보려면 addresses.get 메서드를 사용합니다.

새로운 VM에 고정 외부 IP 주소 할당

고정 외부 IP 주소를 예약한 후에는 VM에 할당할 수 있습니다.

콘솔

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

    인스턴스 만들기로 이동

  2. VM 세부정보를 지정합니다.

  3. 고급 옵션 섹션을 펼칩니다.

  4. 네트워킹 섹션을 펼칩니다.

  5. 네트워크 인터페이스 섹션에서 네트워크 인터페이스를 확장하여 수정합니다.

  6. IPv4 주소를 할당하려면 다음 안내를 따르세요.

    1. 네트워크를 선택하세요.
    2. 외부 IPv4 주소 목록에서 IP 주소를 선택합니다.
  7. IPv6 주소를 할당하려면 다음 안내를 따르세요.

    1. IPv6 서브넷이 포함된 네트워크를 선택합니다.
    2. 서브네트워크 목록에서 이중 스택 서브넷을 선택합니다.
    3. IP 스택 유형IPv4 및 IPv6(이중 스택)을 선택합니다.
    4. 외부 IPv6 주소 목록에서 새로 예약된 외부 IPv6 주소를 선택합니다. 또는 IP 주소 만들기를 선택하고 새 고정 외부 IPv6 주소를 예약합니다.
    5. 네트워크 서비스 등급에서 프리미엄을 선택합니다.
  8. 기본 네트워크 인터페이스 수정을 완료하려면 완료를 클릭합니다.

  9. VM 만들기 프로세스를 계속 진행합니다.

gcloud

VM을 만들고 이미 예약한 고정 리전 외부 IP 주소를 할당할 수 있습니다.

  • 고정 외부 IPv4 주소를 할당하려면 다음을 실행합니다.

    gcloud compute instances create VM_NAME --address=IP_ADDRESS
    

    다음을 바꿉니다.

    • VM_NAME: VM의 이름입니다.
    • IP_ADDRESS: VM에 할당할 IP 주소입니다. 주소 이름이 아닌 예약된 고정 외부 IP 주소를 사용합니다.
  • 고정 외부 IPv6 주소를 할당하려면 다음을 실행합니다.

    gcloud compute instances create VM_NAME \
        --subnet=SUBNET \
        --stack-type=IPV4_IPV6 \
        --external-ipv6-address=IPV6_ADDRESS \
        --external-ipv6-prefix-length=96 \
        --ipv6-network-tier=PREMIUM \
        --zone=ZONE
    

Terraform

google_compute_instance 리소스를 사용하여 외부 IP 주소를 할당할 수 있습니다.

resource "google_compute_instance" "default" {
  name         = "dns-proxy-nfs"
  machine_type = "n1-standard-1"
  zone         = "us-central1-a"

  boot_disk {
    initialize_params {
      image = "ubuntu-1404-trusty-v20160627"
    }
  }

  network_interface {
    network = "default"
    access_config {
      nat_ip = google_compute_address.default.address
    }
  }
}

REST

새 VM에 고정 외부 IPv4 주소를 할당하려면 다음을 실행합니다.

새 VM 만들기 요청에서 networkInterfaces[].accessConfigs[].natIP 속성과 사용하려는 외부 IPv4 주소를 명시적으로 제공합니다. 예를 들면 다음과 같습니다.

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "networkInterfaces": [{
    "accessConfigs": [{
      "type": "ONE_TO_ONE_NAT",
      "name": "External NAT",
      "natIP": "IPV4_ADDRESS"
     }],
    "network": "global/networks/default"
  }],
  "disks": [{
      "autoDelete": "true",
      "boot": "true",
      "type": "PERSISTENT",
      "initializeParams": {
          "sourceImage": "SOURCE_IMAGE"
      }
}]
}

새 VM에 고정 외부 IPv6 주소를 할당하려면 다음을 실행합니다.

새 VM 만들기 요청에서 networkInterfaces[].ipv6AccessConfigs[].externalIpv6 속성과 사용하려는 외부 IPv6 주소를 명시적으로 제공합니다. 예를 들면 다음과 같습니다.

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "networkInterfaces": [{
          "accessConfigs": [{
              "name": "external-nat",
              "type": "ONE_TO_ONE_NAT"
          }],
          "ipv6AccessConfigs": [{
        "externalIpv6": "IOV6_ADDRESS",
        "externalIpv6PrefixLength": 96,
        "name": "external-ipv6-access-config",
        "networkTier": "PREMIUM",
        "type": "DIRECT_IPV6"
          }],
      "stackType": "IPV4_IPV6",
      "subnetwork":"SUBNETWORK
  }],
  "disks": [{
    "autoDelete": "true",
    "boot": "true",
    "mode": "READ_WRITE",
    "type": "PERSISTENT",
    "initializeParams": {
        "sourceImage": "SOURCE_IMAGE"
    },
  }],
 }

외부 IP 주소 변경 또는 기존 VM에 할당

외부 IP 주소(임시 또는 고정)를 변경하거나 기존 VM에 할당할 수 있습니다.

VM은 여러 인터페이스를 가질 수 있고 각 인터페이스는 외부 IP 주소를 가질 수 있습니다. VM에 이미 외부 IP 주소가 있으면 먼저 해당 주소를 삭제해야 합니다. 그런 다음 기존 VM에 새 외부 IP 주소를 할당할 수 있습니다.

콘솔

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

    VM 인스턴스로 이동

  2. 외부 IP를 할당하려는 VM의 이름을 클릭합니다. 인스턴스 세부정보 페이지가 표시됩니다.
  3. 인스턴스 세부정보 페이지에서 다음 단계를 완료합니다.

    1. 수정을 클릭합니다.
    2. 네트워크 인터페이스를 펼칩니다.
    3. VM에 할당할 필수 외부 IP 주소를 선택합니다.
      1. 외부 IPv4 주소임시 또는 고정 외부 IPv4 주소를 선택합니다.
      2. 외부 IPv6 주소임시 또는 고정 외부 IPv6 주소를 선택합니다.
    4. 완료를 클릭합니다.
  4. 저장을 클릭합니다.

gcloud

  1. 선택사항: 고정 외부 IP 주소를 예약합니다.

    고정 외부 IP 주소를 할당하려는 경우에는 주소를 예약하고 해당 주소가 다른 리소스에서 사용되고 있지 않은지 확인해야 합니다. 필요한 경우에는 안내에 따라 새 고정 외부 IP 주소를 예약하거나 고정 외부 IP 주소를 할당 해제합니다.

    임시 외부 IP 주소를 사용하려는 경우에는 이 단계를 건너 뛰고, Compute Engine이 임시 외부 IP 주소를 무작위로 할당하도록 할 수 있습니다.

  2. 기존 IP 주소 할당을 삭제합니다.

    • VM에서 IPv4 주소를 삭제하려면 기존 액세스 구성을 삭제합니다.

      각 VM에 하나의 액세스 구성을 설정할 수 있습니다. VM에 새로운 액세스 구성을 할당하려고 시도하기 전에 gcloud compute instances describe 명령어으로 요청을 수행하여 VM에 액세스 구성이 포함되어 있지 않은지 확인하세요.

      gcloud compute instances describe VM_NAME
      

      기존 액세스 구성이 있으면 해당 액세스 구성이 다음 형식으로 표시됩니다.

      networkInterfaces:
      - accessConfigs:
        - kind: compute#accessConfig
          name: external-nat
          natIP: 203.0.113.1
          type: ONE_TO_ONE_NAT
      

      새로운 액세스 구성을 추가하려면 먼저 instances delete-access-config 하위 명령어를 사용하여 기존 액세스 구성을 삭제해야 합니다.

      gcloud compute instances delete-access-config VM_NAME \
          --access-config-name="ACCESS_CONFIG_NAME"
      

      다음을 바꿉니다.

      • VM_NAME: VM의 이름
      • ACCESS_CONFIG_NAME: 삭제할 액세스 구성. 따옴표 사이에 전체 이름을 포함해야 합니다.
    • VM에서 IPv6 주소를 삭제하려면 스택 유형을 변경합니다.

      gcloud compute instances describe 명령어로 요청을 수행하여 VM에 IPv6 구성이 있는지 확인합니다.

      gcloud compute instances describe VM_NAME \
          --zone=ZONE
      

      다음을 바꿉니다.

      • VM_NAME: VM의 이름입니다.
      • ZONE: VM의 영역

      외부 IPv6 주소가 이미 nic0에 할당된 경우 다음 형식으로 구성이 표시됩니다.

      networkInterfaces:
        ...
        ipv6AccessConfigs:
        - externalIpv6: 2001:db8:4000:15:0:0:0:0
          externalIpv6PrefixLength: 96
          kind: compute#accessConfig
          name: external-ipv6
          networkTier: PREMIUM
          type: DIRECT_IPV6
        ipv6AccessType: EXTERNAL
        kind: compute#networkInterface
        name: nic0
      

      instance network-interfaces update 하위 명령어를 사용하여 기존 IPv6 주소 구성을 삭제합니다.

      gcloud compute instances network-interfaces update VM_NAME \
        --network-interface=NIC \
        --stack-type=IPV4_ONLY \
        --zone=ZONE
      

      다음을 바꿉니다.

      • NIC: 네트워크 인터페이스의 이름입니다.
      • VM_NAME: VM의 이름입니다.
      • ZONE: VM의 영역
  3. 새로운 외부 IP 주소를 할당합니다.

    • IPv4 주소를 할당하려면 instances add-access-config 하위 명령어를 사용합니다.

      참고: IP_ADDRESS를 고정 IP 주소의 이름으로 바꾸지 마세요. 실제 IP 주소를 사용해야 합니다.
      gcloud compute instances add-access-config VM_NAME \
      --access-config-name="ACCESS_CONFIG_NAME" --address=IP_ADDRESS
      

      다음을 바꿉니다.

      • VM_NAME: VM의 이름
      • ACCESS_CONFIG_NAME: 액세스 구성의 이름. 따옴표 사이에 전체 이름을 포함해야 합니다.
      • IP_ADDRESS: 추가할 IP 주소입니다.

      고정 외부 IP 주소를 사용하는 대신 Compute Engine이 임시 외부 IP 주소를 할당하도록 하려면 --address IP_ADDRESS 속성을 생략합니다.

      gcloud compute instances add-access-config VM_NAME \
        --access-config-name="ACCESS_CONFIG_NAME"
      
    • IPv6 주소 범위를 할당하려면 instance network-interfaces update 하위 명령어를 사용합니다.

      gcloud compute instances network-interfaces update VM_NAME \
        --network-interface==NIC \
        --ipv6-network-tier=PREMIUM \
        --stack-type=IPV4_IPV6 \
        --external-ipv6-address=IPV6_ADDRESS \
        --external-ipv6-prefix-length=96 \
        --zone=ZONE
      

      다음을 바꿉니다.

      • VM_NAME: VM의 이름입니다.
      • NIC: 네트워크 인터페이스의 이름입니다.
      • IPV6_ADDRESS: VM에 할당할 IPv6 주소. /96 범위에서 첫 번째 IPv6 주소를 지정합니다.
      • ZONE: VM의 영역

REST

VM의 새 액세스 구성을 추가하여 해당 VM의 외부 IPv4 또는 IPv6 주소를 변경할 수 있습니다.

  1. VM에 기존 액세스 구성이 있는지 확인합니다. VM 세부정보를 확인하려면 instances.get 메서드GET 요청을 수행하세요.

     GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
     

    다음을 바꿉니다.

    • PROJECT_ID: 이 요청의 프로젝트 ID
    • ZONE: VM이 있는 영역
    • VM_NAME: VM의 이름

    기존 IPv4 액세스 구성이 있는 경우 응답은 다음과 유사합니다.

    "networkInterfaces": [
      {
        "network":
        ...
        "name": "nic0",
        "accessConfigs": [
          {
            "type": "ONE_TO_ONE_NAT",
            "name": "External NAT",
            "natIP": "IPV4_ADDRESS",
            "networkTier": "PREMIUM",
            "kind": "compute#accessConfig"
          }
        ],
        ...
      }
    ]
    

    networkInterfaces[].accessConfigs[].natIP 필드는 VM의 고정 외부 IPv4 주소를 반환합니다.

    기존 IPv6 액세스 구성이 있는 경우 응답은 다음과 유사합니다.

    "networkInterfaces": [
      {
        "network":
        ...
        "name": "nic0",
        "ipv6AccessConfigs": [
          {
            type: "DIRECT_IPV6",
            "name": "external-ipv6",
            "externalIpv6": "IPV6_ADDRESS",
            "externalIpv6PrefixLength": 96,
            "networkTier": "PREMIUM",
            "kind": "compute#accessConfig"
          }
        ],
        ...
      }
    ]
    

    networkInterfaces[].ipv6AccessConfigs[].externalIpv6 필드는 VM의 고정 외부 IPv6 주소를 반환합니다.

  2. instances.deleteAccessConfig 메서드POST 요청을 수행하여 기존 액세스 구성을 삭제하세요.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/deleteAccessConfig
    
  3. instances.addAccessConfig 메서드POST 요청을 수행하여 VM의 네트워크 인터페이스에 새 액세스 구성을 추가합니다.

전달 규칙의 IP 주소 변경

전달 규칙의 IP 주소를 업데이트해야 하는 경우 다음을 수행합니다.

  1. IP 주소를 할당 해제합니다.

  2. gcloud compute forwarding-rules delete 명령어 또는 forwardingRules.delete 메서드를 사용하여 전달 규칙을 삭제합니다.

  3. gcloud compute forwarding-rules create 명령어 또는 forwardingRules.insert 메서드를 사용하여 전달 규칙을 다시 만듭니다.

임시 외부 IP 주소 승격

VM에 임시 외부 IP 주소가 있고 이 IP 주소를 프로젝트에 영구적으로 할당하려는 경우에는 임시 외부 IP 주소를 고정 외부 IP 주소로 승격합니다. 임시 외부 IP 주소를 예약 주소로 승격해도 Google Cloud에서 VM으로 전송된 패킷을 삭제하지 않습니다. 여기에는 VM에 바로 전송되거나 부하 분산기를 이용해 전송된 패킷도 포함됩니다.

콘솔

  1. IP 주소 페이지로 이동합니다.

    IP 주소로 이동

  2. 외부 IP 주소를 클릭합니다.
  3. 선택사항: 필터 필드에서 승격할 임시 IP 주소를 검색합니다.
  4. 승격할 IP 주소의 추가 작업 메뉴()에서 고정 IP 주소로 승격을 선택합니다.
  5. 새로운 고정 IP 주소의 이름을 입력한 다음 예약을 클릭합니다.

gcloud

다음 안내에 따라 고정 외부 IPv4 또는 IPv6 주소를 승격합니다.

  • 임시 외부 IPv4 주소를 고정 외부 IPv4 주소로 승격하려면 --addresses 플래그를 compute addresses create 명령어와 함께 사용하여 임시 외부 IP 주소를 제공합니다. region 플래그를 사용하여 임시 리전 IP 주소를 승격하거나 global 플래그를 사용하여 임시 전역 IP 주소를 승격합니다.

    gcloud compute addresses create ADDRESS_NAME --addresses=IP_ADDRESS \
        [--region=REGION | --global]
    

    다음을 바꿉니다.

    • ADDRESS_NAME: 이 주소와 연결할 이름입니다.
    • IP_ADDRESS: 승격할 IP 주소입니다.
    • REGION: 리전 IP 주소가 속한 리전입니다.

    • 임시 리전 외부 IPv6 주소를 고정 리전 외부 IPv6 주소로 승격하려면 --addresses 플래그를 compute addresses create 명령어와 함께 사용하여 임시 외부 IP 주소를 제공합니다.

    gcloud compute addresses create ADDRESS_NAME \
        --region=REGION \
        --addresses=IPV6_ADDRESS \
        --prefix-length=96
    

    다음을 바꿉니다.

    • ADDRESS_NAME: IP 주소 리소스의 이름입니다.
    • REGION: IPv6 주소 리소스의 리전입니다.
    • IPV6_ADDRESS: 승격할 IPv6 주소입니다.

REST

임시 리전 IP 주소를 승격하려면 addresses.insert 메서드를 호출합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses

임시 전역 IP 주소를 승격하려면 다음 URI에 POST 요청을 실행합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses

요청 본문의 필수 필드 값을 지정합니다.

  • IPv4 주소의 경우 요청 본문에 다음 필드가 포함되어야 합니다.

    {
      "name": "ADDRESS_NAME",
      "address": "IPV4_ADDRESS"
      "addressType": "EXTERNAL"
    }
    
  • IPv6 주소의 경우 요청 본문에 다음 필드가 포함되어야 합니다.

    {
      "name": "ADDRESS_NAME",
      "address": "IPV6_ADDRESS"
      "prefixLength": 96
      "addressType": "EXTERNAL"
    }
    

    다음을 바꿉니다.

    • ADDRESS_NAME: 이 주소와 연결할 이름입니다.
    • IPV4_ADDRESS|IPV6_ADDRESS: 승격할 IPv4 또는 IPv6 주소입니다.
    • REGION: IPv4 또는 IPv6 주소가 속한 리전입니다.
    • PROJECT_ID: 이 요청의 프로젝트 ID입니다.

외부 IP 주소는 고정 외부 IP 주소로 승격된 후에도 VM에 연결된 상태로 유지됩니다. 새로 승격된 고정 외부 IP 주소를 다른 리소스에 할당하려면 기존 VM에서 고정 외부 IP 주소를 할당 해제합니다.

고정 외부 IP 주소 나열

프로젝트에 대해 예약한 고정 외부 IP 주소를 나열하려면 다음 단계를 따르세요.

콘솔

프로젝트의 IP 주소 목록을 보려면 Google Cloud 콘솔에서 외부 IP 주소 페이지로 이동합니다.

외부 IP 주소로 이동

gcloud

gcloud compute addresses list 명령어를 사용합니다.

  • 모든 IP 주소를 나열하려면 다음 명령어를 사용합니다.

    gcloud compute addresses list
  • 모든 전역 IP 주소를 나열하려면 다음 명령어를 사용합니다.

    gcloud compute addresses list --global
  • 특정 리전의 모든 리전 IP 주소를 나열하려면 다음 명령어를 사용합니다.

    gcloud compute addresses list \
      --regions=REGION
    

    REGION을 주소를 나열할 리전으로 바꿉니다. 쉼표로 구분한 리전 이름을 지정하여 여러 리전의 주소를 나열할 수 있습니다.

    gcloud compute addresses list \
      --regions=REGION1,REGION2,..REGION_n_
    

REST

  • 리전 IPv4 또는 IPv6 주소를 나열하려면 addresses.list 메서드를 호출합니다.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
    

    다음을 바꿉니다.

    • REGION: 요청의 리전 이름
    • PROJECT_ID: 이 요청의 프로젝트 ID입니다.
  • 모든 리전의 모든 주소를 나열하려면 aggregatedList 메서드를 호출합니다.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/addresses
    
  • 전역 IPv4 또는 IPv6 주소를 나열하려면 globalAddresses.list 메서드를 호출합니다.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
    

    다음을 바꿉니다.

    PROJECT_ID: 이 요청의 프로젝트 ID

고정 외부 IP 주소 설명

고정 외부 IP 주소에 대한 정보를 가져 오려면 다음 단계를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 외부 IP 주소 페이지로 이동합니다.

    외부 IP 주소로 이동

  2. 자세한 정보를 확인하려는 IP 주소를 클릭합니다.

gcloud

addresses describe 명령어를 사용합니다. ADDRESS_NAME을 설명하려는 외부 IP 주소의 이름으로 바꿉니다.

  • 전역 IPv4 또는 IPv6 주소의 경우 다음 명령어를 사용합니다.

    gcloud compute addresses describe ADDRESS_NAME --global
  • 리전 IPv4 또는 IPv6 주소의 경우 다음 명령어를 사용합니다.

    gcloud compute addresses describe ADDRESS_NAME --region=REGION

REST

  • 리전 IPv4 또는 IPv6 주소를 설명하려면 addresses.get 메서드를 호출합니다.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME
    

    다음을 바꿉니다.

    • ADDRESS_NAME: IP 주소의 이름
    • REGION: 요청의 리전 이름
    • PROJECT_ID: 요청의 프로젝트 ID
  • 전역 IPv4 또는 IPv6 주소를 설명하려면 globalAddresses.get 메서드를 호출합니다.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses/ADDRESS_NAME
    

    다음을 바꿉니다.

    • ADDRESS_NAME: IP 주소의 이름
    • PROJECT_ID: 요청의 프로젝트 ID

고정 외부 IP 주소 할당 해제

IP 주소를 할당 해제하면 리소스에서 삭제되지만, IP 주소를 예약된 상태로 유지합니다. IP 주소를 할당 해제하면 IP 주소를 다른 리소스에 다시 할당할 수 있습니다.

VM을 삭제하여 IPv4 또는 IPv6 주소를 할당 해제할 수도 있습니다.

콘솔

  1. Google Cloud 콘솔에서 외부 IP 주소 페이지로 이동합니다.

    외부 IP 주소로 이동

  2. 할당 해제하려는 고정 IP 주소를 선택합니다.
  3. 변경을 클릭하여 IP 주소 연결 대화상자를 엽니다.
  4. 연결 대상 드롭다운 목록에서 없음을 선택합니다.
  5. OK(확인)를 클릭합니다.

gcloud

  1. gcloud compute addresses list 명령어를 사용하여 고정 IP 주소가 사용 중인지 확인합니다.

    gcloud compute addresses list
    

    출력은 다음과 비슷합니다.

    NAME                      REGION    ADDRESS                  STATUS
    example-address-ipv4      REGION    198.51.100.1             RESERVED
    example-address-new-ipv4  REGION    203.0.113.1              IN_USE
    example-address-ipv6      REGION    2001:db8:1:1:1:1:1:1     RESERVED
    example-address-new-ipv6  REGION    2001:db8:4:4:4:4:4:4     IN_USE
    
    • IP 주소가 사용 중이 아니면 상태는 RESERVED입니다.
    • IP 주소가 사용 중인 경우 상태는 IN_USE입니다.
  2. IP 주소를 사용 중인 VM의 이름을 검색합니다.

    gcloud compute addresses describe ADDRESS_NAME \
      --region=REGION
    

    다음을 바꿉니다.

    • ADDRESS_NAME: IPv6 주소 리소스의 이름
    • REGION: IPv6 주소 리소스의 리전

    출력은 다음과 비슷합니다.

    address: IP_ADDRESS
    addressType: EXTERNAL
    ...
    region: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION
    selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/addresses/ADDRESS_NAME
    status: IN_USE
    subnetwork: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNET
    users:
    - https://www.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances/VM_NAME
    

    users 필드에 IP 주소를 사용하는 VM의 이름이 표시됩니다.

  3. VM에서 IP 주소를 할당 해제합니다.

    • IPv4 주소를 할당 해제하려면 VM의 액세스 구성 파일을 삭제합니다.

      1. 삭제하려는 액세스 구성의 이름을 가져옵니다. 이름을 가져오려면 gcloud compute instances describe 명령어를 사용합니다. VM_NAME을 VM의 이름으로 바꿉니다.

        gcloud compute instances describe VM_NAME
        

        액세스 구성은 다음 형식으로 표시됩니다.

        networkInterfaces:
          - accessConfigs:
            - kind: compute#accessConfig
              name: external-nat
              natIP: 203.0.113.1
              type: ONE_TO_ONE_NAT
        
      2. gcloud compute instances delete-access-config 명령어를 사용하여 액세스 구성을 삭제합니다.

        gcloud compute instances delete-access-config VM_NAME \
          --access-config-name="ACCESS_CONFIG_NAME"
        

        다음을 바꿉니다.

        • VM_NAME: VM의 이름입니다.
        • ACCESS_CONFIG_NAME: 삭제할 액세스 구성의 이름. 따옴표 사이에 전체 이름을 포함해야 합니다.
    • IPv6 주소 범위를 할당 해제하려면 instance network-interfaces update 명령어를 사용합니다.

      gcloud compute instances network-interfaces update VM_NAME \
        --network-interface=nic0 \
        --stack-type=IPV4_ONLY \
        --zone=ZONE
      

      다음을 바꿉니다.

      • VM_NAME: IP 주소를 사용 중인 VM의 이름입니다.
      • ZONE: VM의 영역
  4. 고정 외부 IP 주소를 사용할 수 있고 IN_USE 대신 RESERVED로 표시되었는지 확인합니다.

    gcloud compute addresses list \
      --filter="ADDRESS_NAME AND region=REGION"
    

    다음을 바꿉니다.

    • ADDRESS_NAME: IP 주소 리소스의 이름입니다.
    • REGION: IP 주소 리소스의 리전입니다.

이제 고정 외부 IP 주소를 사용할 수 있으므로, 이를 다른 VM에 할당하도록 선택할 수 있습니다.

REST

고정 외부 IPv4 또는 IPv6 주소를 할당 해제하려면 다음 단계를 따르세요.

  • IPv4 주소의 경우 주소를 사용하는 VM에 연결된 액세스 구성을 삭제합니다.

    1. VM의 액세스 구성 세부정보를 확인하려면 instances.get 메서드GET 요청을 수행하세요.

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
      
    2. instances.deleteAccessConfig 메서드POST 요청을 수행하여 기존 액세스 구성을 삭제하세요.

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/deleteAccessConfig
      

      다음을 바꿉니다.

      • PROJECT_ID: 이 요청의 프로젝트 ID입니다.
      • ZONE: VM이 있는 영역
      • VM_NAME: VM의 이름
  • IPv6 주소의 경우 IPv6 주소가 연결된 VM의 네트워크 인터페이스의 스택 유형을 업데이트합니다.

    1. instances.updateNetworkInterface 메서드에 대해 PATCH 요청을 실행합니다.

    2. 요청 본문에서 stackType 필드 값을 IPV4_ONLY로 업데이트합니다.

      예를 들면 다음과 같습니다.

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/updateNetworkInterface
      
      {
        "networkInterfaces": [{
          ...
          "stackType" : "IPV4_ONLY"
          ...
          }]
      }
      

고정 외부 IP 주소 해제

고정 외부 IPv4 또는 IPv6 주소가 더 이상 필요하지 않으면 IP 주소 리소스를 삭제하여 IP 주소를 해제할 수 있습니다.

Google Cloud 콘솔을 사용하는 경우 다른 리소스에서 사용되고 있지 않은 고정 IP 주소만 해제할 수 있습니다.

gcloud CLI 또는 REST를 사용하는 경우에는 다른 리소스에서 사용 중인지 여부에 관계없이 IP 주소를 해제할 수 있습니다.

  • 리소스에서 IP 주소를 사용하지 않는 경우 사용 가능한 외부 IP 주소 풀로 IP 주소가 반환됩니다.

  • 리소스에서 IP 주소를 사용 중인 경우 리소스가 삭제될 때까지 리소스에 연결된 상태로 유지됩니다.

콘솔

  1. Google Cloud 콘솔에서 외부 IP 주소 페이지로 이동합니다.

    외부 IP 주소로 이동

  2. 해제할 IP 주소를 선택합니다.
  3. IP 주소 해제를 클릭합니다.

gcloud

compute addresses delete 명령어를 사용합니다.

gcloud compute addresses delete ADDRESS_NAME

ADDRESS_NAME을 해제할 IPv4 또는 IPv6 주소의 이름으로 바꿉니다.

REST

  • 리전 IPv4 또는 IPv6 주소를 해제하려면 addresses.delete 메서드를 호출합니다.

    DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME
    

    다음을 바꿉니다.

    • ADDRESS_NAME: IP 주소의 이름
    • REGION: 요청의 리전 이름
    • PROJECT_ID: 이 요청의 프로젝트 ID입니다.
  • 전역 IPv4 또는 IPv6 주소를 해제하려면 globalAddresses.delete 메서드를 호출합니다.

    DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses/ADDRESS_NAME
    

    다음을 바꿉니다.

    • ADDRESS_NAME: IP 주소의 이름
    • PROJECT_ID: 이 요청의 프로젝트 ID

외부 IP 주소를 특정 VM으로 제한

특정 워크로드에서는 기본적인 요구사항에 따라 보안 및 네트워크 제한사항이 포함될 수 있습니다. 예를 들어 특정 VM만 외부 IP 주소를 사용하도록 제한할 수 있습니다. 이렇게 하면 데이터 무단 반출을 방지하거나 네트워크 격리를 유지하는 데 도움이 될 수 있습니다. 조직 정책을 사용하면 조직 또는 프로젝트 내에서 VM의 외부 IP 주소 사용을 제어하는 제약 조건이 포함된 특정 VM에서만 외부 IP 주소를 사용할 수 있습니다.

VM에서 외부 IP 주소 제어를 위한 제약조건은 다음과 같습니다.

constraints/compute.vmExternalIpAccess

제약조건을 사용하기 위해서는 외부 IP 주소를 포함할 수 있는 VM의 allowedList를 사용하여 정책을 지정합니다. 정책을 지정하지 않으면 모든 VM에 대해 모든 외부 IP 주소가 허용됩니다. 정책이 적용되면 allowedValues 목록에 나열된 VM에만 외부 IP 주소(임시 또는 고정)를 할당할 수 있고, 조직 또는 프로젝트에서 정책에 명시적으로 정의되지 않은 다른 Compute Engine VM은 외부 IP 주소 사용이 금지됩니다.

VM은 허용 및 거부 목록에서 인스턴스의 URI를 사용하여 식별됩니다.

projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

외부 IP 주소 제한 사양

  • 목록 제약조건은 VM에만 적용할 수 있습니다.
  • 이 제약조건은 소급해서 적용할 수 없습니다. 정책을 사용 설정하기 전에 외부 IP 주소가 있는 모든 VM은 외부 IP 주소를 유지합니다.
  • 이 제약조건은 allowedList 또는 deniedList를 허용하지만 동일 정책에서 둘 다 허용하지는 않습니다.
  • 필요한 권한이 있는 사용자 또는 관리자가 VM 수명 주기 및 무결성을 관리 및 유지보수할 수 있습니다. 이 제약조건은 VM의 URI만 확인하며 허용 목록에 있는 VM이 변경, 삭제 또는 재생성되는 것을 방지하지 않습니다.

외부 IP 주소를 제한하는 데 필요한 권한

프로젝트 또는 조직 수준에서 제약조건을 설정하려면 해당 조직에서 orgpolicy.policyAdmin 역할을 부여 받아야 합니다.

조직 수준에서 정책 제약조건 설정

콘솔

  1. 조직 정책 페이지로 이동합니다.

    조직 정책으로 이동

  2. 필요한 경우 프로젝트 드롭다운 메뉴에서 필요한 조직을 선택합니다.
  3. VM 인스턴스에 허용되는 외부 IP 정의를 클릭합니다.
  4. 수정을 클릭하여 외부 IP 정책을 수정합니다. 수정 도구에 액세스할 수 없으면 적절한 권한이 없는 것입니다.
  5. 맞춤설정을 선택하여 특정 VM의 조직 정책을 설정합니다.

    조직 정책 수정 페이지의 맞춤설정 옵션

  6. 필요한 정책 시행정책 유형을 선택합니다.

  7. 정책 값에서 커스텀을 선택합니다.

  8. VM의 URI를 입력하고 Enter를 누릅니다. URI는 다음과 같은 형식이어야 합니다.

    projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
    
  9. 새 정책 값을 클릭하고 필요에 따라 VM의 URI를 입력합니다.

  10. 저장을 클릭하여 제약조건을 적용합니다.

gcloud

외부 IP 주소에 대해 제약조건을 설정하려면 먼저 조직 ID가 필요합니다. organizations list 명령어를 실행하고 응답에서 숫자 ID를 찾아 조직 ID를 찾을 수 있습니다.

gcloud organizations list

gcloud CLI는 조직 목록을 다음 형식으로 반환합니다.

DISPLAY_NAME               ID
example-organization1      29252605212
example-organization2      1234567890

gcloud resource-manager org-policies set-policy 명령어를 사용하여 정책을 설정합니다. 정책을 JSON 파일로 제공해야 합니다. 다음 형식으로 JSON 파일을 만듭니다.

{
"constraint": "constraints/compute.vmExternalIpAccess",
"listPolicy": {
  "allowedValues": [
     "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME",
     "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME",
     "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
  ]
 }
}

다음을 바꿉니다.

  • PROJECT_ID: 요청의 프로젝트 ID(예: example-project). 이는 조직 숫자 ID가 필요한 조직 정책 설정과 다릅니다.
  • ZONE: VM의 영역
  • VM_NAME: VM의 이름

또는 deniedValues 목록을 지정하여 외부 IP 주소를 갖지 못하도록 명시적으로 금지할 VM을 표시할 수 있습니다. 목록에 없는 VM은 모두 외부 IP 주소를 갖도록 암시적으로 허용됩니다. allowedValues 또는 deniedValues 중 하나를 지정할 수 있지만 둘 다 지정할 수는 없습니다.

그런 다음 요청을 사용해서 파일을 전달합니다.

gcloud resource-manager org-policies set-policy MY_POLICY.JSON --organization=ORGANIZATION_ID

ORGANIZATION_ID를 조직의 숫자 ID로 바꿉니다.

VM에 외부 IP 주소가 사용되지 않도록 하려면 정책 allValuesDENY로 설정할 수 있습니다.

{
  "constraint": "constraints/compute.vmExternalIpAccess",
  "listPolicy": {
    "allValues": "DENY"
  }
}

REST

setOrgPolicy() API를 사용하여 제약조건을 정의합니다. 사용자가 지정하는 allowedValue 목록의 VM은 외부 IP 주소를 가질 수 있습니다. 또는 deniedValues 목록을 지정하여 외부 IP 주소를 갖지 못하도록 명시적으로 금지할 VM을 표시할 수 있습니다. 목록에 없는 VM은 모두 외부 IP 주소를 갖도록 암시적으로 허용됩니다. allowedValues 또는 deniedValues 중 하나를 지정할 수 있지만 둘 다 지정할 수는 없습니다.

예를 들어 다음은 조직 내 특정 프로젝트의 VM이 외부 IP 주소를 갖는 것이 허용되는 compute.vmExternalIpAccess 제약조건을 조직에 적용하기 위한 요청입니다.

POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:setOrgPolicy

여기서 ORGANIZATION_ID는 조직의 숫자 ID입니다.

이제 요청 본문에서 이 제약조건의 정책을 제공합니다.

{
  "policy": {
    "constraint": "constraints/compute.vmExternalIpAccess",
    "listPolicy": {
      "allowedValues": [
        "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME",
        "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME",
        "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
        ]
      }
    }
 }

VM에 외부 IP 주소가 사용되지 않도록 하려면 정책 allValuesDENY로 설정할 수 있습니다.

{
  "policy": {
    "constraint": "constraints/compute.vmExternalIpAccess",
    "listPolicy": {
      "allValues": "DENY"
      }
    }
 }

프로젝트 수준에서 정책 설정

프로젝트 수준에서 정책을 설정하면 조직 수준의 정책이 재정의됩니다. 예를 들어 조직 수준에서 allowedValues 목록에 example-vm-1이 있지만, 프로젝트 수준의 정책에서 deniedValues 목록에 동일한 VM이 있는 경우 VM이 외부 IP 주소를 갖는 것이 허용되지 않습니다.

콘솔

조직 수준에서 정책 제약조건 설정에 설명된 것과 동일한 절차를 따르지만, 조직 대신 프로젝트 선택기에서 프로젝트를 선택합니다.

프로젝트 선택기

gcloud

gcloud resource-manager org-policies set-policy 명령어를 사용하여 정책을 설정합니다. 정책을 JSON 파일로 제공해야 합니다. 다음 형식으로 JSON 파일을 만듭니다.

{
 "constraint": "constraints/compute.vmExternalIpAccess",
 "listPolicy": {
  "allowedValues": [
   "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
  ]
 }
}

다음을 바꿉니다.

  • PROJECT_ID: 요청의 프로젝트 ID(예: example-project). 이는 조직 숫자 ID가 필요한 조직 정책 설정과 다릅니다.
  • ZONE: VM의 영역
  • VM_NAME: VM의 이름입니다.

또는 외부 IP 주소를 갖지 못하도록 명시적으로 금지할 VM의 deniedValues 목록을 지정할 수 있습니다. 목록에 없는 VM은 모두 외부 IP 주소를 갖도록 암시적으로 허용됩니다. allowedValues 또는 deniedValues 중 하나를 지정할 수 있지만 둘 다 지정할 수는 없습니다.

그런 다음 요청을 사용해서 파일을 전달합니다.

gcloud resource-manager org-policies set-policy MY_POLICY.JSON --project=example-project

REST

setOrgPolicy API를 사용하여 제약조건을 정의합니다. 사용자가 지정하는 allowedValue 목록의 VM은 외부 IP 주소를 가질 수 있습니다. 또는 deniedValues 목록을 지정하여 외부 IP 주소를 갖지 못하도록 명시적으로 금지할 VM을 표시할 수 있습니다. 목록에 없는 VM은 모두 외부 IP 주소를 갖도록 암시적으로 허용됩니다. allowedValues 또는 deniedValues 중 하나를 지정할 수 있지만 둘 다 지정할 수는 없습니다.

예를 들어 다음은 특정 VM이 외부 IP 주소를 갖는 것을 허용하는 compute.vmExternalIpAccess 제약조건을 프로젝트에 설정하기 위한 요청입니다.

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setOrgPolicy

PROJECT_ID를 이 요청의 프로젝트 ID로 바꾸세요.

요청 본문에는 이 제약조건의 정책이 포함됩니다.

{
  "policy": {
    "constraint": "constraints/compute.vmExternalIpAccess",
    "listPolicy": {
      "allowedValues": [
        "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
      ]
    }
  }
}

외부 IP 주소 제한 권장사항

  • 이 제약조건과 함께 deniedValues 목록을 사용하지 마세요. deniedValues 목록에 값을 정의하면 deniedValues 목록에 있는 VM만 외부 IP 주소 사용이 제한됩니다. 외부 IP 주소를 포함할 수 있는 VM을 정확하게 제어해야 할 경우, 이 방식은 보안상 문제가 될 수 있습니다. allowedValues 목록에서 특정 VM을 삭제하려면, VM을 하위 계층의 deniedValues 목록에 넣는 대신 allowedList에서 VM을 삭제하도록 기존 정책을 업데이트합니다.

  • 리소스 계층의 대부분에 적용할 정책을 설정하되 특정 프로젝트를 제외시키려는 경우 기본 정책을 복원해야 합니다. 이때 프로젝트의 모든 VM이 외부 IP 주소와 연결될 수 있도록 restoreDefault 객체를 지정하여 setOrgPolicy 메서드를 사용하면 됩니다. 프로젝트의 현재 정책은 기본 설정의 영향을 받지 않습니다.

  • 환경을 보다 효과적으로 제어하려면 조직 정책을 IAM 역할과 함께 사용합니다. 이 정책은 VM에만 적용되지만, 네트워크 기기에서 외부 IP 주소를 더 효과적으로 제어하고 제한하려는 경우 적절한 당사자에게 compute.networkAdmin 역할을 부여할 수 있습니다.

  • 정책이 사용 설정된 상태로 Compute Engine에서 실행되고 있는 조직 또는 프로젝트 내의 모든 서비스 및 제품은 이 조직 정책의 영향을 받습니다. 특히 Google Kubernetes Engine, Dataflow, Dataproc, Cloud SQL 같은 서비스가 이 정책의 영향을 받습니다. 이것이 문제가 될 경우에는 조직 정책이 적용되지 않는 다른 프로젝트에서 다른 서비스 및 제품을 설정하고 필요한 경우 공유 VPC를 사용하는 것이 좋습니다.

다음 단계