가상 프라이빗 클라우드(VPC) 방화벽 규칙에는 네트워크 태그 및 소스 서비스 계정이 포함될 수 있습니다. 네트워크 태그 및 소스 서비스 계정이 포함된 VPC 방화벽 규칙을 전역 네트워크 방화벽 정책으로 마이그레이션하려면 다음 태스크를 실행합니다.
- 환경 평가
- 기존 네트워크 태그 및 서비스 계정 나열
- 각 네트워크 태그 및 소스 서비스 계정의 태그 만들기
- 생성한 태그에 네트워크 태그 및 서비스 계정 매핑
- 가상 머신(VM) 인스턴스에 태그 바인딩
- VPC 방화벽 규칙을 전역 네트워크 방화벽 정책으로 마이그레이션합니다.
- 새 네트워크 방화벽 정책 검토
- 마이그레이션 후 태스크 완료
시작하기 전에
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Compute 보안 관리자 역할(
roles/compute.securityAdmin
)이 있는지 확인합니다.
환경 평가
VPC 방화벽 규칙을 전역 네트워크 방화벽 정책으로 마이그레이션하기 전에 기존 환경과 Identity and Access Management(IAM) 역할 및 권한을 평가합니다.
- VPC 네트워크에서 VPC 방화벽 규칙 수를 확인합니다.
- 각 VPC 방화벽 규칙과 연결된 우선순위를 기록합니다.
- 전역 네트워크 방화벽 정책을 생성, 연결, 수정, 보기위해 필요한 IAM 역할 및 권한이 있는지 확인합니다.
보안 태그 정의를 생성, 업데이트, 삭제하는 데 필요한 IAM 역할 및 권한이 있는지 확인합니다.
다음 표에는 태그를 만들고 관리하는 데 필요한 다양한 역할이 요약되어 있습니다.
역할 이름 실행된 태스크 태그 관리자 역할( roles/resourcemanager.tagAdmin
)태그 정의를 생성, 업데이트, 삭제합니다. 자세한 내용은 태그 관리를 참조하세요. 태그 뷰어 역할( roles/resourcemanager.tagViewer
)태그 정의 및 리소스에 연결된 태그를 봅니다. 태그 사용자 역할( roles/resourcemanager.tagUser
)리소스에 연결된 태그를 추가 및 삭제합니다.
기존 네트워크 태그 및 서비스 계정 나열
VPC 방화벽 규칙에서 네트워크 태그 또는 서비스 계정을 사용하는지 확인하고 JSON 파일을 만들어 기존 네트워크 태그 및 서비스 계정의 세부정보를 저장합니다.
네트워크의 네트워크 태그와 서비스 계정을 매핑 JSON 파일로 내보내려면 --export-tag-mapping
플래그 및 함께 compute firewall-rules migrate
명령어를 사용합니다.
gcloud beta compute firewall-rules migrate \ --source-network=NETWORK_NAME \ --export-tag-mapping \ --tag-mapping-file=TAG_MAPPING_FILE
다음을 바꿉니다.
NETWORK_NAME
: 마이그레이션하려는 VPC 방화벽 규칙이 포함된 VPC 네트워크의 이름입니다.TAG_MAPPING_FILE
: 매핑 JSON 파일의 이름입니다.
VPC 방화벽 규칙에 서비스 계정만 포함된 경우 생성된 JSON 파일에는 서비스 계정만 포함됩니다. 마찬가지로 VPC 방화벽 규칙에 네트워크 태그만 포함된 경우 생성된 JSON 파일에는 네트워크 태그만 포함됩니다. 서비스 계정에는 sa
프리픽스가 붙고 네트워크 태그에는 프리픽스가 붙지 않습니다.
예를 들어 생성된 다음 JSON 파일에는 네트워크 태그 sql-server
와 서비스 계정 example@example.com
이 포함되어 있습니다.
{"sql-server": null, "sa:example@example.com": null}
태그 만들기
매핑 파일에 나열된 네트워크 태그와 소스 서비스 계정을 기준으로 네트워크에서 해당하는 보안 태그를 만들어야 합니다.
새 보안 태그는 네트워크 태그와 서비스 계정을 대체하며 마이그레이션 후 원래 네트워크 구성을 유지합니다.
태그 관리자 역할이 있는 주 구성원으로 각 네트워크 태그 및 서비스 계정에 대해 보안 태그 키-값 쌍을 만듭니다.
gcloud resource-manager tags keys create TAG_KEY \ --parent organizations/ORGANIZATION_ID \ --purpose GCE_FIREWALL \ --purpose-data network=PROJECT_ID/NETWORK_NAME gcloud resource-manager tags values create TAG_VALUE \ --parent ORGANIZATION_ID/TAG_KEY
다음을 바꿉니다.
TAG_KEY
: 태그 키의 이름입니다.ORGANIZATION_ID
: 조직의 IDPROJECT_ID
: 프로젝트의 ID입니다.NETWORK_NAME
: VPC 네트워크의 이름입니다.TAG_VALUE
: 태그 키에 할당할 값입니다.
예를 들어 sql-server
라는 네트워크 태그가 포함된 VPC 방화벽 규칙이 있으면 해당하는 보안 태그 키-값 쌍 sql-server:production
을 만듭니다.
gcloud resource-manager tags keys create sql-server \ --parent organizations/123456 \ --purpose GCE_FIREWALL \ --purpose-data network=test-project/test-network gcloud resource-manager tags values create production \ --parent 123456/sql-server
네트워크 태그 및 서비스 계정을 태그에 매핑
VPC 방화벽 규칙에서 사용하는 각 네트워크 태그와 서비스 계정에 대해 IAM 적용 보안 태그를 만든 후에는 매핑 JSON 파일에서 해당하는 네트워크 태그 와 서비스 계정에 태그를 매핑해야 합니다.
JSON 파일을 수정하여 네트워크 태그와 서비스 계정을 해당하는 보안 태그에 매핑합니다.
{"sql-server": "tagValues/yyyyy", "sa:example@example.com": "tagValues/zzzzz"}
예를 들어 다음 JSON 파일은 네트워크 태그 sql-server
를 sql-server
키의 태그 값에 매핑하고 서비스 계정 example@example.com
을 example@example.com
키의 태그 값에 매핑합니다.
{"sql-server": "tagValues/production", "sa:example@example.com": "tagValues/example"}
VM에 태그 바인딩
태그 매핑 JSON 파일에 따라 새로 만든 보안 태그를 기존 네트워크 태그가 연결된 VM에 바인딩합니다.
태그 관리자 역할이 있는 주 구성원은 다음을 실행합니다.
- 필요한 권한을 검토하여 Google Cloud 리소스에 보안 태그를 연결합니다.
- 보안 태그를 사용하고 태그를 VM에 바인딩하는 주체에 태그 사용자 역할을 할당합니다.
태그 사용자 역할을 가진 사용자는
--bind-tags-to-instances
플래그와 함께compute firewall-rules migrate
명령어를 사용합니다.gcloud beta compute firewall-rules migrate \ --source-network=NETWORK_NAME \ --bind-tags-to-instances \ --tag-mapping-file=TAG_MAPPING_FILE
다음을 바꿉니다.
NETWORK_NAME
: VPC 네트워크의 이름입니다.TAG_MAPPING_FILE
: 매핑 JSON 파일의 이름입니다.
VPC 방화벽 규칙을 전역 네트워크 방화벽 정책으로 마이그레이션
VPC 방화벽 규칙을 전역 네트워크 방화벽 정책으로 마이그레이션합니다. compute-firewall-rules migrate
명령어를 사용합니다.
gcloud beta compute firewall-rules migrate \ --source-network=NETWORK_NAME \ --target-firewall-policy=POLICY_NAME \ --tag-mapping-file=TAG_MAPPING_FILE
다음을 바꿉니다.
NETWORK_NAME
: 마이그레이션하려는 VPC 방화벽 규칙이 포함된 VPC 네트워크의 이름입니다.POLICY_NAME
: 이전 중에 생성할 전역 네트워크 방화벽 정책의 이름입니다.
이전에서 방화벽 규칙 제외
특정 방화벽 규칙을 이전에서 제외하려면 gcloud beta compute
firewall-rules migrate
명령어를 --exclusion-patterns-file
플래그와 함께 사용합니다.
gcloud beta compute firewall-rules migrate \ --source-network=NETWORK_NAME \ --target-firewall-policy=POLICY_NAME \ --exclusion-patterns-file=EXCLUSION_PATTERNS_FILE
다음을 바꿉니다.
NETWORK_NAME
: 마이그레이션하려는 VPC 방화벽 규칙이 포함된 VPC 네트워크의 이름입니다.POLICY_NAME
: 이전 중에 만들 전역 네트워크 방화벽 정책의 이름입니다.EXCLUSION_PATTERNS_FILE
: 마이그레이션에서 제외할 VPC 방화벽 이름 지정 패턴을 정의하는 정규 표현식이 포함된 파일의 이름입니다. 파일의 전체 경로를 지정해야 합니다. 지정된 패턴과 일치하는 방화벽 규칙은 건너뜁니다.제외 패턴을 정의할 때는 다음 사항을 고려하세요.
- 각 정규식은 자체 줄에 있어야 하며 단일 방화벽 이름 지정 패턴을 나타내야 합니다.
- 정규 표현식에는 선행 또는 후행 공백이 포함되지 않습니다.
제외된 방화벽 규칙 보기
제외된 방화벽 규칙 이름 지정 패턴에 따라 마이그레이션 도구는 Google Kubernetes Engine (GKE) 방화벽 규칙과 같은 일부 방화벽 규칙을 마이그레이션하지 않습니다. 제외된 방화벽 규칙 이름 지정 패턴 목록을 내보내려면 gcloud beta compute firewall-rules migrate
명령어를 --export-exclusion-patterns
및 --exclusion-patterns-file
플래그와 함께 사용합니다.
gcloud beta compute firewall-rules migrate \ --source-network=NETWORK_NAME \ --target-firewall-policy=POLICY_NAME \ --exclusion-patterns-file=EXCLUSION_PATTERNS_FILE \ --export-exclusion-patterns
다음을 바꿉니다.
NETWORK_NAME
: 마이그레이션하려는 VPC 방화벽 규칙이 포함된 VPC 네트워크의 이름입니다.POLICY_NAME
: 이전 중에 만들 전역 네트워크 방화벽 정책의 이름입니다.EXCLUSION_PATTERNS_FILE
: 다음 제외된 방화벽 규칙 이름 지정 패턴이 내보내지는 파일의 경로입니다.gke-(.+)-ipv6-all gke-(.+)-(.+)-((master)|(vms)|(all)|(inkubelet)|(exkubelet)|(mcsd)) k8s-fw-(l7-)?(.+) k8s-(.+)-((node)|(http)|(node-http))-hc (.+)-hc k8s2-(.+)-(.+)-(.+)-(.+)(-fw)? k8s2-(.+)-l4-shared-hc-fw gke((gw)|(mcg))1-l7-(.+)-(.+)
특정 패턴과 일치하는 제외된 방화벽 규칙을 이전하려면 내보낸 목록에서 패턴을 삭제하고 --exclusion-patterns-file
플래그를 사용하여 gcloud beta compute
firewall-rules migrate
명령어를 실행합니다.
평가 순서를 유지하면서 강제 이전
이전 중에 제외된 방화벽 규칙의 평가 순서가 사용자가 지정한 방화벽 규칙의 평가 순서 사이에 있으면 이전이 실패합니다.제외된 방화벽 규칙은 이전되지 않으며 이전 도구가 새 네트워크 방화벽 정책에서 사용자 정의 규칙의 원래 평가 순서를 유지할 수 없기 때문입니다.
예를 들어 방화벽 규칙의 우선순위가 다음과 같은 경우 이전이 실패합니다.
- 우선순위가 100인 사용자가 지정한 규칙
- 우선순위가 200인 제외 규칙
- 우선순위가 300인 사용자가 지정한 규칙
이전 도구가 원래 평가 순서를 유지하고 제외된 방화벽 규칙을 무시하면서 사용자 지정 규칙을 강제로 이전하도록 하려면 --force
플래그와 함께 gcloud beta compute firewall-rules migrate
명령어를 사용하세요.
gcloud beta compute firewall-rules migrate \ --source-network=NETWORK_NAME \ --target-firewall-policy=POLICY_NAME \ --force
다음을 바꿉니다.
NETWORK_NAME
: 마이그레이션하려는 VPC 방화벽 규칙이 포함된 VPC 네트워크의 이름입니다.POLICY_NAME
: 이전 중에 만들 전역 네트워크 방화벽 정책의 이름입니다.
새 전역 네트워크 방화벽 정책 검토
새로 만든 정책을 VPC 네트워크에 연결하기 전에 정책을 검토하여 이전 프로세스가 정확하게 완료되었는지 확인하는 것이 좋습니다.
다음 사항을 확인하세요.
방화벽 정책 규칙 구성이 올바르고 각 규칙에 대해 다음 규칙 구성요소가 올바르게 마이그레이션되었습니다.
- 상대적 우선순위
- 트래픽 방향
- 일치 시 작업
- 로그 설정
- 대상 매개변수
- 소스 매개변수(인그레스 규칙)
- 대상 매개변수(이그레스 규칙)
- 프로토콜 및 포트 제약조건
보안 태그가 올바른 VM에 연결되어 있는지 확인합니다.
resource-manager tags bindings list
명령어를 사용합니다.gcloud resource-manager tags bindings list \ --location=ZONE_ID \ --parent //compute.googleapis.com/projects/PROJECT_ID/zones/ZONE_ID/instances/INSTANCE_NAME \ --effective
다음을 바꿉니다.
ZONE_ID
: VM의 영역입니다.PROJECT_ID
: 프로젝트의 ID입니다.INSTANCE_NAME
: VM의 이름
마이그레이션 후 태스크
새 전역 네트워크 방화벽 정책을 활성화하고 사용하려면 마이그레이션 후 태스크를 완료하세요. 자세한 내용은 마이그레이션 후 태스크를 참고하세요.
다음 단계
- VPC 방화벽 규칙 마이그레이션 자세히 알아보기
- 종속 항목이 없는 VPC 방화벽 규칙 마이그레이션