NGINX로 Kubernetes 앱을 위한 제로 트러스트 보안 설계하기

NGINX | 2022년 9월 26일

사이버 보안 공격의 정교함과 횟수가 기하급수적으로 증가하면서 온프레미스, 하이브리드 및 멀티 클라우드 Kubernetes 환경에 배포된 애플리케이션이 노출될 위험도 크게 높아지고 있습니다. 기존 보안 모델은 경계를 기반으로 하며, 사용자가 환경의 보안 경계 내에 있으면 신뢰할 수 있고 사용자 간 통신도 안전하다고 가정합니다. 오늘날의 분산 환경에서는 경계 내부의 안전지대라는 개념이 더 이상 존재하지 않습니다. 환경 ‘내부’에서 시작된 통신도 외부 위협만큼이나 위험할 수 있습니다.

이 블로그에서는 Kubernetes 인프라를 보호하기 위해 제로 트러스트 모델을 도입할 때의 이점과 NGINX를 통해 보안 태세를 강화하는 방법을 살펴봅니다.

제로 트러스트란 무엇인가요?

제로 트러스트는 위치가 아닌 ID를 기반으로 하는 보안 모델입니다. 요청자가 온프레미스, 원격 또는 클라우드에 있는 것처럼 보이는지와 관계없이 애플리케이션, 데이터 및 디바이스에 대한 모든 액세스 요청을 공격일 수 있다고 간주합니다.

제로 트러스트의 세 가지 핵심 원칙인 ‘절대 신뢰하지 말고, 항상 검증하며, 지속적으로 모니터링하라’를 구현하기 위해 모든 사용자, 서비스, 애플리케이션 및 디바이스는 인증 및 권한 부여 증명을 지속적으로 제시해야 합니다. 동적 액세스 정책과 최소 권한 원칙에 따라 유효 기간이 제한된 권한이 부여됩니다.

모든 통신은 암호화되며, 모든 당사자를 인증하고 동적 액세스 정책에 따라 권한을 부여하는 정책 결정/시행 지점(PDP/PEP)을 통해 라우팅됩니다. 또한 보안 위험을 분석, 평가 및 완화하기 위한 감사, 모니터링, 보고 및 자동화 기능이 마련되어 있습니다.

제로 트러스트 다이어그램

제로 트러스트로 보안 태세를 강화하는 방법

제로 트러스트는 여러 측면에서 보안 태세를 강화합니다:

  • 승인되지 않은 활동을 자동으로 차단합니다
  • 노출된 공격 표면을 줄이기 위해 액세스 제어를 적용합니다
  • 비정상적인 행동과 침해 지표를 탐지합니다
  • 액세스 시간을 제한하는 실시간 최소 권한 정책을 정의합니다
  • 지속적으로 신원을 인증하고 검증하여 진행 중인 공격을 차단합니다

제로 트러스트는 Kubernetes 환경에서 실행되는 최신 클라우드 네이티브 앱에 특히 중요합니다. 느슨하게 결합되어 이식성이 뛰어난 분산형 앱과 서비스는 컨테이너화되어 하이브리드 멀티 클라우드 환경 전반에서 실행되므로, 위치 기반 보안을 적용할 수 없습니다. 따라서 보안을 유지하려면 ID와 권한을 지속적으로 검증하고, 엔드투엔드 암호화와 모니터링을 수행해야 합니다.

제로 트러스트 보안을 구현하는 방법

제로 트러스트 원칙을 충족하려면 Kubernetes 환경에서 사용자, 애플리케이션 및 서비스를 위한 인증, 권한 부여, 액세스 제어, 정책, 암호화, 모니터링, 감사 등의 핵심 보안 기능을 제공해야 합니다.

이를 달성할 수 있는 한 가지 방법은 앱 자체에 보안 기능을 구축하는 것입니다. 하지만 그렇게 하려면 개발자가 신뢰 설정 및 검증, 사용자 ID 및 인증서 관리, 모든 통신의 암호화 및 복호화 등 여러 보안 절차를 구현해야 합니다. 또한 TLS 및 SSO(Single Sign-On)와 같은 타사 기술을 이해하고 통합해야 합니다. 이 모든 작업은 이미 복잡한 Kubernetes 배포를 더욱 복잡하게 만들 뿐만 아니라, 개발자가 집중해야 하고 또 집중하고 싶어 하는 앱의 비즈니스 기능 최적화에 전념하지 못하게 합니다.

