KR101992066B1 - 컨테이너 관리 방법 및 장치 - Google Patents

컨테이너 관리 방법 및 장치 Download PDF

Info

Publication number
KR101992066B1
KR101992066B1 KR1020180152259A KR20180152259A KR101992066B1 KR 101992066 B1 KR101992066 B1 KR 101992066B1 KR 1020180152259 A KR1020180152259 A KR 1020180152259A KR 20180152259 A KR20180152259 A KR 20180152259A KR 101992066 B1 KR101992066 B1 KR 101992066B1
Authority
KR
South Korea
Prior art keywords
container
library
checksum
extracting
processor
Prior art date
Application number
KR1020180152259A
Other languages
English (en)
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 KR1020180152259A priority Critical patent/KR101992066B1/ko
Application granted granted Critical
Publication of KR101992066B1 publication Critical patent/KR101992066B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

컨테이너 관리 방법 및 장치가 개시된다. 일 실시예에 따른 컨테이너 관리 방법은, 실행 중인 컨테이너의 목록을 수신하는 단계와, 상기 목록에 기초하여 상기 컨테이너의 식별자(identification)를 추출하는 단계와, 상기 식별자에 기초하여 상기 컨테이너의 설정 값을 추출하는 단계와, 상기 설정 값에 기초하여 상기 컨테이너 내의 라이브러리를 검증하는 단계를 포함한다.

Description

