Cloud/GCP

GCP 보안

달빛궁전- 2023. 5. 30. 10:34

GCP Infra관련 보안을 정리

기본보안

  • MFA (Multi-Factor Authentication) : 다중인증 GCP Console접속시 1차 로그인 이후 OPT, 문자, 디바이스메시지, 백업코드등을 이용하여 로그인 아래 Google문서에서도 권장사항은 MFA를 필수로 사용하는 것을 권장하고 있습니다. 사용자들이 MFA를 강제로 사용하는 방법도 있습니다. (https://admin.google.com)

참고 : MFA적용

[bookmark](https://cloud.google.com/identity/solutions/enforce-mfa?hl=ko)


참고 : MFA 강제사용방법


[bookmark](https://cloud.google.com/blog/ko/products/identity-security/gcp-configure-2sv-for-console-users-)
  • 감사로그 설정

  • 버킷 공개 액세스 차단 : 버킷에 정적컨텐츠를 저장하고, CDN을 이용해 서비스가 필요한 그런 서비스의 버킷이 아니라면 공개적으로 액세스 못하도록 차단이 필요 기본설정은 차단에 체크되어 있습니다.

    스크린샷_2023-02-09_오후_12.53.03.png

  • 로그 버킷사용 : 기본적으로 프로젝트당50GiB / 30일 설정이 되어있으며 고객사 특성에 맞게 필요한 Log수집, 수집기간 설정 필요

Cloud Armor

  • WAF정책 관련 적용 : WAF정책을 시일이 꽤 걸리는 것으로 운영하는 측에서 서비스를 파악을 다 하고있어야 적용가능 모니터링→ 적용→ 모니터링 → 적용과 같은식으로 필요
  • 글로벌 서비스가 아니라면, 외국 IP차단 GCP는 Google에서 제공하는 SaaS 서비스 IP들이 미국 IP가 있어, 차단은 불가하며 중국, 아프리카, 중동등의 IP를 차단하는 선까지는 가능 Apache(웹서버)사용시 GeoIP를 이용해 외국 IP차단을 하였는데, 해당 DB를 이용해서 Cloud Armor에 추가하는 방법도 있습니다.

bookmark

네트워크/인프라

  • VM, CloudSQL등 외부에 노출이 필요하지 않는 서비스라면 공인IP 미부여
  • 보안의 기본은 모두 차단 후 필요한 것만 허용하는 것으로 서비스내 사용하는 IP, Port만 허용처리
  • jumpbox, bestion등 관리자, 사용자가 접속할 수 있는 시스템 외에는 외부접근 차단
  • 서버에서 각 사용자별 로그 히스토리, 접속실패등 로그 활성화 및 로그서버 활성화
  • 알려진 서비스 포트들 (ssh: 22port, was 8080port등)을 변경
  • 웹서버에 직접 인증서 저장이 아닌, Load balancing에 두어서 서비스 향상 (*SSL offloading에 따른 웹서버에서 암호화 처리를 안해도 되는등)과 보안관리적 측면에서 웹서버 보관보다 Cloud에 관리형으로 맡기는 방법이 보안과 서비스 향상에 좋을 것이라 생각됨
  • db연결시 was, dba등 꼭 필요한 사람과 서비스에서만 연결되도록 설정

계정관리

  • 사용하지 않는 권한은 모니터링 하다가 삭제

Untitled.png

사용자 계정이 아닌라, 서비스 사용시에는 서비스계정을 적극 사용

GCP보안 권장사항

https://cloud.google.com/security/best-practices?hl=ko

https://sysdig.com/blog/gcp-security-best-practices/

기타 보안

  • 인증서 발급 및 자동갱신

고객사가 규모가 적다면, 사이트별 인증서 관리도 힘들고, 멀티도메인 인증서는 가격도 비싸기 때문에, docker를 이용하여 Let’s Encrypt에서 자동으로 인증서 갱신, 적용할 수 있도록도 할 수 있습니다. 당연히 권장은 사용하는 도메인에 인증서를 받아 사용하는 것을 추천 (와일드카드 인증서가 비싸지만, 도메인을 여러개 사용할 수 있음)

아래는 제가 사용하는 개인도메인들인데, Nginx Proxy docker를 사용하여 인증서를 자동으로 갱신하도록 하고있습니다.

Untitled.png

GCP load balancer+docker이용해서 하는 방법도 있음

https://github.com/bloomapi/letsencrypt-gcloud-balancer

  • Forward-Proxy사용

서비스 + 보안 권고하는 것으로 Forward-proxy를 사용하는 방법 GCP에서 제공하는 Artifact Registry서비스가 있고, 운영자들이 자기들이 운영하는 내부에 Registry를 두는 건 언제나 염원하는 것이지만, 인프라 담당 입장에서는 구축도 어렵고 유지는 더더욱이 어렵기에 Forward-proxy를 이용하여 외부로 나가는 트래픽을 줄이고, SNAT또한 제어 가능하기에 권해볼 수는 있을 것 같습니다.

계정관리 조사내용

  • Google Key탈취 사례

bookmark

  • GCP에서 제안하는 service account 보안 (2017년도 작성된 글)

bookmark

API를 사용하여, 키 순환 (신규 키 생성 → 교체 → 기존 키 삭제)

bookmark

http(API)로 서비스계정 키 리스트 상태 확인

bookmark

  • GCP에서 권장하는 서비스 계정 키 관리사항

bookmark

bestion사용시 단점과 유의사항

  • bestion은 보안에 위협이 되는 포인트를 한 곳으로 줄여주는 역활과 로그를 통해 누가 접속했는지에 대한 로깅역활도 합니다.
  • bestion이 해킹되면, 외부에서 해당 bestion을 통해 내부 네트워크에 대한 공격할 수단이 생기게됩니다.
  • 접근에 대한 로그도 생성, 관리하기에 별도로 파일서버에 보관, 백업하지 않는 이상 로그손실에 대한 우려도 있습니다.
  • 모든 보안이 다 그렇지만 bestion사용시에는 관리를 잘 하여야 합니다. 모든 ip에서 접근 가능한 것이 아니라, 접근 권한이 부여된 관리자, 사용자만 접근 가능하도록 IP설정 서버접근제어 같은 솔루션을 이용하여 2차인증(MFA)설정
  • bestion이외의 다른 방법
  • 별도의 관리콘솔이 아닌 VDI를 통해 접속 관리자 → VDI → VM 3개 대역 모두 물리적 위치, 네트워크가 다르며 VDI사용시에는 별도의 로그인과 2차인증도 할 수 있습니다.

Untitled.png

  • GCP를 사용하는 방법
    • GCP IAP를 사용하여 VM접속 사용자 → IAP → VM GCP권한을 이용해서 하는 것으로 공격자가 IAP사용권한을 가진 ID를 탈취하지 않는 이상 안전하며, Bestion역활을 IAP(GCP)가 하는 것으로 고객사 실수가 아니라면 GCP에서 보완해준다는 점이 특징입니다.

    • 방법 IAP(35.235.240.0/20) IP대역에 대해 접속하고자 하는 VM 방화벽 허용 IAM권한 할당 (IAP보안터널사용자)

      Untitled.png

      cloud shell 활성화 → gcloud auth login 아래와 같이 명령어를 이용하면, bestion없이 접속

      gcloud compute ssh VM_NAME --tunnel-through-iap --zone=ZONE --project=PROJECT_ID
      
      gcloud compute ssh forward-proxy --tunnel-through-iap --zone=asia-northeast3-c --project=linux1547-int-20221219
      

      Untitled.png

    • GCP Console 접근통제

BeyondCorp AccessContext Manager를 이용하여, 특정IP 대역에서만 접속할 수 있습니다. 여기에서 더 나아가 지역, 기기유형 (OS, 모바일, PC)에 따라 접속을 제어할 수 있습니다. BDP에서 접속을 허가한 VDI에서는 bigQuery를 사용할 수 있고, 그 외에서는 GCP Console은 접근 가능하나 BigQuery는 사용 못하도록 사용하고 있습니다.

bookmark

bookmark

bookmark

타 Cloud 대체 방안

Azure의 Bestion 대체 방안 Azure Portal 접속 (ID/Password → 2차인증) → 직렬 콘솔 접속 → 접속하고자 하는 VM선택

GCP에서는 아래의 방법입니다. GCP Console (ID/Password → 2차인증) → Cloud Shell활성화 → 접속하고자 하는 VM에 로그인 여기서 BeyondCorp Enterprise를 사용하면

AWS

Access Policy를 생성해서, 특정 IP 허용 + MFA를 통해 Console 접근제어 GCP에서는 위의 Console 접근통제 (Access Context Manager)를 사용합니다.

Third Party 시큐브, 하이웨어(넷엔드) 서버접근제어, 계정관리 솔루션 사용 Bestion과 비슷하게 정책서버를 두는 방법도 있고, 각 서버별 Agent를 설치하어 제어하는 방법도 있습니다.

'Cloud > GCP' 카테고리의 다른 글

GCP Console에서 gcloud IAP를 사용하여 instace(GCE)연결  (0) 2023.06.27
[GCP/Monitoring] Monitoring Agent 설치시 에러메시지가 발생될때  (0) 2023.06.24
HA VPN (GCP to AWS)  (0) 2023.06.07
Cloud storage  (0) 2023.05.12
Memorystore  (0) 2023.05.12
SQL  (0) 2023.05.12
Database  (0) 2023.05.12