걱정하지 마세요. 더 나은 방법이 있습니다. 보안 및 기타 비기능 요구 사항을 Kubernetes 인프라에 맡기세요! Ingress 컨트롤러와 서비스 메시 같은 Kubernetes 클러스터용 연결 도구는 사용자, 다른 앱 또는 서비스 중 어디에서 시작된 통신이든 앱과 서비스 간의 모든 통신에 PDP와 PEP를 제공할 수 있습니다. 따라서 핵심 비즈니스 전문성과 기능에 집중하면서 앱을 더 빠르고 쉽게 제공할 수 있습니다.

F5 NGINX가 제공하는 지원

다음 다이어그램에서 볼 수 있듯이, 안전한 Kubernetes 연결을 위한 NGINX 솔루션은 온프레미스, 하이브리드, 멀티 클라우드 등 모든 환경에서 사용자, 분산 애플리케이션, 마이크로서비스 및 API를 대규모로 엔드 투 엔드 보호하는 데 필요한 인프라 독립적 구성 요소와 도구를 모두 제공합니다. 전 세계에서 가장 널리 사용되는 데이터 플레인을 기반으로 하는 이 솔루션은 다음을 결합합니다:

  • NGINX Ingress Controller는 Kubernetes용 Ingress 컨트롤러이자 타사 ID 및 SSO 공급자와 통합되는 PDP/PEP입니다. NGINX Plus를 기반으로 하는 NGINX Ingress Controller는 고급 연결, 모니터링 및 가시성, 인증 및 SSO를 처리하며 API 게이트웨이 역할도 수행합니다.
  • NGINX Service Mesh는 가볍고 즉시 사용 가능하며 개발자 친화적인 서비스 메시로서 Kubernetes 클러스터 내의 서비스 연결을 보호합니다. 각 Kubernetes 서비스와 함께 배치되어 PDP/PEP 역할을 하는 엔터프라이즈급 사이드카는 NGINX Plus를 기반으로 합니다.
  • NGINX App Protect 는 F5의 시장 선도적인 보안 기술을 기반으로 최신 앱과 API를 포괄적으로 보호합니다. 다양한 배포 시나리오에 유연하게 대응하고 리소스 활용을 최적화하기 위해 모듈식 접근 방식을 사용합니다:
    • NGINX App Protect WAF – OWASP Top 10으로부터 보호하고 PCI DDS 규정 준수를 지원하는 강력하고 가벼운 WAF
    • NGINX App Protect DoS – 클라우드와 아키텍처 전반에서 일관되고 적응형인 보호를 제공하는 행동 기반 DoS 탐지 및 완화

제로 트러스트 다이어그램 2

NGINX 솔루션을 사용하면 다음을 수행할 수 있습니다:

  • 릴리스 속도를 늦추거나 성능을 저하시키지 않으면서 분산 환경 전반에 강력한 보안 제어를 통합합니다
  • 지속적인 인증, 신원 검증 및 비정상적인 행동 탐지를 통해 진행 중인 공격을 자동으로 차단
  • 실시간 최소 권한 정책, 세분화된 액세스 제어, 종단 간 암호화 및 여러 팀에 걸친 거버넌스를 구현합니다
  • 통합된 강력한 WAF와 애플리케이션 수준의 DoS 방어 기능을 통해 코드에서 고객에 이르기까지 애플리케이션을 안전하게 제공
  • 세분화된 실시간 및 과거 메트릭을 활용하여 Kubernetes 환경의 보안 상태를 지속적으로 평가하고 개선하세요.
  • 기술 통합을 통해 안전한 사용자-서비스 및 서비스 간 통신의 배포와 관리를 간소화하세요

NGINX로 포괄적인 제로 트러스트 보안 구현

조직이 확장됨에 따라 제로 트러스트 보안 기능처럼 앱의 기능과 직접 관련이 없는 요구 사항을 애플리케이션 계층에서 분리하는 것이 매우 중요해집니다. 앞서 설명했듯이, 이를 통해 개발자는 여러 앱에 보안 로직을 구축하고 유지 관리하며 복제해야 하는 부담에서 벗어나 플랫폼 수준의 보안 기술을 손쉽게 활용할 수 있습니다. NGINX는 클러스터 에지에서는 NGINX Ingress Controller를, 클러스터 내부에서는 NGINX Service Mesh를 통해 Kubernetes를 위한 중앙 집중식 보안 정책 적용 기능을 제공합니다. 앱 보안 요구 사항에 따라 클러스터 에지 또는 내부에 NGINX App Protect WAF 및 DoS를 배포하여 정교한 사이버 공격으로부터 애플리케이션을 보호하는 고급 기능을 추가할 수 있습니다.

