1. 소개
VPC 서비스 제어 (VPC-SC)는 엔터프라이즈 고객이 데이터 무단 반출 위험을 완화할 수 있는 Google Cloud의 조직 수준 보안 제어입니다. VPC 서비스 제어는 클라이언트가 인터넷 및 기타 서비스에서 멀티 테넌트 서비스로 연결하는 동안 승인된 IP, 클라이언트 컨텍스트, 기기 매개변수로 액세스를 제한하여 의도적 및 비의도적 손실을 모두 줄일 수 있도록 지원함으로써 멀티 테넌트 서비스에 대한 제로 트러스트 방식의 액세스를 제공합니다. VPC 서비스 제어를 사용하여 명시적으로 지정한 서비스의 리소스와 데이터를 보호하는 경계를 만들 수 있습니다.
이 튜토리얼의 목표는 다음과 같습니다.
- VPC 서비스 제어의 기본사항 알아보기
- VPC 서비스 경계 만들기
- VPC 서비스 제어로 프로젝트 보호
- VPC 서비스 제어 인그레스 위반 문제 해결하기
2. 설정 및 요건
이 튜토리얼에서는 다음 사전 요구사항이 필요합니다.
- GCP 조직입니다.
- 조직 아래의 폴더입니다.
- 동일한 조직 내에 있으며 폴더 아래에 있는 2개의 GCP 프로젝트
- 조직 수준에서 필요한 권한
- 두 프로젝트의 결제 계정

리소스 설정
- Google Cloud 콘솔에서 조직 아래에 폴더를 만들고 새 프로젝트 2개를 만듭니다(기존 프로젝트를 재사용해도 됨).
(아직 Google Workspace/Cloud ID 계정이 없는 경우 이 튜토리얼에는 조직이 필요하므로 계정을 만들어야 합니다.)
- 조직 수준에서 이 튜토리얼에 필요한 올바른 권한이 있는지 확인합니다.
- 폴더 수준에서 범위가 지정된 정책을 만들어야 하므로 두 프로젝트가 모두 폴더 아래에 있어야 합니다. 프로젝트를 폴더로 이동하는 방법을 알아보세요.

비용
Cloud 리소스/API를 사용하려면 Cloud 콘솔에서 결제를 사용 설정해야 합니다. 이 Codelab 실행에는 많은 비용이 들지 않습니다. 이 튜토리얼이 끝난 후에 요금이 청구되지 않도록 리소스를 종료하려면 만든 리소스 또는 프로젝트를 삭제하면 됩니다. Google Cloud 신규 사용자는 미화 $300 상당의 무료 체험판 프로그램에 참여할 수 있습니다.
비용이 발생하는 유일한 리소스는 VM 인스턴스입니다. 예상 비용은 가격 계산기에서 확인할 수 있습니다.
3. 경계 만들기
이 실험실에서는 다음 단계를 수행합니다.
- Google 콘솔에서 조직을 선택하고 VPC 서비스 제어에 액세스합니다. 조직 수준에 있는지 확인하세요.

- '정책 관리'를 클릭하여 'Codelab' 폴더로 범위가 지정된 새 액세스 정책을 만듭니다.

- 시행 모드에서 새 경계를 만듭니다. 이 튜토리얼에서는 이름을 'SuperProtection'으로 지정합니다.
- 경계를 만들 때 시행할 프로젝트를 ProjectZ로 선택합니다.
- 경계 유형을 '일반'으로 선택합니다.
- 제한할 서비스 지정 대화상자에서 제한할 서비스를 'Compute Engine'으로 선택합니다.
둘레 설정은 다음과 같이 표시됩니다.

4. 경계가 적용되었는지 확인
- ProjectX에 액세스하고 VM 인스턴스 홈페이지를 방문하여 Compute Engine에 액세스할 수 있는지 확인합니다. projectX는 생성된 VPC SC 경계로 보호되지 않으므로 액세스할 수 있어야 합니다.
- ProjectZ에 액세스하여 Compute Engine에 액세스할 수 있는지 확인합니다. 서비스 경계 SuperProtection이 ProjectZ 및 Compute Engine API를 보호하므로 VPC 서비스 제어에 의해 요청이 금지된 것을 확인할 수 있습니다.

