
클라우드 네이티브 애플리케이션을 만들거나 또는 클라우드 네이티브 애플리케이션으로 작업할 때 대부분 ‘쿠버네티스’를 사용하고 있습니다. 전년도 CNCF 보고서에 따르면 전세계 기업의 70%이상이 쿠버네티스를 사용하고 있으며, 쿠버네티스 사용은 매년 증가했다고 합니다.
더불어 해당 플랫폼에 있는 민감한 데이터의 양도 증가하면서 공격자가 이를 악용할 동기 역시 늘어나고 있는 현실입니다. 문제는 클러스터로 관리되는 쿠버네티스의 데이터는 가시성과 안정성을 확보하기 무척 까다로운 영역이라는 점입니다.
만약 쿠버네티스 클러스트 상의 데이터를 통합해 제어하고 관리할 수 있다면 이것만으로도 쿠버네티스 보안 태세를 상당히 개선할 수 있지 않을까요?
클라우드 네이티브 보안의 첫걸음, 쿠버네티스 접근제어 솔루션 '쿼리파이 KAC(Kubernetes Access Controller)'를 소개해드립니다.
QueryPie KAC(Kubernetes Access Controller)
쿼리파이(QueryPie)는 클라우드 데이터 보안 플랫폼(Cloud Data Protection Platform, CDPP)으로 다양한 클라우드 환경 내 데이터에 대한 접근 제어를 다루고 있습니다. 전통적인 RDB부터 Hadoop, NoSQL, MemoryDB까지 클라우드 환경에서 다양하게 사용하는 데이터 저장소에 대한 접근 제어를 가능하게 하는 DAC와 데이터가 저장, 통과, 가공되는 장소인 물리/VM 서버에 대한 접근 제어를 가능하게 하는 SAC. 이렇게 두 가지의 접근 제어를 제공하고 있습니다.
하지만 최근 클라우드에서는 Kubernetes(k8s)와 같은 유연한 Container Orchestration을 널리 사용합니다. k8s에서는 모든 리소스가 추상화되어 존재하는데, 추상적인 리소스들은 VM에 비해서도 더욱 유연하고 자동화되어 동작하기 때문에 개별 추적이 어렵습니다. 또한 클러스터 별로 네임스페이스 등 구성 방법이 상이하기 때문에 관리자가 리소스에 대한 접근 제어를 클러스터 별 각각 설정해 주어야 합니다. 아울러 SSH 프로토콜이 아닌 k8s API를 통해서 리소스에 접근하기 때문에 SAC와는 다른 별도의 접근 제어 시스템이 필요합니다.
이때 등장하는 개념이 KAC(Kubernetes Access Control)입니다. KAC는 Role 기반 사용자의 k8s 접근 제어부터 통합된 Audit Logging까지 한 곳에서 수많은 클러스터를 관리할 수 있는 관리 방식입니다.

QueryPie KAC는 AWS EKS 또는 기타 온프레미스 Kubernetes 클러스터와 같은 클라우드 인프라의 중앙 관리를 위해 설계된 Kubernetes API 보호 솔루션입니다.
KAC를 사용하면 관리자는 세부적인 Kubernetes 액세스 관리를 수행하고 사용자가 요청한 Kubernetes API를 모니터링하고 컨테이너 명령 실행을 재생할 수 있습니다.
쿼리파이 KAC의 4가지 주요 특징
KAC는 기존 DAC, SAC의 장점들을 모두 갖추고 있으며, 이에 더해 k8s에 특화된 기능들을 지니고 있습니다.

