IAM 적용 태그가 있는 계층적 방화벽 정책

1. 소개

Cloud Next Generation Firewall (NGFW)

Cloud Next Generation Firewall은 고급 보호 기능, 마이크로 세분화, 광범위한 적용 범위를 갖춘 완전 분산형 방화벽 서비스로, 내부 및 외부 공격으로부터 Google Cloud 워크로드를 보호합니다.

Cloud NGFW에는 다음과 같은 이점이 있습니다.

  • 분산형 방화벽 서비스: Cloud NGFW는 각 워크로드에 스테이트풀(Stateful) 완전 분산형 호스트 기반 시행을 제공하여 제로 트러스트 보안 아키텍처를 사용 설정합니다.
  • 구성 및 배포 간소화: Cloud NGFW는 리소스 계층 구조 노드에 연결할 수 있는 네트워크 및 계층식 방화벽 정책을 구현합니다. 이러한 정책은 Google Cloud 리소스 계층 구조에서 일관된 방화벽 환경을 제공합니다.
  • 세밀한 제어 및 마이크로 세분화: 방화벽 정책과 Identity and Access Management (IAM)에서 관리하는 태그를 함께 사용하면 가상 프라이빗 클라우드 (VPC) 네트워크 전체에서 단일 VM까지 North-South 트래픽과 East-West 트래픽에 대한 세밀한 제어를 수행할 수 있습니다.

네트워크 방화벽 정책

네트워크 방화벽 정책은 방화벽 규칙의 컨테이너 역할을 합니다. 네트워크 방화벽 정책에 정의된 규칙은 정책이 VPC 네트워크와 연결될 때까지 어디에도 적용되지 않습니다. 각 VPC 네트워크에는 하나의 네트워크 방화벽 정책을 연결할 수 있습니다. 네트워크 방화벽 정책은 방화벽 규칙에서 IAM 제어 태그 (또는 태그)를 지원하며 워크로드에 ID를 제공하는 데 사용할 수 있습니다.

네트워크 간에 네트워크 방화벽 정책을 공유하고 IAM 적용 태그와 통합하면 방화벽의 구성 및 관리가 크게 간소화됩니다.

네트워크 방화벽 정책이 도입됨에 따라 이제 Google Cloud의 방화벽 정책은 다음 구성요소로 구성됩니다.

  1. 계층식 방화벽 정책
  2. VPC 방화벽 규칙
  3. 전역 네트워크 방화벽 정책리전 네트워크 방화벽 정책

계층식 방화벽 정책은 리소스 계층 구조 내의 조직 및 폴더 노드에서 지원되는 반면 VPC 방화벽 규칙과 네트워크 방화벽 정책은 VPC 수준에서 적용됩니다. VPC 방화벽 규칙과 네트워크 방화벽 정책의 큰 차이점은 VPC 방화벽 규칙은 단일 VPC 네트워크에만 적용할 수 있는 반면 네트워크 방화벽 정책은 일괄 업데이트와 같은 다른 이점과 함께 단일 VPC 또는 VPC 그룹에 연결할 수 있다는 것입니다.

이 실습에서는 계층식 방화벽 정책과 전역 네트워크 방화벽 정책을 테스트합니다.

마지막으로 모든 VPC 네트워크에 포함된 묵시적 방화벽 규칙도 있습니다.

  • 작업이 허용이고 대상이 0.0.0.0/0인 이그레스 규칙
  • 작업이 거부이고 소스가 0.0.0.0/0인 인그레스 규칙

기본적으로 시행 순서는 다음 다이어그램에 나와 있습니다.

86df8f0d19c64e80.png

IAM 적용 태그

새로운 방화벽 정책 규칙에 통합된 태그는 Google Cloud 리소스 계층 구조의 조직 또는 프로젝트 수준에서 정의된 키-값 쌍 리소스입니다. 이러한 태그에는 이름에서 알 수 있듯이 태그에서 누가 어떤 작업을 할 수 있는지 지정하는 IAM 액세스 제어가 포함되어 있습니다. 예를 들어 IAM 권한을 사용하면 태그에 값을 할당할 수 있는 주 구성원과 리소스에 태그를 연결할 수 있는 주 구성원을 지정할 수 있습니다. 태그가 리소스에 적용되면 방화벽 정책 규칙에서 태그를 사용하여 트래픽을 허용하거나 거부할 수 있습니다.

