KR20230157147A - 컨테이너 시스템에 대한 동적 보안 정책 시행 방법, 이를 수행하기 위한 기록 매체 및 시스템 - Google Patents

컨테이너 시스템에 대한 동적 보안 정책 시행 방법, 이를 수행하기 위한 기록 매체 및 시스템 Download PDF

Info

Publication number
KR20230157147A
KR20230157147A KR1020220056777A KR20220056777A KR20230157147A KR 20230157147 A KR20230157147 A KR 20230157147A KR 1020220056777 A KR1020220056777 A KR 1020220056777A KR 20220056777 A KR20220056777 A KR 20220056777A KR 20230157147 A KR20230157147 A KR 20230157147A
Authority
KR
South Korea
Prior art keywords
policy
container
security policy
policy enforcement
kernel
Prior art date
Application number
KR1020220056777A
Other languages
English (en)
Other versions
KR102669688B1 (ko
Inventor
정수환
단티엔북
곽송이
Original Assignee
숭실대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 숭실대학교산학협력단 filed Critical 숭실대학교산학협력단
Priority to KR1020220056777A priority Critical patent/KR102669688B1/ko
Priority claimed from KR1020220056777A external-priority patent/KR102669688B1/ko
Priority to US18/135,593 priority patent/US20230362198A1/en
Publication of KR20230157147A publication Critical patent/KR20230157147A/ko
Application granted granted Critical
Publication of KR102669688B1 publication Critical patent/KR102669688B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0263Rule management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • Business, Economics & Management (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 컨테이너 시스템에 대한 동적 보안 정책 시행 시스템에 관한 것으로, 일정 조건의 규칙 집합을 포함하는 구조화된 포맷에 기초하여 컨테이너에 대한 보안 정책을 생성 및 관리하는 정책(policy) 관리부; 상기 컨테이너가 시스템 콜을 요청하면 상기 규칙 집합을 확인하고, 확인된 규칙 집합에 기초하여 상기 구조화된 포맷의 보안정책을 기설정된 형식의 코드로 변경하며, 코드가 변경된 정책을 커널 계층(kernel space)에 전달하는 정책 시행부; 및 상기 시스템 콜을 후킹(hooking)하는 정책 시행 프로그램에 기초하여 상기 정책 시행부로부터 전달받은 정책을 상기 커널 계층(kernel space)에서 시행하고, 일정한 동작을 수행하기 위한 반환값을 생성하는 정책 동작결정부를 포함한다. 이에 의해 초기화 상태 및 실행 상태를 포함한 모든 상태의 컨테이너에 언제든지 정책(policy)을 적용할 수 있고, 정책 적용을 위해 시스템 또는 컨테이너를 재시작할 필요가 없다.

Description

컨테이너 시스템에 대한 동적 보안 정책 시행 방법, 이를 수행하기 위한 기록 매체 및 시스템{DYNAMIC SECURITY POLICY ENFORCEMENT METHOD FOR CONTAINER SYSTEM, RECORDING MEDIUM AND SYSTEM FOR PERFORMING THE SAME}
본 발명은 컨테이너 시스템에 대한 동적 보안 정책 시행 방법, 이를 수행하기 위한 기록 매체 및 시스템에 관한 것으로, 보다 상세하게는 실행 중인 컨테이너에 영향을 주지 않고 정책을 적용할 수 있는 컨테이너 시스템에 대한 동적 보안 정책 시행 방법, 이를 수행하기 위한 기록 매체 및 시스템에 관한 것이다.
컴퓨팅에서 시스템 콜(system call)은 컴퓨터 프로그램이 실행되는 운영 체제의 커널로부터 서비스를 요청하는 프로그래밍 방식이고, 이러한 시스템 콜은 프로그램이 운영 체제와 상호 작용할 수 있도록 도와주는 방법으로서, 컴퓨터 프로그램은 운영 체제의 커널에 서비스를 요청을 할 때 시스템 콜을 호출하게 된다. 시스템 콜은 응용프로그램 인터페이스(API)로서 운영 체제의 서비스를 사용자 프로그램에 제공한다.
그리고 컨테이너 기술은 최근 몇 년 사이 빠르게 발전해 마이크로서비스, 에지 서비스, 클라우드 네이티브 등 클라우드 컴퓨팅 시스템 구축에 폭넓게 적용되고 있으며, 컨테이너에 보안 정책을 적용하는 것도 기존 클라우드 시스템과 다르다.
프라이버시 정책(Privacy policies)에는 특정 동작을 허용하거나 금지하는 것이 포함되며, 가장 낮은 레벨에서 프로그램은 운영 체제에 시스템 콜을 요청하는데, 보안 정책은 컨테이너가 시스템 콜을 요청한 후 시스템 콜을 허용하거나 거부하도록 하기 위해 컨테이너의 동작을 분석하는 데 기초한다.
이러한 보안 정책 시행의 일종인 SELinux, TOMOYO 또는 Apparmor와 같은 강제적 접근 제어(MAC, Mandatory Access Control)를 배포하는 종래 기술은 전체 시스템(호스트 OS)에 보안 정책을 적용한다. 이때 각 컨테이너에 대한 정책을 지정하려면 관리자가 정책을 다시 작성한 다음에 새 정책을 적용하기 위해 시스템을 컴파일하고 다시 시작해야한다는 점에서 유연성이 부족하다는 문제가 있다.
또한 Seccomp, Capabilities, 컨트롤 그룹(cgroup)을 활용하여 컨테이너의 작업 및 권한에 제한을 적용하는 종래 기술은 일반적인 방법으로 보안 정책을 적용하게 되는데, 이때 작업 또는 권한 요청을 자세히 검사하지 않는다는 문제가 있다.
예를 들어 도커 seccomp 보안 프로파일과 같은 보안 정책 시행은 시스템 콜의 매개 변수 값을 검사하지 않고, 컨테이너에 의한 실행으로부터 시스템 콜 목록을 허용하거나 거부할 때 적용된다. 이에 따라 의도하지 않게 유해한 행동을 허용하면서 컨테이너 서비스의 중요한 행동을 거부하도록 할 수 있다는 문제가 있다.
즉 시스템 콜이 호출될 때 권한을 변경하는 시스템 콜을 사용하려면 어느 파일에 대해 권한을 변경할지를 정하는 아규먼트가 필요하고, 어떻게 변경할 건지에 대한 모드(쓰기, 쓰기 및 읽기, 읽기)도 필요한데 seccomp을 사용하는 경우에는 단순히 허용 또는 거부 밖에 제어를 할 수 없기에 coarse-grained 하고 세밀한 컨트롤이 가능하지 않다는 것이다.
그리고 리눅스 커널이 다양한 컴퓨터 보안 모델을 편향없이 지원할 수 있도록 하는 프레임 워크인 리눅스 보안 모듈(LSM, Linux Security Module)과 네트워크 트래픽 분석을 위한 프로그램에 사용되는 기술인 버클리 패킷 필터(BPF, Berkerley Packet Filter)가 결합된 종래의 기술은 샌드박스 전용 보안 정책을 적용한다. 이 경우 보안 정책은 특정 프로그램을 실행하는 새 프로세스에 적용되는데, 이러한 개념은 너무 추상적이어서 개발자가 실제로 구현하기 어렵고 실효성이 떨어진다는 문제가 있다. 물론 Aquasecurity의 Tracee는 현재 eBPF(리눅스 커널의 확장된 BPF JIT 가상 머신) 프로그램을 사용하여 LSM 이벤트를 지원하지만 이의 목적은 특정한 이벤트에 대한 추적 및 감사일 뿐 실제로 보안 정책 시행을 위한 것은 아니라는 한계가 있다.
한국공개특허공보 제10-2019-0038065호
본 발명은 상기와 같은 문제를 해결하기 위해 안출된 것으로, 본 발명의 목적은 초기화 상태 및 실행 상태를 포함한 모든 상태의 컨테이너에 언제든지 정책(policy)을 적용할 수 있고, 정책 적용을 위해 시스템 또는 컨테이너를 재시작할 필요가 없는 컨테이너 시스템에 대한 동적 보안 정책 시행 방법, 이를 수행하기 위한 기록 매체 및 시스템을 제공하는 것이다.
한편 본 발명의 다른 목적은 행동 또는 권한 목록을 허용하거나 거부하도록 어떤 컨테이너에도 보안 정책을 동적으로 시행시킬 수 있는 컨테이너 시스템에 대한 동적 보안 정책 시행 방법, 이를 수행하기 위한 기록 매체 및 시스템을 제공하는 것이다.
그리고 본 발명의 또 다른 목적은 동작의 매개 변수 값 및 커널에서만 액세스할 수 있는 기타 커널 공간 컨텍스트를 자세히 검사하여 보안 정책을 적용할 수 있는 컨테이너 시스템에 대한 동적 보안 정책 시행 방법, 이를 수행하기 위한 기록 매체 및 시스템을 제공하는 것이다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 컨테이너 시스템에 대한 동적 보안 정책 시행 시스템은 일정 조건의 규칙 집합을 포함하는 구조화된 포맷에 기초하여 컨테이너에 대한 보안 정책을 생성 및 관리하는 정책(policy) 관리부; 상기 컨테이너가 시스템 콜을 요청하면 상기 규칙 집합을 확인하고, 확인된 규칙 집합에 기초하여 상기 구조화된 포맷의 보안정책을 기설정된 형식의 코드로 변경하며, 코드가 변경된 정책을 커널 계층(kernel space)에 전달하는 정책 시행부; 및 상기 시스템 콜을 후킹(hooking)하는 정책 시행 프로그램에 기초하여 상기 정책 시행부로부터 전달받은 정책을 상기 커널 계층(kernel space)에서 시행하고, 일정한 동작을 수행하기 위한 반환값을 생성하는 정책 동작결정부를 포함한다.
그리고 상기 보안 정책은, 초기화 상태 또는 실행 상태를 포함한 모든 상태의 상기 컨테이너에 동적으로 적용 가능할 수 있다.
그리고 상기 일정 조건의 규칙 집합은, 시스템 콜의 이름을 포함하는 시스템 콜 규칙 집합 및 LSM 함수의 이름을 포함하는 LSM 프로브 규칙 집합 중 하나일 수 있다.
또한 상기 정책 시행 프로그램은, LSM 후킹(Linux Security Module Hooking) 기술을 이용하는 후킹 프로그램일 수 있다.
그리고 상기 정책 동작결정부는, 전달받은 정책이 보안 정책을 위반하는지 판단하고, 판단한 결과에 기초하여 해당 컨테이너를 통과시키는 필터링부; 상기 보안 정책을 위반하지 않으면, 상기 특정 컨테이너에 포함된 경로 객체의 유효성을 판단하기 위해 필요한 커널 컨텍스트를 전처리하는 커널 컨텍스트 전처리부; 전처리된 컨텍스트에 포함된 조건을 파싱하는 파싱부; 및 파싱된 조건에 따른 동작에 기초하여 일정한 동작을 수행하기 위한 반환값을 생성하는 동작부를 포함할 수 있다.
또한 상기 정책 관리부 및 상기 정책 시행부는, 사용자 계층(user space)에 구비되고, 상기 정책 동작결정부는 커널 계층(kernel space)에 구비될 수 있다.
한편 상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 컨테이너 시스템에 대한 동적 보안 정책 시행 시스템에서 수행되는 컨테이너 시스템에 대한 동적 보안 정책 시행 방법은, 일정 조건의 규칙 집합을 포함하는 구조화된 포맷에 기초하여 컨테이너에 대한 보안 정책을 생성 및 관리하는 단계; 상기 컨테이너가 시스템 콜을 요청하면 상기 규칙 집합을 확인하고, 확인된 규칙 집합에 기초하여 상기 구조화된 포맷의 보안 정책을 기설정된 형식의 코드로 변경하는 단계; 코드가 변경된 정책을 커널 계층(kernel space)에 전달하는 단계; 상기 시스템 콜을 후킹(hooking)하는 정책 시행 프로그램에 기초하여 상기 커널 계층(kernel space)에 전달하는 단계로부터 전달받은 정책을 시행하는 단계; 및 시행한 결과에 대응되는 일정한 동작을 수행하기 반환값을 생성하는 단계를 포함한다.
그리고 상기 보안 정책은, 초기화 상태 또는 실행 상태를 포함한 모든 상태의 상기 컨테이너에 동적으로 적용 가능할 수 있다.
또한 상기 일정 조건의 규칙 집합은, 시스템 콜의 이름을 포함하는 시스템 콜 규칙 집합 및 LSM 함수의 이름을 포함하는 LSM 프로브 규칙 집합 중 하나일 수 있다.
그리고 상기 정책 시행 프로그램은, LSM 후킹(Linux Security Module Hooking) 기술을 이용하는 후킹 프로그램일 수 있다.
또한 상기 정책을 시행하는 단계는, 전달받은 정책이 보안 정책을 위반하는지 판단하고, 판단한 결과에 기초하여 해당 컨테이너를 통과시키는 단계; 상기 보안 정책을 위반하지 않으면, 상기 특정 컨테이너에 포함된 경로 객체의 유효성을 판단하기 위해 필요한 커널 컨텍스트를 전처리하는 단계; 및 전처리된 컨텍스트에 포함된 조건을 파싱하는 단계를 포함하고, 상기 반환값을 생성하는 단계에서는, 파싱된 조건에 따른 동작에 기초하여 일정한 동작을 수행하기 위한 반환값을 생성할 수 있다.
그리고 상기 보안 정책을 생성 및 관리하는 단계, 상기 보안 정책을 기설정된 형식의 코드로 변경하는 단계 및 상기 커널 계층에 전달하는 단계는 사용자 계층(user space)에서 수행되고, 전달받은 정책을 시행하는 단계 및 반환값을 생성하는 단계는 커널 계층(kernel space)에서 수행될 수 있다.
한편 상기 목적을 달성하기 위한 컴퓨터로 판독 가능한 저장 매체 에는 컨테이너 시스템에 대한 동적 보안 정책 시행 방법을 수행하기 위한 컴퓨터 프로그램이 기록된다.
상술한 본 발명의 일측면에 따르면, 컨테이너 시스템에 대한 동적 보안 정책 시행 방법, 이를 수행하기 위한 기록 매체 및 시스템을 제공함으로써, 초기화 상태 및 실행 상태를 포함한 모든 상태의 컨테이너에 언제든지 정책(policy)을 적용할 수 있고, 정책 적용을 위해 시스템 또는 컨테이너를 재시작할 필요가 없다.
그리고 행동 또는 권한 목록을 허용하거나 거부하도록 어떤 컨테이너에도 보안 정책을 동적으로 시행시킬 수 있으며, 동작의 매개 변수 값 및 커널에서만 액세스할 수 있는 기타 커널 공간 컨텍스트를 자세히 검사하여 보안 정책을 적용할 수 있다.
도 1 및 도 2는 본 발명의 일 실시예에 따른 동적 보안 정책 시행 시스템의 구성을 설명하기 위한 도면,
도 3은 본 발명의 일 실시예에 따른 동적 보안 정책 시행 시스템에서 구성되는 보안 정책을 설명하기 위한 도면,
도 4는 본 발명의 일 실시예에 따른 정책 동작결정부를 설명하기 위한 도면, 그리고
도 5는 본 발명의 일 실시예에 따른 동적 보안 정책 시행 방법을 설명하기 위한 흐름도이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예와 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
본 발명에 따른 구성요소들은 물리적인 구분이 아니라 기능적인 구분에 의해서 정의되는 구성요소들로서 각각이 수행하는 기능들에 의해서 정의될 수 있다. 각각의 구성요소들은 하드웨어 또는 각각의 기능을 수행하는 프로그램 코드 및 프로세싱 유닛으로 구현될 수 있을 것이며, 두 개 이상의 구성요소의 기능이 하나의 구성요소에 포함되어 구현될 수도 있을 것이다. 따라서 이하의 실시예에서 구성요소에 부여되는 명칭은 각각의 구성요소를 물리적으로 구분하기 위한 것이 아니라 각각의 구성요소가 수행되는 대표적인 기능을 암시하기 위해서 부여된 것이며, 구성요소의 명칭에 의해서 본 발명의 기술적 사상이 한정되지 않는 것임에 유의하여야 한다.
이하에서는 도면들을 참조하여 본 발명의 바람직한 실시예들을 보다 상세하게 설명하기로 한다.
도 1 및 도 2는 본 발명의 일 실시예에 따른 동적 보안 정책 시행 시스템(1)을 설명하기 위한 도면, 도 3은 본 발명의 일 실시예에 따른 동적 보안 정책 시행 시스템(1)에서 구성되는 보안 정책을 설명하기 위한 도면, 그리고 도 4는 본 발명의 일 실시예에 따른 정책 동작결정부(300)를 설명하기 위한 도면이다.
본 발명에 따른 동적 보안 정책 시행 시스템(1, 이하 시스템)은 실행 중인 컨테이너에 영향을 주지 않고 언제든지 정책을 적용할 수 있도록 하고, 정책을 적용한 후 컨테이너를 다시 시작할 필요가 없도록 하는 것은 물론, 어떤 이벤트에 대해서도 커널(kernel) 파라미터를 자세하게 검사할 수 있다.
도 1을 참조하면, 본 발명에 따른 시스템(1)은 정책 관리부(100), 정책 시행부(200) 및 정책 동작결정부(300)를 포함하여 마련될 수 있다.
본 발명의 시스템(1)은 컨테이너 시스템에 대한 동적 보안 정책 시행 방법을 수행하기 위한 소프트웨어(애플리케이션)가(이) 설치되어 실행될 수 있으며, 정책 관리부(100), 정책 시행부(200) 및 정책 동작결정부(300)의 구성은 시스템에서 실행되는 컨테이너 시스템에 대한 동적 보안 정책 시행 방법을 수행하기 위한 소프트웨어에 의해 제어될 수 있다.
그리고 시스템(1)은 별도의 단말이거나 또는 단말의 일부 모듈일 수 있다. 또한 정책 관리부(100), 정책 시행부(200) 및 정책 동작결정부(300)의 구성은 통합 모듈로 형성되거나, 하나 이상의 모듈로 이루어질 수 있다. 그러나, 이와 반대로 각 구성은 별도의 모듈로 이루어질 수도 있다.
또한 시스템(1)은 이동성을 갖거나 고정될 수 있다. 이러한 시스템은 서버(server) 또는 엔진(engine) 형태일 수 있으며, 디바이스(device), 기구(apparatus), 단말(terminal), UE(user equipment), MS(mobile station), 무선기기(wireless device), 휴대기기(handheld device) 등 다른 용어로 불릴 수 있다.
그리고 시스템(1)은 운영체제(Operation System; OS)를 기반으로 다양한 소프트웨어를 실행하거나 제작할 수 있다. 상기 운영체제는 소프트웨어가 장치의 하드웨어를 사용할 수 있도록 하기 위한 시스템 프로그램으로서, 안드로이드 OS, iOS, 윈도우 모바일 OS, 바다 OS, 심비안 OS, 블랙베리 OS 등 모바일 컴퓨터 운영체제 및 윈도우 계열, 리눅스 계열, 유닉스 계열, MAC, AIX, HP-UX 등 컴퓨터 운영체제를 모두 포함할 수 있다.
일반적으로 시스템 콜은 컴퓨터에서 사용자 계층에서 커널에 서비스를 요청할 수 있도록 하는 인터페이스와 같은 것으로 시스템 콜이 프로그램과 운영체제가 상호 작용할 수 있도록 할 수 있다. 실제 코딩을 할 때 운영체제의 커널에 특정 기능을 사용하기 위해서는 시스템 콜을 호출하여 해당 기능을 구현하게 되는 구조이다.
따라서 보안 정책 시스템에서는 기본적으로 룰이 정해져있고, 해당 룰이 컴퓨터 시스템에 적용되데, 본 발명에서의 시스템(1)은 시스템 콜을 기반으로 보안 정책 시스템을 구현하고자 한다.
이를 위해 정책(policy) 관리부(100)는 일정 조건의 규칙 집합을 포함하는 구조화된 포맷에 기초하여 컨테이너에 대한 보안 정책을 생성 및 관리할 수 있다.
정책 관리부(100)는 모든 쿠버네티스(kubernetes) 시스템에 대한 보안 정책을 데이터 직렬화 양식 중의 하나인 yaml(Yet Another Markup Language, 마크업 언어 중 하나의 종류임)과 같은 구조화된 포맷, 즉 특정 형식의 파일로 관리할 수 있으며, 보안 정책은 각 컨테이너 또는 팟(Pod) 또는 각 컨테이너 네임스페이스에 적용할 수 있다.
구체적으로 정책 관리부(100)는 하나의 팟에 존재하는 각 컨테이너, 같은 팟에 존재하는 컨테이너들, 동일한 네임스페이스(리눅스 네임스페이스 및 쿠버네티스 네임스페이스 모두를 의미)에 존재하는 컨테이너들을 모두 포함하여, 서로 다른 수준에서 각 관리 유닛이 대한 보안 정책을 관리하기 위한 기능을 제공할 수 있다.
이러한 정책 관리부(100)를 통해 관리자는 일정 조건의 규칙 집합을 포함하는 구조화된 파일 형식, 즉 yaml 또는 json(제이슨, JavaScript Object Notation)과 같은 파일 형식을 통해 보안 정책을 구성할 수 있다.
여기서 일정 조건의 규칙 집합은, 시스템 콜의 이름을 포함하는 시스템 콜 규칙 집합 및 LSM 함수의 이름을 포함하는 LSM 프로브 규칙 집합 중 하나일 수 있다. 이러한 규칙 집합은 관리자에 의해 하나로 선택될 수 있다.
보다 구체적으로 시스템 콜 규칙 집합은 <시스템 콜(Syscall)><조건(Condition)><행동(Action)>을 포함할 수 있다. 이러한 시스템 콜 접근 방식에서 정책 관리부(100)는 시스템 콜과 맵을 훅이 될 해당 LSM 프로브와 함께 이해해야하는데 매핑은 사전에 정의되어 있기 때문에 일부 함수나 파라미터가 누락될 수 있다. 하지만 사용자인 관리자라하더라도 LSM 프로브가 어려울 수 있기 때문에 이러한 시스템 콜 규칙 집합을 포함하는 시스템 콜 접근 방식을 제공한다.
구체적으로 시스템 콜 내부에는 'security'라는 헤더가 붙는 프로브가 포함되는데, 이를 LSM 프로브라고 하며, 보통 에러(error)를 체킹(checking)할 때 사용될 수 있다.
한편 에러에 훅(hook)을 걸어두고, 해당 훅이 후킹되면 LSM 임플리멘테이션(implementation)을 수행할 수 있다. 여기서 LSM 임플리멘테이션은 정책 시행 프로그램이 보안적으로 어떤 동작을 할 지 정하는 작업을 의미할 수 있다. 이에 관리자가 보안 정책을 보다 정밀하게 관리하고 싶은 경우에도 LSM 프로브를 프로브 접근 방식을 사용할 수 있다.
LSM 프로브 규칙 집합은 <LSM 프로브(LSM probe)> <조건(Condition)><행동(Action)>을 포함할 수 있다. 이러한 LSM 프로브 접근 방식에서 정책 관리부(100)는 규칙을 파싱하고, 정책 시행 프로그램 구축을 위해 정책 시행부(200)로 전달할 수 있다. 이러한 LSM 프로브 접근 방식을 통해 관리자는 규칙을 가장 유연하게 작성할 수 있다.
상술한 시스템 규칙 집합에 포함되는 시스템 콜(Syscall)은 시스템 콜의 이름을 의미하고, LSM 프로브 규칙 집합에 포함되는 LSM 프로브(LSM probe)는 include/linux/security.h (Linux source)에서 찾을 수 있는 LSM 함수의 이름을 의미할 수 있다.
그리고 두 종류의 규칙 집합에 포함되는 조건(Condition)은 LSM 함수 형태에서 파라미터와 값 사이의 조건을 의미하는 것으로, 시스템 콜이 있으면 그 안에 들어가야하는 아규먼트(argument), 즉 파라미터를 의미할 수 있으며, 행동(Action)은 허락 또는 거부에 대한 행동을 지정하는 것을 의미할 수 있다.
보다 구체적으로 아래와 같은 LSM 함수가 있는 경우를 예로 들어 설명하기로 한다.
static inline int security_path_chmod(const struct path *path, umode_t mode)
{
return 0;
}
이상의 LSM 함수의 경우 조건(Condition)은 path -> dentry.d_iname == "test"과 같이 될 수 있고, 이러한 조건은 파일 이름과 문자열이 "test"인지 아닌지를 비교하게 되고, 파일 이름이 "test"이면 조건은 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환하게 되며, 이때 조건(Condition)은 C 코딩 형식이어야 한다.
그리고 행동(Action)으로는 허용(Allow), 거부(Deny), 테인트(Taint)를 포함할 수 있으며, 테인트(Taint)는 조건(Condition)dl TRUE일 때 이벤트가 기록됨을 의미할 수 있다.
본 실시예에 따른 시스템(1)에서 상술한 바와 같이 규칙 집합을 두 가지의 종류 중에서 선택할 수 있도록 마련되는 것은, 관리자가 세밀하게 보안 정책을 작성할 수 있도록 하기 위함이다.
구체적으로 시스템 콜 내부에 프로브가 존재하게 되고, 시스템 콜 내부에 존재하는 프로브가 각각 후킹 포인트를 포함하게 된다. 이에 같은 동작을 수행하는 조건이더라도 조건에 해당하는 아규먼트가 다른 경우가 종종 있을 수 있다. 예를 들어 시스템 콜에서는 3개의 아규먼트를 포함하고 있는데, 프로브를 위해서는 그 중에 하나 또는 두 개만을 사용하는 것과 같이 사용하는 아규먼트, 여기서는 조건(condition)이 다르기 때문에 두 가지의 접근방식을 제공하고, 관리자가 해당 접근 방식들 중에서 하나를 선택할 수 있도록 할 수 있다.
도 3에 도시된 코드 화면을 예시적 사항으로 하여 설명하면, 도면에 도시된 바와 같이 시스템 콜은 하나(35)인데 해당 시스템 콜을 사용하는 LSM 훅은 두개(37, 38)인 경우가 있을 수 있다. 또한 해당 시스템 콜 조건(condition)은 제공할 수 있는 아규먼트가 [family], [type], [protocol] 총 3개인 반면, 실제 LSM 훅에서 사용되는 아규먼트는 [family], [type], [protocol], [kern]과 같이 4개 또는 [sock], [family], [type], [protocol], [kern]과 같이 5개인 경우가 있다. 따라서 본 시스템에서는 이러한 경우를 모두 지원하기 위해 두 가지의 접근 방식으로 나누어 제공할 수 있다.
한편 정책 시행부(200)는 컨테이너가 시스템 콜을 요청하면 규칙 집합을 확인하고, 확인된 규칙 집합에 기초하여 구조화된 포맷의 보안정책을 기설정된 형식의 코드로 변경하며, 코드가 변경된 정책을 커널 계층(kernel space)에 전달할 수 있다.
이러한 정책 시행부(200)는 정책 시행 프로그램을 배포하고 제어하며, Perf를 통해 커널 계층(kernel space)의 정책 시행 프로그램과 통신할 수 있다. 이때 배포 및 제어하는 정책 시행 프로그램은 eBPF(Berkerley Packet Filter)일 수 있다.
BPF는 특정 컴퓨터 운영체제에서 사용되는 기술로, 특히 네트워크 트래픽 분석을 위한 프로그램에 사용되는 기술이고, eBPF는 리눅스 커널의 확장된 BPF JIT 가상 머신을 의미한다. 이는 데이터 링크 계층에 raw 인터페이스를 제공하여 raw 링크 계층 패킷이 전송 및 수신될 수 있도록 할 수 있다. BPF는 패킷 필터링을 지원하므로 유저 스페이스 프로세스가 수신하고자 하는 패킷을 지정하는 필터 프로그램을 제공할 수 있다. 예를 들어 tcpdump 프로세스는 TCP 연결을 시작하는 패킷만 수신하려고 할 수 있다. BPF는 프로세스에서 제공하는 필터를 통과하는 패킷만 반환하게 되는데, 이렇게 하면 운영 체제 커널에서 프로세스로 원치 않는 패킷을 복사하지 않으므로 성능이 크게 향상될 수 있다는 장점이 있다.
한편 eBPF는 운영 체제 커널에서 샌드박스된 프로그램을 실행할 수 있는 리눅스 커널에서 유래한 기술로, 커널 소스 코드를 변경하거나 커널 모듈을 로드할 필요가 없어 커널의 기능을 안전하고 효율적으로 확장하기 위해 사용될 수 있다. 이에 본 발명에서는 eBPF 프로그램을 정책 시행 프로그램으로 사용할 수 있다.
그리고 정책 시행부(200)에서의 정책 시행은 bpf 시스템 콜을 사용하여 eBPF 프로그램을 빌드, 컴파일 및 LSM 훅에 로드하는 파이썬 스크립트 집합일 수 있다.
이를 통해 정책 시행부(200)는 파이썬을 통해 정책 관리부(100)에서 관리되고 있는 yaml 포맷의 정책에 대해서 집합 규칙을 확인한 다음에 C언어 코드로 바꿀 수 있게 된다.
따라서 정책 시행부(200)는 C 언어 코드로 eBPF 코드를 작성할 수 있고, bcc나 libbpf와 같은 오픈 소스 프로젝트를 사용하여 eBPF 코드를 컴파일 할 수 있다.
또한 정책 시행부(200)에서의 정책 시행은 컨테이너 요구 없이 eBPF 프로그램을 해당 LSM 함수에 로드할 수 있는데, 이는 bpf 시스템 콜을 통해 정책 시행 프로그램인 eBPF 프로그램을 커널 VM(Virtual Machine)에서 실행할 수 있기 때문이다.
LSM 프레임워크는 모듈식 함수 로딩용으로 설계되기 때문에 보안 정책 시행 프로그램인 eBPF 프로그램이 안전하고 동적으로 로드될 수 있다.
그리고 정책 시행부(200)에서 수행하는 정책 시행은 정책 관리부(100)가 보안 정책을 올바른 오브젝트에 적용할 수 있도록 eBPF 프로그램에 대한 필터링 기능을 빌드할 수 있다.
또한 정책 시행부(200)는 정책 시행 프로그램을 LSM 함수에 로드하여 컨테이너, 팟, 또는 쿠버네티스 네임스페이스 단위로 제어할 수 있다.
구체적으로 각 컨테이너는 네임 스페이스 메커니즘에 의해 격리되므로 컨테이너의 모든 프로세스가 다른 네임 스페이스로 강제 또는 클론이 될 수 없다. 따라서 상속 규칙, 즉 동일한 네임스페이스 및 동일한 cgroup 집합을 따르게 된다. 여기서의 네임 스페이스는 쿠버네티스 네임 스페이스와 다른 Linux 네임 스페이스를 의미할 수 있다. 컨테이너의 루트 프로세스에서 네임스페이스 ID를 추출하고 bpf_get_current_task()(eBPF 헬퍼)를 사용하여 이벤트(예: 시스템 콜 요청)를 발생시키는 프로세스의 현재 이벤트 정보(커널 스페이스 컨텍스트)와 비교하여 보안 정책에 따라 컨테이너를 필터링할 수 있다.
한편 각 팟의 경우 동일한 팟의 컨테이너가 동일한 Linux 네임스페이스에 있거나 다른 네임스페이스에 있을 수 있다. 이때 네임스페이스 ID가 다른 경우 정책 시행은 필터링할 대상 팟의 네임스페이스 ID 목록을 선언하는 필터링 규칙을 eBPF 코드에 하나 더 추가하기만 하면 된다.
그리고 정책 시행부(200)는 정책 시행을 위해 각 쿠버네티스 네임스페이스에 대해 네임스페이스의 모든 컨테이너에 대한 정보를 가져오는 데 kubectl을 이용하고, 그 후 팟 필터링과 동일한 기술을 수행할 수 있다.
이러한 정책 관리부(100) 및 정책 시행부(200)는, 도 1에 도시된 바와 같이 사용자 계층(user space)에 구비될 수 있다.
또한 정책 시행부(200)는 도시된 바와 같이 Perf를 통해 커널 계층에 구비되는 정책 동작결정부(300)와 통신할 수 있다. 리눅스를 위한 성능 카운터 PCL 이었던 Perf는 perf_events 또는 Perf 툴이라고도 하며, 2009년 리눅스 커널 버전 2.6.31부터 사용할 수 있는 리눅스의 성능 분석 도구이다. 이러한 Perf는 전체 시스템에 대한 통계적 프로파일링을 수행할 수 있고, 일반적인 수준에서 다양한 시스템 지표를 수집하고 가시화할 수 있다.
본 발명에서 정책 시행 프로그램으로 eBPF 프로그램을 사용함으로써 커널 계층 함수에서 추적 및 계측(tracing and instrumenting)이 가능할 수 있다. 2015년부터 리눅스 커널은 eBPF 프로그램이 데이터를 perf event로 출력할 수 있도록 처음으로 지원하였으며, 이는 추적 프로그램 유저 스페이스를 커널 계층으로부터 정보를 수집하기 쉽게 할 수 있다.
따라서 본 발명에서는 이러한 Perf를 이용하여 정책 시행 프로그램이 데이터를 이벤트로 출력할 수 있도록 하는 형태를 통해 최종적으로 보안 정책 시스템을 구현할 수 있다.
따라서 쿠버네티스 시스템 내에서 팟(Pod) 형태로 제공되고 있는 정책 관리부(100) 및 정책 시행부(200)는 어떠한 팟을 제어할지 결정하고, 실제로 보안 정책을 수행하는 것은 정책 시행 프로그램이 수행을 하게 되며, 정책 시행부(200)와 정책 동작결정부(300) 간의 통신을 위한 Perf로는 이벤트를 추출해서 볼 수 있도록 한다.
또한 본 발명에서의 보안 정책은 스택(stack) 가능한 보안 정책일 수 있다. 종래에는 모든 호스트, 또는 모든 시스템에 대해서 하나의 정책 파일 등을 통해 콜 시스템을 제어했다면, 본 발명에서는 보안 정책들을 여러 개 쓸 수 있고 여러 개의 보안 정책들을 스택할 수 있다.
구체적으로 동일한 LSM 프로브와 커널 컨텍스트에 영향을 미치는 여러 정책을 포함하는 경우 최종적으로 출력되는 LSM 훅 결과 중 하나가 선택(or와 같은)되는 방식으로 반환 값을 생성하여 반환 값을 반환할 수 있다. 이때 결정된 동작 중에 -1로 생성되는 반환 값이 존재하면 최종 반환 값은 -1로 결정될 수 있다. 이는 상술한 규칙 집합에서와 마찬가지로 하나의 시스템 콜에 대해서 LSM 훅이 복수 개 일 수 있고, 하나의 시스템 콜이 아니더라도 어떤 특정한 소켓이라든지 똑같은 커널 컨텍스트에 접근하는 경우가 있을 수 있기 때문에 본 시스템에서는 스택 가능하도록 보안 정책을 제공할 수 있다.
한편, 정책 동작결정부(300)는 시스템 콜을 후킹(hooking)하는 정책 시행 프로그램에 기초하여 정책 시행부(200)로부터 전달받은 정책을 커널 계층(kernel space)에서 시행하고, 일정한 동작을 수행하기 위한 반환 값을 생성할 수 있다.
여기서 정책 시행 프로그램은 상술한 eBPF 프로그램으로 LSM 후킹(Linux Security Module Hooking) 기술을 이용하는 후킹 프로그램일 수 있다.
정책 시행부(200)를 통해 C언어로 작성된 eBPF 프로그램은 보안 정책을 시행하기 위해 LSM 함수에 로드되며, 상술한 바와 같이 정책 시행 프로그램인 eBPF 프로그램은 LSM 프레임워크 규칙을 따른다. 즉, 조건을 확인하고, 실제로 이를 통과시킬지 말지를 결정하게 되는 LSM 프레임워크의 규칙을 따르게 된다. 보다 구체적으로 정의된 훅 포인트가 후킹되면, 정책 시행 프로그램이 특정 동작을 수행하고, 그 결과로 해당 동작이 에러인지 아닌지에 따라 반환 값으로 0 또는 -1을 반환하게 된다. 이때 통과(허용)를 의미하는 반환 값으로 0을 반환하거나 통과하지 않음(거부)을 의미하는 반환 값(에러 코드로 0이 아닌 정수를 의미할 수 있음)을 반환할 수 있다.
이를 위해 정책 동작결정부(300)는 정책 동작결정부는 커널 계층(kernel space)에 구비될 수 있으며, 필터링부(310), 커널 컨텍스트 전처리부(330), 파싱부(350) 및 동작부(370)를 포함하여 마련될 수 있다.
필터링부(310)는 전달받은 정책이 보안 정책을 위반하는지 판단하고, 판단한 결과에 기초하여 해당 컨테이너를 통과시킬 수 있다.
커널 컨텍스트 전처리부(330)는 전달받은 정책이 보안 정책을 위반하지 않으면, 즉 필터링부(310)를 통과하면 특정 컨테이너에 포함된 경로 객체의 유효성을 판단하기 위해 필요한 커널 컨텍스트를 전처리할 수 있다.
파싱부(350)는 전처리된 컨텍스트에 포함된 조건을 파싱할 수 있다.
동작부(370)는 파싱된 조건에 따른 동작에 기초하여 일정한 동작을 수행하기 위한 반환값을 생성할 수 있다.
이러한 필터링부(310), 커널 컨텍스트 전처리부(330), 파싱부(350) 및 동작부(370)를 포함하는 정책 동작결정부(300)에서의 전체적인 과정은 구체적으로 예를 들면 도 4에 도시된 바와 같을 수 있으며, 이하에서는 도 4에 도시된 코드를 기준으로 필터링부(310), 커널 컨텍스트 전처리부(330), 파싱부(350) 및 동작부(370)를 설명하기로 한다.
도 4에서 (1) Container filtering part는 필터링부(310)에서 수행되는 과정일 수 있다. 필터링부(310)는 불필요한 컴퓨팅 리소스를 줄이기 위하여 보안 정책 프로그램의 첫 번째 부분에 있는 구성일 수 있다.
도 4에 도시된 바와 같이 현재 보안 규칙의 범위를 벗어나는 컨테이너는 정책 시행 프로그램, 즉 eBPF 프로그램의 동작을 즉시 거부하여 커널 컨텍스트 전처리부(330)에서 수행되는 (2) Kernel Context pre-processing 부분으로 넘어가지 못하게 된다.
구체적으로 필터링부(310)에서는 보안 규칙이 핸들링할 수 있는 부분이 아니면 해당 컨테이너는 바로 패스시킨다는 뜻으로, 도 4를 예로 들면 '!'는 보안 규칙에 맞지 않다는 뜻으로 '!'가 되면 반환 값으로 0을 반환하게 되므로, 거부 동작으로 정책 시행 프로그램을 종료시킬 수 있다.
한편 (2) Kernel Context pre-processing 부분은 커널 컨텍스트 전처리부(330)에서 수행되는 과정으로, LSM 훅의 기능을 이용하여 정책 시행 프로그램은 현재 커널 이벤트의 커널 컨텍스트에 접근할 수 있다.
예를 들어 유저 스페이스 프로세스에서 chmod 시스템 콜이 요청되는 동안 LSM 프레임워크에 의해 security_path_chmod라는 이름의 LSM 함수가 호출될 수 있다. 이 함수는 대상 파일에 대한 정보를 포함하는 경로 객체를 가져와 변경 모드 작업이 유효한지 아닌지 여부를 결정하는 함수일 수 있다. 대상 파일에 대한 정보는 커널에서만 관찰되기 때문에, 커널 컨텍스트의 예이다. 이에 해당 LSM 훅에 필요한 컨텍스트를 전처리해야 한다. 본 발명에 따른 정책 시행 프로그램인 eBPF 프로그램은 10000 instruction으로 제한함으로써 컴퓨팅 리소스를 절약할 수 있고, 구현된 정책을 가능한 간단하게 만들 수 있다.
보다 구체적으로 도 4를 예로 들어 설명하면 커널 컨텍스트 전처리부(330)에서는 아규먼트를 받을 때 도시된 바와 같이 path라는 경로를 받게 되는데, 예를 들어 directory etc 또는 directory etc 안에 있는 특정한 텍스트 파일과 같이 핸들링을 원하는 파일이나 directory에 대한 경로를 받게 된다.
하지만 해당 경로 자체로 시스템 콜 혹은 LSM 훅을 제어할 수 있는게 아니기 때문에, 커널 계층에서 이해할 수 있는 커널 컨텍스트로 변경해야 할 필요가 있다. 이에 커널 컨텍스트 전처리부(330)는 도 4에 도시된 바와 같이 핸들링을 원하는 파일에 대한 경로이거나, 핸들링을 원하는 directory에 대한 경로인 *path를 path에 넣어서 dentry_path를 가져올 수 있다. 여기서 가져오는 fullpath는 커널 계층에서 이해할 수 있는 path에 대한 정보가 될 수 있다. 즉 커널 컨텍스트 전처리부(330)에서는 사용자 계층에서 받아온 path 정보를 커널에 있는 컨텍스트로 변환할 수 있다.
(3) Condition 부분은 파싱부(350)에서 수행되는 과정으로, 정책 시행 구성 요소에 의한 정책을 파싱할 수 있다. 즉, 파싱부(350)는 조건을 파싱할 수 있다.
한편 (4) Action: deny 부분은 동작부(370)에서 수행되는 과정으로, 정책 시행 프로그램에 의해 구현되는 LSM 훅의 반한 값이 곧 정책 동작이 될 수 있다. 동작이 허용인 경우에 생성되는 반환 값은 0이고, 그렇지 않은 경우의 반환 값은 -1일 수 있다. 한편 동작이 거부인 경우에 반환 값은 -1이고, 그렇지 않은 경우의 반환 값은 0일 수 있다. 또한 동작이 테인트인 경우, 코드 스니펫(code snippet)이 커널 계층으로부터 사용자 계층에서 값을 읽도록 허용하는 통신 링 버퍼인 Perf 링으로 로깅 값을 보내며, 반환 값은 항상 0일 수 있다.
이러한 정책 관리부(100), 정책 시행부(200) 및 정책 동작결정부(300)를 포함하는 본 발명의 일 실시예에 따른 시스템은 보안 정책을 초기화 상태 또는 실행 상태를 포함한 모든 상태의 컨테이너에 동적으로 적용할 수 있다. 또한 보안 정책의 적용을 위해 시스템 또는 컨테이너를 재시작할 필요가 없다는 장점이 있다.
그리고 행동 또는 권한 목록을 허용하거나 거부하도록 어떤 컨테이너에도 보안 정책을 동적으로 시행시킬 수 있으며, 동작의 매개 변수 값 및 커널에서만 액세스할 수 있는 기타 커널 공간 컨텍스트를 자세히 검사하여 보안 정책을 적용할 수 있게 된다. 또한 커널 컨텍스트 파라미터를 사용자 계층에서 볼 수 있다.
한편 도 5는 본 발명의 일 실시예에 따른 동적 보안 정책 시행 방법을 설명하기 위한 흐름도로써, 본 발명의 일 실시예에 따른 동적 보안 정책 시행 방법은 도 1에 도시된 동적 보안 정책 시행 시스템(1)과 실질적으로 동일한 구성 상에서 진행되므로, 도 1의 동적 보안 정책 시행 시스템(1)과 동일한 구성요소에 대해 동일한 도면 부호를 부여하고, 반복되는 설명은 생략하기로 한다.
본 발명의 일 실시예에 따른 컨테이너 시스템에 대한 동적 보안 정책 시행 방법은, 컨테이너에 대한 보안 정책을 생성 및 관리하는 단계(S110), 보안 정책을 기설정된 형식의 코드로 변경하는 단계(S130), 코드가 변경된 정책을 커널 계층(kernel space)에 전달하는 단계(S150), 전달받은 정책을 시행하는 단계(S170) 및 일정한 동작을 수행하기 반환값을 생성하는 단계(S190)를 포함할 수 있다.
컨테이너에 대한 보안 정책을 생성 및 관리하는 단계(S110)에서는 정책 관리부(100)가 일정 조건의 규칙 집합을 포함하는 구조화된 포맷에 기초하여 컨테이너에 대한 보안 정책을 생성 및 관리할 수 있다.
여기서 일정 조건의 규칙 집합은, 시스템 콜의 이름을 포함하는 시스템 콜 규칙 집합 및 LSM 함수의 이름을 포함하는 LSM 프로브 규칙 집합 중 적어도 하나일 수 있으며, 이러한 규칙 집합은 관리자에 의해 선택될 수 있다.
보안 정책을 기설정된 형식의 코드로 변경하는 단계(S130)에서는 정책 시행부(200)는, 컨테이너가 시스템 콜을 요청하면 구조화된 포맷에 포함되는 규칙 집합을 확인할 수 있다. 그리고 정책 시행부(200)는 확인된 규칙 집합에 기초하여 구조화된 포맷의 보안 정책을 기설정된 형식의 코드로 변경할 수 있다.
이후 정책 시행부(200)는 코드가 변경된 정책을 커널 계층(kernel space)에 전달하는 단계(S150)를 수행할 수 있다.
한편 전달받은 정책을 시행하는 단계(S170)에서는 정책 동작결정부(300)가 시스템 콜을 후킹(hooking)하는 정책 시행 프로그램에 기초하여 커널 계층(kernel space)에 전달하는 단계(S150)로부터 전달받은 정책을 시행할 수 있다.
이때 정책 시행 프로그램은 LSM 후킹(Linux Security Module Hooking) 기술을 이용하는 후킹 프로그램으로 eBPF 프로그램일 수 있다.
그리고 정책 동작결정부(300)가 정책을 시행하는 단계(S170)는, 전달받은 정책이 보안 정책을 위반하는지 판단하고, 판단한 결과에 기초하여 해당 컨테이너를 통과시키는 단계, 보안 정책을 위반하지 않으면, 특정 컨테이너에 포함된 경로 객체의 유효성을 판단하기 위해 필요한 커널 컨텍스트를 전처리하는 단계, 및 전처리된 컨텍스트에 포함된 조건을 파싱하는 단계를 포함할 수 있다.
일정한 동작을 수행하기 반환값을 생성하는 단계(S190)에서는 전달받은 정책을 시행하는 단계(S170)에서 정책을 시행한 결과에 대응되는 일정한 동작을 수행하기 반환값을 생성할 수 있다. 이러한 반환값을 생성하는 단계(S190)에서는, 파싱된 조건에 따른 동작에 기초하여 일정한 동작을 수행하기 위한 반환값을 생성할 수 있다.
이를 통해 보안 정책은, 초기화 상태 또는 실행 상태를 포함한 모든 상태의 컨테이너에 동적으로 적용가능하게 된다.
그리고 보안 정책을 생성 및 관리하는 단계(S110), 보안 정책을 기설정된 형식의 코드로 변경하는 단계(S130) 및 정책을 커널 계층에 전달하는 단계(S150)는 사용자 계층(user space)에서 수행되고, 전달받은 정책을 시행하는 단계(S170) 및 반환값을 생성하는 단계((S190)는 커널 계층(kernel space)에서 수행될 수 있다.
이와 같은 본 발명의 컨테이너 시스템에 대한 동적 보안 정책 시행 방법은 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다.
상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다.
컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD 와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다.
프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상에서는 본 발명의 다양한 실시예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.
100 : 정책 관리부 200 : 정책 시행부
300 : 정책 동작결정부 310 : 필터링부
330 : 커널 컨텍스트 전처리부 350 : 파싱부
370 : 동작부

Claims (13)

  1. 일정 조건의 규칙 집합을 포함하는 구조화된 포맷에 기초하여 컨테이너에 대한 보안 정책을 생성 및 관리하는 정책(policy) 관리부;
    상기 컨테이너가 시스템 콜을 요청하면 상기 규칙 집합을 확인하고, 확인된 규칙 집합에 기초하여 상기 구조화된 포맷의 보안정책을 기설정된 형식의 코드로 변경하며, 코드가 변경된 정책을 커널 계층(kernel space)에 전달하는 정책 시행부; 및
    상기 시스템 콜을 후킹(hooking)하는 정책 시행 프로그램에 기초하여 상기 정책 시행부로부터 전달받은 정책을 상기 커널 계층(kernel space)에서 시행하고, 일정한 동작을 수행하기 위한 반환값을 생성하는 정책 동작결정부를 포함하는 컨테이너 시스템에 대한 동적 보안 정책 시행 시스템.
  2. 제1항에 있어서,
    상기 보안 정책은,
    초기화 상태 또는 실행 상태를 포함한 모든 상태의 상기 컨테이너에 동적으로 적용 가능한 것을 특징으로 하는, 컨테이너 시스템에 대한 동적 보안 정책 시행 시스템.
  3. 제1항에 있어서,
    상기 일정 조건의 규칙 집합은,
    시스템 콜의 이름을 포함하는 시스템 콜 규칙 집합 및 LSM 함수의 이름을 포함하는 LSM 프로브 규칙 집합 중 하나인 것을 특징으로 하는, 컨테이너 시스템에 대한 동적 보안 정책 시행 시스템.
  4. 제1항에 있어서,
    상기 정책 시행 프로그램은,
    LSM 후킹(Linux Security Module Hooking) 기술을 이용하는 후킹 프로그램인 것을 특징으로 하는, 컨테이너 시스템에 대한 동적 보안 정책 시행 시스템.
  5. 제1항에 있어서,
    상기 정책 동작결정부는,
    전달받은 정책이 보안 정책을 위반하는지 판단하고, 판단한 결과에 기초하여 해당 컨테이너를 통과시키는 필터링부;
    상기 보안 정책을 위반하지 않으면, 특정 컨테이너에 포함된 경로 객체의 유효성을 판단하기 위해 필요한 커널 컨텍스트를 전처리하는 커널 컨텍스트 전처리부;
    전처리된 컨텍스트에 포함된 조건을 파싱하는 파싱부; 및
    파싱된 조건에 따른 동작에 기초하여 일정한 동작을 수행하기 위한 반환값을 생성하는 동작부를 포함하는 것을 특징으로 하는, 컨테이너 시스템에 대한 동적 보안 정책 시행 시스템.
  6. 제1항에 있어서,
    상기 정책 관리부 및 상기 정책 시행부는, 사용자 계층(user space)에 구비되고, 상기 정책 동작결정부는 커널 계층(kernel space)에 구비되는 것을 특징으로 하는, 컨테이너 시스템에 대한 동적 보안 정책 시행 시스템.
  7. 컨테이너 시스템에 대한 동적 보안 정책 시행 시스템에서 수행되는 컨테이너 시스템에 대한 동적 보안 정책 시행 방법에 있어서,
    일정 조건의 규칙 집합을 포함하는 구조화된 포맷에 기초하여 컨테이너에 대한 보안 정책을 생성 및 관리하는 단계;
    상기 컨테이너가 시스템 콜을 요청하면 상기 규칙 집합을 확인하고, 확인된 규칙 집합에 기초하여 상기 구조화된 포맷의 보안 정책을 기설정된 형식의 코드로 변경하는 단계;
    코드가 변경된 정책을 커널 계층(kernel space)에 전달하는 단계;
    상기 시스템 콜을 후킹(hooking)하는 정책 시행 프로그램에 기초하여 상기 커널 계층(kernel space)에 전달하는 단계로부터 전달받은 정책을 시행하는 단계; 및
    시행한 결과에 대응되는 일정한 동작을 수행하기 반환값을 생성하는 단계를 포함하는 컨테이너 시스템에 대한 동적 보안 정책 시행 방법.
  8. 제7항에 있어서,
    상기 보안 정책은,
    초기화 상태 또는 실행 상태를 포함한 모든 상태의 상기 컨테이너에 동적으로 적용 가능한 것을 특징으로 하는, 컨테이너 시스템에 대한 동적 보안 정책 시행 방법.
  9. 제7항에 있어서,
    상기 일정 조건의 규칙 집합은,
    시스템 콜의 이름을 포함하는 시스템 콜 규칙 집합 및 LSM 함수의 이름을 포함하는 LSM 프로브 규칙 집합 중 하나인 것을 특징으로 하는, 컨테이너 시스템에 대한 동적 보안 정책 시행 방법.
  10. 제7항에 있어서,
    상기 정책 시행 프로그램은,
    LSM 후킹(Linux Security Module Hooking) 기술을 이용하는 후킹 프로그램인 것을 특징으로 하는, 컨테이너 시스템에 대한 동적 보안 정책 시행 방법.
  11. 제7항에 있어서,
    상기 정책을 시행하는 단계는,
    전달받은 정책이 보안 정책을 위반하는지 판단하고, 판단한 결과에 기초하여 해당 컨테이너를 통과시키는 단계;
    상기 보안 정책을 위반하지 않으면, 특정 컨테이너에 포함된 경로 객체의 유효성을 판단하기 위해 필요한 커널 컨텍스트를 전처리하는 단계; 및
    전처리된 컨텍스트에 포함된 조건을 파싱하는 단계를 포함하고,
    상기 반환값을 생성하는 단계에서는,
    파싱된 조건에 따른 동작에 기초하여 일정한 동작을 수행하기 위한 반환값을 생성하는 것을 특징으로 하는 컨테이너 시스템에 대한 동적 보안 정책 시행 방법.
  12. 제7항에 있어서,
    상기 보안 정책을 생성 및 관리하는 단계, 상기 보안 정책을 기설정된 형식의 코드로 변경하는 단계 및 상기 커널 계층에 전달하는 단계는 사용자 계층(user space)에서 수행되고, 전달받은 정책을 시행하는 단계 및 반환값을 생성하는 단계는 커널 계층(kernel space)에서 수행되는 것을 특징으로 하는, 컨테이너 시스템에 대한 동적 보안 정책 시행 방법.
  13. 제7항에 따른 컨테이너 시스템에 대한 동적 보안 정책 시행 방법을 수행하기 위한 컴퓨터 프로그램이 기록된 컴퓨터로 판독 가능한 저장 매체.
KR1020220056777A 2022-05-09 2022-05-09 컨테이너 시스템에 대한 동적 보안 정책 시행 방법, 이를 수행하기 위한 기록 매체 및 시스템 KR102669688B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020220056777A KR102669688B1 (ko) 2022-05-09 컨테이너 시스템에 대한 동적 보안 정책 시행 방법, 이를 수행하기 위한 기록 매체 및 시스템
US18/135,593 US20230362198A1 (en) 2022-05-09 2023-04-17 Dynamic security policy enforcement method for container system, recording medium and system for performing the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220056777A KR102669688B1 (ko) 2022-05-09 컨테이너 시스템에 대한 동적 보안 정책 시행 방법, 이를 수행하기 위한 기록 매체 및 시스템

Publications (2)

Publication Number Publication Date
KR20230157147A true KR20230157147A (ko) 2023-11-16
KR102669688B1 KR102669688B1 (ko) 2024-05-27

Family

ID=

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190038065A (ko) 2017-09-29 2019-04-08 숭실대학교산학협력단 리눅스 기반 안드로이드 컨테이너 플랫폼, 이를 탑재한 장치 및 리눅스 기반 안드로이드 컨테이너 환경에서의 보안 시스템 구축 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190038065A (ko) 2017-09-29 2019-04-08 숭실대학교산학협력단 리눅스 기반 안드로이드 컨테이너 플랫폼, 이를 탑재한 장치 및 리눅스 기반 안드로이드 컨테이너 환경에서의 보안 시스템 구축 방법

Also Published As

Publication number Publication date
US20230362198A1 (en) 2023-11-09

Similar Documents

Publication Publication Date Title
CN111819544B (zh) 用于虚拟计算资源的部署前安全分析器服务
US10650156B2 (en) Environmental security controls to prevent unauthorized access to files, programs, and objects
Afonso et al. Going native: Using a large-scale analysis of android apps to create a practical native-code sandboxing policy
CN102254120B (zh) 恶意代码的检测方法、系统及相关装置
US9836608B2 (en) System, method and apparatus for simultaneous definition and enforcement of access-control and integrity policies
RU2360368C2 (ru) Делегированное администрирование размещенных ресурсов
US7743414B2 (en) System and method for executing a permissions recorder analyzer
JP5462254B2 (ja) コンピューティングプロセスのための最小特権アクセスの付与
RU2589852C2 (ru) Система и способ автоматической регулировки правил контроля приложений
US11334686B2 (en) Comprehensive system wide cross-reference mechanism using runtime data collection
US11501022B2 (en) Application security policy management agent
KR20130126251A (ko) 웹 서비스 모니터링 시스템 및 방법
KR20220116341A (ko) 권한 제어 방법 및 장치, 컴퓨터 디바이스 및 저장 매체
JPH1139157A (ja) 機密保護を提供する方法およびシステム
JP5990646B2 (ja) 仮想マシンにおける強制保護制御
CN113256296B (zh) 智能合约执行方法、系统、装置和存储介质
US7797727B1 (en) Launching an application in a restricted user account
CN109902497A (zh) 一种面向大数据集群的访问权限管理方法及系统
CN103065081B (zh) 一种PaaS平台的安全运行方法和PaaS平台
US8819231B2 (en) Domain based management of partitions and resource groups
KR102669688B1 (ko) 컨테이너 시스템에 대한 동적 보안 정책 시행 방법, 이를 수행하기 위한 기록 매체 및 시스템
US9330276B2 (en) Conditional role activation in a database
KR20230157147A (ko) 컨테이너 시스템에 대한 동적 보안 정책 시행 방법, 이를 수행하기 위한 기록 매체 및 시스템
US8627068B1 (en) Selecting access authorities
CN117131515B (zh) 一种应用请求执行方法、装置、计算机设备和存储介质

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant