[GCP]GCP 에서 조직(Organization) 활용하기 6부 — VPC 서비스 제어

이정운 (Jungwoon Lee)
google-cloud-apac
Published in
14 min readJun 30, 2020

--

안녕하세요 이정운 입니다.

지금까지 GCP 에서 조직(Organization) 활용하기 주제로 총 5부의 시리즈로 이야기 하였습니다.

GCP 에서 조직(Organization) 활용하기 1부 — Cloud Identity
GCP 에서 조직(Organization) 활용하기 2부 — 조직 마이그레이션
GCP 에서 조직(Organization) 활용하기 3부 — 조직 정책
GCP 에서 조직(Organization) 활용하기 4부 — 지원 케이스(Support case)
GCP 에서 조직(Organization) 활용하기 5부 — 보안센터(Security Command Center)

이번에는 그 6번째 시리즈인 VPC Service Control(VPC 서비스 제어)에 대한 이야기를 해보려고 합니다. VPC 서비스 제어는 Cloud Storage 및 BigQuery 와 같은 Google Cloud 관리형 서비스에서 데이터 유출 위험을 줄일 수 있는 기능입니다. VPC 서비스 제어를 사용하면 Google Cloud 관리형 서비스의 리소스 주위에 보안 경계를 구성하고 경계를 넘는 데이터 이동을 제어할 수 있습니다.

https://cloud.google.com/vpc-service-controls

VPC 서비스 제어에 대한 설명을 말로하면 조금 와닿지 않을수도 있는데 하단의 그림을 보면 어떤 기능을 제공하는지 쉽게 이해하실 수 있습니다. 보시는 것처럼 GCP 환경에서 서비스 경계를 만들고 접근을 제어한다고 이해하시면 됩니다.

Overview of VPC Service Controls
https://cloud.google.com/vpc-service-controls/docs/overview

추가적으로, 하단의 동영상 자료도 VPC 서비스 제어를 이해하는데 도움이 될듯 하여 공유드리오니 참고하시기 바라겠습니다.

Securing GCP Projects with VPC Service Controls
https://www.youtube.com/watch?v=EXwJFL24QzY

이 외에도 VPC 서비스 제어는 하단과 같은 다양한 장점을 제공합니다.

하이브리드 환경에서 민감한 정보를 비공개로 유지
VPC 서비스 제어 및 비공개 Google 액세스를 사용하면 기업은 클라우드 및 온프레미스 하이브리드 배포에 이르는 VPC 네트워크에서 클라우드 리소스 간의 비공개 통신을 구성하여 민감한 정보를 비공개로 유지할 수 있습니다.

데이터 유출 위험 완화
관리형 GCP 서비스 주위에 보안 경계를 적용하면 조직의 데이터 유출 위험이 줄어듭니다. VPC 서비스 제어를 사용하면 액세스 제어 구성이 잘못되거나, 승인되지 않은 클라우드 리소스로 데이터를 복사하는 악의적인 사용자, 인터넷에서 GCP 리소스의 민감한 정보에 액세스하려고 시도하는 공격자 등으로 인한 데이터 노출로부터 기업을 보호할 수 있습니다.

GCP 서비스에 컨텍스트 인식 액세스 사용
VPC 서비스 제어를 사용하면 클라우드 리소스 제어에 컨텍스트 인식 액세스 방식을 사용할 수 있습니다. 기업은 사용자 ID 및 IP 주소와 같은 속성을 토대로 GCP에 세밀한 액세스 제어 정책을 만들 수 있습니다. 이러한 정책을 통해 인터넷에 클라우드 리소스에 대한 액세스 권한을 부여할 때 적합한 보안 제어 기능을 갖출 수 있습니다.

그럼 실제 테스트를 통해서 조직안에서 VPC 서비스 제어를 어떻게 사용하고 활용할 수 있는지 직접 확인해볼까요?

#1) Access Context Manager 설정

VPC 서비스 제어를 사용하시려면 그 전에 Access Context Manager 를 먼저 생성해야 합니다. Access Context Manager 는 Google Cloud 조직 관리자를 통해서 Google Cloud 의 프로젝트와 리소스에 하단과 같은 세분화된 속성 기반 액세스 제어를 정의할 수 있습니다. 예를 들어, “특정 IP 대역에서만 접속 가능”과 같이 접속 가능한 정책을 다양하게 정의할 수 있습니다.

  • 기기 유형 및 운영체제
  • IP 주소
  • 사용자 ID

좀 더 자세한 내용이 궁금하신 분들은 하단의 링크를 참고하시기 바라겠습니다.

Overview
https://cloud.google.com/access-context-manager/docs/overview

여기서 하나 주목할 것은 Access Context Manager 는 실제 정책 적용까지는 담당하지 않으며, 원하는 규칙을 설명하는 것이 목적입니다. 즉, Access Context Manager 를 생성해서 규칙을 설정한다면 정책은 VPC 서비스 제어와 같은 다양한 지점에서 실제 구성되고 적용되는 형태로 동작합니다.