Kubernetes 배포 환경에 포괄적인 제로 트러스트 보안을 구현하는 데 필요한 기능이 NGINX 솔루션에 어떻게 포함되어 있는지 자세히 살펴보겠습니다.

인증 및 권한 부여

제로 트러스트 보안의 핵심 원칙 중 하나는 모든 디바이스, 사용자, 서비스 및 요청에 대해 인증과 권한 부여를 수행하는 것입니다. 인증은 신원을 확인하는 과정입니다. 즉, 통신에 참여하는 각 주체가 자신이 주장하는 대상이 맞는지 확인하는 것입니다. 권한 부여는 특정 주체가 리소스 또는 기능에 대해 요청한 접근 권한을 보유하고 있는지 확인하는 과정입니다.

이 원칙을 충족하기 위해 NGINX 솔루션은 HTTP 기본 인증, JSON 웹 토큰(JWT), 그리고 OpenID Connect를 비롯하여 인증 및 권한 부여를 구현할 수 있는 여러 옵션을 제공합니다. OpenID Connect는 Okta 및 Azure Active Directory(AD)와 같은 ID 공급자와의 통합을 통해 지원됩니다. 또한 NGINX 솔루션은 서비스에 보안 ID를 발급하여(애플리케이션 사용자에게 인증서 형태의 ID를 발급하는 것과 유사함) Kubernetes 클러스터 전반에서 서비스가 인증 및 권한 부여를 거쳐 작업을 수행할 수 있도록 합니다. NGINX 솔루션은 워크로드 ID를 처리할 뿐만 아니라 공개 키 인프라(PKI) 및 인증 기관과의 기본 제공 통합을 통해 인증서 관리도 자동화합니다.

NGINX Ingress Controller는 클러스터로 들어오는 모든 요청을 이미 검사하여 적절한 서비스로 라우팅하고 있으므로, 중앙 집중식 사용자 인증 및 권한 부여를 구현하기에 가장 효율적인 위치이며, 일부 시나리오에서는 서비스 인증에도 가장 적합합니다.

자세한 내용은 블로그에서 Okta 및 NGINX Ingress Controller를 사용하여 Kubernetes용 OpenID Connect 인증 구현하기를 참조하세요.

데이터 암호화 및 무결성

제로 트러스트의 또 다른 원칙은 통신 참여자의 위치와 관계없이 모든 통신의 기밀성과 무결성이 유지되도록 보호해야 한다는 것입니다. 권한이 없는 당사자가 데이터를 읽거나 전송 중에 데이터를 변경할 수 없어야 합니다. 이 원칙을 충족하기 위해 NGINX 솔루션은 사용자와 서비스 간 통신에는 SSL/TLS 암호화를 사용하고, 서비스 간 통신에는 상호 TLS(mTLS) 인증 및 암호화를 사용합니다.

앱 아키텍처에 Kubernetes 클러스터 내 서비스 간 통신이 포함되지 않는다면 NGINX Ingress Controller만으로도 데이터 무결성 요구 사항을 충족할 수 있습니다. 기본적으로 다음 두 가지 옵션이 있습니다:

  • With TLS 패스스루를 사용하면 NGINX Ingress Controller는 SSL/TLS로 암호화된 연결을 복호화하거나 SSL/TLS 인증서 또는 키에 액세스할 필요 없이 서비스로 직접 라우팅합니다.
  • With SSL/TLS 종료를 사용하면 NGINX Ingress Controller가 역방향 프록시로 작동하여 요청자와의 TLS 연결을 종료한 다음, mTLS 또는 서비스 측 SSL/TLS를 사용해 Kubernetes 서비스(백엔드 및 업스트림 서버)에 대한 새 연결을 암호화합니다.

아키텍처에 클러스터 내 서비스 간 통신이 포함되는 경우 데이터 무결성을 보장하려면 NGINX Ingress Controller와 NGINX Service Mesh가 모두 필요합니다. NGINX Service Mesh는 지정된 서비스 간에만 통신할 수 있도록 하고, mTLS를 사용하여 서비스를 인증하고 서비스 간 통신을 암호화합니다. NGINX Service Mesh를 사용하면 개발자가 애플리케이션에 인증서를 추가하거나 상호 인증이 이루어지고 있다는 사실조차 알 필요 없이 mTLS를 ‘제로 터치’ 방식으로 구현할 수 있습니다.