컨테이너 관리 방법 및 장치{METHOD AND APPARATUS OF MANAGING CONTAINER}
아래 실시예들은 컨테이너를 관리하는 방법 및 장치에 관한 것이다.
도커는 컨테이너 기반의 경량형 가상화 플랫폼으로써 기존 가상화 기술에 비해서 낮은 오버헤드와 빠른 구동 속도를 제공한다. 이러한 특징은 동일한 하드웨어에서 더 많은 응용 프로그램이 구동될 수 있도록 한다. 또한, 이미지 단위로 응용 프로그램을 패킹 하므로 관리와 배포에 대한 비용이 감소되고 개발 생산성을 높일 수 있다.
이러한 추세에 따라서 아마존의 ECS, 구글의 Kubernetes Engine, 마이크로소프트의 Azure Kubernetes Service와 같이 클라우드 컴퓨팅 서비스 업체에서 컨테이너 클라우드 제품을 선보였다.
리눅스에서 라이브러리 프리로딩(preloading) 기법을 통해 응용 프로그램이 라이브러리를 로딩하는 시점에서 기존의 라이브러리 대신 이를 래핑(wrapping)한 새로운 라이브러리를 로딩 할 수 있다. 이를 통해서 응용 프로그램의 수정없이 추가적인 기능을 제공할 수 있다.
도커에서 이미지를 생성하거나 컨테이너를 실행할 때 라이브러리를 프리로딩 할 수 있다. 실제로 리눅스 환경에서 라이브러리 프리로딩 기법을 사용하여 GPGPU(General-Purpose computing on Graphics Processing Units) 자원을 관리하기 위한 연구와 컨테이너 환경에서 라이브러리 프리로딩 기법을 적용하여 GPU 자원 관리를 위한 연구가 진행되었다.
사용자는 컨테이너 실행 시 이미지에서 제공하는 라이브러리가 아닌 사용자 임의의 라이브러리로 덮어써서 실행할 수 있다. 이와 같이 관리자가 허용하지 않는 라이브러리를 사용한다면, 의도하지 않은 문제가 야기될 수 있다. 하지만, 도커를 대상으로 실행중인 컨테이너가 사용하고 있는 라이브러리 검증에 대한 사례는 아직까지 없다.
실시예들은 컨테이너를 관리하는 기술을 제공할 수 있다.
일 실시예에 따른 컨테이너 관리 방법은, 실행 중인 컨테이너의 목록을 수신하는 단계와, 상기 목록에 기초하여 상기 컨테이너의 식별자(identification)를 추출하는 단계와, 상기 식별자에 기초하여 상기 컨테이너의 설정 값을 추출하는 단계와, 상기 설정 값에 기초하여 상기 컨테이너 내의 라이브러리를 검증하는 단계를 포함한다.
상기 식별자를 추출하는 단계는, 상기 목록을 파싱(parsing)하여 상기 식별자를 추출하는 단계를 포함할 수 있다.
상기 설정 값을 추출하는 단계는, 상기 식별자에 기초하여 상기 컨테이너의 Env 필드 상의 환경 변수를 추출하는 단계를 포함할 수 있다.
상기 검증하는 단계는, 상기 설정 값에 기초하여 상기 컨테이너로부터 상기 라이브러리를 추출하는 단계와, 상기 라이브러리의 체크섬(checksum)을 계산하는 단계와, 상기 체크섬에 기초하여 상기 라이브러리를 검증하는 단계를 포함할 수 있다.
상기 라이브러리를 추출하는 단계는, 상기 컨테이너의 실행 도중에 삽입된 라이브러리가 있는지 확인하여 추출하는 단계를 더 포함할 수 있다.
상기 체크섬에 기초하여 상기 라이브러리를 검증하는 단계는, 상기 체크섬과 관리자에 의해 허용된 체크섬을 비교하는 단계와, 상기 체크섬과 상기 관리자에 의해 허용된 체크섬이 상이할 경우 상기 라이브러리를 잘못된 라이브러리로 판단하는 단계를 포함할 수 있다.
상기 컨테이너 관리 방법은, 상기 라이브러리의 검증 결과에 기초하여 상기 컨테이너를 삭제하는 단계를 더 포함할 수 있다.
일 실시예에 따른 컨테이너 관리 장치는, 실행 중인 컨테이너의 목록을 수신하는 수신기와, 상기 목록에 기초하여 상기 컨테이너의 식별자(identification)를 추출하고, 상기 식별자에 기초하여 상기 컨테이너의 설정 값을 추출하고, 상기 설정 값에 기초하여 상기 컨테이너 내의 라이브러리를 검증하는 프로세서를 포함한다.
상기 프로세서는, 상기 목록을 파싱(parsing)하여 상기 식별자를 추출할 수 있다.
상기 프로세서는, 상기 식별자에 기초하여 상기 컨테이너의 Env 필드 상의 환경 변수를 추출할 수 있다.
상기 프로세서는, 상기 설정 값에 기초하여 상기 컨테이너로부터 상기 라이브러리를 추출하고, 상기 라이브러리의 체크섬(checksum)을 계산하고, 상기 체크섬에 기초하여 상기 라이브러리를 검증할 수 있다.
상기 프로세서는, 상기 컨테이너의 실행 도중에 삽입된 라이브러리가 있는지 확인하여 추출할 수 있다.
상기 프로세서는, 상기 체크섬과 관리자에 의해 허용된 체크섬을 비교하고, 상기 체크섬과 상기 관리자에 의해 허용된 체크섬이 상이할 경우 상기 라이브러리를 잘못된 라이브러리로 판단할 수 있다.
상기 프로세서는, 상기 라이브러리의 검증 결과에 기초하여 상기 컨테이너를 삭제할 수 있다.
도 1은 일 실시예에 따른 컨테이너 관리 장치의 개략적인 블록도를 나타낸다.
도 2는 도 1에 도시된 컨테이너 관리 장치의 동작의 예를 나타낸다.
도 3은 도 1에 도시된 컨테이너 관리 장치의 검증 결과의 예를 나타낸다.
도 4는 도 1에 도시된 컨테이너 관리 장치의 동작의 순서도를 나타낸다.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 그러나, 실시예들에는 다양한 변경이 가해질 수 있어서 특허출원의 권리 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 실시예들에 대한 모든 변경, 균등물 내지 대체물이 권리 범위에 포함되는 것으로 이해되어야 한다.
실시예에서 사용한 용어는 단지 설명을 목적으로 사용된 것으로, 한정하려는 의도로 해석되어서는 안된다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
제1 또는 제2등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 구성요소들은 용어들에 의해서 한정되어서는 안 된다. 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만, 예를 들어 실시예의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
본 명세서에서의 모듈(module)은 본 명세서에서 설명되는 각 명칭에 따른 기능과 동작을 수행할 수 있는 하드웨어를 의미할 수도 있고, 특정 기능과 동작을 수행할 수 있는 컴퓨터 프로그램 코드를 의미할 수도 있고, 또는 특정 기능과 동작을 수행시킬 수 있는 컴퓨터 프로그램 코드가 탑재된 전자적 기록 매체, 예를 들어 프로세서 또는 마이크로 프로세서를 의미할 수 있다.
다시 말해, 모듈이란 본 발명의 기술적 사상을 수행하기 위한 하드웨어 및/또는 상기 하드웨어를 구동하기 위한 소프트웨어의 기능적 및/또는 구조적 결합을 의미할 수 있다.
이하에서, 도 1 및 도 2를 참조하여 컨테이너 관리 장치(10)의 동작을 설명한다.
도 1은 일 실시예에 따른 컨테이너 관리 장치의 개략적인 블록도를 나타내고, 도 2는 도 1에 도시된 컨테이너 관리 장치의 동작의 예를 나타낸다.
도 1 및 도 2를 참조하면, 컨테이너(container) 관리 장치(10)는 컨테이너(250-1, 250-2 및 250-3, 이하 총괄하여 250이라 함)를 관리할 수 있다. 컨테이너 관리 장치(10)는 도커(docker) 환경을 이용하여 컨테이너(250)를 관리할 수 있다. 컨테이너(250)는 운영 체제 수준의 가상화에서 운영 체제 커널이 갖춰진 가상 머신(virtual machine)을 의미할 수 있다.
도커는 리눅스(270)의 응용 프로그램들을 소프트웨어 컨테이너(250) 안에 배치시키는 일을 자동화하는 오픈 소스 프로젝트를 의미할 수 있다. 도커는 컨테이너 기반의 경량형 가상화 플랫폼을 의미할 수 있다. 도커는 하이퍼바이저를 사용하지 않고 컨테이너 개념을 사용할 수 있다.
호스트 운영체제에는 도커 엔진(Docker Engine)을 실행하고, 다수의 컨테이너(250)를 구축하여 서로 다른 응용 프로그램을 구동하는 방식으로 가상화 환경을 제공할 수 있다. 또한, 도커 엔진은 별도의 도커 엔진 API(docker engine application programming interface, 230)를 제공하여 외부에서 컨테이너를 관리할 수 있도록 도와준다. 도커는 이미지를 지원하여 컨테이너(250) 실행을 위한 파일과 설정을 담을 수 있으므로 관리와 배포를 쉽게 할 수 있도록 도울 수 있다.
리눅스(270) 환경에서는 응용 프로그램 실행 시 동적 라이브러리를 로드 하는 시점에 새로운 라이브러리를 삽입하여, 기존 라이브러리에서 제공하는 함수를 래핑 (wrapping)할 수있는 라이브러리 프리로딩(preloading) 기법을 제공할 수 있다. 라이브러리 프리로딩 기법을 통해서 기존 응용 프로그램을 수정하지 않고 추가적인 기능을 제공할 수 있다.
리눅스(270) 환경에서는 라이브러리 프리로딩 기법을 위하여LD_PRELOAD 환경 변수를 제공할 수 있다. 응용 프로그램을 실행하기 이전에 LD_PRELOAD 환경 변수에 라이브러리 경로를 입력하면, 해당 응용 프로그램은 기존 라이브러리에서 제공하는 함수가 아닌 새로운 라이브러리에서 래핑한 함수를 사용할 수 있다.
또한, 도커에서 컨테이너(250)를 실행하거나 도커 이미지를 생성할 때 컨테이너 관리 장치(10)는 라이브러리 프리로딩을 수행하도록 설정할 수 있다. 컨테이너 관리 장치(10)는 리눅스(270) 환경에서 라이브러리 프리로딩 기법을 사용하여 다중 사용자 환경에서 GPGPU(General-Purpose computing on Graphics Processing Units) 자원을 관리하고, 도커의 컨테이너(250) 환경에서 라이브러리 프리로딩 기법을 적용하여 GPU 자원을 관리할 수 있다.
컨테이너 관리 장치(250)는 기존에 제공하고 있는 라이브러리를 기반으로 함수를 래핑하여 새로운 기능을 제공할 수 있다. 이 때, 사용자가 임의로 다른 라이브러리를 사용하여 실행하게 된다면, 관리자가 의도하지 않은 결과가 발생할 수 있다.
이를 위하여 컨테이너 관리 장치(10)는 도커 이미지를 검증할 수 있다. 컨테이너 관리 장치(10)는 온라인 상에서 공유되고 있는 이미지를 다운로드 받아서 분석할 수 있다. 컨테이너 관리 장치(10)는 도커 이미지 분석을 자동화할 수 있다.
컨테이너 관리 장치(10)는 도커에서 실행중인 컨테이너 내의 라이브러리 검증을 수행할 수 있다. 구체적으로 컨테이너 관리 장치(10)는 도커 엔진API(230)를 사용하여 실행중인 컨테이너(250) 내의 라이브러리를 검증하여 시스템 관리자가 허용하는 라이브러리를 사용할 수 있도록 하는 시스템을 제공할 수 있다.
컨테이너(250)는 일종의 소프트웨어를 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감쌀 수 있다. 컨테이너(250)는 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 모든 것을 포함할 수 있다.
컨테이너 관리 장치(10)는 컨테이너(250)에서 실행되는 라이브러리를 검증할 수 있고, 검증 결과에 기초하여 컨테이너(250)를 관리할 수 있다. 예를 들어, 컨테이너 관리 장치(10)는 리눅스(270) 환경에서의 도커를 위한 컨테이너(250) 내 라이브러리를 검증할 수 있다.
컨테이너 관리 장치(10)는 시스템 관리자가 허용하는 라이브러리와 컨테이너(250)에서 사용하는 라이브러리를 비교하여 잘못된 라이브러리를 사용하는 컨테이너(250)를 제거할 수 있다.
컨테이너 관리 장치(10)는 수신기(100), 프로세서를 포함한다. 컨테이너 관리 장치(10)는 메모리(300)를 포함할 수 있다.
수신기(100)는 실행 중인 컨테이너(250)의 목록(list)을 수신할 수 있다. 수신기(100)는 수신한 실행 중인 컨테이너(250)의 목록을 프로세서(200)로 출력할 수 있다.
프로세서(200)는 수신한 목록에 기초하여 컨테이너(250)의 식별자(identifier 또는 identification)를 추출할 수 있다. 프로세서(200)는 수신한 목록을 파싱(parsing)하여 식별자를 추출할 수 있다.
프로세서(200)는 식별자에 기초하여 컨테이너(250)의 설정 값을 추출할 수 있다. 예를 들어, 프로세서(200)는 식별자에 기초하여 컨테이너의 Env 필드 상의 환경 변수를 추출할 수 있다.
프로세서(200)는 추출한 설정 값에 기초하여 상기 컨테이너(250) 내의 라이브러리를 검증할 수 있다. 프로세서(200)는 설정 값에 기초하여 상기 컨테이너(250)로부터 라이브러리를 추출할 수 있다. 프로세서(200)는 컨테이너(250)의 실행 도중에 삽입된 라이브러리가 있는지 확인하여 추출할 수 있다. 프로세서(200)는 삽입된 라이브러리가 있는지 주기적으로 확인할 수 있다.
프로세서(200)는 추출한 라이브러리의 체크섬(checksum)을 계산하고, 계산한 체크섬에 기초하여 라이브러리를 검증할 수 있다. 구체적으로, 프로세서(200)는 계산한 체크섬과 관리자에 의해 허용된 체크섬을 비교하고, 계산한 체크섬과 상기 관리자에 의해 허용된 체크섬이 상이할 경우 상기 라이브러리를 잘못된 라이브러리로 판단할 수 있다.
프로세서(200)는 라이브러리의 검증 결과에 기초하여 컨테이너(250)를 삭제할 수 있다. 예를 들어, 프로세서(200)는 검증 결과 컨테이너(250)가 잘못된 라이브러리를 실행하고 있다고 판단될 경우에 컨테이너(250)를 삭제할 수 있다.
도 2를 참조하면, 컨테이너 관리 장치(10)는 리눅스(270) 환경에서 동작하는 도커를 대상으로하는 데몬(Daemon, 210) 프로그램을 이용하여 컨테이너를 관리할 수 있다. 프로세서(200)는 데몬(210)을 통해 도커 엔진 API(230)에서 제공하는 프로토콜을 활용하여 실행중인 컨테이너를 관할 수 있다.
각 컨테이너(250-1, 250-2 및 250-3 중 하나)는 리눅스(270)의 프리로딩 기법을 사용하여 응용 프로그램에서 사용하는 라이브러리의 기능을 래핑 할 수 있다. 데몬(210)은 각 컨테이너(250-1, 250-2 및 250-3 중 하나) 별로 프리로딩 된 라이브러리를 찾아내고, 시스템 관리자가 허용하는 라이브러리의 체크섬을 비교하여 라이브러리 검증을 수행할 수 있다. 데몬(210)은 주기적으로 컨테이너(250)를 확인하므로 실행 도중에 삽입된 라이브러리를 검증할 수 있다.
데몬(210)은 도커 엔진 API(230)와 SHA256(Secure Hash Algorithm 256) 체크섬을 활용하여 컨테이너(250) 내의 라이브러리 검증을 수행할 수 있다. 도커 엔진 API(230)는 HTTP(HyperText Transfer Protocol)를 기반으로 컨테이너(250)를 관리하기 위한 여러가지의 기능을 제공할 수 있다. 도커 엔진 API(230) 목록은 표 1의 내용을 포함할 수 있다.
엔드포인트(endpoints) 설명(description)
/containers/json List containers
/containers/<id>/json Inspect a container
/containers/<id>/kill Kill a container
/containers/<id>/archive Get an archive of a filesystem resource in a container
데몬(210)은 표 1의 도커 엔진 API(230)를 사용할 수 있다. 도커 엔진 API(230)는 요청에 대한 결과 값을 JSON(JavaScript Object Notation) 형식으로 반환할 수 있다. 이에 따라, JSON 형식의 결과 값은 파서(parser)를 사용하여 처리될 수 있다. 예외적으로 컨테이너(250) 내 파일 추출 API는 JSON 형식이 아닌 바이너리 데이터를 반환할 수 있다.
프로세서(200)는 데몬(210)을 통해 도커 엔진 API(230)를 사용하여 컨테이너(250) 내의 라이브러리를 검증할 수 있다. 프로세서(200)는 시스템에서 실행중인 컨테이너(250) 목록을 불러와서 각 컨테이너(250-1, 250-2 및 250-3 중 하나)의 아이디를 추출할 수 있다.
프로세서(200)는 각 컨테이너(250-1, 250-2 및 250-3 중 하나)의 아이디를 가지고 컨테이너 실행 시 설정되는 값을 불러올 수 있다. 프로세서(200)는 설정 값 중에서 Env 필드에 존재하는 환경 변수를 추출할 수 있다. 예를 들어, 설정 값은 라이브러리 경로를 포함할 수 있다.
리눅스(270)에서는 LD_PRELOAD 환경 변수에 라이브러리 경로를 입력하여 프리로딩 기법을 사용하므로, LD_PRELOAD환경 변수에 설정된 값을 추출할 수 있다.
라이브러리의 경로가 존재한다면, 프로세서(200)는 SHA256 체크섬 계산을 진행하기 위하여 컨테이너(250) 내에서 라이브러리 파일을 추출하고 SHA256 체크섬을 계산할 수 있다. 그 후, 프로세서(200)는 관리자가 허용하는 라이브러리에 대한 SHA256 체크섬 결과와 비교할 수 있다.
체크섬 비교 결과가 상이하면 컨테이너는 잘못된 라이브러리를 사용하고 있으므로 프로세서(200)는 해당하는 컨테이너를 시스템 상에서 제거할 수 있다.
도 3은 도 1에 도시된 컨테이너 관리 장치의 검증 결과의 예를 나타낸다.
도 3을 참조하면, 컨테이너 관리 장치(10)의 동작을 확인하기 위해 실험 환경을 구성할 수 있다. 프로세서(200)는 복수의 컨테이너를 실행할 수 있다. 예를 들어, 컨테이너(250)는 총 3개의 컨테이너를 실행할 수 있다.
이 때, 실험을 위해 두 개의 컨테이너(예를 들어, 250-1 및 250-2)는 시스템 관리자가 허용하고 있는 라이브러리인 valid.so 파일을 프리로딩할 수 있다. 다른 하나의 컨테이너(250-3)는 시스템 관리자가 허용하고 있지 않은 라이브러리인 invalid.so 파일을 프리로딩할 수 있다.
도 3의 예시는, 컨테이너들(250-1, 250-2 및 250-3)이 실행하는 라이브러리를 검증한 결과를 나타낼 수 있다. 동작 결과는 디버깅 모드로 실행한 로그 출력을 통해 확인될 수 있다.
도 3의 예시에서, 컨테이너(250-1)과 컨테이너(250-2)는 시스템 관리자가 제공하는 라이브러리를 프리로딩하여 응용 프로그램이 실행하고 있는 것을 데몬(210)이 확인하여, 컨테이너가 계속 실행되도록 허용된 것을 확인할 수 있다. 그러나, 컨테이너(250-3)는 시스템 관리자가 제공하는 라이브러리를 사용하고 있지 않음이 확인되어 실행중인 컨테이너(250-3)이 제거되는 것을 확인할 수 있다.
도 4는 도 1에 도시된 컨테이너 관리 장치의 동작의 순서도를 나타낸다.
도 4를 참조하면, 컨테이너 관리 장치(10)는 실행 중인 컨테이너(250)의 목록을 수신할 수 있다(410). 컨테이너의 목록은 JSON 포맷으로 수신될 수 있다. 컨테이너 관리 장치(10)는 수신한 목록에 기초하여 컨테이너(250)의 식별자를 추출할 수 있다(430). 식별자는 수신한 목록을 파싱하여 추출될 수 있다.
컨테이너 관리 장치(10)는 추출한 식별자에 기초하여 컨테이너(250)의 설정 값을 추출할 수 있다(450). 컨테이너의 설정 값은 Env 필드의 환경 변수를 포함할 수 있다.
컨테이너 관리 장치(10)는 추출한 설정 값에 기초하여 컨테이너(250) 내의 라이브러리를 검증할 수 있다(470). 구체적으로, 컨테이너 관리 장치(10)는 추출한 라이브러리의 체크섬(checksum)을 계산하고, 계산한 체크섬에 기초하여 라이브러리를 검증할 수 있다.
컨테이너 관리 장치(10)는 계산한 체크섬과 관리자에 의해 허용된 체크섬을 비교하고, 계산한 체크섬과 상기 관리자에 의해 허용된 체크섬이 상이할 경우 상기 라이브러리를 잘못된 라이브러리로 판단할 수 있다.
컨테이너 관리 장치(10)는 라이브러리의 검증 결과에 기초하여 컨테이너(250)를 삭제할 수 있다. 예를 들어, 컨테이너 관리 장치(10)는 검증 결과 컨테이너(250)가 잘못된 라이브러리를 실행하고 있다고 판단될 경우에 컨테이너(250)를 삭제할 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.

