Ready to Blast Your Startup? Click to Start Up Your Free Subscription!

Security

혼돈에서 질서로: 멀티클라우드 Kubernetes 접근제어 혁신

저자: Sam Kim

November 22, 2024

서론

쿠버네티스는 애플리케이션을 배포하고 관리하는 데 있어 강력한 오케스트레이션 도구입니다. 필자는 Search Service, MLOps, API Gateway 등 다양한 시스템을 쿠버네티스 클러스터에서 개발하고 운영해 본 경험을 통해, 쿠버네티스가 애플리케이션을 손쉽게 배포하고 관리할 수 있도록 해준다는 점을 확인할 수 있었습니다. 쿠버네티스는 선언형 구조로 명세된 리소스 상태를 자동으로 유지하고, 클러스터 상태를 지속적으로 확인하여 애플리케이션을 적절한 노드로 스케줄링 해주어 배포와 운영을 편리하게 도와줄 뿐만 아니라 자동화하기에도 매우 용이합니다. 그리고, 모니터링, CICD, 인증, 웍플로우 등 다양한 에코시스템들이 있어서 서비스 환경을 구축하기에 좋습니다.

하지만 운영 규모가 커지고 멀티 클라우드와 같은 복잡한 환경에서 다수의 클러스터를 관리하거나 사용할 때는 쿠버네티스에 대한 심도 있는 이해를 필요로 하는데요. 각 클러스터에 대한 사용자 접근 통제, 보안 관리 측면에서의 다양한 어려움이 생깁니다. 이번 글에서는 다수의 쿠버네티스 클러스터를 운영하며 경험한 문제점들과 이를 해결하기 위한 방안을 공유하고자 합니다.

쿠버네티스 운영 시 어려움

쿠버네티스는 애플리케이션을 손쉽게 배포하고, 자동화하는데 있어 편리하고 효율적이기도 하지만, 실제 운영에 있어서는 쿠버네티스에 의존하는 부분이 큰데 비해서 담당자들이 쿠버네티스에 대한 이해도가 부족하여 문제 상황 발생 시 어려움을 겪는 경우가 많습니다.

Kubernetes Innovation

1. 쿠버네티스 이해 부족과 전담 조직 부재

쿠버네티스는 컨테이너 기반의 플랫폼으로, 애플리케이션과 인프라 사이의 중간 레이어 역할을 합니다. 쿠버네티스 전담 조직이나 전문 인력이 부족할 경우, 기존의 인프라, 애플리케이션, 보안 관리의 역할과 책임이 명확히 정의되지 않아 혼란이 발생할 수 있습니다. 이로 인해 쿠버네티스를 설치한 담당자가 대부분의 운영 부담을 떠안게 되는 상황이 발생하게 됩니다. 이때, 충분한 이해 없이 운영할 경우 보안 취약점이 노출되거나 장애 대응이 지연되는 등 문제가 발생할 가능성이 높아집니다.

  • 권한 설정 누락 및 오류
    • 다른 팀의 네임스페이스의 리소스에 액세스 하거나 실수로 삭제하는 사고가 발생할 수 있습니다.
  • 로그 및 이벤트 설정 누락
    • 비정상적 요청 및 활동을 감지하지 못해서 보안사고로 이어지거나 장애인지가 늦어질 수 있습니다.

2. 어드민 Kubeconfig 파일 관리 문제

Kubeconfig 파일은 클러스터 인증 정보, API 서버 URL, 사용자 인증서 등을 포함하고 있는 보안적으로 민감한 데이터 입니다. 쿠버네티스는 사용자 정보를 자체적으로 저장하지 않으므로 접근 인증을 위해 어드민 Kubeconfig 파일을 사용합니다.

  • 공유 문제
    • 어드민 Kubeconfig 파일이 여러 사용자 간 공유될 경우, 파일에 저장된 인증 정보가 불특정 다수에게 노출됩니다. 이는 클러스터 접근 권한이 확대되어 의도치 않은 명령 실행, 데이터 유출, 심지어 클러스터 전체 제어권 상실로 이어질 수 있습니다.
  • 역할과 컨텍스트 혼동
    • Kubeconfig 파일이 여러 클러스터에 대한 인증서를 포함할 수 있는데요. 이 때, 클러스터 확인 및 선택 없이 명령을 실행하면 잘못된 클러스터에서 작업이 수행될 위험성이 있습니다. 이는 운영 환경에서 의도치 않은 개발 작업이 수행되거나, 주요 리소스 삭제와 같은 위험한 상황을 초래할 수 있습니다.
  • 파일 보관 문제
    • Kubeconfig 파일이 사용자 PC의 로컬 디스크에 평문으로 저장되면, 공격자가 파일을 탈취하거나, 실수로 파일이 유출되어 보안사고로 이어질 위험이 있습니다.  