Kubernetes 클러스터의 통신 보안에 대해 자세히 알아보려면 블로그에서 NGINX Service Mesh의 mTLS 아키텍처를 읽어보세요.

액세스 제어 및 액세스 정책

액세스 제어는 제로 트러스트 모델의 또 다른 핵심 요소입니다. Kubernetes는 역할 기반 액세스 제어(RBAC)를 사용하여 사용자별로 이용할 수 있는 리소스와 수행할 수 있는 작업을 규제합니다. 이를 통해 사용자 또는 사용자 그룹이 클러스터 내의 Kubernetes 객체나 네임스페이스와 상호 작용할 수 있는 방식을 결정합니다.

NGINX Kubernetes 연결 솔루션은 RBAC를 지원하므로 조직의 보안 정책에 손쉽게 부합할 수 있습니다. RBAC를 적용하면 사용자는 IT 티켓을 제출하고 처리를 기다릴 필요 없이 업무 수행에 필요한 기능에 제한적으로 액세스할 수 있습니다. RBAC가 없으면 사용자가 필요하지 않거나 부여받을 자격이 없는 권한을 획득할 수 있으며, 이러한 권한이 오용될 경우 보안 취약점으로 이어질 수 있습니다.

NGINX Ingress Controller에서 RBAC를 구성하면 조직의 애플리케이션 개발 및 제공 환경에 있는 다양한 역할에 맞춰 권한을 부여함으로써 여러 사용자와 팀의 액세스를 제어할 수 있습니다. 세분화된 액세스 관리 도구를 통해 여러 팀에서 셀프서비스와 거버넌스를 구현할 수 있습니다.

NGINX Ingress Controller에서 RBAC를 활용하는 방법을 알아보려면 DevNetwork에서 제공하는 웨비나인 NGINX Ingress Controller를 활용한 고급 Kubernetes 배포를 시청하세요. 13분 50초부터 전문가들이 보안, 셀프서비스, 멀티테넌시를 위해 RBAC와 리소스 할당을 활용하는 방법을 설명합니다.

관측 가능성

감사, 모니터링, 로깅, 추적 및 보고는 제로 트러스트 환경의 핵심 요소입니다. Kubernetes 애플리케이션 인프라의 상태에 관한 정보를 더 많이 수집하고 이를 더 효과적으로 연계, 분석 및 평가할수록 보안 태세를 더욱 강화할 수 있습니다.

Kubernetes 배포 환경에서 이미 모니터링 도구를 사용하고 있어 또 다른 도구는 필요하지 않을 가능성이 큽니다. 클러스터 내부에서 일어나는 상황을 전체적으로 파악할 수 있도록, JSON을 지원하는 타사 도구로 메트릭을 손쉽게 내보낼 수 있게 NGINX Plus API를 계측했으며, OpenTelemetry와 Grafana 및 Prometheus 같은 인기 도구를 위한 사전 구축된 통합 기능도 제공합니다. 심층 추적을 통해 앱 연결에 관한 구체적인 인사이트를 얻고 요청이 처음부터 끝까지 처리되는 방식을 파악할 수 있습니다. NGINX Ingress Controller는 클러스터와 외부 클라이언트 간의 연결에 대한 인사이트를 제공하며, NGINX Service Mesh는 클러스터 내에서 컨테이너화된 마이크로서비스 기반 앱과 서비스 간의 연결을 지원합니다.

WAF 및 DoS 보호

NGINX App Protect를 사용하면 OWASP Top 10 및 레이어 7 서비스 거부(DoS) 공격과 같은 위협으로부터 분산 애플리케이션을 보호하여 보안을 한층 더 강화할 수 있습니다. 엔드 투 엔드 NGINX 보안 연결 솔루션의 핵심 구성 요소인 NGINX App Protect는 기본적인 시그니처 기반 보호를 훨씬 뛰어넘어 가장 지능적인 위협에도 민첩하게 대응하는 애플리케이션 중심의 보안을 제공합니다. F5의 업계 최고 수준이자 신뢰할 수 있는 보안 전문성을 활용하면서도 출시 속도와 성능을 저해하지 않습니다. 보안 원격 측정 데이터를 타사 분석 및 가시성 솔루션으로 손쉽게 전달할 수 있으며, 신뢰도 높은 시그니처와 자동화된 행동 분석을 통해 오탐을 줄입니다.

