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

1. 소개

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

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

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

2. 설정 및 요건

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

1a62ebea85d6d4fc.png

리소스 설정

  1. Google Cloud 콘솔에서 조직 아래에 폴더와 두 개의 새 프로젝트를 만듭니다(기존 프로젝트를 재사용할 수 있음).

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

  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 API에 액세스할 수 있는지 확인합니다. 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 일반 라이선스에 따라 사용이 허가되었습니다.