컨테이너 시대의 네트워크 보안
오랜 기간 업계에 종사하면서 얻은 좋은 점 중 하나는 데이터센터의 네트워크 보안 트렌드가 어떻게 발전해왔는지 관찰하고 일반적인 패턴과 직관을 바탕으로 다음에 어떤 일이 일어날지 어느 정도 예측할 수 있다는 사실입니다.
네트워크와 보안의 경계가 변화하고 있습니다.
15년 전만 해도 데이터센터의 네트워크 보안은 매우 단순했습니다. 레이어 2 프로토콜은 그 영역에서 절대적인 왕이었으며 방화벽은 인터넷이나 WAN 연결을 보호하기 위해 엣지에 위치할 수 있었습니다. 특정 애플리케이션을 위한 서버는 모두 동일한 랙에 연결되어 있었고 인프라의 다른 부분 간의 경계가 잘 정의되어 있었습니다. 이를 세분화하는 것은 매우 간단했습니다.

몇 년 후, 이러한 모든 서버를 통합하고 연결을 단순화하기 위해 섀시 및 블레이드 서버가 서서히 주목을 받으면서 서버를 관리하는 사람과 네트워크 및 보안을 담당하는 사람 간의 경계가 처음으로 바뀌게 되었습니다. 이러한 섀시의 연결 모듈은 누가 담당하며 보안 어플라이언스는 어디에 삽입해야 하나요? 대부분의 경우 네트워크 모듈은 섀시에서 가장 중요하지 않은 모듈로 나머지 네트워크 및 보안 인프라에 연결하기에는 항상 악몽과도 같았습니다.

하지만 이 전투는 새로운 기술에 의해 무대가 바뀌었습니다. VMware의 ESX 하이퍼바이저는 동일한 하드웨어 서버를 공유하여 여러 가상 서버를 실행할 수 있는 기능을 빠르게 대중화했습니다. 결과적으로 이러한 가상 서버를 서로 연결하려면 네트워크가 하이퍼바이저 내부의 다른 위치로 다시 한 번 이동해야 했습니다. 시프트는 매우 단순한 가상 스위치로 시작했지만 레이어 3 서비스로 빠르게 확장되었고, 결국 보안으로까지 확장되었습니다.

데이터센터 인프라의 진화에도 불구하고 퍼블릭 클라우드는 완전히 자동화되고 민첩성이 뛰어난 다양한 서비스를 엔터프라이즈 시장에 제공하기 시작하며 승승장구했습니다. 개발자들이 인프라 관리의 복잡성 없이 확장 가능하고 가용성이 높은 서비스를 제공할 수 있는 이 새로운 추상화된 인프라의 가치를 이해하는 데는 그리 오랜 시간이 걸리지 않았습니다.

몇 년 전, 가볍고 휴대가 간편하며 몇 초 만에 쉽게 설치하거나 해체할 수 있는 새로운 유형의 워크로드인 컨테이너가 등장했습니다. 컨테이너가 확산되면서 개발자들은 외부 네트워크 및 보안 인프라에 의존하지 않고도 애플리케이션을 확장 및 축소할 수 있도록 네트워크와 함께 이러한 컴퓨팅 리소스를 오케스트레이션해야 한다는 사실을 빠르게 깨달았습니다. 컨테이너 클러스터는 컴퓨팅, 네트워크, 보안이 혼합된 새로운 인프라 요소로, 네트워크 보안 경계에 또 한 번 변화를 일으킵니다.