역할 기반 접근 제어
(Role Based Access Control)
통합 RBAC 시스템으로 Kubernetes 클러스터 전반의 액세스 권한을 관리하여 사용자 역할에 따라 세부적인 제어와 승인된 리소스 액세스를 보장합니다.
K8S는 RBAC 시스템을 가지고 있는데 이때 RBAC를 설정하기 위해서는 클러스터를 각각 설정해야 하고, 설정을 위해서는 클러스터 접근 권한이 있어야 합니다.
KAC에서는 개별 k8s와는 별도로 통합 RBAC 시스템을 갖추고 있으며, 하나의 쿼리파이 콘솔에서 다수의 클러스터에 대한 Role 설정이 가능합니다. 또한 이미 IDP로 부터 동기화된 User/Group을 단순한 클릭으로 Role에 매핑하여 손쉬운 접근 제한 관리가 가능합니다. 추가로 KAC는 리소스에 대한 ‘와일드카드' 설정도 가능해 손쉽게 변하는 리소스 이름(pod와 같은 리소스)에 대응할 수 있습니다. KAC에서 직접 Role에 대한 컨트롤이 가능하기 때문에 ‘전체 pod 조회’와 같은 요청에도 유저가 가진 권한에 포함된 결과만을 필터링하여 응답할 수 있습니다.
자동 접근 권한 획득
(Automatic Access Permission Acquirel)
IAM 권한을 할당하는 것만으로 AWS EKS와 같은 클라우드 기반 Kubernetes 클러스터에 대한 관리자 액세스 권한을 자동으로 등록합니다.
기존 DAC에서는 DB 접속을 위해 user와 password가 필요하였습니다. 마찬가지로 k8s 클러스터에 접속하기 위해서도 인증 작업이 필요합니다.
하지만 KAC에서는 AWS API를 사용하여 자동으로 어드민 접근 권한을 등록합니다. 관리자는 KAC Provider 등록 시 IAM 권한을 할당하기만 하면 되죠. 이후 RBAC 시스템으로 유저의 권한을 조정할 수 있습니다.
감사 로깅 및 세션 기록
(Audit Logging & Session Recording)
감사 로그와 Pod 세션 녹화를 통해 거의 실시간으로 여러 클러스터에 걸친 사용자 작업에 대한 가시성을 확보합니다.
k8s는 k8s API에 대한 Audit Logging이 가능합니다. 하지만 k8s API Audit Log는 개별 사용자가 접속해서 수행한 액션만 남는 것이 아니라 k8s 내에서 호출되는 모든 요청에 대하여 로깅 되기 때문에 해당 Audit Log에서 idp와 연결된 개별 사용자의 엑션을 파악하기란 쉽지 않죠. exec 명령어를 통해 pod의 shell에 접속하는 경우에도 유저가 어떤 명령어를 수행하는지 알 수 없습니다.
KAC에서는 Proxy를 통해 Audit Logging하여 k8s API Audit Log에 관계 없이 로깅을 수행하기 때문에 사용자가 여러 클러스터에 행하는 액션들을 통합적으로 확인할 수 있습니다. 만약 고객이 원할 경우 k8s API Audit Log를 원하는 방향에 따른 별도 설정도 가능합니다.
또한 exec 명령어를 통해 pod의 shell에 접속한 경우 Session Recording을 통하여 유저 액션을 철저하게 모니터링 할 수 있습니다.
자동 KUBECONFIG 구성
(Auto Configure kubeconfig)
QueryPie Agent가 자동으로 생성한 "kubeconfig" 파일을 사용하여 부여된 역할과 액세스 정책 내에서 원하는 클러스터를 선택하기만 하면 됩니다.
유저들은 기존 k8s 클러스터에 접속하기 위해서 클러스터를 각각 설정해줘야 했습니다. AWS를 쓰는 경우에도 aws cli를 사용하여 profile을 클러스터 개별로 직접 등록해줘야 합니다.
그러나 QueryPie Agent를 사용하면 유저는 관리자가 설정한 클러스터에 대해서 Role을 기반으로 한 접근 권한이 자동으로 생성됩니다. QueryPie Agent는 유저가 접근 가능한 k8s cluster들을 기반으로 kubeconfig를 만들고, 유저는 접속하고 싶은 클러스터를 선택하기만 하면 됩니다.
쿼리파이 KAC의 작동 방식
QueryPie는 기존 Kubernetes 환경에 완벽하게 통합됩니다.
관리자는 Okta와 같은 ID 공급자와 통합하여 Kubernetes API 액세스에 대한 사용자 라이프사이클을 관리할 수 있습니다.
사용자는 기존 타사 클라이언트를 사용하여 API를 통해 승인된 Kubernetes 리소스를 요청할 수 있으며, 'kubectl' 명령은 액세스 제어 및 감사를 위해 QueryPie의 내부적으로 개발된 프록시를 통과합니다.

