방화벽에 태그 사용

태그를 리소스에 결합하거나 네트워크 방화벽 정책에 사용하기 전에 태그를 만드세요. 네트워크 액세스를 제어하기 위해 VM 인스턴스에 바인딩된 경우에만 태그가 적용됩니다.

개요는 방화벽 태그를 참조하세요.

태그에 권한 부여

tagAdmin 역할을 사용하면 새 태그를 만들거나 기존 태그를 업데이트 및 삭제할 수 있습니다. 조직 관리자는 조직 수준에서 이 역할을 부여할 수 있으며, 프로젝트 소유자는 프로젝트 수준에서 이 역할을 부여할 수 있습니다.

gcloud

  1. 사용자에게 tagAdmin 역할을 부여합니다.

    gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
       --member=user:EMAIL_ADDRESS \
       --role=roles/resourcemanager.tagAdmin
    

    다음을 바꿉니다.

    • ORGANIZATION_ID: 조직의 ID
    • EMAIL_ADDRESS: 사용자의 이메일 주소
  2. 사용자에게 tagUser 역할을 부여합니다.

    gcloud resource-manager tags keys add-iam-policy-binding ORGANIZATION_ID/TAG_KEY \
       --member=user:EMAIL_ADDRESS \
       --role=roles/resourcemanager.tagUser
    

    다음을 바꿉니다.

    • ORGANIZATION_ID: 조직의 ID
    • TAG_KEY: 태그 키
    • EMAIL_ADDRESS: 사용자의 이메일 주소

태그 관리를 위한 커스텀 역할

tagAdmin 역할을 사용하면 새 태그를 만들고, 기존 태그를 업데이트 및 삭제할 수 있습니다. 이러한 기능 중 일부가 필요한 경우 관련 권한이 있는 커스텀 IAM 역할을 만들고 새 역할을 대상 사용자에게 부여할 수 있습니다. 관련 권한 목록은 IAM 권한을 참조하세요.

방화벽 정책에 사용되는 태그는 GCE_FIREWALL 용도로 지정되어야 합니다. 태그를 네트워킹 기능에 사용하려면 GCE_FIREWALL 용도가 필요하지만 다른 작업에는 태그를 사용할 수 있습니다.

네트워크 방화벽 정책에 사용되는 태그에는 단일 VPC로 제한되는 범위가 있어야 합니다.

태그 키 및 값 만들기

태그를 네트워크 방화벽 정책에 연결하기 전에 태그 키와 값을 만들어야 합니다.

gcloud

  1. 필요한 권한을 가져온 후 태그 키를 만듭니다.

    gcloud resource-manager tags keys create TAG_KEY \
       --parent organizations/ORGANIZATION_ID \
       --purpose GCE_FIREWALL \
       --purpose-data network=PROJECT_ID/NETWORK
    

    다음을 바꿉니다.

    • TAG_KEY: 태그 키
    • ORGANIZATION_ID: 조직의 ID
    • PROJECT_ID: 프로젝트의 ID
    • NETWORK: 네트워크의 이름
  2. 관련 태그 값을 태그 키에 추가합니다. 명령어를 여러 번 실행하여 여러 값을 추가합니다. 태그 키에 추가된 각 태그 값이 고유한지 확인합니다.

    gcloud resource-manager tags values create TAG_VALUE \
       --parent ORGANIZATION_ID/TAG_KEY
    

    다음을 바꿉니다.

    • ORGANIZATION_ID: 조직의 ID
    • TAG_KEY: 태그 키
    • TAG_VALUE: 태그 키에 할당할 값

태그를 사용한 방화벽 정책 규칙 만들기

태그를 만든 후 네트워크 방화벽 정책에 태그를 사용할 수 있습니다. 특정 소스 태그 값과 대상 태그 값을 사용해 네트워크 방화벽 정책 규칙을 만들면 소스 태그와 대상 태그가 있는 VM 간의 원하는 트래픽을 허용할 수 있습니다.

gcloud

  1. 특정 소스 및 대상 키와 값을 사용하여 네트워크 방화벽 정책 규칙을 만듭니다.

    gcloud compute network-firewall-policies rules create 1 \
        --firewall-policy FIREWALL_POLICY_NAME \
        --src-secure-tags ORGANIZATION_ID/TAG_KEY/TAG_VALUE \
        --target-secure-tags ORGANIZATION_ID/TAG_KEY/TAG_VALUE \
        --direction DIRECTION \
        --action ACTION \
        --layer4-configs tcp:PORT \
        --global-firewall-policy
    

    다음을 바꿉니다.

    • FIREWALL_POLICY_NAME: 새 네트워크 전역 네트워크 방화벽 정책의 이름
    • ORGANIZATION_ID: 조직의 ID
    • TAG_KEY: 태그 키
    • TAG_VALUE: 태그 키에 할당할 값
    • DIRECTION: 규칙이 ingress 또는 egress 규칙인지를 나타냄
    • ACTION: 다음 작업 중 하나입니다.
      • allow: 규칙과 일치하는 연결을 허용합니다.
      • deny: 규칙과 일치하는 연결을 거부합니다.
      • goto_next: 계층 구조의 다음 수준(폴더 또는 네트워크)으로 연결 평가를 전달합니다.
    • PORT: 리소스에 액세스할 포트 번호

VM 인스턴스에 태그 바인딩

태그 관리자는 개별 VM 인스턴스에 태그를 바인딩할 수 있습니다.