3. 다수의 클러스터 관리 어려움

멀티 클러스터 환경은 퍼블릭 클라우드의 쿠버네티스 서비스 (EKS, AKS, GKE 등) 와 온프레미스 쿠버네티스 클러스터가 혼합돼 운영되는 경우가 많습니다. 이러한 환경에서 발생하는 기술적 문제는 다음과 같습니다.

  • 정책 관리의 일관성 부족
    • 각 클러스터 별로 RBAC(Role-Based Access Control) 정책을 독립적으로 설정해야 하므로, 정책 간 불일치가 발생할 수 있습니다. 예를 들어, 개발 클러스터에서는 특정 사용자가 제한된 권한만 갖는 반면, 운영 클러스터에서는 동일 사용자가 과도한 권한을 부여 받는 등 정책 누락, 오설정 문제가 발생할 수 있습니다.
  • 인증서 관리 어려움
    • 클러스터 마다 인증서 만료 시기를 추적하고 갱신 작업을 수동으로 수행해야 하므로, 갱신 지연이나 누락이 발생할 가능성이 큽니다. 이로 인해 API 서버 접근이 차단되거나, 갑작스런 서비스 중단이 발생할 수 있습니다.
  • 신규 클러스터 추가 시 복잡성
    • 새로운 클러스터를 추가할 때 모든 사용자 대상으로 Kubeconfig 파일 발급을 위한 인증서, RBAC 정책을 업데이트 하고 검증해야 하는 등 관리자가 챙겨야 할 부분이 많습니다.

4. 권한 과다로 인한 장애 사례

쿠버네티스는 기본적으로 cluster-admin 과 같은 광범위한 권한을 제공하며, 이를 세분화하여 관리하지 않으면 권한 과다로 인한 문제 및 부작용이 발생합니다.

  • 광범위한 접근 권한
    • 특정 사용자가 cluster-admin 권한을 가지면, 모든 네임스페이스의 민감한 리소스에 접근할 수 있을 뿐 아니라, 쿠버네티스 주요 컴포넌트들이 위치한 kube-system 네임스페이스에 대한 제어권도 가지게 됩니다. 예를 들어, 실수로 kube-system 의 모든 컴포넌트들을 삭제할 경우, 쿠버네티스 클러스터 전체 장애로 이어지게 됩니다.
  • 역할 분리 실패
    • 개발 환경과 운영 환경에서 동일하게 과다 권한이 부여되는 경우, 운영 환경을 개발 환경으로 오인하여 위험 명령어를 실수로 실행하는 상황이 발생할 수 있습니다.
  • 권한 오남용
    • 퇴사 및 보직 변경 등 사용자 권한 회수가 제대로 관리되지 않는 경우, 해당 계정의 권한이 무단 혹은 악의적으로 활용될 가능성이 존재합니다.

5. 감사 관리 및 보안 규제 요건 준수의 어려움