태그는 Google Cloud의 상속 리소스 모델을 따르므로 태그와 해당 값은 상위 요소에서 계층 구조를 통해 전달됩니다. 따라서 한 위치에서 태그를 만든 다음 리소스 계층 구조 전체에서 다른 폴더와 프로젝트에서 사용할 수 있습니다. 태그 및 액세스 제한에 대한 자세한 내용은 이 페이지를 참고하세요.

태그는 네트워크 태그와 혼동해서는 안 됩니다. 네트워크 태그는 Compute Engine 인스턴스에 추가할 수 있는 문자열로, 인스턴스와 연결되어 인스턴스가 폐기되면 사라집니다. VPC 방화벽 규칙에는 네트워크 태그가 포함될 수 있지만 클라우드 리소스로 간주되지 않으므로 IAM 액세스 제어가 적용되지 않습니다. 차이점에 대한 자세한 내용은 이 페이지를 참고하세요.

2. 학습할 내용

  • Cloud NGFW 및 전역 범위와 함께 사용할 IAM 관리 태그를 만드는 방법
  • VM에 태그를 연결하는 방법
  • 계층식 방화벽 정책을 만들고 폴더와 연결하는 방법
  • 계층식 방화벽 정책에서 방화벽 규칙을 만들고 IAM 적용 태그를 사용하여 소스와 대상을 지정하는 방법

3. 전체 실습 아키텍처

1bfe78ad755496e5.png

조직 및 폴더:

  • 조직 바로 아래에 folder1folder2이라는 두 개의 폴더를 만듭니다.

프로젝트:

  • folder1 내부에 호스트 프로젝트를 만듭니다. 이 프로젝트에는 공유 VPC 네트워크가 포함됩니다.
  • folder2 내에서 서비스 프로젝트를 만듭니다. 이 프로젝트에는 공유 VPC를 사용하는 VM이 포함됩니다.

네트워킹:

  • mynet라는 이름의 VPC 네트워크가 호스트 프로젝트에 생성되고 공유 VPC로 구성됩니다. 이를 통해 서비스 프로젝트의 리소스가 네트워크를 사용할 수 있습니다.
  • 서비스 프로젝트에 VM 2개가 생성되고 mynet 공유 VPC에 연결됩니다.

IAM 적용 태그:

  • 조직 수준에서 이름이 http_serverhttp_client인 두 개의 값이 있는 IAM 관리 태그 http_tags를 만듭니다. 이러한 태그/값은 VM을 식별하고 VM에 방화벽 규칙을 적용하는 데 사용됩니다.

방화벽 정책:

  • 계층식 방화벽 정책이 생성되고 folder1와 연결됩니다. 이 정책 내의 규칙은 IAM 관리 태그를 사용하여 포트 80에서 http-client에서 http-server로의 트래픽을 허용합니다.
  • 호스트 프로젝트에 네트워크 방화벽 정책이 생성되고 mynet VPC와 연결됩니다. 이 정책에는 테스트 목적으로 VM에 대한 IAP SSH 액세스를 허용하는 규칙이 포함됩니다.

4. 준비 단계

먼저 Google Cloud 조직에서 필요한 IAM 역할, 네트워크 인프라, 인스턴스를 설정합니다.

실습을 진행하는 데 필요한 IAM 역할