추신 #1) 실제적으로 Access Context Manager 는 Google 에서 펼치고 있는 BeyondCorp 이니셔티브의 일부입니다. 이 부분이 좀 더 궁금하신 분들은 하단의 링크를 참고하시기 바라겠습니다.

https://cloud.google.com/beyondcorp/

Access Context Manager 를 만들어 보기 위하여 GCP 관리콘솔에서 “보안 > Access Context Manager” 메뉴를 클릭하고 새로운 정책을 만들기 위해서 ‘신규’ 버튼을 클릭합니다.

그러면, 새로운 액세스 수준을 정의할 수 있으며 하단과 같이 기본 모드(마법사 사용) 나 고급 모드(Common Expression Language(CEL)를 사용해 조건을 작성)를 사용하여 조건을 작성할 수 있습니다.

예를 들면 하단과 같이 CIDR 을 사용해서 IP 대역을 조건으로 설정하여 해당 IP 대역만 접속이 가능하도록 설정할 수 있습니다.

IP 대역 이외에도 지역이나 기기 정책등의 다양한 조건들을 정의할 수 있으며 보다 상세한 내용이 궁금하신 분들은 하단의 링크를 참고하시기 바라겠습니다.

Limit access on a corporate network
https://cloud.google.com/access-context-manager/docs/create-basic-access-level#corporate-network-example

Custom access level specification
https://cloud.google.com/access-context-manager/docs/custom-access-level-spec

정상적으로 Access Context Manager 를 생성했으면 하단과 같이 해당 메뉴에서 확인 가능합니다.

#2) VPC 서비스 제어 설정

이전 파트에서 Access Context Manager 를 설정했으니 이제 본격적으로 VPC 서비스 제어 기능에 대한 설정을 진행해보도록 하겠습니다. GCP 관리콘솔에서 “보안 > VPC 서비스 제어” 메뉴를 클릭 합니다. 해당 메뉴를 보면 ‘시행 모드’ 와 ‘테스트 실행 모드’로 구분되는데 이름 그대로 바로 조직내에 VPC 서비스 제어를 수행하는 ‘시행 모드’ 와 테스트로 VPC 서비스 제어가 잘 수행되는지 확인해 볼 수 있는 ‘테스트 실행 모드’ 를 의미합니다. 먼저 ‘테스트 실행 모드’ 로 만들어 보도록 하겠습니다.

새 VPC 서비스 경계 생성 메뉴를 보시면 아시겠지만 보호할 프로젝트, 보호할 서비스, VPC 엑세스 기능등의 값을 원하시는 형태로 넣어주시면 됩니다.

예를 들어, 조직은 여러개의 프로젝트를 가지고 있을 수 있으므로 VPC 서비스 제어 기능을 적용할 프로젝트를 하단과 같이 선택해 줍니다.

또한, 어떤 서비스를 제한할지 필요한 서비스를 선택해 줍니다. 여기서는 테스트로 동작 여부를 확인하기 위함이 목적이라 간단하게 테스트 해볼 수 있는 BigQuery API 를 선택하도록 하겠습니다.

참고적으로, 지원 가능한 전체 서비스의 리스트는 하단의 링크를 참고하시기 바라겠습니다.

Supported products and limitations
https://cloud.google.com/vpc-service-controls/docs/supported-products

마지막으로 우리가 지정한 특정 조건의 경우에는 서비스 경계 외부에서도 접근 할 수 있도록 이전 파트에서 생성한 Access Context Manager 를 인그레스 정책으로 넣어줍니다.

정상적으로 VPC 서비스 제어가 생성되었다면 하단과 같이 해당 기능을 확인할 수 있습니다.

#3) VPC 서비스 제어 테스트

지금까지 작성한 Access Context Manager 와 VPC 서비스 제어 기능이 어떻게 동작하는지 테스트 해보도록 하겠습니다. 먼저 하단과 같이 Access Context Manager 에 등록했던 IP 대역인 곳에서 접속하여 IP 를 확인해봅니다.

https://whatismyipaddress.com/

다음으로 GCP 관리콘솔에서 VPC 서비스 제어에 추가한 프로젝트의 BigQuery 에 접속하여 간단하게 SQL 문 하나를 수행합니다. 정상적으로 결과가 나온 것을 확인 가능합니다.

다음으로 조직으로 설정을 변경한 후에 GCP 관리콘솔의 “보안 > VPC 서비스 제어” 메뉴로 가서 ‘감사 로그로 이동’을 클릭하여 Cloud Logging 메뉴로 이동합니다.

그러면 감사로그를 확인할 수 있는데 특별한 error 없이 정상적인 것을 확인할 수 있습니다.

다른 IP 로 테스트 할 수 있는 환경을 준비합니다. (예를 들어 회사에서 테스트로 세팅했다면 집에서 접속할 경우 IP 가 달라집니다. 또는, 상단에서 Access Context Manager 설정시 사용한 IP 대역을 변경하는 것도 하나의 방법입니다.)

