/
제로 트러스트 세분화

마이크로세그멘테이션으로 복원력 있고 안전한 마이크로서비스 구축

이 문서는 원래 새로운 스택.

약 10~12년 전, 소프트웨어 업계는 엔터프라이즈 애플리케이션의 아키텍처 측면에 변화를 경험했습니다. 설계자와 소프트웨어 빌더는 프라이빗 데이터센터에 배포된 거대하고 긴밀하게 결합된 모놀리식 애플리케이션에서 벗어나 퍼블릭 클라우드 인프라에서 호스팅되는 마이크로서비스 지향 아키텍처로 전환하기 시작했습니다. 마이크로서비스의 고유한 분산 특성은 퍼블릭 클라우드의 새로운 보안 과제입니다. 지난 10년 동안 확장 가능하고 자율적이며 강력한 엔터프라이즈 애플리케이션을 구축하기 위한 마이크로서비스 지향 아키텍처의 채택이 증가했음에도 불구하고 조직은 기존 데이터센터에 비해 클라우드에서 이 새로운 공격 표면을 보호하는 데 어려움을 겪는 경우가 많습니다. 여기에는 멀티테넌시, 인프라에 대한 가시성 및 제어 부족, 운영 환경에 대한 우려도 포함됩니다. 이러한 아키텍처의 변화는 특히 더 빠른 컨테이너 기반 배포를 가장 중요시하는 상황에서 보안 목표를 달성하기 어렵게 만듭니다.

이 글의 목적은 마이크로세그멘테이션이 무엇이며 소프트웨어 설계자, DevOps 엔지니어 및 IT 보안 설계자가 안전하고 탄력적인 마이크로서비스를 구축할 수 있도록 지원하는 방법을 이해하는 것입니다. 특히, 널리 사용되는 컨테이너 오케스트레이션 메커니즘인 Kubernetes와 관련된 네트워크 보안 문제에 대해 논의하고, 침해 발생 시 측면 이동을 방지하기 위한 마이크로세그멘테이션의 가치를 설명하겠습니다.

마이크로서비스 배포의 보안 과제

마이크로서비스 지향 아키텍처는 애플리케이션을 더 작고 느슨하게 결합된 서비스로 나누어야 합니다. 이러한 서비스의 분산된 특성으로 인해 자체 데이터스토어를 보유하게 되는 경우가 많습니다. 이러한 각 서비스는 컨테이너를 사용하여 독립적으로 배포되며, 컨테이너는 애플리케이션이 객체 코드, 타사 라이브러리, 운영 체제, 도구 및 기타 종속성 등 모든 것을 패키징할 수 있는 메커니즘을 제공합니다. 모든 필수 요소가 패키징되면 컨테이너는 이를 원활하게 실행할 수 있는 실행 환경을 제공합니다. 이러한 컨테이너는 Kubernetes와 같은 오케스트레이터를 사용하여 관리됩니다.

