VPC 서비스 제어 기본 튜토리얼 I

1. 소개

VPC 서비스 제어 (VPC-SC)는 기업 고객이 데이터 무단 반출 위험을 완화할 수 있도록 지원하는 Google Cloud의 조직 수준 보안 제어 기능입니다. VPC 서비스 제어는 의도적 손실과 의도하지 않은 손실을 모두 줄이기 위해 클라이언트가 인터넷 및 기타 서비스에서 멀티 테넌트 서비스에 연결하는 동시에 승인된 IP, 클라이언트 컨텍스트, 기기 매개변수에 대한 액세스를 제한할 수 있도록 하여 멀티 테넌트 서비스에 대한 제로 트러스트 스타일의 액세스를 제공합니다. VPC 서비스 제어를 사용하여 명시적으로 지정한 서비스의 리소스와 데이터를 보호하는 경계를 만들 수 있습니다.

이 가이드의 목표는 다음과 같습니다.

  • VPC 서비스 제어의 기본사항 이해하기
  • VPC 서비스 경계 만들기
  • VPC 서비스 제어로 프로젝트 보호
  • VPC 서비스 제어 인그레스 위반 문제 해결

2. 설정 및 요건

이 튜토리얼에서는 다음과 같은 사전 요구사항을 충족해야 합니다.

  • GCP 조직
  • 조직 아래에 있는 폴더
  • 동일한 조직 내 GCP 프로젝트 2개가 폴더 아래에 있습니다.
  • 조직 수준에서 필요한 권한
  • 두 프로젝트의 결제 계정입니다.

1a62ebea85d6d4fc.png

리소스 설정

  1. Google Cloud 콘솔에서 조직 아래에 폴더를 생성하고 새 프로젝트 2개를 만듭니다. 기존 프로젝트는 다시 사용할 수 있습니다.

(Google Workspace/Cloud ID 계정이 없는 경우 이 튜토리얼에서 조직이 있어야 하므로 계정을 획득해야 합니다.)

  1. 조직 수준에서 이 튜토리얼에 대한 올바른 권한이 있는지 확인하세요.
  1. 폴더 수준에서 범위가 지정된 정책을 만들어야 하므로 두 프로젝트를 폴더 아래에서 사용할 수 있는지 확인합니다. 프로젝트를 폴더로 이동하는 방법을 알아보세요.

f7c75ab82028cb15.png

비용

Cloud 리소스/API를 사용하려면 Cloud 콘솔에서 결제를 사용 설정해야 합니다. 이 Codelab 실행에는 많은 비용이 들지 않습니다. 이 튜토리얼이 끝난 후에 요금이 청구되지 않도록 리소스를 종료하려면 만든 리소스 또는 프로젝트를 삭제하면 됩니다. 신규 Google Cloud 사용자는 $300(USD) 상당의 무료 체험판 프로그램을 이용할 수 있습니다.

비용을 발생시키는 유일한 리소스는 VM 인스턴스입니다. 예상 비용은 가격 계산기에서 확인할 수 있습니다.

3. 경계 만들기

이 실습에서는 다음 단계를 수행해 보겠습니다.

  1. Google 콘솔에서 조직과 VPC 서비스 제어 액세스를 선택합니다. 조직 수준인지 확인하세요.

43d5af2d5f084bb4.png

  1. '정책 관리'를 클릭합니다. 'Codelab'으로 범위가 지정된 새 액세스 정책을 생성합니다. 있습니다.

9f75d949ca9992c4.png

  1. 시행 모드로 새 경계를 만듭니다. 이름을 'SuperProtection'으로 지정합니다. 참조하세요
  • 경계를 만들 때 ProjectZ로 적용할 프로젝트를 선택합니다.
  • 경계 유형을 '일반'으로 선택합니다.
  • 제한할 서비스 지정 대화상자에서 제한할 서비스를 'Compute Engine'으로 선택합니다.

경계 설정은 다음과 같이 표시됩니다.

914d603103cb21.png

4. 경계가 적용되었는지 확인

  1. ProjectX에 액세스하고 VM 인스턴스 홈페이지로 이동하여 Compute Engine API에 액세스할 수 있는지 확인합니다. 생성된 VPC SC 경계로 projectX가 보호되지 않으므로 이 작업이 가능한 것입니다.
  2. ProjectZ에 액세스하고 Compute Engine에 액세스할 수 있는지 확인합니다. 서비스 경계 SuperProtection이 ProjectZ 및 Compute Engine API를 보호하기 때문에 요청이 VPC 서비스 제어에서 금지된 것을 볼 수 있습니다.