이전과 동일하게 BigQuery 에 접속해서 간단한 SQL 쿼리문을 하나 수행합니다.

그리고 Cloud Logging 의 로그 뷰어로 접속하여 하단의 쿼리를 실행합니다. (보시면 아시겠지만 감사 로그를 확인할 수 있는 구문이며 이전에 ‘감사 로그로 이동’과 같은 효과를 제공합니다.)

resource.type="audited_resource" severity="ERROR" protoPayload.metadata.dryRun=true

그러면 이번에는 전에 수행했던 테스트와 다르게 log 상으로 Error 가 발생된 것을 확인할 수가 있습니다.

로그 뷰어에서 상세 로그를 확인해보면 “(Dry Run Mode) Request is prohibited by organization’s policy. vpcServiceControlsUniqueIdentifier: 55f4f4849c084021” 라는 구문을 확인할 수 있고 정책적으로 해당 요청이 금지되었다는 문구를 확인할 수 있습니다.

다만, Dry Run Mode 에서 확인할 수 있는 것 처럼 현재는 ‘테스트 실행 모드’ 이기 때문에 error 메세지는 확인 가능하지만 그래도 BigQuery 실행을 막지는 못하는 상태입니다.

그럼 이번에는 모드를 ‘시행 모드’ 로 변경해서 해당 명령 수행 자체가 안되게 방지하도록 설정해 보도록 하겠습니다. GCP 관리콘솔 “보안 > VPC 서비스 제어 > 테스트 실행 모드” 에서 이전에 만들고 확인했던 서비스 경계 이름을 클릭한 후 나오는 상세 메뉴에서 ‘만들기’를 클릭합니다.

그럼 자동으로 경계 구성이 즉각 적용되는 ‘‘시행 모드” 로 복제되고 확인 후 이슈가 없다면 ‘저장’을 클릭하여 서비스 경계를 생성합니다.

그러면 하단과 같이 이전의 설정을 가지고 “시행 모드” 로 서비스 경계가 동일하게 만들어진 것을 확인 가능합니다.

이제 다시한번 BigQuery 에 접속해 보면 화면은 나오는 것 같지만 권한이 없어서 사용할 수 없다는 메시지와 함께 실질적으로 BigQuery 사용을 할 수 없다는 것을 확인 가능합니다.

또한, 이전과 유사하게(‘protoPayload.metadata.dryRun=true’ 제외) Cloud Logging 에서 하단과 같은 쿼리를 수행하면 VPC 서비스 제어에서 퍼미션 관련 에러가 발생해서 막힌 것을 확인할 수 있습니다.

resource.type="audited_resource" severity="ERROR"

추신 #2) IP 변경이 번거롭다면 하단과 같이 Cloud Shell 과 bq 라는 BigQuery 용 CLI 을 활용해서 다른 IP 로 바로 테스트를 수행할 수 있습니다. (Cloud Shell 은 별도의 IP 를 가지고 있음)

bq query --nouse_legacy_sql 'SELECT * FROM `org-test-gmail01.BQDataset01.airports` LIMIT 1000'

테스트 실행 모드)

시행 모드)

여기까지 잘 따라오셨다면 VPC 서비스 제어를 사용하기 위해서 Access Context Manager 를 생성하는 것부터 VPC 서비스 제어 설정을 통한 서비스 경계 생성 및 테스트를 해보면서 직접 확인해 볼 수 있는 시간이 되었을 것입니다. 직접 확인해 보신 것처럼 VPC 서비스 제어를 사용하면 Google 관리 서비스의 리소스 주위에 원하는 형태로 보안 경계를 구성하고 필요한 경우 경계를 넘는 데이터 이동을 제어할 수 있으므로 보다 강화된 보안 방안을 제공 가능합니다. 그럼 이번 이야기는 여기서 마무리하고 다음에 다른 이야기를 들고 다시 돌아오겠습니다. 휘리릭~~~

Disclaimer: 본 글의 작성자는 Google 직원이지만 Google cloud 를 공부하는 한 개인으로서 작성된 글입니다. 본 글의 내용, 입장은 Google 을 대변하지 않으며 Google 이 해당 콘텐츠를 보장하지 않습니다.

참고 자료 #1

VPC Service Control
https://cloud.google.com/vpc-service-controls

Overview of VPC Service Controls
https://cloud.google.com/vpc-service-controls/docs/overview

Supported products and limitations
https://cloud.google.com/vpc-service-controls/docs/supported-products

Access Context Manager : Overview
https://cloud.google.com/access-context-manager/docs/overview

Limit access on a corporate network
https://cloud.google.com/access-context-manager/docs/create-basic-access-level#corporate-network-example

Custom access level specification
https://cloud.google.com/access-context-manager/docs/custom-access-level-spec

--

--

이정운 (Jungwoon Lee)
google-cloud-apac

Technical engineer who dreams better future. (These thoughts are my own personal opinions, and do not reflect or represent Google’s opinions or plans.)