NGINX로 Kubernetes 앱에 대한 제로 트러스트 보안 구축

제로 트러스트 보안 얼마나 알고 계신가요? 사이버 보안 공격의 복잡성과 횟수가 기하급수적으로 증가하여 온프레미스, 하이브리드 및 멀티 클라우드 Kubernetes 환경에 배치된 애플리케이션의 노출 위험이 상당히 높아지고 있습니다. 기존 보안 모델은 사용자가 환경의 보안 경계 내에 있는 경우 신뢰할 수 있는 사용자(및 사용자 간의 통신)라고 가정하는 경계 기반입니다. 오늘날의 분산 환경에서는 경계 내부의 안전 영역 개념이 더 이상 존재하지 않습니다. 즉, “내부” 환경에서 발생하는 통신은 외부 위협 만큼이나 위험할 수 있습니다.

이 포스트에서는 제로 트러스트(Zero Trust) 모델을 채택하여 Kubernetes 인프라를 보호할 경우의 이점과 NGINX가 보안 상태를 개선하는 데 어떻게 도움이 되는지 살펴볼 것 입니다.

목차

1. 제로 트러스트(Zero Trust) 란?
2. 제로 트러스트가 보안 상태를 개선하는 방법
3. 제로 트러스트 보안을 달성하는 방법
4. NGINX가 도움이 되는 방법
5. NGINX로 포괄적인 제로 트러스트 보안 구현
5-1. 인증 및 권한 부여
5-2. 데이터 암호화 및 무결성
5-3. 액세스 제어 및 액세스 정책
5-4. 관측 가능성(Observability)
5-5. WAF 및 DoS 보호
6. Kubernetes용 NGINX 제로 트러스트 보안 솔루션 시작하기

1. 제로 트러스트(Zero Trust) 란?

제로 트러스트는 위치가 아닌 ID를 기반으로 한 보안 모델입니다. 애플리케이션, 데이터 및 장치에 대한 액세스 요청은 요청자가 온프레미스, 원격 또는 클라우드에 있는 것처럼 보이더라도 공격이 될 수 있다고 가정합니다.

제로 트러스트의 3대 핵심 원칙(절대 신뢰하지 않음, 항상 검증, 지속적 모니터링)을 구현하려면 모든 사용자, 서비스, 애플리케이션 및 장치가 인증 및 권한 부여의 증거를 지속적으로 제시해야 합니다. 시간 제한 권한은 동적 액세스 정책과 최소 권한을 기반으로 부여됩니다.

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

zero trust diagram

2. 제로 트러스트가 보안 상태를 개선하는 방법

제로 트러스트는 다음과 같은 여러 가지 방법으로 보안 상태를 개선합니다.

  • 승인되지 않은 활동을 자동으로 차단합니다.
  • 액세스 제어를 수행하여 노출된 공격 표면을 줄입니다.
  • 이상 동작 징후 및 손상 징후 감지
  • 액세스 시간을 제한하는 실시간 최소 권한 정책 정의
  • ID를 지속적으로 인증 및 검증하여 지속적인 공격 차단

제로 트러스트는 Kubernetes 환경에서 실행되는 최신 클라우드 네이티브 앱에 특히 중요합니다. 느슨하게 결합되고 휴대 가능한 분산 앱 및 서비스는 컨테이너화되어 위치 기반 보안이 선택 사항이 아닌 하이브리드 멀티 클라우드 환경에서 실행됩니다. 보안은 반드시 ID와 권한의 지속적인 검증, End-to-End 암호화 및 모니터링에 의존합니다.

3. 제로 트러스트 보안을 달성하는 방법

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

이를 위한 한 가지 가능한 방법은 앱 자체에 보안을 구축하는 것이다. 그러나 이는 개발자가 신뢰 설정 및 확인, 사용자 ID 및 인증서 관리, 모든 통신 암호화 및 암호 해독 등 여러 보안 절차를 구현해야 함을 의미합니다. 또한 TLS 및 SSO(Single Sign-On)와 같은 타사 기술을 이해하고 통합해야 합니다. 이 모든 것이 이미 복잡한 Kubernetes 배포에 복잡성을 가중 시킬 뿐만 아니라 그것은 개발자들이 집중해야 하는 것, 즉 앱의 비즈니스 기능 최적화를 방해합니다.

