
VPC Network — Firewall
VPC Network — Firewall 최근 고객사에서 엄격한 수준의 보안 수준을 요구해서 자체적으로 시스템보안을 확인한 일이있습니다. 기본적으로 저희 회사는 GKE ( k8s )를 사용하고 있고, 그것에 맞춰 모든것이 돌아가고 있기 때문에 보안에 대해서는 전혀 걱정하고 있지 않았었으나, 최근 Log4j 이슈도 있고 고객사의 점검 요청도 있기에 이번기회에 전반적으로 전부 검토하는 시간을가졌었습니다. 이번 점검을 통해 VPC의 방화벽은 조금더 타이트하게정리하였습니다. ( 사실 조금더 강력하게 타이트하게 할 수는 있는데, 그건 단계적으로 적용하기로 했습니다. 현실과 이상의 괴리라는게 있으니까요) 기본적으로 GCP 프로젝트를 생성하면 생각보다 많은 보안 홀이있습니다. 당연한 이야기지만 RDP나 SSH 등등 많은 포트들이 0.0.0.0/0 으로 열려있습니다. 거의 다오픈 위의 기본값을 보면 RDP, SSH, ICMP 는 외부에 완전히 열려 있고, 내부망은 모든 포트가 열려 있는것으로 되어있습니다. 물론 RDP를 사용할만한 윈도우 서버 자체는 당연히 안쓰고, SSH 도 기본적으로 구글의 시스템이 보호를 해주니 크게 이슈는없습니다. 그런데 여기에 GKE 가 들어가면 방화벽이 저절로 복잡해 지기시작합니다. 기본적으로 GKE 클러스터를 생성하는 순간 자동으로 등록되는 룰이 생기고, 그 룰들이 생기면서 위에 있는 룰과 겹치거나 혼용되는 경우가생깁니다. 이번에 정리했던 내용들은 그 부분들을정리했습니다. # gclb-allow-health-checks 우선 GCLB ( 로드밸런서 )와 연결을 하기 위해서는 방화벽에서 GCLB의 IP를 허용 리스트에 추가해야합니다. 해당 내용은 다음 링크에서 확인할 수있습니다. Creating health checks | Load Balancing | Google Cloud 여기서 주의할점은 gke-node입니다. 저희의 경우에는 여러 gke cluster 를 사용하기 때문에 공통적으로 편하게 네트워크를 묶을 수 있게 gke-node 라는 네트워크 태그명을부여하였습니다. 따라서 gke cluster 를 생성할때 네트워크 태그에 gke-node 를 추가하면 방화벽 설정을 편리하게 할 수있습니다. 위의 목록을 보면 gke-node 를 사용하는 방화벽룰은 크게 2개입니다. # gke-master GKE 의 경우 기본적으로 Managed 서비스이기 때문에 master 를 우리가 관리하지 않습니다. 하지만, 접속할 IP는 필요하기 때문에 해당 대역을 cluster 를 생성할때 설정해주고 방화벽을 열어줘야합니다. 당연히 대상은 gke-node 로 IP 범위는 cluster 에서 설정한 대역으로 동일하게 하면됩니다. # datastudio 저희 회사는 Data Studio 를 매우 잘 애용하고 있기 때문에 해당 포트도 열어야 합니다. Data Studio 에서 Cloud SQL을 통해서 데이터를 편하게 볼 수 있는 기능을 제공하기때문입니다. 다음 링크를 참조하여 방화벽을설정합니다. MySQL에 연결하기 # client-access, remote-access 마지막으로 고객사에서 접속이 가능한 전용 SQL 서버 방화벽과, 회사에서 접속할 IP를설정합니다. 물론 범위는 최소한으로 포트도 최소한으로 설정해야합니다. 사실, 이정도의 방화벽은 매우 러프한수준입니다. 좀 더 보안에 신경을 쓰려면 타이트하게 설정을 변경해야 할 부분이 많이있습니다. 예를들면 위에서는 Ingress 만 신경썼는데 Egress 쪽을 설정을 추가할 수도있습니다. 또한 내부 네트워크도 기본적으로 ALL 이 아닌 일부 제한을 거는 방법으로 보안을 올릴 수도있습니다. 하지만, 대개의 경우 일반적으로는 위와 같은 수준의 설정으로도 충분한 보안을 얻을 수있습니다. ( 저는 과도한 보안 또한 오버엔지니어링이라고 생각합니다.) 다음 포스팅들에서는 실제로 설정을 변경하는 방법을 확인해보겠습니다. 꿈많은청년들 클라우드튜링 | 챗봇제작 챗봇빌더 VPC Network — Firewall was originally published in Dreamyoungs on Medium, where people are continuing the conversation by highlighting and responding to this story.