Kubernetes를 완벽하게 보호하세요
QueryPie는 네임스페이스 내부와 외부를 모두 포괄하는 포괄적인 Kubernetes 보호를 촉진합니다.
QueryPie SAC는 Kubernetes 노드에 대한 SSH 연결의 세심한 액세스 제어 및 감사에 전념하는 반면, QueryPie KAC는 이러한 노드 위의 Kubernetes 리소스에 대한 API 상호 작용의 정교한 거버넌스 및 감사를 전문으로 합니다.

쿠버네티스는 개발자의 유연성과 민첩성을 극대화 하도록 설계돼 있습니다. 가령 물리적인 서버 혹은 VM에 대한 접근 제어에 성공했을지라도 그 위에서 작동하는 쿠버네티스에 대한 접근 제어가 되지 않는다면 빗장을 걸다 만 꼴이 됩니다. 하지만 추상적이고 동적인 리소스들을 다루기란 쉽지 않습니다. ‘쿼리파이 KAC’는 바로 이 부분에 주목하여 k8s의 효율성은 그대로 누리면서, 보안에 있어서는 일절 타협하지 않고 보안 등급을 높일 수 있는 솔루션으로 개발하였습니다.
쿼리파이에 대한 문의사항은 소프트와이드시큐리티로 연락 부탁드립니다.