감사 로그는 클러스터 내에서 발생하는 모든 사용자 활동을 추적할 수 있는 중요한 데이터 입니다. 하지만 기본 설정만으로는 감사 로그 관리가 제대로 되지 않고 다음과 같은 문제가 발생합니다.

  • 사용자 식별 불가
    • 쿠버네티스는 기본적으로 사용자 데이터를 관리하지 않아 이벤트에서 사용자를 식별할 수 없습니다.
  • 정책 설정의 복잡성
    • Audit Policy를 구성하지 않으면 기본적으로 클러스터 이벤트가 기록되지 않으며, 중요한 이벤트 (예: Secret 접근, API 호출 실패 등)가 누락될 수 있습니다. 그리고, 정책이 제대로 설정되지 않으면 특정 이벤트(예: 비인가 접근시도)를 감지하지 못해 보안 위협을 제때 차단하지 못할 수 있습니다.
  • 로그 분석 및 저장 문제
    • 기본적으로 감사로그는 쿠버네티스의 각 마스터 노드들(기본 3대)의 디스크에 저장되며, 중앙화되지 않습니다. 따라서, 모든 마스터 노드들로 부터 로그 파일을 취합하여 분석을 해야 하는데, 클러스터가 여러개 일경우 로그의 수집과 분석이 더욱 어렵습니다.
  • 규제 준수 어려움
    • GDPR, ISO 27001/27017, NIST 등 규제 요건으로 감사 로그의 장기보관 및 분석을 요구합니다. 쿠버네티스 기본 구성만으로는 이러한 요건을 충족할 수 없고, 여러 클러스터 간에 일관된 로그 보관 정책을 적용하기 어렵습니다.

문제 해결 방안

쿠버네티스 운영 과정에서 효과적인 관리와 보안 문제를 해결하기 위해 필요한 핵심 방안을 정리했습니다. 이 방안들은 멀티 클러스터 환경에서 안전한 인증과 접근 제어, 권한 관리, 감사 정책의 일관된 적용을 통해 운영 효율성을 높이고 안정성을 강화하는 데 중점을 두고 있습니다.

Kubernetes Innovation

1. 기업의 사용자/조직정보 연동을 통한 쿠버네티스 인증 강화

LDAP, AD, Okta 등 IdP(Identity Provider) 시스템과 연동하여 사용자의 인증과 접근 권한을 중앙에서 관리함으로써 보안성과 편의성을 강화할 수 있습니다.

  • 동적 사용자 인증 : 사용자가 IdP를 통해 로그인하면 임시 인증서를 발급받아 Kubeconfig 파일 유출 위험을 최소화합니다.
  • 조직 구조와 역할 매핑 : 사용자 그룹별로 역할(Role)을 정의하고, 네임스페이스와 리소스에 대한 권한을 세분화하여 설정합니다.
  • 계정 관리 자동화 : 신규 직원에게는 자동으로 권한을 부여하고, 퇴사자의 접근 권한은 즉시 회수하도록 IdP와 연동하여 계정을 관리합니다.
  • 멀티 클러스터 통합 인증 : 단일 인증 체계를 통해 모든 클러스터에 일관된 접근 방식을 제공합니다.

2. RBAC/ABAC 기반의 세밀한 접근 통제

쿠버네티스의 RBAC(Role-Based Access Control)와 ABAC(Attribute-Based Access Control)를 활용하여 접근 권한을 세밀히 제어해야 합니다. 이를 통해 불필요한 권한을 제거하고, 보안성과 운영 효율성을 높일 수 있습니다.

  • 네임스페이스 단위 역할 정의 : 각 네임스페이스에 대해 특정 역할(Role)을 정의하고, 팀별로 리소스 접근을 제한합니다.
    • 예 : 개발팀은 dev 네임스페이스, 운영팀은 prod 네임스페이스에만 접근 가능.
  • 리소스 단위 접근 제한 : Pod, Secret, ConfigMap 등의 특정 리소스에 대해 필요한 동작(Read, Write, Delete)만 허용.
    • 예 : 데이터베이스 관리자는 Secret의 조회 권한만 부여받고, 수정 및 삭제는 제한.
  • Pod 보안 정책 적용 : Pod 실행 시 보안 요구 사항(예: privileged: false, 이미지 서명 확인 등)을 적용하여 보안성을 강화하고, 개별 Pod 에 대해서도 접근 제어 및 모니터링을 수행합니다.
  • 조건부 접근 통제 : ABAC를 활용하여 특정 시간대나 네트워크 범위 등 사용자 컨텍스트 기반으로 접근을 제어합니다.

3. 다양한 환경에서 멀티 클러스터 통합 관리