당황하지 마십시오. 더 좋은 방법이 있습니다. 보안 및 기타 비기능적 요구 사항을 Kubernetes 인프라로 Offload 하십시오! Ingress Controller 및 Service Mesh와 같은 Kubernetes 클러스터용 연결 도구는 사용자 또는 다른 앱 또는 서비스에 의해 발생하든 관계없이 앱 및 서비스 간의 모든 통신을 위해 PDP 및 PEP를 제공할 수 있습니다. 즉, 핵심 비즈니스 전문 지식과 기능에 집중하는 동시에 애플리케이션을 더 빠르고 쉽게 제공할 수 있습니다.

4. NGINX가 도움이 되는 방법

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

  • NGINX Ingress Controller는 Kubernetes의 Ingress Controller로, 타사 ID 및 SSO 공급자와 통합되는 PDP/PEP입니다. NGINX Plus를 기반으로 하는 NGINX Ingress Controller는 고급 연결, 모니터링 및 가시성, 인증 및 SSO를 처리하며 API Gateway 역할을 합니다.
  • NGINX Service Mesh는 가볍고 턴키(Turnkey) 방식이며 개발자 친화적인 Service Mesh로 Kubernetes 클러스터 내에서 서비스 연결을 보호합니다. 각 Kubernetes 서비스와 함께 배치된 PDP/PEP 역할을 하는 엔터프라이즈급 Sidecar는 NGINX Plus를 기반으로 합니다.
  • NGINX App Protect는 F5의 시장 선도적인 보안 기술을 기반으로 구축된 최신 앱 및 API를 전체적으로 보호합니다. 모듈식 접근 방식을 사용하여 구축 시나리오의 유연성과 최적의 리소스 활용도를 제공합니다.
    • NGINX App Protect WAF – OWASP Top 10으로부터 보호하고 PCI DDS 규정 준수를 제공하는 강력하고 가벼운 WAF
    • NGINX App Protect DoS – 클라우드 및 아키텍처 전반에서 일관되고 적응적인 보호를 통해 동작 기반 DoS 감지 및 완화
zero trust diagram 2

NGINX 솔루션을 통해 다음을 수행할 수 있습니다.

  • 릴리스 속도를 늦추거나 성능을 저하시키지 않고 분산 환경 전반에 걸쳐 강력한 보안 제어 기능 통합
  • 지속적인 인증, ID 검증 및 동작 이상 징후 탐지를 통해 진행 중인 공격을 자동으로 차단
  • 실시간 최소 권한 정책, 세분화된 액세스 제어, End-to-End 암호화 및 여러 팀의 거버넌스 구현
  • 통합된 강력한 WAF 및 애플리케이션 레벨 DoS 방어 기능을 통해 코드로부터 고객에게 안전하게 애플리케이션 제공
  • 세분화된 실시간 및 과거 메트릭을 통해 Kubernetes 환경의 보안 상태를 지속적으로 평가하고 개선합니다.
  • 기술 통합을 통해 안전한 User-to-Service 및 Service-to-Service 통신 구축 및 관리 간소화

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

조직이 확장됨에 따라 애플리케이션 계층에서 제로 트러스트 보안 기능과 같은 앱 기능에 국한되지 않는 요구 사항을 Offload하는 것이 중요해집니다. 위에서 설명한 바와 같이 개발자는 앱 전체에 걸쳐 보안 로직을 구축, 유지 및 복제해야 하는 부담에서 벗어나 플랫폼 수준에서 보안 기술을 쉽게 활용할 수 있습니다. NGINX는 NGINX Ingress Controller를 사용하는 클러스터 가장자리 및 NGINX Service Mesh를 사용하는 클러스터 내에서 Kubernetes에 대한 중앙 집중식 보안 정책 시행을 제공합니다. 애플리케이션 보안 요구 사항에 따라 Edge 또는 Cluster 내에 배치된 NGINX App Protect WAF 및 DoS를 통해 정교한 사이버 공격으로부터 고급 애플리케이션 보호를 추가할 수 있습니다.

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

5-1. 인증 및 권한 부여

제로 트러스트 인증 및 권한