먼저 조직 수준에서 GCP 계정에 필수 IAM 역할을 할당합니다.

  • 조직 관리자 (roles/resourcemanager.organizationAdmin): 이 역할을 사용하면 조직, 폴더, 프로젝트의 IAM 정책을 관리하고 조직 정책을 볼 수 있습니다.
  • 태그 관리자(roles/resourcemanager.tagAdmin): 이 역할을 사용하면 보안 태그를 만들고, 업데이트하고, 삭제할 수 있습니다.
  • 태그 사용자 역할 (roles/resourcemanager.tagUser): 이 역할을 사용하면 보안 태그 목록에 액세스하고 리소스와의 연결을 관리할 수 있습니다.
  • Compute 조직 방화벽 정책 관리자 역할 (roles/compute.orgFirewallPolicyAdmin): 이 역할은 Compute Engine 조직 방화벽 정책을 관리할 수 있는 전체 권한을 제공합니다.
  • Compute 조직 리소스 관리자 역할 (roles/compute.orgSecurityResourceAdmin): 이 역할은 Compute Engine 방화벽 정책과 조직 또는 폴더의 연결을 관리할 수 있는 전체 권한을 제공합니다.
  • Compute 네트워크 관리자 (roles/compute.networkAdmin): 이 역할은 Compute Engine 네트워킹 리소스를 완전히 제어할 수 있는 권한을 부여합니다.
  • Compute 인스턴스 관리자( 베타) (roles/compute.instanceAdmin): 이 역할은 Compute Engine 인스턴스 리소스를 관리할 수 있는 전체 권한을 제공합니다.
  • 로깅 관리자 (roles/logging.admin): 이 역할은 모든 로깅 권한 및 종속 권한에 대한 액세스 권한을 부여합니다.
  • 서비스 계정 관리자 (roles/iam.serviceAccountAdmin): 이 역할을 사용하면 서비스 계정을 만들고 관리할 수 있습니다.
  • 서비스 사용량 관리자 (roles/serviceusage.serviceUsageAdmin): 이 역할은 서비스 상태를 사용 설정, 중지, 검사하고, 작업을 검사하고, 소비자 프로젝트의 할당량과 결제를 사용할 수 있는 권한을 제공합니다.
  • Compute 공유 VPC 관리자 (roles/compute.xpnAdmin): 이 역할을 사용하면 공유 VPC 네트워크 (XPN)를 관리할 수 있습니다.

폴더 및 프로젝트 만들기

Cloud Shell 내에서 다음을 실행하여 folder1folder2를 만듭니다.

gcloud auth login

export org_id=$(gcloud organizations list --format='value(ID)')
export BILLING_ACCOUNT_ID=$(gcloud billing accounts list --format='value(ACCOUNT_ID)')
export folder1=[FOLDER1 NAME]
export folder2=[FOLDER2 NAME]
export hostproject=[HOST PROJECT NAME]
export serviceproject=[SERVICE PROJECT NAME]
export regionname=[REGION NAME]
export zonename=[COMPUTE ZONE NAME]

gcloud resource-manager folders create --display-name=$folder1 --organization=$org_id
export folder1_id=$(gcloud resource-manager folders list --organization=$org_id --filter="displayName=$folder1" --format="value(ID)")
gcloud resource-manager folders create --display-name=$folder2 --organization=$org_id
export folder2_id=$(gcloud resource-manager folders list --organization=$org_id --filter="displayName=$folder2" --format="value(ID)")

Cloud Shell 내에서 다음을 실행하여 folder1 아래에 호스트 프로젝트를 만듭니다.

gcloud projects create  --name=$hostproject --folder=$folder1_id

다음과 같이 표시됩니다. Y를 눌러 새 프로젝트 ID로 프로젝트를 만듭니다.

No project ID provided.

Use [NEW-PROJECT-ID] as project ID (Y/n)?

프로젝트 ID를 기록해 둡니다. Cloud Shell 내에서 다음을 실행하여 hostproject_id로 내보냅니다.

export hostproject_id=[HOSTPROJECT ID]

Cloud Shell에서 다음을 실행하여 호스트 프로젝트를 결제 계정에 연결합니다.

gcloud billing projects link $hostproject_id \
--billing-account=$BILLING_ACCOUNT_ID

Cloud Shell 내에서 다음을 실행하여 folder2 아래에 서비스 프로젝트를 만듭니다.

gcloud projects create  --name=$serviceproject --folder=$folder2_id

다음과 같이 표시됩니다. Y를 눌러 새 프로젝트 ID로 프로젝트를 만듭니다.

No project ID provided.

Use [NEW-PROJECT-ID] as project ID (Y/n)?

프로젝트 ID를 기록해 둡니다. Cloud Shell 내에서 다음을 실행하여 serviceproject_id로 내보냅니다.

export serviceproject_id=[SERVICEPROJECT ID]

Cloud Shell 내에서 다음을 실행하여 서비스 프로젝트를 결제 계정에 연결합니다.

gcloud billing projects link $serviceproject_id \
--billing-account=$BILLING_ACCOUNT_ID

IAM 적용 태그 만들기

태그는 조직, 폴더 또는 프로젝트에 연결할 수 있는 키-값 쌍입니다. 자세한 내용은 태그 만들기 및 관리필요한 권한을 참고하세요.

조직 수준에서 태그 하나를 만듭니다(http-tags). 태그의 용도는 Cloud NGFW를 사용하는 것입니다. 범위를 단일 네트워크로 제한하지 않습니다. 태그는 전역 범위입니다. 나중에 folder2 아래의 서비스 프로젝트에서 생성된 VM에 태그를 적용합니다.

