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

1. 소개

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

이 튜토리얼의 목표는 다음과 같습니다.

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

2. 설정 및 요건

이 튜토리얼에서는 다음 사전 요구사항이 필요합니다.

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

1a62ebea85d6d4fc.png

리소스 설정

  1. Google Cloud 콘솔에서 조직 아래에 폴더를 만들고 새 프로젝트 2개를 만듭니다(기존 프로젝트를 재사용해도 됨).

(아직 Google Workspace/Cloud ID 계정이 없는 경우 이 튜토리얼에는 조직이 필요하므로 계정을 만들어야 합니다.)

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

f7c75ab82028cb15.png

비용

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

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

3. 경계 만들기

이 실험실에서는 다음 단계를 수행합니다.

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

43d5af2d5f084bb4.png

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

9f75d949ca9992c4.png

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

둘레 설정은 다음과 같이 표시됩니다.

914d603103cb21.png

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

  1. ProjectX에 액세스하고 VM 인스턴스 홈페이지를 방문하여 Compute Engine에 액세스할 수 있는지 확인합니다. projectX는 생성된 VPC SC 경계로 보호되지 않으므로 액세스할 수 있어야 합니다.
  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 일반 라이선스에 따라 사용이 허가되었습니다.