일반적으로 컨테이너 에코시스템은 격리를 통해 보안을 강화하도록 설계되어 있습니다. 그러나 컨테이너 간 격리가 반드시 필요한 보안 경계를 제공하는 것은 아닙니다. 쿠버네티스는 인증, 권한 부여, 네트워크 정책, 파드 보안 표준 등과 같은 여러 보안 기능을 제공한다. 하지만 안타깝게도 컨테이너나 Kubernetes 모두 기본적으로 보안을 제공하지 않습니다. Kubernetes 배포는 기본 구성에서 보안보다 기능에 우선순위를 둡니다. 따라서 이러한 컨테이너의 생성, 이동, 파기를 담당하는 개발자나 안정성 엔지니어는 배포의 보안을 보장하는 방법을 항상 알지 못할 수 있습니다. 네트워킹 및 보안 관점에서 Kubernetes의 몇 가지 중요한 측면을 자세히 살펴보겠습니다:

  1. 네임스페이스: 네임스페이스는 클러스터 리소스를 여러 사용자 간에 가상 공간으로 나누는 논리적 방법입니다. Linux와 달리 네트워크 세분화를 강제하지 않습니다. 네임스페이스는 보안 경계가 아니므로 한 네임스페이스의 서비스가 다른 네임스페이스의 서비스에 액세스할 수 있다는 점에 유의하세요.
  2. 네트워크 정책: 쿠버네티스 네트워크 정책은 네임스페이스, 파드 및 IP 주소 블록 간의 레이어 3 및 레이어 4 통신을 허용하는 애플리케이션별 구성이다. 쿠버네티스를 설치하면 기본적으로 네트워크 정책을 사용할 수 없습니다. 파드를 생성하기 전에 네트워크 정책을 적용하려면 네트워크 플러그인을 설치하고 구성해야 합니다. 또한 네트워크 정책은 서비스 수준에서 적용할 수 없다는 점에 유의할 필요가 있습니다. 이는 서비스에 대한 액세스 제어를 확장할 수 없기 때문에 보안 관점에서 중요한 단점입니다.
  3. 파드 보안 표준: 클러스터에서 파드는 동일한 물리적 또는 가상 머신을 공유하는 여러 컨테이너를 지원합니다. 이를 통해 포드 내의 컨테이너 간에 데이터를 공유하고 통신할 수 있습니다. 파드 보안 표준을 통해 관리자는 세분화된 권한 부여 모델을 사용하여 리소스와 해당 권한을 제어할 수 있습니다. 이 보안 제어에는 기본적으로 사용하도록 설정되어 있지 않은 권한 컨트롤러가 필요합니다. 권한 있는 파드는 모든 컨테이너에 대한 관리 액세스 권한을 제공합니다. 결과적으로 권한이 있는 컨테이너에 액세스하는 공격자는 호스트 리소스에 대한 관리 액세스 권한을 얻을 수 있습니다.
  4. 비밀 스토리지: 비밀번호, OAuth 토큰, SSH 키와 같은 민감한 기밀 정보를 비밀번호로 저장하며, 이는 일반 텍스트로 간주되는 베이스 64 인코딩 형식의 비밀로 저장합니다. 비밀에 대한 액세스를 제한하는 데 사용되는 권한 부여 정책은 기본적으로 구성되지 않습니다. 환경 변수나 매니페스트 파일을 통해 공유되는데, 이 역시 비밀을 다루는 데 있어 안전하지 않은 관행으로 간주됩니다. 미사용 시크릿에 대한 기본 암호화와 강력한 시크릿 관리가 부재한 상황에서 시크릿은 측면 이동의 매력적인 표적이 됩니다.

측면 이동과 악의적인 내부자

그림 1: 측면 이동을 유발하는 악의적인 내부자

마이크로서비스의 분산된 특성으로 인해 연결성이 매우 중요합니다. 특히, 컨테이너와 파드는 네임스페이스 전반에서 서로 통신할 수 있어야 합니다. 그러나 클러스터 계층의 기본 네트워크 정책이 최소 권한 원칙을 즉시 구현하는 것은 아닙니다. 따라서 코드를 어떻게 보호하든 공유 리소스에 대한 무단 암시적 액세스는 금지할 수 없습니다. 결과적으로 애플리케이션이 클러스터 내에서 측면 이동에 취약해질 수 있습니다. 마이크로세그멘테이션을 사용하면 세분화된 액세스 제어를 구현하여 컨테이너, 포드, 클러스터 수준에서 각 마이크로서비스 주변에 보안 영역을 생성함으로써 공격 반경을 크게 줄이고 공격 성공 시 복구할 수 있는 복원력을 높일 수 있습니다.

마이크로서비스와 관련하여 기존 쿠버네티스 프레임워크의 보안 모델이 제시하는 두 번째 두드러진 위협은 악의적인 내부자입니다. 기본적으로 보안을 사용할 수 없는 경우 공격자 입장에서는 몇 가지 잘못된 구성이 가능합니다. 강력한 액세스 제어 또는 권한 부여 정책이 없는 경우, 서버 측 요청 위조(SSRF)와 같은 공격을 통해 공격자는 인증된 파드 액세스를 활용하여 다른 파드 내의 리소스에 대한 무단 액세스를 얻을 수 있습니다.

위에서 설명한 것처럼 기본적으로 비밀을 보호할 수 있는 적절한 보안 제어 기능이 제공되지 않는다는 것을 확인했습니다. 비밀을 암호화하지 않고 순환시키지 않는 것과 비밀에 대한 액세스를 제한하지 않는 것은 사실 서로 무관한 문제이지만, 한 가지 보안 제어(이 경우 암호화 미적용)가 없는 경우 악의적인 내부자(예: 불만을 품은 관리자)의 악용을 방지하기 위해 두 번째 보안 제어(즉, 비밀 저장소에 대한 액세스 제한)가 중요해집니다.

마이크로세그멘테이션을 통한 사이버 복원력 소개

