Cloud/GCP

[GCP / Security] Web Console 접근제어

달빛궁전- 2024. 5. 23. 17:07

 

문서의 목적
GCP의 장점이자 단점은 언제 어디에서나 Web Console로 접근하여 업무를 수행할 수 있습니다.
고객사 내부에서 특정 IP, 사용자만 GCP에 접속할 수 있도록 방화벽등을 통해 가능하나, 외부에서 접속하는 것은 막기 어렵습니다.
그래서 GCP자체에서 접근을 제어해주는 Chrome Enterprise Premium, Access Context Manager 보안 서비스를 사용하여 특정 IP에서만 접속하도록 하여 보안성을 향상해 보겠습니다.
유의사항
BeyondCorp Enterprise는 GCP 조직이 필요 합니다.
조직단위에서 GCP를 사용하여야 합니다. Kr도메인 기준 1년간 10,000원 정도이므로 발급하셔서 테스트 하는 방법과
( .tk .ml .ga등) 무료 도메인도 존재하기에 freenom 같은 사이트에서 무료 도메인을 발급해서 사용해도 됩니다.
다만, 위의 무료도메인 발급사이트는 발급 후 1년이 지나 갱신시기를 놓치면 유료로 재갱신 해야 되거나, 서비스 트래픽이 많아지면 올라가면 도메인 권한을 뺏는 일이 있으므로 테스트 용도로만 사용하는 것을 권장합니다.
도메인을 신규 생성하여 GCP에서 테스트 하는 방법은 아래의 링크를 참고 부탁드립니다.
[GCP] 무료 도메인으로 Cloud ID, GCP 테스트하기

 

  • 문서갱신 : 2024.05.21
    GCP에서 서비스명과 메뉴를 변경하여 문서를 갱신합니다.
    BeyondCorp Enterprise → Chrome Enterprise Premium 변경
  • 구성도
    본 문서에서 목표로 하는 구성 입니다.

 

  • 다이어그램
    Access Context Manager통하여 GCP 리소스에 대한 접근을 설명하는 다이어그램

 

  • Access Context Manager

특정 IP에서만 GCP Web Console로 접근하도록 해보겠습니다.
Console : 보안 -> Access Context Manager


유의사항 :
조직으로 설정되어 있어야 해당 메뉴에 접근이 가능합니다.
프로젝트로 선택시 아래의 메시지가 발생됩니다.

 

조직, 폴더, 프로젝트를 선택할 수 있는 부분은 GCP Console 왼쪽 상단에 있습니다.

 

선택화면 클릭 후 -> 다음 조직에서 선택 -> 사용하고자 하는 조직선택-> 최근, 전체 탭을 선택하여 조직을 선택합니다.

+ 액세스 수준 만들기를 선택합니다.

 

 

해당 값들은 아래의 뜻을 가지고 있습니다.

액세스 수준 제목 : 누구나 알아볼 수 있는 네임밍 룰로 설정
조건 만들기 : 기본모드 / 고급모드
기본모드 선택시에는 IP, 지리적 위치(나라) 사용 가능하며
고급모드 선택시에는 기기(모바일, OS, 기종등)정책과 다른 보안 서비스들을 사용할 수 있습니다.
참고 WebSite
조건 : OR, AND : 단일 조건시에는 비활성화 되어있으며, 다른 조건 추가 선택하여 다수의 조건을 설정하면 1가지 조건이라도 만족되면 처리되는 것이 OR, 모든 조건이 충족 되면 실행되는 것이 AND조건 입니다.
조건 충족시 반환할 값 : True는 설정한 조건이 참인 경우에 동작하며, False는 거짓일 때 동작합니다.
예를들어 True로 특정IP를 선택한 경우, 해당 IP만 접속 허용되며
반대로 False로 특정IP를 선택한 경우 해당IP를 제외하고 접속 허용됩니다.

 