멀티 클러스터 환경에서는 퍼블릭 클라우드(EKS, AKS, GKE)와 온프레미스 환경이 혼재되어 관리 복잡성이 증가합니다. 이를 해결하기 위해 모든 클러스터를 통합적으로 관리하고, 정책과 권한을 일관되게 적용해야 합니다.

  • 중앙 관리 대시보드 : 모든 클러스터의 상태(리소스 사용량, 네트워크 상태, 주요 이벤트)를 실시간으로 모니터링하여 운영 효율성을 강화합니다.
  • 정책 일관성 유지 : RBAC 및 네트워크 정책을 중앙에서 정의하고, 모든 클러스터에 일관되게 적용하여 설정 오류를 방지합니다.
  • 권한 변경의 중앙화 : 사용자 권한 변경 사항을 중앙에서 관리하고, 모든 클러스터에 실시간으로 동기화합니다.
  • 접근 기록 및 감사 관리 : 사용자 작업 내역을 클러스터별로 기록하여, 비정상적인 작업 패턴을 실시간으로 감지하고 문제를 신속히 추적합니다.

4. 감사 로깅과 중앙화된 감사 정책 관리

여러 클러스터의 감사 로그를 중앙에서 통합 관리하고, 정책을 일관되게 설정하여 보안 사고를 추적하고 규정 준수를 지원합니다.

  • 중앙화된 로그 저장소 : 모든 클러스터의 감사 로그(Pod 생성, 삭제, Secret 접근 시도 등)를 중앙 저장소로 통합하여 분석 및 관리.
  • 감사 정책 표준화 : 모든 클러스터에서 동일한 로그 수집 및 분석 정책을 적용하여 관리 효율성을 높입니다.
  • 실시간 로그 모니터링 및 경고 : 실시간 로그 분석을 통해 비정상적인 접근이나 설정 변경이 발생하면 자동으로 경고를 생성합니다.
  • 규정 준수 데이터 제공 : GDPR, ISO 27001 등 주요 규제 요건을 충족하기 위해 필요한 데이터를 체계적으로 관리합니다.

5. 쿠버네티스 요청에 대한 실시간 검증

쿠버네티스의 리소스 생성, 삭제, 업데이트 요청을 실시간으로 검증하여 보안 및 운영 정책에 맞지 않는 요청을 사전에 차단합니다.

  • 리소스 검증 : 사용자가 요청한 리소스(Pod, Deployment 등)의 설정이 보안 및 운영 정책에 부합하는지 확인.
    • 예 : 컨테이너 이미지가 신뢰할 수 있는 레지스트리에서 가져온 것인지 검증.
  • 권한 초과 요청 차단 : 사용자 권한으로 실행할 수 없는 요청(예: 권한 외 리소스 삭제 시도)을 즉시 차단.
  • 정책 자동화 : 리소스 생성 시 운영 표준에 따라 적절한 레이블, 어노테이션, 리소스 제한 등이 자동으로 적용되도록 설정.
  • Pod 접속 감시 : Pod 터미널 접근 시 실시간 세션 레코딩

쿼리파이 KAC(Kubernetes Access Control) 솔루션 및 도입효과

쿼리파이팀은 쿠버네티스의 운영 및 보안 문제를 실질적으로 해결하는 솔루션을 개발했으며, 주요 기능은 다음과 같습니다.

  • 기업의 사용자/조직정보 연동
  • RBAC/ABAC 기반의 세밀한 접근 통제
  • 다양한 환경에서 멀티 클러스터 통합 관리
  • 감사 로깅과 중앙화된 감사 정책 관리
  • 쿠버네티스 요청에 대한 실시간 검증
Kubernetes Innovation

1. 최소 권한 접근 통제를 통한 보안 강화

도입 전 어려움 :

  • 사용자별 권한 설정을 수동으로 관리해야 하므로 권한이 과도하거나 부족하게 설정되는 경우가 많음.
  • 퇴사자 계정 삭제 누락, 불필요한 권한 남용 등으로 인해 보안 사고 위험이 증가.
  • 특정 사용자가 필요 이상의 리소스에 접근할 수 있는 경우, 민감한 데이터 노출 가능성이 존재.

도입 후 :

KAC를 통해 사용자별 필요한 클러스터, 네임스페이스, 리소스 레벨까지 세밀한 접근 통제를 설정할 수 있어 보안성이 강화되고 권한 오남용의 위험이 줄어듭니다.

2. 멀티 클러스터 환경에서의 일관된 보안 관리