보안의 맥락에서 복원력은 공격이나 침해와 같은 치명적인 사건으로 인한 단순한 장애로부터 신속하게 복구할 수 있는 능력을 의미합니다. 복원력 있는 마이크로서비스를 구축하는 첫 번째 단계는 공격자로부터 보호하고자 하는 것이 무엇인지, 자산이나 리소스가 손상된 경우 그 영향을 어떻게 제한할 수 있는지 파악하는 것입니다. 마이크로세그멘테이션은 필수 데이터 또는 중요한 내결함성 시스템을 보유한 리소스를 파악하는 데 도움이 되며, 최소 권한에 따라 액세스를 잠그는 메커니즘도 제공합니다. 이렇게 하면 중요한 리소스 하나가 손상되더라도 다른 리소스는 영향을 받지 않습니다.

오늘날의 최신 소프트웨어 개발 라이프사이클은 기능을 빠르게 제공하는 것을 특히 강조합니다. 이러한 기능은 컨테이너를 통해 프로덕션 환경에 더욱 빠르게 배포되며, 대부분 동일한 개발자 또는 DevOps에 의해 이루어집니다. 마이크로서비스, 써드파티 라이브러리, 기타 종속성, 컨테이너 또는 클러스터의 코드가 취약할 수 있는 모든 유형의 취약성을 고려한다면 어떻게 이 모든 공격을 식별하고 예방할 수 있을까요? 해답은 중요한 리소스에 대한 액세스를 차단하고 마이크로세그멘테이션을 사용하여 '꼭 필요한 경우에만' 액세스를 허용하는 것입니다.

마이크로세분화 시작하기

마이크로세분화를 시작할 때 모든 경우에 적용되는 전략은 없지만, 다음은 마이크로서비스를 위한 마이크로세분화 프로젝트를 시작할 때의 몇 가지 모범 사례입니다:

1. 마이크로서비스 디자인 패턴 파악 및 마이크로세분화 템플릿 사용하기

디자인 패턴을 알면 아키텍처 구성 요소, 데이터 흐름, 중요한 데이터를 보관하는 자산을 더 깊이 이해할 수 있습니다. 이러한 자주 사용되는 디자인 패턴을 기반으로 해당 마이크로세분화 템플릿을 만들 수 있습니다. 보안 및 네트워킹 팀에서 이러한 템플릿을 검토한 후에는 쉽게 재사용하고 더 빠른 속도로 확장할 수 있습니다.

긴밀하게 결합된 거대 모놀리스 애플리케이션과 달리 마이크로서비스 지향 아키텍처를 기반으로 하는 애플리케이션은 하나 이상의 특정 디자인 패턴을 따릅니다. 이러한 디자인 패턴은 다음 중 하나일 수 있습니다:

  • 분해 패턴에는 비즈니스 기능에 따라 애플리케이션을 하위 도메인 또는 트랜잭션으로 분류하는 것이 포함됩니다.
  • 통합 패턴에는 API 게이트웨이, 애그리게이터, 체인형 마이크로서비스 등과 같은 서비스 통합 디자인 패턴이 포함됩니다.
  • 데이터베이스 패턴은 애플리케이션의 전체 아키텍처에서 데이터베이스의 위치에 초점을 맞춥니다. 예를 들어 서비스별 데이터베이스, 공유 데이터베이스, 이벤트 소싱 등이 있습니다.
  • 통합 가시성 패턴은 로그 집계, 분산 추적, 상태 확인 등과 같이 감사, 로깅 및 모니터링에 중점을 둔 디자인 패턴으로 구성됩니다.
  • 교차 관심사 패턴은 보안, 내결함성, 서비스 간 커뮤니케이션, 구성 관리와 같은 애플리케이션 수준의 기능을 중앙 집중화된 위치에서 관리하는 데 도움이 됩니다. 예를 들면 회로 차단기, 서비스 검색 등이 있습니다.

(다양한 마이크로서비스 디자인 패턴에 대한 자세한 내용은 여기를 참조하세요.)

2. 올바른 마이크로세분화 접근 방식 선택

현재 시장에는 다양한 솔루션 접근 방식을 제공하는 여러 마이크로세분화 공급업체가 있습니다. 크게 마이크로세분화 기술은 두 가지 범주로 나뉩니다:

  1. 기술에 구애받지 않는 마이크로세분화 솔루션은 에이전트 또는 차세대 방화벽을 기반으로 합니다.
  2. 기술 종속적인 마이크로세분화 솔루션은 하이퍼바이저 또는 네트워크 패브릭을 기반으로 합니다.