태그를 리소스에 바인딩하면 태그 값이 리소스에 연결됩니다. 태그 하나에 지정된 키의 값이 여러 개 있을 수 있지만 태그 키당 하나의 값만 리소스에 바인딩할 수 있습니다. 예를 들어 web-backendmysql 태그 값을 동일한 VM 인스턴스에 바인딩할 수 없습니다. 이들은 같은 태그 키 vm-function에 속하기 때문입니다.

예를 들어 개발자인 사샤는 API 백엔드와 지원 데이터베이스 저장소로 구성된 애플리케이션을 설정하려고 합니다. 백엔드와 데이터베이스 서버 간의 트래픽을 허용하려면 사샤가 web-backendmysql 태그 값을 다른 VM에 바인딩해야 합니다.

gcloud

  1. tagUser 역할을 부여합니다.

    gcloud resource-manager tags keys add-iam-policy-binding ORGANIZATION_ID/TAG_KEY \
       --member=user:EMAIL_ADDRESS \
       --role=roles/resourcemanager.tagUser
    

    다음을 바꿉니다.

    • ORGANIZATION_ID: 조직의 ID
    • TAG_KEY: 태그 키
    • EMAIL_ADDRESS: 사용자의 이메일 주소

    이 명령어에서 사용자는 키의 모든 현재 및 미래 값을 사용할 수 있습니다. 다음과 같이 특정 태그 값에만 액세스 권한을 선택적으로 부여할 수도 있습니다.

    gcloud resource-manager tags values add-iam-policy-binding ORGANIZATION_ID/TAG_KEY/TAG_VALUE \
       --member=user:EMAIL_ADDRESS \
       --role=roles/resourcemanager.tagUser
    

    다음을 바꿉니다.

    • ORGANIZATION_ID: 조직의 ID
    • TAG_KEY: 태그 키
    • TAG_VALUE: 태그 키에 할당할 값
    • EMAIL_ADDRESS: 사용자의 이메일 주소
  2. 태그를 바인딩할 리소스에 tagUser 역할을 부여합니다.

    gcloud projects add-iam-policy-binding PROJECT_NAME \
       --member=user:EMAIL_ADDRESS \
       --role=roles/resourcemanager.tagUser
    

    다음을 바꿉니다.

    • PROJECT_NAME: 프로젝트의 이름
    • EMAIL_ADDRESS: 사용자의 이메일 주소
  3. 태그 키-값 쌍에 대해 PARENT 값을 가져옵니다.

    1. 프로젝트 및 영역의 전체 이름 프리픽스를 가져옵니다.

      FULL_NAME_PREFIX=//compute.googleapis.com/projects/PROJECT_NUMBER/zones/ZONE/instances/
      
    2. VM ID를 가져옵니다.

      VM_ID=$(gcloud compute instances describe VM_NAME --format='value(id)')
      
    3. FULL_NAME_PREFIXVM_ID 값을 연결합니다.

      PARENT="$FULL_NAME_PREFIX$VM_ID"
      

    다음을 바꿉니다.

    • PROJECT_NUMBER: 프로젝트 수입니다.
    • ZONE: VM이 있는 영역입니다.
    • VM_NAME: 작업할 VM의 이름입니다.
  4. 바인딩을 나열합니다.

    gcloud resource-manager tags bindings list \
       --location LOCATION_NAME \
       --parent PARENT
    

    다음을 바꿉니다.

    • LOCATION_NAME: 태그가 속한 위치
    • PARENT: 바인딩에 결된 전체 리소스 이름
  5. 바인딩을 삭제하고 만드세요.

    gcloud resource-manager tags bindings delete \
       --location LOCATION_NAME \
       --tag-value ORGANIZATION_ID/TAG_KEY/TAG_VALUE \
       --parent PARENT
    
    gcloud resource-manager tags bindings create \
       --location LOCATION_NAME \
       --tag-value ORGANIZATION_ID/TAG_KEY/TAG_VALUE \
       --parent PARENT
    

    다음을 바꿉니다.

    • LOCATION_NAME: 태그가 속한 위치
    • ORGANIZATION_ID: 조직의 ID
    • TAG_KEY: 태그 키
    • TAG_VALUE: 태그 키의 값
    • PARENT: 태그 값에 연결할 리소스의 전체 리소스 이름

피어링된 네트워크에서 태그 사용

네트워크 피어링에서 태그를 사용할 수 있습니다. 피어링된 두 네트워크에서 태그를 사용하려면 지정된 순서에 따라 다음 작업을 수행하세요.

  1. 각기 다른 피어 네트워크에 있는 두 사용자에게 tagAdmin 역할을 할당합니다. 조직 관리자는 조직 수준에서 사용자에게 tagAdmin 역할을 부여하고 프로젝트 소유자는 프로젝트 수준에서 이 역할을 부여할 수 있습니다.
  2. 첫 번째 네트워크 사용자가 첫 번째 네트워크에 태그 키와 값을 만들게 합니다.
  3. 두 번째 네트워크 사용자가 두 번째 네트워크에 태그 키와 값을 만들게 합니다.
  4. 두 사용자에게 두 네트워크 모두에 태그를 결합하는 데 필요한 권한을 부여합니다.
  5. 첫 번째 네트워크의 사용자 및 리소스에 태그를 결합합니다.
  6. 두 번째 네트워크의 사용자 및 리소스에 태그를 결합합니다.
  7. 두 번째 네트워크의 사용자에게 첫 번째 네트워크의 tagUser 권한을 부여합니다.
  8. 첫 번째 네트워크의 사용자에게 두 번째 네트워크의 tagUser 권한을 부여합니다.
  9. 첫 번째 네트워크에 방화벽 정책 규칙을 만듭니다.
  10. 두 번째 네트워크에 방화벽 정책 규칙을 만듭니다.

다음 단계