5. 거부 문제 해결
문제를 해결하는 방법을 결정하려면 먼저 정확히 어떤 문제인지 파악해야 합니다.
- VPC 서비스 제어 로그에는 보호된 리소스에 대한 요청 및 VPC 서비스 제어가 요청을 거부한 이유에 대한 세부정보가 포함됩니다. 로그 탐색기에서 다음 쿼리를 사용하여 ProjectZ 감사 로그의 VPC 서비스 제어 고유 ID를 찾아보겠습니다.
resource.type="audited_resource" protoPayload.metadata."@type"="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"
그러면 모든 VPC 서비스 제어 감사 로그가 표시됩니다. 마지막 오류 로그를 찾습니다.
- VPC 서비스 제어 헤더를 클릭하고 '거부 문제 해결'을 선택하면 VPC 서비스 제어 문제 해결 도구가 열립니다.
이 API는 위반 사유, 인그레스 위반인지 이그레스 위반인지 등 유용한 정보를 친근한 UI로 표시합니다.
이 연습에서는 다음을 찾습니다.
"principalEmail": "user@domain"
"callerIp": "PUBLIC_IP_ADDRESS"
"serviceName": "compute.googleapis.com"
"servicePerimeterName":
"accessPolicies/[POLICY_NUMBER]/servicePerimeters/SuperProtection
"ingressViolations": [
{
"targetResource": "projects/[PROJECT_NUMBER]",
"servicePerimeter": "accessPolicies/[POLICY_NUMBER]/servicePerimeters/SuperProtection"
}
],
"violationReason": "NO_MATCHING_ACCESS_LEVEL",
"resourceNames": "[PROJECT_ID]"
ProjectZ에서 이 거부를 수정하는 방법에는 두 가지가 있습니다.
- 내 시스템 IP에 대한 액세스 권한을 부여하여 경계 내의 프로젝트에 대한 액세스를 허용하는 액세스 수준을 만듭니다.
- 서비스 경계 외부의 API 클라이언트가 서비스 경계 내의 리소스에 액세스할 수 있도록 허용하는 인그레스 규칙을 만듭니다.
이 튜토리얼에서는 액세스 수준을 만들어 문제를 해결합니다.
- 폴더 (Codelab) 범위의 Access Context Manager로 이동하여 새 액세스 수준을 만듭니다.
- '기본 모드'를 사용하면 IP 서브넷과 지리적 위치가 충족될 때 액세스가 허용됩니다.

- 조직 범위에서 VPC 서비스 제어로 이동합니다. 이 Codelab의 액세스 정책을 선택하고 이전에 만든 경계를 수정합니다.
- 폴더 범위에서 만든 액세스 수준을 추가하고 저장합니다.

6. 테스트 결과
Compute Engine에 액세스할 수 있고 VM 인스턴스를 만들 수 있는지 확인합니다. 이제 액세스 수준을 만들었으므로 ProjectZ에서 Compute Engine에 액세스하고 VM 인스턴스를 만들어 보겠습니다.
- Compute Engine으로 이동하여 인스턴스 만들기를 클릭합니다.

- 모두 기본값으로 두고 저비용 VM 인스턴스를 만들어 보세요.
약 1분 후에 VM 인스턴스가 생성되고 경계 내에서 보호되는 Compute Engine에 대한 전체 액세스 권한이 있는지 확인할 수 있습니다.

7. 삭제
서비스를 사용하지 않을 때는 VPC 서비스 제어 사용에 대한 별도의 요금이 부과되지 않지만 이 실습에서 사용한 설정을 정리하는 것이 좋습니다. VM 인스턴스 또는 Cloud 프로젝트를 삭제하여 비용 청구를 방지할 수도 있습니다. Cloud 프로젝트를 삭제하면 해당 프로젝트 내에서 사용되는 모든 리소스에 대한 청구가 중단됩니다.
- VM 인스턴스를 삭제하려면 VM 인스턴스 이름 왼쪽에 있는 체크박스를 선택한 후 삭제를 클릭합니다.

- 경계를 삭제하려면 다음 단계를 완료하세요.
- Google Cloud 콘솔에서 보안을 클릭한 다음 조직 범위에서 VPC 서비스 제어를 클릭합니다.
- VPC 서비스 제어 페이지에서 삭제할 경계에 해당하는 표 행의 '삭제 아이콘'을 클릭합니다.
- 액세스 수준을 삭제하려면 다음 단계를 완료하세요.
- Google Cloud 콘솔에서 폴더 범위의 Access Context Manager 페이지를 엽니다.
- 그리드에서 삭제할 액세스 수준의 행에 있는 '삭제 아이콘'을 클릭한 후 삭제를 클릭합니다.
- 프로젝트를 종료하려면 다음 단계를 완료하세요.
- Google Cloud 콘솔에서 삭제하려는 프로젝트의 IAM 및 관리자 설정 페이지로 이동합니다.
- IAM 및 관리자 설정 페이지에서 종료를 클릭합니다.
- 프로젝트 ID를 입력하고 무시하고 종료를 클릭합니다.
8. 축하합니다.
이 Codelab에서는 VPC 서비스 제어 경계를 만들고, 적용하고, 문제를 해결했습니다.
자세히 알아보기
- VPC 서비스 제어 문서를 참고하세요.
- Access Context Manager 문서를 참고하세요.
- VPC-SC 문제 해결 도구 문서를 참고하세요.
라이선스
이 작업물은 Creative Commons Attribution 2.0 일반 라이선스에 따라 사용이 허가되었습니다.