NGINX App Protect의 모듈식 설계 덕분에 필요에 따라 동일한 인스턴스 또는 서로 다른 인스턴스에 WAF와 DoS 보호 기능 중 하나만 또는 둘 다 배포할 수 있습니다. 예를 들어 클러스터 에지에서 NGINX Ingress Controller와 함께 배포할 수 있으며, 이는 단일 클러스터 전체에 일관된 세분화된 보호 기능을 제공하는 데 적합합니다. 반면 클러스터 내 여러 앱에 앱별 정책이 필요한 경우에는 서비스 또는 파드 수준에서 WAF 및/또는 DoS 보호 기능을 배포할 수 있습니다.

WAF 및 DoS 보호 배포에 대한 자세한 내용은 블로그의 더 안전한 앱을 위한 보안 도구의 시프트 레프트 문서를 참조하세요.

Kubernetes용 NGINX 제로 트러스트 보안 솔루션 시작하기

Kubernetes를 이제 막 도입하기 시작했든, 한동안 프로덕션 환경에서 Kubernetes를 운영해 온 고급 사용자이든, NGINX는 요구 사항을 충족하고 보안 태세를 강화할 수 있는 포괄적인 도구와 구성 요소를 제공합니다.

무료 30일 평가판을 신청하여 NGINX App Protect WAF 및 DoS가 포함된 NGINX Ingress Controller를 시작하고, 항상 무료로 제공되는 NGINX Service Mesh를 다운로드하세요.


공유

작성자 소개

Ilya Krutov
Ilya Krutov수석 제품 마케팅 매니저 | F5 NGINX

Ilya Krutov의 다른 블로그 게시물

관련 블로그 게시물

시청하기: KubeCon North America 2023에서의 NGINX Gateway Fabric
NGINX | 2023. 11. 30.

시청하기: KubeCon North America 2023에서의 NGINX Gateway Fabric

이 영상에서는 KubeCon의 NGINX 부스를 찾아가, 저희가 공개한 Kubernetes Gateway API 구현을 살펴봅니다.

F5 NGINX로 대규모 WAF 플릿을 확인하고 관리하는 2가지 방법
NGINX | 2023. 03. 23.

F5 NGINX로 대규모 WAF 플릿을 확인하고 관리하는 2가지 방법

앱 보안을 강화하는 두 가지 방법을 소개합니다. NGINX Management Suite를 통해 WAF 운영에 대한 가시성을 높이고, NGINX App Protect WAF를 활용해 코드형 보안을 구현하는 것입니다.

Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress Controller 옵션
NGINX | 2021. 09. 27.

Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress Controller 옵션

개발 주체, 개발 철학, 프로덕션 환경 준비도, 보안 및 지원을 기준으로 어떤 NGINX Ingress 컨트롤러가 가장 적합한지 알아보세요.

진화하는 공격 환경에 NGINX App Protect Denial of Service가 적응하는 방법
NGINX | 2021. 07. 06.

진화하는 공격 환경에 NGINX App Protect Denial of Service가 적응하는 방법

NGINX App Protect Denial of Service(DoS)가 계층 7 DoS 공격을 방어하기 위해 완화 방법을 실시간으로 조정하는 방식을 설명합니다. 정상적인 사용자 행동과 서버 상태에 대한 모델을 생성하여 공격을 나타내는 이상 징후를 감지하고 맞춤형 완화 시그니처를 적용할 수 있습니다.

NGINX Instance Manager를 활용한 대규모 구성 업데이트 및 인증서 관리
NGINX | 2021. 06. 30.

NGINX Instance Manager를 활용한 대규모 구성 업데이트 및 인증서 관리

NGINX Instance Manager 버전 1.0에는 두 가지 새로운 기능이 도입되었습니다. NGINX 인스턴스에 태그와 사용자 역할을 지정하면 전체 그룹에 구성을 한 번에 적용할 수 있습니다. 인증서 검사는 만료 예정인 인증서를 감지하여 서비스 중단을 방지할 수 있도록 인증서를 교체할 수 있게 해줍니다.

Netflix가 자사 CDN의 핵심으로 NGINX를 선택한 이유
NGINX | 2015. 03. 25.

Netflix가 자사 CDN의 핵심으로 NGINX를 선택한 이유

Netflix가 글로벌 콘텐츠 전송 네트워크인 Open Connect의 스트리밍 미디어 기술로 NGINX를 선택한 이유를 NGINX 개발자 Gleb Smirnoff에게서 알아보세요.