제로 트러스트 보안의 핵심 원칙 중 하나는 모든 장치, 사용자, 서비스 및 요청이 인증되고 권한 부여된다는 것입니다. 인증은 신원을 확인하는 프로세스입니다. 즉, 통신에 참여하는 각 당사자가 자신이 주장하는 대로 되도록 하는 것입니다. 권한 부여는 당사자가 자원 또는 기능에 대해 요청하고 있는 액세스 권한을 가지고 있는지 확인하는 프로세스입니다.

이 원칙을 해결하기 위해 NGINX 솔루션은 HTTP Basic 인증, JWT(JSON Web Tokens) 및 OpenID Connect을 포함한 인증 및 권한 부여를 구현하기 위한 여러 옵션을 제공합니다. Okta 및 Azure Active Directory(AD)와 같은 ID 공급자와의 통합을 통해 연결합니다. NGINX 솔루션은 또한 서비스에 보안 ID를 발급합니다(애플리케이션 사용자에게 인증서 형태의 ID가 발급 되는 것과 유사). 이를 통해 Kubernetes 클러스터에서 작업을 수행할 수 있도록 인증 및 권한을 부여할 수 있습니다. NGINX 솔루션은 워크로드 ID를 처리할 뿐만 아니라 PKI(Public Key Infrastructure) 및 인증 기관과의 통합 기능을 통해 인증서 관리를 자동화합니다.

NGINX Ingress Controller는 이미 클러스터에 들어오는 모든 요청을 면밀히 조사하여 적절한 서비스로 라우팅하고 있으므로 중앙 집중식 사용자 인증 및 권한 부여와 일부 시나리오에서 서비스 인증에 가장 효율적인 위치입니다.

자세한 내용은 사이트에서 Okta와 NGINX Ingress Controller를 통한 Kubernetes용 OpenID Connect 인증 구현을 참조하십시오.

5-2. 데이터 암호화 및 무결성

제로 트러스트 데이터 암호화 및 무결성

또 다른 제로 트러스트 원칙은 참가자가 어디에 있든 모든 통신이 보안되어야 하며 기밀성과 무결성이 유지되어야 한다는 것입니다. 전송 중에는 허가되지 않은 당사자가 데이터를 읽거나 수정해서는 안 됩니다. 이 원칙을 충족하기 위해 NGINX 솔루션은 사용자 간 통신에 SSL/TLS 암호화를 사용하고 서비스 간 통신에 mutual TLS(mTLS) 인증 및 암호화를 사용합니다.

애플리케이션 아키텍처가 Kubernetes 클러스터 내의 서비스 간 통신을 포함하지 않는 경우 NGINX Ingress Controller가 데이터 무결성 요구 사항을 충족하기에 충분할 수 있습니다. 두 가지 기본 옵션이 있습니다.

  • TLS Passthrough를 사용하면 NGINX Ingress Controller는 SSL/TLS 암호화 연결을 해독하거나 SSL/TLS 인증서(Certificate) 또는 키(Key)에 대한 액세스를 요구하지 않고 서비스에 직접 라우팅합니다.
  • SSL/TLS 종료와 함께 NGINX Ingress Controller는 리버스 프록시 역할을 하여 요청자와의 TLS 연결을 종료한 다음 mTLS 또는 서비스 측 SSL/TLS를 사용하여 Kubernetes 서비스(Backend 및 업스트림 서버)에 대한 새 연결을 암호화합니다.

아키텍처에 클러스터 내 서비스 간 통신이 포함되는 경우 데이터 무결성을 위해 NGINX Ingress Controller와 NGINX Service Mesh가 모두 필요합니다. NGINX Service Mesh는 특정 서비스만 서로 통신할 수 있도록 하고 mTLS를 사용하여 서비스를 인증하고 이들 간의 통신을 암호화합니다. NGINX Service Mesh를 사용하여 “zero touch” 방식으로 mTLS를 구현할 수 있습니다. 즉, 개발자는 인증서를 사용하여 애플리케이션을 개조하거나 상호 인증이 진행되고 있다는 사실조차 알 필요가 없습니다.

5-3. 액세스 제어 및 액세스 정책

제로 트러스트 액세스 제어 및 액세스 정책

액세스 제어는 제로 트러스트 모델의 또 다른 중요한 요소입니다. Kubernetes는 역할 기반 액세스 제어(RBAC)를 사용하여 다양한 사용자가 사용할 수 있는 리소스와 작업을 제어합니다. 사용자 또는 사용자 그룹이 클러스터의 Kubernetes 개체 또는 네임스페이스와 상호 작용할 수 있는 방법을 결정합니다.