Cloud Shell 내에서 다음을 실행합니다.

gcloud resource-manager tags keys create http_tags \
    --parent=organizations/$org_id \
    --purpose GCE_FIREWALL \
    --purpose-data organization=auto

태그 키 ID는 생성 중에 VM에 주석을 추가하는 데 사용됩니다. Cloud Shell 내에서 다음을 실행하여 태그 키 ID를 가져옵니다.

export http_tags_id=$(gcloud resource-manager tags keys describe $org_id/http_tags --format="value(name)")
echo $http_tags_id

Cloud Shell 내에서 다음을 실행하여 두 개의 새 태그 값 http_serverhttp_client를 만듭니다.

 gcloud resource-manager tags values create http_server \
      --parent $org_id/http_tags
 gcloud resource-manager tags values create http_client \
      --parent $org_id/http_tags

생성 중에 태그 ID와 태그 값 ID를 사용하여 VM에 주석을 답니다. Cloud Shell 내에서 다음을 실행하여 http_serverhttp_client의 태그 값 ID를 가져옵니다.

export http_tags_http_server_id=$(gcloud resource-manager tags values describe $org_id/http_tags/http_server --format="value(name)")
echo $http_tags_http_server_id

export http_tags_http_client_id=$(gcloud resource-manager tags values describe $org_id/http_tags/http_client --format="value(name)")
echo $http_tags_http_client_id

호스트 프로젝트 및 서비스 프로젝트에서 API 사용 설정

Cloud Shell 내에서 다음을 실행합니다.

gcloud services enable compute.googleapis.com --project=$serviceproject_id
gcloud services enable compute.googleapis.com --project=$hostproject_id

호스트 프로젝트에서 VPC 만들기

호스트 프로젝트에서 커스텀 서브넷 모드로 VPC 네트워크를 만들려면 Cloud Shell에서 다음을 실행하세요.

gcloud compute networks create mynet \
    --subnet-mode=custom \
    --project=$hostproject_id

호스트 프로젝트에서 서브넷 만들기

Cloud Shell 내에서 다음을 실행하여 IPV4 서브넷을 만듭니다.

gcloud compute networks subnets create mysubnet \
    --network=mynet \
    --range=10.0.0.0/28 \
    --region=$regionname \
    --project=$hostproject_id

호스트 프로젝트에서 공유 VPC 사용 설정

Cloud Shell에서 다음을 실행하여 호스트 프로젝트에서 공유 VPC를 사용 설정합니다.

gcloud compute shared-vpc enable $hostproject_id

호스트 프로젝트에서 공유 VPC의 서비스 프로젝트 연결

Cloud Shell에서 다음을 실행하여 호스트 프로젝트에 공유 VPC용 서비스 프로젝트를 연결합니다.

gcloud compute shared-vpc associated-projects add $serviceproject_id --host-project=$hostproject_id 

호스트 프로젝트에서 Cloud Router 및 Cloud NAT 만들기

Cloud NAT는 VM이 애플리케이션을 다운로드하고 설치할 수 있도록 인터넷 이그레스를 허용하는 데 사용됩니다.

gcloud compute routers create $regionname-cr \
   --network=mynet \
   --region=$regionname \
   --project=$hostproject_id
gcloud compute routers nats create $regionname-nat \
    --router=$regionname-cr \
    --region=$regionname \
    --nat-all-subnet-ip-ranges \
    --auto-allocate-nat-external-ips \
    --project=$hostproject_id

서비스 프로젝트에서 인스턴스 만들기

서비스 프로젝트에서 호스트 프로젝트의 공유 VPC에서 방금 만든 서브넷에 인스턴스 두 개를 만듭니다. 한 인스턴스의 이름은 http-server이고 http_tags의 태그에 http_server 값을 주석으로 추가합니다. 다른 인스턴스의 이름은 http-client이며 http_tags 태그에 http_client 값을 주석으로 추가합니다. Cloud Shell에서 다음 명령어를 실행합니다.

gcloud compute instances create http-client \
    --project=$serviceproject_id \
   --subnet=projects/$hostproject_id/regions/$regionname/subnetworks/mysubnet \
    --zone=$zonename \
    --no-address \
    --resource-manager-tags=$http_tags_id=$http_tags_http_client_id