Claims (14)

  1. 컨테이너 관리 장치가 실행 중인 컨테이너의 목록을 수신하는 단계;
    컨테이너 관리 장치가 상기 목록에 기초하여 상기 컨테이너의 식별자(identification)를 추출하는 단계;
    컨테이너 관리 장치가 상기 식별자에 기초하여 컨테이너의 실행시 설정되는 상기 컨테이너의 설정 값을 추출하는 단계; 및
    컨테이너 관리 장치가 상기 설정 값에 기초하여 상기 컨테이너 내의 라이브러리를 검증하는 단계
    를 포함하고,
    상기 검증하는 단계는,
    상기 설정 값에 기초하여 상기 컨테이너로부터 상기 라이브러리를 추출하는 단계;
    상기 라이브러리의 체크섬(checksum)을 계산하는 단계; 및
    상기 체크섬에 기초하여 상기 라이브러리를 검증하는 단계
    를 포함하는 컨테이너 관리 방법.
  2. 제1항에 있어서,
    상기 식별자를 추출하는 단계는,
    상기 목록을 파싱(parsing)하여 상기 식별자를 추출하는 단계
    를 포함하는 컨테이너 관리 방법.
  3. 제1항에 있어서,
    상기 설정 값을 추출하는 단계는,
    상기 식별자에 기초하여 상기 컨테이너의 Environment 필드 상의 컨테이너의 환경 변수를 추출하는 단계
    를 포함하는 컨테이너 관리 방법.
  4. 삭제
  5. 제1항에 있어서,
    상기 라이브러리를 추출하는 단계는,
    컨테이너 관리 장치가 상기 컨테이너의 실행 도중에 삽입된 라이브러리가 있는지 확인하여 추출하는 단계
    를 더 포함하는 컨테이너 관리 방법.
  6. 제1항에 있어서,
    상기 체크섬에 기초하여 상기 라이브러리를 검증하는 단계는,
    상기 체크섬과 관리자에 의해 허용된 체크섬을 비교하는 단계; 및
    상기 체크섬과 상기 관리자에 의해 허용된 체크섬이 상이할 경우 상기 라이브러리를 잘못된 라이브러리로 판단하는 단계
    를 포함하는 컨테이너 관리 방법.
  7. 제1항에 있어서,
    컨테이너 관리 장치가 상기 라이브러리의 검증 결과에 기초하여 상기 컨테이너를 삭제하는 단계
    를 더 포함하는 컨테이너 관리 방법.
  8. 실행 중인 컨테이너의 목록을 수신하는 수신기; 및
    상기 목록에 기초하여 상기 컨테이너의 식별자(identification)를 추출하고, 상기 식별자에 기초하여 컨테이너의 실행시 설정되는 상기 컨테이너의 설정 값을 추출하고, 상기 설정 값에 기초하여 상기 컨테이너 내의 라이브러리를 검증하는 프로세서
    를 포함하고,
    상기 프로세서는,
    상기 설정 값에 기초하여 상기 컨테이너로부터 상기 라이브러리를 추출하고, 상기 라이브러리의 체크섬(checksum)을 계산하고, 상기 체크섬에 기초하여 상기 라이브러리를 검증하는
    를 포함하는 컨테이너 관리 장치.
  9. 제8항에 있어서,
    상기 프로세서는,
    상기 목록을 파싱(parsing)하여 상기 식별자를 추출하는
    컨테이너 관리 장치.
  10. 제8항에 있어서,
    상기 프로세서는,
    상기 식별자에 기초하여 상기 컨테이너의 Environment 필드 상의 컨테이너의 환경 변수를 추출하는
    컨테이너 관리 장치.
  11. 삭제
  12. 제8항에 있어서,
    상기 프로세서는,
    상기 컨테이너의 실행 도중에 삽입된 라이브러리가 있는지 확인하여 추출하는
    컨테이너 관리 장치.
  13. 제8항에 있어서,
    상기 프로세서는,
    상기 체크섬과 관리자에 의해 허용된 체크섬을 비교하고, 상기 체크섬과 상기 관리자에 의해 허용된 체크섬이 상이할 경우 상기 라이브러리를 잘못된 라이브러리로 판단하는
    컨테이너 관리 장치.
  14. 제8항에 있어서,
    상기 프로세서는,
    상기 라이브러리의 검증 결과에 기초하여 상기 컨테이너를 삭제하는
    컨테이너 관리 장치.