NGINX Kubernetes 연결 솔루션은 RBAC 지원으로 조직의 보안 정책에 쉽게 맞출 수 있습니다. RBAC를 구축하면 사용자는 IT 티켓을 하고 작업이 완료되기를 기다리지 않고도 업무를 수행하는 데 필요한 기능에 대한 액세스 권한을 얻을 수 있습니다. RBAC가 없으면 사용자가 필요 없거나 권한이 없는 권한을 얻을 수 있으므로 권한이 잘못 사용될 경우 취약점으로 이어질 수 있습니다.

NGINX Ingress Controller를 사용하여 RBAC를 구성할 때 조직의 애플리케이션 개발 및 제공 환경에서 다양한 역할에 따라 권한을 조정하여 여러 사람과 팀에 대 액세스를 제어할 수 있습니다. 세분화된 액세스 관리 도구를 통해 여러 팀에서 셀프 서비스와 거버넌스를 수행할 수 있습니다.

5-4. 관측 가능성(Observability)

제로 트러스트 관찰 가능성

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

아마도 이미 Kubernetes 배포 환경에서 모니터링 도구를 사용하고 있을 것이고 아직 다른 도구가 필요하지 않을 것입니다. 클러스터 내에서 어떤 일이 일어나고 있는지 전체적으로 파악하기 위해 JSON을 허용하고 OpenTelemetry, Grafana 및 Prometheus와 같은 인기 있는 도구와 사전 구축된 통합 기능을 제공하는 타사 도구로 메트릭을 쉽게 내보낼 수 있도록 NGINX Plus API를 마련했습니다. 심층 추적을 통해 앱 연결에 대한 통찰력을 얻을 수 있으므로 요청이 End-to-End로 처리되는 방식을 이해할 수 있습니다. NGINX Ingress Controller는 Cluster와 외부 클라이언트 간의 연결에 대한 통찰력을 제공하는 반면 NGINX Service Mesh는 Cluster 내에서 컨테이너화된 마이크로서비스 기반 애플리케이션 및 서비스 간의 연결을 지원합니다.

5-5. WAF 및 DoS 보호

제로 트러스트 WAF 및 DoS

NGINX App Protect를 사용하면 OWASP Top 10 및 Layer 7 서비스 거부(DoS) 공격과 같은 위협으로부터 분산 애플리케이션을 보호하여 분산 애플리케이션의 보안을 더욱 강화할 수 있습니다. End-to-End NGINX 보안 연결 솔루션의 필수 구성 요소인 NGINX App Protect는 기본 서명을 훨씬 뛰어넘는 첨단 위협으로부터 민첩하고 애플리케이션 중심적인 보안을 제공합니다. 릴리스 속도와 성능을 저하시키지 않습니다. 보안 원격 측정을 타사 분석 및 가시성 솔루션으로 쉽게 전달할 수 있으며, 신뢰도가 높은 서명과 자동화된 동작 분석을 통해 오탐지를 줄일 수 있습니다.

NGINX App Protect의 모듈식 설계를 통해 필요에 따라 WAF 및 DoS 보호 중 하나 또는 모두를 동일하거나 다른 인스턴스에 배포할 수 있습니다. 예를들어 클러스터 Edge에 NGINX Ingress Controller를 사용하여 배포하기로 결정할 수 있습니다. 이는 전체 클러스터에서 일관되고 세분화 보호를 제공하는 데 이상적입니다. 대신 클러스터의 여러 앱에 대한 앱별 정책이 필요한 경우 서비스 또는 Pod 수준에서 WAF 및/또는 DoS 보호를 배포할 수 있습니다.

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

Kubernetes 여정의 시작 단계에 있든, 잠시 동안 운영 중인 Kubernetes를 운영하는 고급 사용자든, NGINX는 사용자의 요구를 충족하고 보안 상태를 개선하는 데 도움이 되는 포괄적인 도구 및 구성 요소를 제공합니다.

NGINX App Protect WAF 및 DoS가 포함된 NGINX Ingress Controller를 사용 하고 싶으시면 지금 30일 무료 평가판을 시작하거나 사용 사례에 대해 논의하려면 당사에 문의하십시오.