d5073543f783e9c7.png

5. 거부 문제 해결

먼저 문제가 정확히 무엇인지 파악하여 문제 해결 방법을 결정해야 합니다.

  1. VPC 서비스 제어 로그에는 보호되는 리소스에 대한 요청과 VPC 서비스 제어가 요청을 거부한 이유에 대한 세부정보가 포함됩니다. 로그 탐색기에서 다음 쿼리를 사용하여 ProjectZ 감사 로그에서 VPC 서비스 제어 고유 ID를 찾아보세요.
resource.type="audited_resource"
protoPayload.metadata."@type"="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"

그러면 모든 VPC 서비스 제어 감사 로그가 표시됩니다. 마지막 오류 로그를 찾으려고 합니다.

  1. 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 클라이언트가 서비스 경계 외부에서 서비스 경계 내의 리소스로 액세스하도록 허용하는 인그레스 규칙 만들기

이 튜토리얼에서는 액세스 수준을 만들어 문제를 해결합니다.

  1. 폴더 (Codelab) 범위에서 Access Context Manager로 이동하고 새 액세스 수준을 만듭니다.
  2. '기본 모드' 사용 IP 서브네트워크와 지리적 위치가 충족될 때 액세스가 허용됩니다.

678f0f9d7bac921d.png

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

c0af5691dfe9dd75.png

6. 테스트 결과

Compute Engine에 액세스할 수 있고 VM 인스턴스를 만들 수 있는지 확인합니다. 이제 액세스 수준을 만들었으므로 ProjectZ에서 Compute Engine에 액세스하고 VM 인스턴스를 만들어 보겠습니다.

  1. Compute Engine으로 이동하여 인스턴스 만들기를 클릭합니다.

c1206aaf18497ec1.png

  1. 모두 기본값으로 두고 저비용 VM 인스턴스를 만들어 보세요.

약 1분 후 VM 인스턴스가 생성된 것을 확인하고 경계 내에서 보호되는 Compute Engine에 대한 전체 액세스 권한이 있음을 확인할 수 있습니다.

5b2ded02f669b2ef.png

7. 삭제

서비스를 사용하지 않을 때 VPC 서비스 제어를 사용하는 데 별도의 요금은 청구되지 않지만 이 실습에서 사용한 설정을 정리하는 것이 좋습니다. VM 인스턴스 또는 Cloud 프로젝트를 삭제하여 요금이 청구되지 않도록 할 수도 있습니다. Cloud 프로젝트를 삭제하면 프로젝트 내에서 사용되는 모든 리소스에 대한 청구가 중지됩니다.

  1. VM 인스턴스를 삭제하려면 VM 인스턴스 이름 왼쪽에 있는 체크박스를 선택한 다음 삭제를 클릭합니다.

da0abf0894fe03cd.png

  1. 경계를 삭제하려면 다음 단계를 완료하세요.
  • Google Cloud 콘솔에서 보안을 클릭한 다음 조직 범위에서 VPC 서비스 제어를 클릭합니다.
  • VPC 서비스 제어 페이지의 삭제하려는 경계에 해당하는 표의 행에 있는 '삭제 아이콘'을 클릭합니다.
  1. 액세스 수준을 삭제하려면 다음 단계를 완료하세요.
  • Google Cloud 콘솔의 폴더 범위에서 Access Context Manager 페이지를 엽니다.
  • 그리드의 삭제하려는 액세스 수준 행에서 '삭제 아이콘'을 클릭한 다음 삭제를 클릭합니다.
  1. 프로젝트를 종료하려면 다음 단계를 완료하세요.
  • Google Cloud 콘솔에서 IAM 및 관리자 설정 페이지를 클릭합니다.
  • IAM 및 관리자 설정 페이지에서 종료를 클릭합니다.
  • 프로젝트 ID를 입력하고 무시하고 종료를 클릭합니다.

8. 축하합니다.

이 Codelab에서는 VPC 서비스 제어 경계를 만들고 적용하고 문제를 해결했습니다.

자세히 알아보기

라이선스

이 작업물은 Creative Commons Attribution 2.0 일반 라이선스에 따라 사용이 허가되었습니다.