13.1 컨테이너 이미지 프로파일
221
13.1.2
실행 파일 프로파일
제품 검색 마이크로서비스에서는 제품 검색을 위해 하나 이상의 프로그램이 실행될 것이다. 편
의상 여기서는 이 마이크로서비스가 실행할 프로그램이
Go
언어로 된 소스 코드를 컴파일해
서 만들어 낸
productsearch
라는 이진 실행 파일 하나라고 가정한다. 적당한 추적·감시 도
구로 제품 검색 컨테이너들에서 실행 중인 실행 파일들을 조사해 보면
productsearch
만 나
타나야 한다. 만일 다른 어떤 실행 파일이 나타난다면 그것은 비정상이며, 공격의 증거일 수
있다.
서비스를 파이썬이나 루비
Ruby
같은 스크립트 언어로 작성한다고 해도, 실행을 허용할 것과
허용하지 말 것을 얼마든지 추론할 수 있다. 서비스가 셸 아웃
shell
out
을 이용해서 (즉, 자식 셸을
띄워서 ) 다른 명령을 실행해야 하는가? 그렇지 않은 경우, 만일 제품 검색 컨테이너에서 실행
중인 프로그램 목록에
bash
나
sh
,
zsh
같은 것이 보인다면 뭔가 문제가 있는 것이다.
이러한 추론은 컨테이너를 불변 객체로 취급할 때, 그리고 실무 시스템에서 컨테이너 안의
셸을 직접 열지 않는다고 가정할 때만 유효하다. 보안의 관점에서는, 공격자가 응용 프로그램
취약점을 통해서 역방향 셸을 여는 것과 관리자가 일종의 ‘유지보수’ 작업을 위해 셸을 여는 것
은 차이가 거의 없다. §
7
.
7
.
1
불변 컨테이너 (
p
.137
)에서 논의했듯이, 컨테이너 안에서 셸을
열어서 뭔가를 바꾸는 것은 바람직하지 ...