gcloud compute instances create http-server \
    --project=$serviceproject_id \
    --subnet=projects/$hostproject_id/regions/$regionname/subnetworks/mysubnet \
    --zone=$zonename \
    --no-address \
    --resource-manager-tags=$http_tags_id=$http_tags_http_server_id \
    --metadata startup-script='#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    a2enmod ssl
    sudo a2ensite default-ssl
    echo "I am a Http Server." | \
    tee /var/www/html/index.html
    systemctl restart apache2'

http-server의 내부 IP를 기록해 둡니다. 이 IP 주소는 나중에 방화벽 규칙 테스트 단계에서 사용합니다.

export http_server_ip=$(gcloud compute instances describe http-server --zone $zonename --format='value(networkInterfaces[0].networkIP)' --project $serviceproject_id)
echo $http_server_ip

5. 호스트 프로젝트에서 전역 네트워크 방화벽 정책 만들기

호스트 프로젝트에 전역 네트워크 방화벽 정책을 만들고 호스트 프로젝트의 공유 VPC와 연결합니다.

gcloud config set project $hostproject_id
gcloud compute network-firewall-policies create  mynet-fw-policy \
--global \
--project=$hostproject_id
gcloud compute network-firewall-policies associations create \
    --firewall-policy=mynet-fw-policy \
    --network=mynet \
    --name=mynet-fw-policy \
    --global-firewall-policy \
    --project=$hostproject_id

IAP가 VM 인스턴스에 연결하도록 하려면 네트워크 방화벽 정책에서 방화벽 규칙을 만드세요.

  • IAP를 사용하여 액세스할 수 있는 모든 VM 인스턴스에 적용됩니다.
  • IP 범위 35.235.240.0/20에서의 인그레스 트래픽을 허용합니다. 이 범위에는 IAP가 TCP 전달을 위해 사용하는 모든 IP 주소가 포함됩니다.
gcloud compute network-firewall-policies rules create 1000 \
    --action=ALLOW \
    --firewall-policy=mynet-fw-policy \
    --description="mynet-allow-iap" \
    --direction=INGRESS \
    --src-ip-ranges=35.235.240.0/20 \
    --layer4-configs=tcp:22  \
    --global-firewall-policy \
    --project=$hostproject_id

콘솔에서 호스트 프로젝트로 이동하여 방화벽 정책 아래에서 새로 생성된 전역 네트워크 방화벽 정책을 찾을 수 있습니다. 네트워크 방화벽 정책에서 새로 생성된 방화벽 규칙을 확인할 수 있습니다. 콘솔 링크를 통해 콘솔로 이동할 수 있습니다. 콘솔에서 프로젝트 선택기를 호스트 프로젝트로 변경해야 합니다.

6. http-client VM에서 http-server VM으로의 액세스 테스트

http-client라는 VM에 SSH로 연결하고 http 80 포트에서 http-server에 액세스할 수 있는지 테스트합니다.

Cloud Shell 내에서 다음을 실행합니다.

gcloud compute ssh \
    --zone=$zonename "http-client" \
    --tunnel-through-iap \
    --project=$serviceproject_id

curl을 사용하여 웹 서버에 액세스합니다.

curl -m 10 [http_server_ip]

curl 명령어 결과가 표시됩니다. http-server의 포트 80을 허용하는 인그레스 방화벽 규칙이 없습니다.

10000밀리초 후에 연결 시간이 초과되었습니다.

SSH 세션을 종료하여 Cloud Shell로 돌아갑니다.

exit

7. 계층식 방화벽 정책 및 방화벽 규칙 만들기

folder1에서 계층식 방화벽 정책을 만들고 folder1에 정책을 연결합니다. 정책의 방화벽 규칙은 folder1 아래의 호스트 프로젝트에 적용됩니다.

계층식 방화벽 정책 만들기

gcloud compute firewall-policies create \
  --folder=$folder1_id \
  --short-name=my-folder1-fw-policy

계층식 방화벽 정책에서 방화벽 규칙 만들기

이 규칙을 사용하면 태그 값이 http_tags/http_client인 VM이 tcp 포트 80에서 태그 값이 http_tags/http_server인 VM에 액세스할 수 있습니다.

gcloud compute firewall-policies rules create 100 \
  --organization=$org_id \
  --firewall-policy my-folder1-fw-policy \
  --direction=INGRESS \
  --layer4-configs=tcp:80 \
  --action=allow \
  --src-secure-tags=$org_id/http_tags/http_client \
  --target-secure-tags=$org_id/http_tags/http_server \
  --description=folder1-allow-http