도입 전 어려움 :

  • 퍼블릭 클라우드와 온프레미스 등 이질적인 환경에서 클러스터별로 보안 정책을 따로 설정해야 해 관리가 복잡하고 비효율적.
  • 클러스터별 정책 차이로 인해 보안 설정의 일관성을 유지하기 어려움.
  • 멀티 클러스터 관리 중 누락된 설정으로 인해 클러스터 간 보안 격차가 발생할 위험.

도입 후 :

퍼블릭 및 온프레미스 클러스터를 포함한 멀티 클러스터 환경에서 통일된 보안 정책을 적용함으로써 관리 효율을 높이고, 관리 부담을 줄입니다.

3. 자동화된 Kubeconfig 관리

도입 전 어려움 :

  • Kubeconfig 파일을 수동으로 생성, 배포, 업데이트해야 하며, 사용자나 권한 변경 시 이를 모든 클러스터에서 반복적으로 관리해야 함.
  • 잘못된 파일 배포나 업데이트 누락으로 인해 접근 문제가 발생하거나, 권한이 과도하게 부여될 위험.
  • 작업 소요 시간이 많고, 실수로 인한 운영 장애 가능성이 높음.

도입 후 :

KAC는 IdP와 연동하여 인사정보를 기반으로 Kubeconfig 파일을 자동 생성 및 관리해, 권한 설정의 일관성을 유지하고 실수나 오남용 가능성을 최소화합니다.

4. 실시간 모니터링 및 작업 투명성 확보

도입 전 어려움 :

  • 클러스터에서 누가 어떤 작업을 수행했는지 추적하기 어려워, 문제가 발생해도 원인 파악에 시간이 오래 걸림.
  • 고위험 작업에 대한 사전 검증 및 승인이 불가능해 보안 사고 가능성 증가.
  • 운영자나 사용자 작업에 대한 실시간 감시 및 기록 기능이 부족.

도입 후 :

KAC는 실시간 사용자 작업 모니터링과 고위험 명령어에 대한 사전 승인 기능을 통해 사용자 작업을 투명하게 관리합니다.

5. 보안 규제 준수를 위한 지원

도입 전 어려움 :

  • 사용자 신원을 효과적으로 검증하지 못하거나 불필요한 리소스에 접근을 허용하여 규제 준수 요건을 충족하지 못할 가능성.
  • 쿠버네티스만으로는 보안 요건을 충족시키기 어려워, 운영 효율성 저하와 보안 격차 발생.
  • 규제 준수를 위해 보안 시스템을 일일이 감사하는 데 시간과 비용 소요.

도입 후 :

KAC는 쿠버네티스 보안 가이드는 물론 NIST, CIS, ISO 27001/27017, PCI DSS, GDPR 등 주요 글로벌 보안 규제를 충족하며, 변화하는 규제에도 KAC를 통해서 효과적으로 대응하고 준수할 수 있도록 보장합니다.

마치며

기업의 시스템 환경이 퍼블릭 클라우드, 프라이빗 클라우드, 온프레미스 레거시 시스템 등으로 다양해지면서, 각 환경에서 쿠버네티스를 관리하는 일은 더욱 복잡해지고 있습니다. 각 환경은 고유의 인프라와 네트워크 설정을 요구하며, 클러스터별로 관리 방식이 달라 통합 운영이 어려워집니다. 이로 인해 개발, 운영, 인프라, 보안 등 팀 간의 협업 부담이 증가하고, 일관된 보안 및 접근 제어 정책 적용이 까다로워집니다.

요약하자면, KAC는

  • 쿠버네티스의 사용자 접근을 통제하고 모니터링함으로써 불필요한 위험을 줄이고 운영 안정성을 높입니다.
  • 쿠버네티스의 권한 정책을 세밀하고 통합적으로 관리 가능하게 합니다.
  • 복잡한 환경에서 리소스를 안전하고 효율적으로 관리하도록 지원합니다.
  • 중앙화된 감사 로깅을 통해 일관된 정책 적용이 가능합니다.

이 글이 멀티 클라우드 환경에서의 쿠버네티스 보안과 접근 제어의 중요성을 이해하는 데 도움이 되길 바랍니다.

3 Minutes to Wow !

Let us show you how QueryPie can transform the way you govern and share your sensitive data.

Take a Virtual Tour