사무실, 재택의 IP를 입력하고 AND조건으로 지리적 위치에 KR을 선택하겠습니다.
해당 조건으로 되면 KR로 등록된 IP에 위의 2개 IP만 Web Console에 접근이 허용됩니다.

 

 

  • GCP Group설정

Web_Console의 접근제어는 그룹 사용자, Access Context Manager 조합으로 이루어집니다.

 

https://admin.google.com 으로 이동하여 디렉토리 -> 그룹 메뉴로 접근합니다.
Web Console만 접근 할 수 있는 그룹을 만들도록 하겠습니다. 그룹 만들기를 선택합니다.

 

 

그룹 세부정보를 입력합니다.
그룹 이름, 이메일, 그리고 그룹의 소유자를 입력합니다.

 

액세스 유형을 설정합니다.
고객사 상황에 맞도록 설정이 필요하며
충분한 협의를 통해 보안성과 편의성을 타협하는 것이 중요합니다.

본 문서에서는 그룹소유자는 모두 가능, 그 외 사용자는 그룹 소유자가 초대했을 때만 가입이 가능하도록 설정하였습니다.

 
 

그룹을 생성한 이후에는 해당 그룹의 정보를 볼 수 있습니다.
아래 화면과 같이 Web Console에 접근할 회원을 추가하여 줍니다.

 

 

다만, 실수로 접근제어가 적용되는 위험을 줄이기는 위해서는 해당 조직에서 1명 이상의 조직 관리자는 해당 그룹에서 제외하는 것을 권고합니다.

 

  • GCP Chrome Enterprise Premium 설정
 

Console : 보안 -> Chrome Enterprise Premium -> Cloud 콘솔 및 API에 대한 액세스 관리 선택

 

 

Cloud Console 및 API 보호 -> 액세스 관리 선택

 

 

Cloud Console 및 API의 액세스 관리 -> 추가 삭제 선택합니다.
Google 그룹스 : 앞서 설정한 Google Group을 선택합니다.

 

 

액세스 수준 : Access Context Manager에서 생성한 액세스를 선택합니다.
선택 후 저장을 클릭합니다.

 

유의사항
별도의 확인 절차 없이 적용되므로, 최종 확인 후 적용합니다.
적용되기까지 약 5분 정도 시간이 소요됩니다.

다만, 위 정책은 5분 정도지만, 앞선 화면에서 진행한 액세스 바인딩의 경우
적용하는데 최대 24시간이 걸릴 수 있습니다.
즉 처음 정책 생성하고, 적용하는 경우 최대 24시간이 걸릴 수 있습니다.

  • Web Console접근제어 테스트

접근제어가 적용 되었는지 테스트 하기위해 본 문서에서는 모바일로 접근을 테스트 해보았습니다.
https://console.cloud.google.com 로그인
로그인까지는 정상적으로 진행

 

 

로그인 이후 위 화면과 같이 “액세스 권한 없음” 메시지 발생되며 접근불가 확인
프리미엄 서비스 사용시 상기 설명한 IP, 지리적 위치외에 기기정책도 사용이 가능합니다.
기기정책은 사용시 기기에 별도SW를 설치하여야 합니다.

  • Web Console 로그 확인

Console : 로깅 -> 로그 탐색기

 

로깅 실패 검색하는 쿼리문 : 

severity="ERROR" AND
(protoPayload.metadata.evaluationResult=DENIED OR protoPayload.metadata.dryRunEvaluationResult=DENIED) AND
protoPayload.metadata.@type="type.googleapis.com/google.cloud.audit.ContextAwareAccessAuditMetadata" AND
protoPayload.metadata.deniedApplications.name="CLOUD_PLATFORM"

특정 User검색시 : protoPayload.authenticationInfo.principalEmail="사용자ID"

 

로그 탐색기 세부내용

 

 

principalEmail : 사용자의 ID
evaluationResult : 결과 (차단, 허용)