그렇다면 15년 동안 우리는 무엇을 배웠을까요? 이 모든 진화의 공통적인 패턴은 무엇인가요?
- 개발자는 애플리케이션을 개발하고 테스트하는 동안 더 많은 유연성을 확보하기 위해 항상 한계를 뛰어넘기 때문에 네트워크 보안 경계가 점점 더 컴퓨팅 계층으로 이동하고 있습니다.
- 네트워크 및 보안 팀은 게임에 늦게 합류하여 기껏해야 선택 사항이나 솔루션을 추천할 수 있지만, 대부분의 경우 애플리케이션 또는 클라우드 팀에서 결정한 사항을 상속받게 됩니다.
- 보안을 염두에 두고 설계하지 않은 경우 인프라를 보호하는 것은 더 어렵고, 나중에 추가할 때 일반적으로 더 많은 복잡성을 야기합니다.
컨테이너의 문제점은 무엇인가요?
컨테이너와 컨테이너 클러스터도 실제로 네트워크를 소프트웨어와 컴퓨팅 계층으로 점점 더 많이 이동하는 이러한 추세에서 예외가 아닙니다. 앞서 설명한 바와 같이, 네트워크 및 보안 팀이 이러한 추세를 바꾸지 않는다면 이러한 추세가 바뀔 이유가 없습니다.
네트워크 및 보안 관점에서 컨테이너는 새로운 것이나 알려지지 않은 것을 도입하는 것이 아니라 우리가 이미 알고 있는 것(IP, 서브넷, DHCP/DNS, 영역, 세그먼트, 캡슐화, NAT, 방화벽 또는 로드밸런서)을 결합할 뿐이지만 모든 것이 OS 자체에 있으며, 이것이 근본적인 문제입니다.
IT 팀은 경계, 책임, 소유권을 좋아하는데, 이는 컨테이너 클러스터의 운영 방식과는 정반대입니다. 이 시스템은 자급자족하고 조율되며 외부로부터 불투명하도록 설계되었습니다. 한편으로는 새로운 인프라를 연결하고 실행하는 데 광범위한 설계 세션이 필요하지 않다는 것은 좋은 소식입니다. 반면에 이러한 클러스터 내에서 어떤 일이 일어나고 있는지 알지 못하고 이해하지 못하면 애플리케이션 흐름을 어떻게 보호할 수 있는지에 대한 실질적인 보안 문제가 생깁니다.
이를 변경하려면 어떻게 해야 하나요?
이상적으로는 개발자가 코드를 개발하여 다른 팀에 넘겨 프로덕션에 적용하는 것이 바람직하며, 이는 철저하게 테스트되고 자동화된 방식으로, 규모와 가용성을 위해 설계된 인프라에서, 스택의 모든 계층에서 보안을 최우선 순위로 두고 이루어져야 합니다.
많은 조직에서 아직 그 단계에 도달하지 못한 것으로 보입니다. 데브옵스 팀은 개발 동료들과 연결되어 있지만, 네트워크 및 보안 팀에서는 항상 그렇지는 않으며, 컨테이너가 시장에서 파괴적인 기술로 인식되려면 이러한 인식이 바뀌어야 합니다.
네트워크 및 보안 팀은 인프라에서 전송되고 보호되는 내용을 이해하는 데 더 많은 시간을 할애해야 합니다. 이들은 CI/CD 파이프라인이 무엇인지 배우고 애플리케이션 내에서 사물이 어떻게 구축되는지에 대한 의견을 가지고 있어야 애플리케이션이 달성할 수 없는 부분을 보완하기 위해 보안 메커니즘을 조정할 수 있습니다. 이를 위해서는 새로운 기술을 배우고, 차이를 받아들이고, 처음에는 좋은 아이디어가 아닌 것 같지만 실제로는 매우 효율적일 수 있는 새로운 개념에 대해 비판적이면서도 열린 마음을 가져야 합니다.
컨테이너는 IT 부서의 모든 영역의 사람들이 서로에게 배울 수 있는 기술의 완벽한 예입니다.
그렇지 않으면 재앙의 지름길입니다. 네트워킹 없이는 컨테이너 클러스터가 없고, 보안 없이는 운영 환경의 컨테이너화된 애플리케이션이 없으며, 세분화 없이는 공유 인프라가 없습니다. 네트워크 및 보안 팀은 이 기회를 통해 새로운 작업 방식을 배우고, 소프트웨어에서 작업을 수행하는 방법을 이해하는 데 더 많은 시간을 할애하며, 애플리케이션 계층에 서비스를 제공하기 위한 간단하고 안전하며 안정적인 설계를 제안함으로써 네트워크 및 보안 계층에 대한 소유권을 가져야 합니다.
어디서부터 시작해야 할까요?
모든 것을 해결할 수 있는 마법의 총알이나 비밀 무기는 분명히 존재하지 않습니다. 하지만 팀을 성공으로 이끄는 데 도움이 될 수 있는 몇 가지 아이디어가 있습니다:
상대를 파악하세요: 개발자와 DevOps 팀은 네트워크 및 보안 팀의 적이 아닙니다. 모두 같은 목적, 즉 비즈니스에 기여하고 있습니다. 하지만 다른 팀이 무엇을 하는지 알지 못하면 그룹으로서 더 나은 성과를 내기 위해 무엇을 할 수 있는지 알기 어렵습니다. 컨테이너 클러스터와 같은 복잡한 인프라를 성공적으로 구축하려면 특히 보안과 관련하여 서로 얽혀 있는 의사 결정이 필요합니다.
지식을 습득하세요: 모든 것을 아는 사람은 없지만 누구나 무엇이든 배울 수 있습니다. 인프라의 일부 영역에서 가벼워지는 것은 괜찮지만, 일이 어떻게 수행되거나 수행되어야 하는지를 배우지 않으려는 것은 절대 괜찮지 않습니다. 컨테이너, 오케스트레이션 플랫폼, 서비스 메시는 접근하기 쉽지 않습니다. 새로운 용어나 개념에 익숙해지는 데는 시간이 걸리지만, 그 이해의 문턱을 넘고 그 지식을 행동으로 옮길 수 있을 때 보람을 느낍니다.
네트워크는 네트워크이고 보안은 보편적인 것입니다: 컨테이너 클러스터는 서로 통신하는 (컨테이너와 연결된) IP 주소의 모음이라는 점을 명심하세요. 또한 애플리케이션은 세상에 노출되지 않은 채 컨테이너 클러스터에서 살기 위한 것이 아니므로, 세상에 일부 문을 여는 개념이 있을 것입니다. 네트워크 및 보안 엔지니어는 클러스터의 한쪽 끝에서 다른 쪽 끝으로 이동하는 흐름과 이 클러스터에서 패킷이 들어오고 나가는 것을 담당합니다. 컨테이너 클러스터 내에서 무언가가 손상된 경우, 침해가 확산되지 않도록 모니터링, 대응 및 대응하는 것은 네트워크 보안팀의 책임입니다. 예, 컨테이너 클러스터는 네트워크 및 보안에 대한 접근 방식이 다르지만 여전히 세분화 및 보안이 필요한 네트워크입니다.
진실 추구: 현 상황을 이해하고 도전하는 것이 중요합니다. 생각한 대로 일이 진행되지 않아도 괜찮습니다. 즉, 팀원 모두가 함께 진실을 찾고 이에 동의해야 합니다. 잘 이해된 기술은 배포, 보안 및 문제 해결이 더 쉽습니다.
컨테이너, 오케스트레이션 플랫폼, 서비스 메시가 오늘날 IT 조직에서 많은 관심을 받고 있으며, 네트워크 및 보안 엔지니어로서 이러한 기술의 개념을 이해하는 것은 매우 중요합니다. 어떤 개념은 매우 익숙하게 들리기도 하고 어떤 개념은 매우 이상하게 들리기도 하지만, 제대로 보안을 유지하려면 실제로 어떻게 작동하는지 알아야 합니다!
컨테이너 세분화를 위해 Illumio를 활용하는 방법에 대한 자세한 내용은 컨테이너 페이지를 참조하세요.