계층식 방화벽 정책을 folder1과 연결

gcloud compute firewall-policies associations create \
   --firewall-policy=my-folder1-fw-policy \
   --folder=$folder1_id \
   --name=my-folder1-fw-policy\
   --organization=$org_id

콘솔에서 folder1로 이동하여 방화벽 정책 아래에서 새로 생성된 계층적 방화벽 정책을 찾을 수 있습니다. 방화벽 정책이 '이 폴더에 있는 방화벽 정책'에 표시됩니다. 계층식 방화벽 정책에서 새로 생성된 방화벽 규칙을 확인할 수 있습니다. 콘솔 링크를 통해 콘솔로 이동할 수 있습니다. 콘솔에서 프로젝트 선택기를 folder1로 변경해야 합니다.

8. http-client VM에서 http-server VM으로의 액세스 테스트

호스트 프로젝트의 공유 VPC에 적용된 유효 방화벽 정책을 확인합니다.

Cloud Shell 내에서 다음을 실행합니다.

gcloud compute networks get-effective-firewalls mynet --project=$hostproject_id

상속된 계층식 방화벽 정책은 다음과 같이 표시됩니다.

TYPE: org-firewall
FIREWALL_POLICY_NAME: <NUMBER_FOR_YOUR_FW_POLICY>
FIREWALL_POLICY_PRIORITY: 
PRIORITY: 100
ACTION: ALLOW
DIRECTION: INGRESS
DISABLED: False
IP_RANGES:

You will see the network firewall policy to the VPC like this:
TYPE: network-firewall-policy
FIREWALL_POLICY_NAME: mynet-fw-policy
FIREWALL_POLICY_PRIORITY: 1000
PRIORITY: 1000
ACTION: ALLOW
DIRECTION: INGRESS
DISABLED: False
IP_RANGES: 35.235.240.0/20

http-client라는 VM에 SSH로 연결하고 http 80 포트에서 http-server에 액세스할 수 있는지 테스트합니다.

Cloud Shell 내에서 다음을 실행합니다.

gcloud compute ssh \
    --zone=$zonename "http-client" \
    --tunnel-through-iap \
    --project=$serviceproject_id

curl을 사용하여 웹 서버에 액세스합니다.

curl [http_server_ip]

curl 명령어가 http-server에서 응답을 성공적으로 반환합니다.

I am a Http Server.

계층적 방화벽 정책의 인그레스 방화벽 규칙은 포트 80에서 http-client에서 http-server로의 액세스를 허용합니다.

SSH 세션을 종료하여 Cloud Shell로 돌아갑니다.

exit

9. 삭제

서비스 프로젝트에서 VM 정리

Cloud Shell 내에서 다음을 실행합니다.

gcloud compute instances delete http-server --zone $zonename --project=$serviceproject_id
gcloud compute instances delete http-client --zone $zonename --project=$serviceproject_id

계층식 방화벽 정책 정리

Cloud Shell 내에서 다음을 실행합니다.

gcloud compute firewall-policies associations delete my-folder1-fw-policy \
   --firewall-policy=my-folder1-fw-policy \
   --organization=$org_id
gcloud compute firewall-policies rules delete 100 \
  --organization=$org_id \
  --firewall-policy=my-folder1-fw-policy
gcloud compute firewall-policies delete my-folder1-fw-policy \
  --organization=$org_id

조직 수준에서 태그 정리

Cloud Shell 내에서 다음을 실행합니다.

gcloud resource-manager tags values delete $http_tags_http_server_id
gcloud resource-manager tags values delete $http_tags_http_client_id
gcloud resource-manager tags keys delete $http_tags_id

호스트 프로젝트 정리

Cloud Shell 내에서 다음을 실행합니다.

gcloud compute shared-vpc associated-projects remove $serviceproject_id --host-project=$hostproject_id 
gcloud compute shared-vpc disable $hostproject_id
gcloud projects delete $hostproject_id

서비스 프로젝트 정리

Cloud Shell 내에서 다음을 실행합니다.

gcloud projects delete $serviceproject_id

폴더 정리

Cloud Shell 내에서 다음을 실행합니다.

gcloud resource-manager folders delete $folder1_id
gcloud resource-manager folders delete $folder2_id

10. 축하합니다

IAM 적용 태그를 사용하여 계층식 방화벽 정책을 성공적으로 테스트했습니다.