마이크로서비스는 다양한 기술 스택을 사용하며, 배포 속도가 빠를수록 빠르게 확장할 수 있는 기능이 요구됩니다. 따라서 기술에 구애받지 않고 클러스터, 포드, 컨테이너, 서비스를 세분화할 수 있는 컨테이너 에코시스템에 특별히 맞춤화된 마이크로세분화 솔루션이 최적의 선택이 될 것입니다.

3. 네트워크 가시성

세분화된 애플리케이션과 트래픽 흐름을 시각화하는 기능은 마이크로세그멘테이션 솔루션의 필수적인 부분입니다. 가시성은 관리자, 보안 설계자, 최고 보안 책임자(CSO)에게 전체 네트워크에 대한 원스톱 보기를 제공합니다.

4. 사용하기 쉬운 중앙 집중식 제어

각 애플리케이션에 대한 정책 초안을 작성하는 것은 처음에는 어려운 작업일 수 있습니다. 이를 위해서는 IT, 네트워크 및 보안 설계자와 일련의 대화가 필요합니다. 정책 생성 및 시행을 용이하게 하는 중앙 집중식 제어 기능이 있으면 프로세스 속도를 높이는 데 도움이 됩니다. 마이크로서비스 디자인 패턴에 따라 사용자 지정되는 세분화 템플릿을 활용하는 것도 도움이 될 수 있습니다.

5. 성능이 병목 현상이 되어서는 안 됩니다.

마이크로세분화 정책을 적용하려면 트래픽을 분석하고 정책을 실시간으로 효과적으로 배포해야 합니다. 공격자는 성능 지연을 활용하여 공격을 더욱 노골화할 수 있습니다. 따라서 특히 지연 시간에 민감한 마이크로서비스의 경우 성능을 테스트하는 것이 매우 중요합니다.

Conclusion

그림 2: 마이크로 세분화를 사용하여 생성된 보안 영역은 측면 이동을 방지합니다.

이 블로그 게시물에서는 마이크로서비스에서 사용하는 컨테이너 및 Kubernetes 기반 배포 메커니즘에서 나타나는 몇 가지 보안 문제에 대해 설명했습니다. 중요한 리소스에 대한 액세스 제한을 크게 고려하지 않고 CI/CD 수명 주기 동안 지속적으로 프로덕션에 마이크로서비스를 더 빠른 속도로 배포할 때 '복원력'이라는 단어가 나오기 시작합니다. 마이크로세그멘테이션은 침해의 영향을 최소화하는 강력한 액세스 제어 메커니즘을 제공합니다. 또한 보안 마이크로존을 구현하여 엔터프라이즈 애플리케이션의 복원력을 강화합니다.

마이크로세분화를 올바르게 계획하고 수행하면 마이크로서비스 세계에서 측면 이동에 대한 강력한 방어벽을 구축할 수 있습니다. 빠르게 움직이면서 마이크로서비스를 보호하는 것은 어렵지만, 규모에 맞게 보안과 복원력을 구현하는 것을 멈추고 모든 이해관계자와 함께 적극적으로 계획하는 것이 중요합니다.

관련 주제

No items found.

관련 문서

연방 기관이 제로 트러스트 파일럿 프로젝트를 만드는 방법
제로 트러스트 세분화

연방 기관이 제로 트러스트 파일럿 프로젝트를 만드는 방법

조직에서 제로 트러스트를 구현하려면 먼저 중요한 보안 우선순위와 현재 제로 트러스트 기능을 파악하는 것부터 시작하세요.

EDR과 제로 트러스트 세분화가 모두 필요한 이유
제로 트러스트 세분화

EDR과 제로 트러스트 세분화가 모두 필요한 이유

EDR과 XDR에 대한 사용자의 입장에 관계없이 Illumio는 제로 트러스트 세분화 정책으로 두 제품을 보완하여 공격자가 기동할 여지를 거의 남기지 않습니다.

일루미오가 eBay의 대규모 마이크로세분화 프로젝트를 간소화한 방법
제로 트러스트 세분화

일루미오가 eBay의 대규모 마이크로세분화 프로젝트를 간소화한 방법

일루미오를 사용하여 네트워크 전체에 마이크로세그멘테이션을 배포한 eBay의 성공 사례를 알아보세요.

No items found.

위반 가정.
영향 최소화.
복원력 향상.

제로 트러스트 세분화에 대해 자세히 알아볼 준비가 되셨나요?