클라우드 네이티브 애플리케이션을 만들거나 또는 클라우드 네이티브 애플리케이션으로 작업할 때 대부분 ‘쿠버네티스’를 사용하고 있습니다. 전년도 CNCF 보고서에 따르면 전세계 기업의 70%이상이 쿠버네티스를 사용하고 있으며, 쿠버네티스 사용은 매년 증가했다고 합니다.
더불어 해당 플랫폼에 있는 민감한 데이터의 양도 증가하면서 공격자가 이를 악용할 동기 역시 늘어나고 있는 현실입니다. 문제는 클러스터로 관리되는 쿠버네티스의 데이터는 가시성과 안정성을 확보하기 무척 까다로운 영역이라는 점입니다.
만약 쿠버네티스 클러스트 상의 데이터를 통합해 제어하고 관리할 수 있다면 이것만으로도 쿠버네티스 보안 태세를 상당히 개선할 수 있지 않을까요?
클라우드 네이티브 보안의 첫걸음, 쿠버네티스 접근제어 솔루션 '쿼리파이 KAC(Kubernetes Access Controller)'를 소개해드립니다.
QueryPie KAC(Kubernetes Access Controller)
쿼리파이(QueryPie)는 클라우드 데이터 보안 플랫폼(Cloud Data Protection Platform, CDPP)으로 다양한 클라우드 환경 내 데이터에 대한 접근 제어를 다루고 있습니다. 전통적인 RDB부터 Hadoop, NoSQL, MemoryDB까지 클라우드 환경에서 다양하게 사용하는 데이터 저장소에 대한 접근 제어를 가능하게 하는 DAC와 데이터가 저장, 통과, 가공되는 장소인 물리/VM 서버에 대한 접근 제어를 가능하게 하는 SAC. 이렇게 두 가지의 접근 제어를 제공하고 있습니다.
하지만 최근 클라우드에서는 Kubernetes(k8s)와 같은 유연한 Container Orchestration을 널리 사용합니다. k8s에서는 모든 리소스가 추상화되어 존재하는데, 추상적인 리소스들은 VM에 비해서도 더욱 유연하고 자동화되어 동작하기 때문에 개별 추적이 어렵습니다. 또한 클러스터 별로 네임스페이스 등 구성 방법이 상이하기 때문에 관리자가 리소스에 대한 접근 제어를 클러스터 별 각각 설정해 주어야 합니다. 아울러 SSH 프로토콜이 아닌 k8s API를 통해서 리소스에 접근하기 때문에 SAC와는 다른 별도의 접근 제어 시스템이 필요합니다.
이때 등장하는 개념이 KAC(Kubernetes Access Control)입니다. KAC는 Role 기반 사용자의 k8s 접근 제어부터 통합된 Audit Logging까지 한 곳에서 수많은 클러스터를 관리할 수 있는 관리 방식입니다.
QueryPie KAC는 AWS EKS 또는 기타 온프레미스 Kubernetes 클러스터와 같은 클라우드 인프라의 중앙 관리를 위해 설계된 Kubernetes API 보호 솔루션입니다.
KAC를 사용하면 관리자는 세부적인 Kubernetes 액세스 관리를 수행하고 사용자가 요청한 Kubernetes API를 모니터링하고 컨테이너 명령 실행을 재생할 수 있습니다.
쿼리파이 KAC의 4가지 주요 특징
KAC는 기존 DAC, SAC의 장점들을 모두 갖추고 있으며, 이에 더해 k8s에 특화된 기능들을 지니고 있습니다.
역할 기반 접근 제어
(Role Based Access Control)
통합 RBAC 시스템으로 Kubernetes 클러스터 전반의 액세스 권한을 관리하여 사용자 역할에 따라 세부적인 제어와 승인된 리소스 액세스를 보장합니다.
K8S는 RBAC 시스템을 가지고 있는데 이때 RBAC를 설정하기 위해서는 클러스터를 각각 설정해야 하고, 설정을 위해서는 클러스터 접근 권한이 있어야 합니다.
KAC에서는 개별 k8s와는 별도로 통합 RBAC 시스템을 갖추고 있으며, 하나의 쿼리파이 콘솔에서 다수의 클러스터에 대한 Role 설정이 가능합니다. 또한 이미 IDP로 부터 동기화된 User/Group을 단순한 클릭으로 Role에 매핑하여 손쉬운 접근 제한 관리가 가능합니다. 추가로 KAC는 리소스에 대한 ‘와일드카드' 설정도 가능해 손쉽게 변하는 리소스 이름(pod와 같은 리소스)에 대응할 수 있습니다. KAC에서 직접 Role에 대한 컨트롤이 가능하기 때문에 ‘전체 pod 조회’와 같은 요청에도 유저가 가진 권한에 포함된 결과만을 필터링하여 응답할 수 있습니다.
자동 접근 권한 획득
(Automatic Access Permission Acquirel)
IAM 권한을 할당하는 것만으로 AWS EKS와 같은 클라우드 기반 Kubernetes 클러스터에 대한 관리자 액세스 권한을 자동으로 등록합니다.
기존 DAC에서는 DB 접속을 위해 user와 password가 필요하였습니다. 마찬가지로 k8s 클러스터에 접속하기 위해서도 인증 작업이 필요합니다.
하지만 KAC에서는 AWS API를 사용하여 자동으로 어드민 접근 권한을 등록합니다. 관리자는 KAC Provider 등록 시 IAM 권한을 할당하기만 하면 되죠. 이후 RBAC 시스템으로 유저의 권한을 조정할 수 있습니다.
감사 로깅 및 세션 기록
(Audit Logging & Session Recording)
감사 로그와 Pod 세션 녹화를 통해 거의 실시간으로 여러 클러스터에 걸친 사용자 작업에 대한 가시성을 확보합니다.
k8s는 k8s API에 대한 Audit Logging이 가능합니다. 하지만 k8s API Audit Log는 개별 사용자가 접속해서 수행한 액션만 남는 것이 아니라 k8s 내에서 호출되는 모든 요청에 대하여 로깅 되기 때문에 해당 Audit Log에서 idp와 연결된 개별 사용자의 엑션을 파악하기란 쉽지 않죠. exec 명령어를 통해 pod의 shell에 접속하는 경우에도 유저가 어떤 명령어를 수행하는지 알 수 없습니다.
KAC에서는 Proxy를 통해 Audit Logging하여 k8s API Audit Log에 관계 없이 로깅을 수행하기 때문에 사용자가 여러 클러스터에 행하는 액션들을 통합적으로 확인할 수 있습니다. 만약 고객이 원할 경우 k8s API Audit Log를 원하는 방향에 따른 별도 설정도 가능합니다.
또한 exec 명령어를 통해 pod의 shell에 접속한 경우 Session Recording을 통하여 유저 액션을 철저하게 모니터링 할 수 있습니다.
자동 KUBECONFIG 구성
(Auto Configure kubeconfig)
QueryPie Agent가 자동으로 생성한 "kubeconfig" 파일을 사용하여 부여된 역할과 액세스 정책 내에서 원하는 클러스터를 선택하기만 하면 됩니다.
유저들은 기존 k8s 클러스터에 접속하기 위해서 클러스터를 각각 설정해줘야 했습니다. AWS를 쓰는 경우에도 aws cli를 사용하여 profile을 클러스터 개별로 직접 등록해줘야 합니다.
그러나 QueryPie Agent를 사용하면 유저는 관리자가 설정한 클러스터에 대해서 Role을 기반으로 한 접근 권한이 자동으로 생성됩니다. QueryPie Agent는 유저가 접근 가능한 k8s cluster들을 기반으로 kubeconfig를 만들고, 유저는 접속하고 싶은 클러스터를 선택하기만 하면 됩니다.
쿼리파이 KAC의 작동 방식
QueryPie는 기존 Kubernetes 환경에 완벽하게 통합됩니다.
관리자는 Okta와 같은 ID 공급자와 통합하여 Kubernetes API 액세스에 대한 사용자 라이프사이클을 관리할 수 있습니다.
사용자는 기존 타사 클라이언트를 사용하여 API를 통해 승인된 Kubernetes 리소스를 요청할 수 있으며, 'kubectl' 명령은 액세스 제어 및 감사를 위해 QueryPie의 내부적으로 개발된 프록시를 통과합니다.
Kubernetes를 완벽하게 보호하세요
QueryPie는 네임스페이스 내부와 외부를 모두 포괄하는 포괄적인 Kubernetes 보호를 촉진합니다.
QueryPie SAC는 Kubernetes 노드에 대한 SSH 연결의 세심한 액세스 제어 및 감사에 전념하는 반면, QueryPie KAC는 이러한 노드 위의 Kubernetes 리소스에 대한 API 상호 작용의 정교한 거버넌스 및 감사를 전문으로 합니다.
쿠버네티스는 개발자의 유연성과 민첩성을 극대화 하도록 설계돼 있습니다. 가령 물리적인 서버 혹은 VM에 대한 접근 제어에 성공했을지라도 그 위에서 작동하는 쿠버네티스에 대한 접근 제어가 되지 않는다면 빗장을 걸다 만 꼴이 됩니다. 하지만 추상적이고 동적인 리소스들을 다루기란 쉽지 않습니다. ‘쿼리파이 KAC’는 바로 이 부분에 주목하여 k8s의 효율성은 그대로 누리면서, 보안에 있어서는 일절 타협하지 않고 보안 등급을 높일 수 있는 솔루션으로 개발하였습니다.
쿼리파이에 대한 문의사항은 소프트와이드시큐리티로 연락 부탁드립니다.
