안녕하세요 BTC Hallo팀입니다. 이번시간에는 GCP 웹 콘솔에 안전하게 접근하는 방법에 대해서 소개해 보겠습니다. 해당 내용은 Google Cloud Korea에서 제공하는 GCP 보안 운영 시리즈의 3번째 시리즈의 내용입니다.
Google Cloud를 운영하는 관리자들은 웹 콘솔 화면인 https://console.cloud.google.com에 접속하여 다양한 자원을 생성, 수정 및 삭제를 진행하고 전체 프로젝트 환경을 관리합니다.
다른 방법으로는 gcloud라는 명령어 툴을 이용하여 관리할 수 있습니다. 해당 방법을 사용하기 위해서는 GCP 내부에 VM을 설치하여 해당 VM 내부에서 명령어를 사용하거나 GCP SDK를 따로 설치하여 사용하여야 합니다.
반면에 웹 기반의 콘솔은 직관적인 사용자 화면을 제공하고 있어서 많은 편리함을 제공합니다. 하지만 클라우드의 모든 자원을 관리할 수 있다는 점에서 관리 콘솔의 접근은 관리자와 허가된 사용자로 엄격히 제한되어야 합니다. 그리고 이러한 접근통제는 클라우드 사용 초기부터 충분히 검토하고 클라우드 서비스 사용 이전에 적용되어야 합니다.
하지만 대다수의 관리 환경에서는 이러한 접근통제 방식을 적용하지 않고 무제한 접근을 허용하고 있는 경우가 많습니다.
접근을 제한하면 작업과 관리에 많은 어려움이 따르기 때문입니다. 사용자 계정 정보를 안전하게 보관하는 것도 중요하지만 사용자의 계정 정보 또는 서비스 계정의 키가 유출되는 경우를 대비해서라도 관리 콘솔에 접근을 통제하는 것이 보안상 안전하다고 할 수 있습니다.
콘솔 접근 통제
앞서 언급한대로 구글 클라우드의 자원을 관리하는 방법은 웹 콘솔에 로그인하거나 gcloud 명령어를 이용하는 두 가지 방식이 존재합니다. 이때 관리콘솔에 접근하는 사용자를 통제하기 위해서는 통제에 활용하는 구성 요소를 구분할 수 있어야 합니다.
클라우드 웹 콘솔의 접근통제는 Beyondcorp 엔터프라이즈에서 제공하는 기능이며, 접근통제는 접근 수준(Access Level)과 사용자 그룹 객체를 이용해서 적용합니다. 접근 수준은 출발지 IP대역, 출발지 국가 등을 정의하는 객체로서 구글 클라우드에서 IP 기반 접근통제를 적용할 때 사용합니다. 사용자는 접근 수준 객체를 생성하고 IP 기반 접근통제 정책이 필요한 항목에 적용할 수 있습니다.
클라우드 웹 콘솔은 사용자별 권한관리를 적용하고 있지만 계정 정보가 언제든지 도용당할 수 있는 위협이 존재하는 한 콘솔의 안전성을 보장하기는 어렵습니다. 그러므로 특정 출발지 IP 대역에서만 클라우드 웹 콘솔 접근을 설정함으로써 클라우드 관리의 보안성을 강화하는 방법을 많이 사용합니다.
접근 수준 객체 생성
클라우드 웹 콘솔 접근 통제를 위해서는 우선 관리자가 허용하려는 IP 대역을 지정해야 합니다.
클라우드 웹 콘솔 -> 보안 -> Access Context Manager를 선택합니다. Access Context Manager는 조직단위로 생성합니다. 그러므로 프로젝트 선택기에서 개별 프로젝트가 아닌 조직을 선택해야 합니다. 콘솔 화면에서 액세스 수준 만들기를 클릭하여 신규 액세스 수준을 생성합니다.
- 액세스 수준 제목: 객체의 이름을 지정합니다. 한 번 생성한 객체는 다른 접근통제에서도 사용할 수 있으므로 알아보기 쉬운 이름을 부여하는것이 좋습니다.
- 기본 모드/고급모드: 기본 모드는 메뉴에서 선택하는 것이며 고급모드는 CEL(Common Expression Language)을 사용 조건을 설정하는 방식입니다. 고급모드를 사용하려면 Beyondcorp Enterprise의 프리미엄 버전을 사용해야 합니다.
- 조건
- 다음으로 조건 결합: OR로 조건을 결합하면 조건 중에 하나라도 참이면 전체를 참으로 반환합니다. AND로 결합하면 모든 조건이 참이어야 결과가 참으로 반환됩니다.
- 조건 충족시 반환할 값: True와 False가 있습니다. True는 설정한 조건이 참인 경우에 동작하게 만들고 False는 거짓일 때 동작합니다. 예를 들어, 출발지 국가 코드를 선택하고 False로 설정한다면, 설정한 국가에서의 접근은 차단됩니다.
- IP하위 네트워크: 출발지 IP를 지정할 수 있습니다. IPv4와 IPv6를 적용할 수 있습니다. IP 대역은 공인 IP 대역만 사용할 수 있습니다.
- 허용된 리전: 국가 코드를 선택합니다. IP 대역이 해당 국가 영역인 경우에 적용합니다.
- 기기 정책: 접근하는 디바이스를 검사할 수 있습니다. 디바이스의 다양한 보안설정을 검사할 수 있습니다. 또한 디바이스의 운영체제와 접근 가능한 최소 버전을 설정할 수 있습니다. 컴퓨터 운영체제는 윈도우즈, 맥, 리눅스와 크롬OS를 설정할 수 있으며 모바일은 안드로이드와 iOS를 설정할 수 있습니다. 이 기능은 유료상품인 프리미엄 버전에서만 사용할 수 있습니다.
모든 조건을 설정했다면 저장 버튼을 클릭하여 새로운 액세스 수준을 생성합니다. 이제 생성한 객체를 이용해서 클라우드 콘솔 접근을 통제하는 정책을 만들어 봅시다.
클라우드 웹 콘솔 -> 보안 -> BeyondCorp Enterprise 메뉴를 선택합니다. 화면에서 BeyonCorp Enterprise 시작하기가 보입니다. 액세스 및 사용자 보호 알아보기를 클릭합니다. 이제 화면 오른쪽에 아래와 같은 자세히 알아보기 메뉴가 나타납니다. 가장 위의 항목인 Cloud Console 및 API에 대한 안전한 액세스 사용을 확인하고 콘솔 액세스 관리를 클릭합니다.
현재 프로젝트가 선택되어 있다면 조직을 선택하라는 안내문이 나옵니다. BeyondCorp Enterprise는 조직 단위의 설정이므로 조직을 선택해야 합니다.
아직 아무런 접근 설정을 하지 않았으므로 무제한 액세스 권한이 있다고 안내하고 있습니다. 이러한 설정은 계정 정보가 유출될 경우 매우 위험하므로 즉시 액세스 관리를 클릭하여 보안 설정을 해야 합니다. Cloud Console 및 API의 액세스 관리 페이지로 이동하여 추가를 선택합니다.
추가를 클릭하면 Google 그룹스와 액세스 수준을 선택할 수 있는 창이 활성화됩니다.
미리 설정해 놓은 Google 그룹스와 조금 전에 생성한 액세스 수준 객체를 선택합니다. 예제에서 보여지는 그룹은 console-admin 그룹이며 IP 통제를 위한 출발지 IP는 Admin_source_IPs에 설정되어 있습니다. 설정을 완료하면 저장을 선택하여 정책을 적용합니다. 이제 웹 콘솔에 출발지 IP에서만 접근이 가능하도록 보안 설정을 완료했습니다.
관리자가 설정한 출발지 기반 접근통제 정책이 꼭 클라우드 웹 콘솔에만 적용되는 것은 아닙니다. 구글 클라우드가 제공하는 명령어 기반 도구인 gcloud를 이용할 때도 해당 접근통제 정책이 적용됩니다. Gcloud 명령어를 사용하려면 먼저 gcloud auth login을 이용하여 로그인을 하고 인증 세션을 확보해야 합니다. 이후에 해당 명령어가 로그인한 사용자의 권한 기반으로 동작합니다. BeyondCorp Enterprise가 적용한 출발지 기반 보안 정책은 gcloud 명령어에도 동일하게 적용됩니다. 그러므로 gcloud 명령어를 실행하는 사용자가 접근통제 정책에 적용받는다면 명령어는 실행되지 않습니다.
관리자가 허용 대역을 적용할 때 반드시 알아야 할 내용이 있습니다. 출발지 IP에서 접근을 허용하는 정책은 설정한 사용자 그룹에만 적용된다는 점입니다. 예를 들어 적용그룹에 사용자 A, B, C가 포함되어 있다면 A, B, C가 로그인할 때만 출발지 IP를 검사해서 접근통제 정책을 적용합니다. 그룹에 포함되지 않은 다른 사용자들은 여전히 무제한적인 클라우드 웹 콘솔에 접근할 수 있습니다.
출발지 IP를 제한하는 정책은 단순하지만 강력한 보안 통제 수단이 될 수 있습니다. 대부분 기업에서는 대표 IP인 NAT 대역을 접근 IP 대역으로 등록하고 관리자의 접근을 통제합니다. VPN의 경우 기업 네트워크로 접근한 다음에 인터넷으로 나가는 경우가 많아서 원격 근무에도 적용이 가능합니다.
지금까지 Google Cloud 웹 콘솔에 적용가능한 보안 접근통제 방안을 살펴보았습니다. 클라우드 콘솔은 클라우드 자원을 관리할 수 있는 중요한 시스템이므로 아무리 보안을 강조해도 부족합니다. 다음에는 사용자 계정 보안 강화 방안은 강력한 패스워드 설정 및 다중인증(Multi Factor Authentication) 설정을 알아보겠습니다.
'CSP (Cloud Service Provider) > GCP' 카테고리의 다른 글
Kubernetes(GKE를 공부하기 위한) (0) | 2022.09.07 |
---|---|
제로 트러스트 보안 운영 (0) | 2022.09.05 |
GCP - Cloud Storage Signed URL (0) | 2022.08.26 |
GCP Organization Domain 변경 방법 (0) | 2022.08.19 |
Cloud Composer 환경 업그레이드 (0) | 2022.08.19 |
댓글