KR1020180152259A 2018-11-30 2018-11-30 컨테이너 관리 방법 및 장치 KR101992066B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180152259A KR101992066B1 (ko) 2018-11-30 2018-11-30 컨테이너 관리 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180152259A KR101992066B1 (ko) 2018-11-30 2018-11-30 컨테이너 관리 방법 및 장치

Publications (1)

Publication Number Publication Date
KR101992066B1 true KR101992066B1 (ko) 2019-06-21

Family

ID=67056413

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180152259A KR101992066B1 (ko) 2018-11-30 2018-11-30 컨테이너 관리 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101992066B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102320324B1 (ko) * 2020-11-11 2021-11-03 한국전자통신연구원 쿠버네티스 환경에서의 이종 하드웨어 가속기 활용 방법 및 이를 이용한 장치
KR102473340B1 (ko) * 2022-07-26 2022-12-05 굿모닝아이텍(주) 컨테이너 관리 포털 시스템

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170022028A (ko) * 2015-08-19 2017-03-02 삼성에스디에스 주식회사 컨테이너 이미지 보안 검사 방법 및 그 장치
KR20170085072A (ko) * 2014-11-11 2017-07-21 아마존 테크놀로지스, 인크. 컨테이너를 관리 및 스케줄링하기 위한 시스템
KR20170108650A (ko) * 2016-03-18 2017-09-27 주식회사 엔오디비즈웨어 자기 보호를 이용하여 애플리케이션을 보호하는 방법
US9823915B1 (en) * 2015-08-06 2017-11-21 Mesosphere, Inc. Software container format

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170085072A (ko) * 2014-11-11 2017-07-21 아마존 테크놀로지스, 인크. 컨테이너를 관리 및 스케줄링하기 위한 시스템
US9823915B1 (en) * 2015-08-06 2017-11-21 Mesosphere, Inc. Software container format
KR20170022028A (ko) * 2015-08-19 2017-03-02 삼성에스디에스 주식회사 컨테이너 이미지 보안 검사 방법 및 그 장치
KR20170108650A (ko) * 2016-03-18 2017-09-27 주식회사 엔오디비즈웨어 자기 보호를 이용하여 애플리케이션을 보호하는 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
최상훈 외 2명. ‘메모리 트랩기법을 활용한 컨테이너 취약점 침입 탐지 프레임워크’. 한국차세대컴퓨팅학회 논문지, Vol.13, No.3, 2017.06., pp.26-33.* *
탁병철. ‘컨테이너 이미지의 보안 취약성 조사 연구’. 한국차세대컴퓨팅학회 논문지, Vol.14, No.3, 2018.06., pp.7-15.* *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102320324B1 (ko) * 2020-11-11 2021-11-03 한국전자통신연구원 쿠버네티스 환경에서의 이종 하드웨어 가속기 활용 방법 및 이를 이용한 장치
KR102473340B1 (ko) * 2022-07-26 2022-12-05 굿모닝아이텍(주) 컨테이너 관리 포털 시스템

Similar Documents

Publication Publication Date Title
US11385903B2 (en) Firmware update patch
KR101692817B1 (ko) 손상된 소프트웨어의 치료
US10078577B2 (en) Policy compliance of container images
KR102011726B1 (ko) 동적 로딩 파일 추출 방법 및 장치
KR101806090B1 (ko) 멀웨어 검출을 위한 애플리케이션들의 제네릭 언패킹
US20120239987A1 (en) System and Method of Manipulating Virtual Machine Recordings for High-Level Execution and Replay
CN107577937B (zh) 一种应用程序保护方法及系统
US20160142437A1 (en) Method and system for preventing injection-type attacks in a web based operating system
US10042744B2 (en) Adopting an existing automation script to a new framework
US11238151B2 (en) Method and apparatus for patching binary having vulnerability
US10318479B2 (en) Method and device for automatically identifying junk file
RU2697948C1 (ru) Система и способ выявления уязвимостей с использованием перехвата вызовов функций
KR101992066B1 (ko) 컨테이너 관리 방법 및 장치
US20190179736A1 (en) Systems and methods for software testing using a disposable code
CN105247533A (zh) 信息处理装置和确定方法
Kim et al. Prof-gen: Practical study on system call whitelist generation for container attack surface reduction
US20220382669A1 (en) Automated Validation of a REST Application Programming Interface
US20160092313A1 (en) Application Copy Counting Using Snapshot Backups For Licensing
US20140298002A1 (en) Method and device for identifying a disk boot sector virus, and storage medium
CN110807195B (zh) 一种智能合约的发布方法、发布平台装置及发布系统
JP2019003275A (ja) 確認システム、制御装置及び確認方法
CN114489698A (zh) 应用程序安装方法和装置
KR102144578B1 (ko) 동적으로 로드되는 모듈에 기초하여 어플리케이션을 실행하는 방법 및 장치
KR102128658B1 (ko) 핫 패칭 기술을 이용한 실행 파일 압축 방법 및 그 장치
Groß et al. Refuzz-structure aware fuzzing of the resilient file system (refs)

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant