리소스의 태그 관리


이 가이드에서는 Compute Engine 리소스에 대해 태그를 만들고 관리하는 방법을 설명합니다. 태그는 Google Cloud Platform 리소스에 연결할 수 있는 키-값 쌍입니다. 태그는 다음과 같은 다양한 용도로 사용됩니다.

  • 리소스에 특정 태그가 있는지 여부에 따라 조건부로 정책을 허용하거나 거부합니다.
  • 전역 네트워크 방화벽 정책 및 리전 네트워크 방화벽 정책에서 소스와 대상을 정의합니다.
  • 논리적인 방식으로 리소스 구성

태그를 만들고 태그와 리소스 모두에 적절한 액세스 권한을 부여한 후에는 태그를 키-값 쌍으로 연결할 수 있습니다. 주어진 키의 리소스에는 정확히 하나의 값을 연결할 수 있습니다. 예를 들어 environment: development 태그를 연결하는 경우 environment: production 또는 environment: test 태그를 연결할 수 없습니다. 각 리소스는 최대 50개의 키-값 쌍을 연결할 수 있습니다.

리소스에 태그를 연결하려면 태그 값을 Google Cloud 리소스에 연결하는 TagBinding 리소스를 만들어야 합니다. 태그와 태그의 작동 방식에 대한 자세한 내용은 태그 개요를 참조하세요.

시작하기 전에

  • Resource Manager 문서의 태그 개요를 읽습니다.
  • Resource Manager 문서의 태그 만들기 및 관리 읽습니다.
  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.

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

    콘솔

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

    gcloud

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

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

    REST

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

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

      gcloud init

권한

Compute Engine 리소스의 태그를 관리하려면 사용자 및 서비스 계정에 tagUser 역할을 부여해야 합니다. tagUser 역할에 대한 자세한 내용은 필수 권한을 참조하세요.

지원되는 리소스

다음 리소스는 리소스 생성 이후에만 태그를 지정할 수 있습니다.

  • 가상 머신(VM) 인스턴스
  • 디스크
  • 관리형 인스턴스 그룹
  • 이미지
  • 스냅샷
  • 네트워크, 서브네트워크, 방화벽, 상태 점검 리소스 등 대부분의 네트워킹 리소스

다음 리소스는 리소스를 만드는 동안 태그를 지정할 수 있습니다.

  • VM 인스턴스
  • 디스크

리소스에 태그 추가

다음 안내에 따라 리소스를 만든 후 기존 태그를 특정 리소스에 연결할 수 있습니다.

콘솔

리소스 유형에 따라 정확한 단계가 약간 다를 수 있습니다. 예를 들어 다음 단계에서는 VM에 태그를 연결합니다.

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

    VM 인스턴스로 이동

  2. 프로젝트를 선택하고 계속을 클릭합니다.

  3. 이름 열에서 태그를 추가할 VM의 이름을 클릭합니다.

  4. VM 인스턴스 세부정보 페이지에서 다음 단계를 완료합니다.

    1. 수정을 클릭합니다.
    2. 기본 섹션에서 태그 관리를 클릭하고 인스턴스에 원하는 태그를 추가합니다.
    3. 저장을 클릭합니다.

gcloud

이러한 플래그를 사용하는 방법에 대한 자세한 안내를 검토하려면 Resource Manager 문서에 있는 리소스에 태그 연결을 참조하세요.

예를 들어 다음 명령어는 VM에 태그를 연결합니다.

gcloud resource-manager tags bindings create \
    --location LOCATION_NAME \
    --tag-value=tagValues/TAGVALUE_ID \
    --parent=//compute.googleapis.com/projects/PROJECT_NUMBER/zones/ZONE/instances/VM_ID

다음을 바꿉니다.

  • LOCATION_NAME: 대상 리소스의 리전(예: us-central1)
  • TAGVALUE_ID: 태그 값의 숫자 ID
  • PROJECT_NUMBER: 프로젝트의 숫자 ID
  • ZONE: 영역 이름(예: us-central1-a)
  • VM_ID: VM 인스턴스의 숫자 ID

API

리소스에 태그를 연결하려면 먼저 태그 값의 영구 ID 또는 네임스페이스 이름과 리소스의 영구 ID가 포함된 태그 바인딩의 JSON 표현을 만들어야 합니다. 태그 바인딩의 형식에 대한 자세한 내용은 TagBinding 참조를 확인하세요.

VM 인스턴스와 같은 영역별 리소스에 태그를 연결하려면 리소스가 있는 리전 엔드포인트가 지정된 tagBindings.create 메서드를 사용합니다. 예를 들면 다음과 같습니다.

POST https://LOCATION-cloudresourcemanager.googleapis.com/v3/tagBindings

요청 본문은 다음 중 하나일 수 있습니다.

{
  "parent": "//compute.googleapis.com/projects/PROJECT_NUMBER/zones/ZONE/instances/VM_ID",
  "tagValue": "tagValue/TAGVALUE_ID"
}

또는 다음과 같을 수 있습니다.

{
  "parent": "//compute.googleapis.com/projects/PROJECT_NUMBER/zones/ZONE/instances/VM_ID",
  "tagValueNamespacedName": TAGVALUE_NAMESPACED_NAME
}

다음을 바꿉니다.

  • LOCATION: 대상 리소스가 속한 위치
  • PROJECT_NUMBER: 프로젝트의 숫자 ID
  • ZONE: 영역 이름(예: us-central1-a)
  • VM_ID: VM의 숫자 ID
  • TAGVALUE_ID: 연결된 태그 값의 영구 ID(예: 4567890123)
  • TAGVALUE_NAMESPACED_NAME은 연결된 태그 값의 네임스페이스 이름이며 parentNamespace/tagKeyShortName/tagValueShortName 형식입니다.

리소스 생성 중 리소스에 태그 추가

특정 시나리오에서는 리소스를 만든 후가 아닌 리소스를 생성하는 동안 리소스에 태그를 지정해야 할 수 있습니다. 예를 들어 차세대 Cloud Firewall 리소스를 만들 때 네트워크 정책에 방화벽 태그를 적용할 수 있습니다.

콘솔

리소스 유형에 따라 정확한 단계가 약간 다를 수 있습니다. 다음은 VM에 대한 단계입니다.

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

    VM 인스턴스로 이동

  2. 프로젝트를 선택하고 계속을 클릭합니다.

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

  4. 태그 및 라벨 관리를 클릭합니다.

  5. 태그 추가를 클릭합니다.

  6. 측면 패널의 안내에 따라 인스턴스에 추가할 태그를 선택합니다.

  7. 저장을 클릭합니다.

  8. VM 인스턴스 만들기 및 시작의 다른 단계를 완료하여 인스턴스 만들기를 마칩니다.

gcloud

리소스를 만드는 동안 리소스에 태그를 연결하려면 해당 create 명령어에 --resource-manager-tags 플래그를 추가합니다. 예를 들어 VM에 태그를 연결하려면 다음 명령어를 사용합니다.

gcloud compute instances create INSTANCE_NAME --resource-manager-tags=tagKeys/TAGKEY_ID=tagValues/TAGVALUE_ID

다음을 바꿉니다.

  • INSTANCE_NAME: 인스턴스의 이름입니다.
  • TAGKEY_ID: 태그 키 번호 숫자 ID
  • TAGVALUE_ID: 연결된 태그 값의 영구 숫자 ID(예: 4567890123)

태그를 쉼표로 구분하여 여러 태그를 지정합니다(예: TAGKEY1=TAGVALUE1,TAGKEY2=TAGVALUE2).

API

다음 URL로 POST 요청을 수행합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances

다음 요청 JSON 본문을 포함합니다.

{
  "name": INSTANCE_NAME,
  "params": {
    "resourceManagerTags": {
      "tagKeys/TAGKEY_ID: "tagValues/TAGVALUE_ID",
    },
  }
  // other fields omitted
}

다음을 바꿉니다.

  • INSTANCE_NAME: 인스턴스의 이름입니다.
  • TAGKEY_ID: 태그 키 번호 숫자 ID
  • TAGVALUE_ID: 연결된 태그 값의 영구 숫자 ID(예: 4567890123)

리소스에서 태그 분리

태그 바인딩 리소스를 삭제하여 리소스에서 태그를 분리할 수 있습니다.

태그를 분리하는 방법에 대한 안내를 검토하려면 Resource Manager 문서의 리소스에서 태그 분리를 참조하세요.

콘솔

리소스 유형에 따라 정확한 단계가 약간 다를 수 있습니다. 예를 들어 다음 단계는 VM에서 태그를 분리합니다.

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

    VM 인스턴스로 이동

  2. 프로젝트를 선택하고 계속을 클릭합니다.

  3. 이름 열에서 태그를 추가할 VM의 이름을 클릭합니다.

  4. VM 인스턴스 세부정보 페이지에서 다음 단계를 완료합니다.

    1. 수정을 클릭합니다.
    2. 기본 섹션에서 태그 관리를 클릭하고 인스턴스에 원하는 태그를 삭제합니다.
    3. 저장을 클릭합니다.

gcloud

다음 예시에서는 gcloud CLI를 사용하여 VM에서 태그를 분리합니다.

gcloud resource-manager tags bindings delete \
--location LOCATION_NAME \
--tag-value=tagValues/TAGVALUE_ID \
--parent //compute.googleapis.com/projects/PROJECT_NUMBER/zones/ZONE/instances/VM_ID

다음을 바꿉니다.

  • LOCATION_NAME: 대상 리소스의 리전(예: us-central1)
  • TAGVALUE_ID: 태그 키의 숫자 ID
  • PROJECT_NUMBER: 프로젝트의 숫자 ID
  • ZONE: 영역 이름(예: us-central1-a)
  • VM_ID: VM 인스턴스의 숫자 ID

기존 태그 바인딩을 다른 바인딩으로 업데이트하거나 대체하려면 이전 태그 바인딩을 분리하고 새 태그 바인딩을 연결합니다.

API

VM과 같은 리소스에 연결된 태그 바인딩을 삭제하려면 리소스가 있는 리전별 엔드포인트가 지정된 tagBindings.delete 메서드를 사용합니다.

DELETE https://LOCATION-cloudresourcemanager.googleapis.com/v3/{name=TAGBINDINGS_NAME}

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

  • TAGBINDINGS_NAME은 TagBinding의 영구 ID입니다(예: tagBindings/%2F%2Fcloudresourcemanager.googleapis.com%2Fprojects%2F1234567890/tagValues/567890123456).

  • LOCATION은 리소스의 리전별 엔드포인트입니다(예: us-central1).

리소스에 연결된 태그 보기

태그를 나열하는 방법에 대한 자세한 안내를 검토하려면 Resource Manager 문서의 리소스에 연결된 태그 나열을 참조하세요.

콘솔

리소스 유형에 따라 정확한 단계가 약간 다를 수 있습니다. 예를 들어 다음 단계에서는 VM의 태그를 보는 방법을 보여줍니다.

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

    VM 인스턴스로 이동

  2. 프로젝트를 선택하고 계속을 클릭합니다.

  3. 이름 열에서 태그를 보려는 VM의 이름을 클릭합니다.

  4. VM 인스턴스 세부정보 페이지의 태그 섹션에서 태그를 찾습니다.

gcloud

리소스에 직접 연결된 태그 바인딩 목록을 가져오려면 gcloud resource-manager tags bindings list 명령어를 사용합니다. --effective 플래그를 추가하면 이 리소스에서 상속한 태그 목록도 반환됩니다. 예를 들면 다음과 같습니다.

gcloud resource-manager tags bindings list \
    --location=LOCATION_NAME \
    --parent //compute.googleapis.com/projects/PROJECT_NUMBER/zones/ZONE/instances/VM_ID

다음을 바꿉니다.

  • LOCATION_NAME: 대상 리소스의 리전(예: us-central1)
  • PROJECT_NUMBER: 프로젝트의 숫자 ID
  • ZONE: 영역 이름(예: us-central1-a)
  • VM_ID: VM 인스턴스의 숫자 ID

--effective 플래그를 tags bindings list 명령어에 추가하면 이 리소스에서 상속한 모든 태그 목록도 반환됩니다. 다음과 비슷한 응답이 표시됩니다.

namespacedTagKey: 961309089256/environment
namespacedTagValue: 961309089256/environment/production
tagKey: tagKeys/417628178507
tagValue: tagValues/247197504380
inherited: true

리소스에 평가된 모든 태그가 직접 연결된 경우 inherited 필드는 false이고 생략됩니다.

API

Compute Engine 인스턴스와 같은 리전별 리소스에 연결된 태그 바인딩을 나열하려면 리소스가 있는 리전별 엔드포인트가 지정된 tagBindings.list 메서드를 사용합니다. 예를 들면 다음과 같습니다.

GET https://LOCATION_NAME-cloudresourcemanager.googleapis.com/v3/tagBindings

{
    "parent": "//compute.googleapis.com/projects/PROJECT_NUMBER/zones/ZONE/instances/VM_ID"
}

다음을 바꿉니다.

  • LOCATION_NAME: 대상 리소스의 리전(예: us-central1)
  • PROJECT_NUMBER: 프로젝트의 숫자 ID
  • ZONE: 영역 이름(예: us-central1-a)
  • VM_ID: VM 인스턴스의 숫자 ID

다음 단계