엔지니어링/CI-CD

[TmaxSoft] Jeus Webtob 도커 이미지 보안 개선

joon95 2023. 1. 5. 10:42
반응형

이전에 포스팅한 글은 솔루션의 기본 세팅에서 내가 바로 적용할 수 있는 부분까지 확인해보았다.

 

[TmaxSoft] Jeus Webtob 도커 이미지 연동하기

이번에 on-prem을 MSA 클라우드 전환 프로젝트 PoC를 준비하며 Tmaxsoft 사의 Jeus, Webtob를 컨테이너로 옮기는 작업이 필요했다. 필자는 다른 프로젝트를 진행해오면서 React, Vue, Angluer 등의 스크립트언

flowlog.tistory.com

 

더 나아가서 프로세스 실행 유저와 프로세스 기동 위치 등을 수정하려 Dockerfile을 손보았다.

그럼 함께 확인해보자.

 

Webtob Dockerfile

FROM tmaxsoftofficial/webtob:5.0.0.2.217.41.3.2

##########################################################
# test package
# RUN yum update
# RUN yum install -y vim net-tools curl
##########################################################

# User add
RUN groupadd -r -g 2000 tmax && useradd -r -d /home/webtob -u 1000 -g tmax webtob
#RUN mv /home/start.sh /home/webtob/start.sh
#RUN setcap 'cap_net_bind_service=+ep' /home/webtob/bin/htl

# resouces ADD
RUN mkdir /home/webtob/docs/styles
COPY ./health.html /home/webtob/docs

# configuration
COPY ./http.m /home/webtob/config/http.m

RUN chown -R webtob. /home/webtob
RUN chown webtob. /home/start.sh

USER webtob
WORKDIR /home/webtob

CMD ["/home/start.sh"]

유저그룹 tmax / 유저명 webtob 로 생성해주었고, 웹투비 실행폴더는 default /home/webtob 이기 때문에 권한만 변경해주었다. 그리고 유저를 지정한 뒤 작업 디렉토리를 정해준 뒤 실행 스크립트를 커맨드에 명시해주었다.

 

또, setcap 부분이 있는데 이는 일반 유저가 1024 이하의 포트를 점유하기 위해 권한(privileged)을 풀어주는 명령어이다. 필자는 그냥 http.m 에서 listner 포트를 8000으로 변경하고 마무리 하였다.

 

이제 이 베이스이미지로 pipeline을 태우면 되는데,

/home/webtob/docs 안에 정적리소스를 넣어주면 완성된다.

 

Jeus Dockerfile

FROM tmaxsoftofficial/jeus:8.1.105067.1-jdk8-openjdk-ubuntu

###########################################################################
# test package
# RUN apt update
# RUN apt install -y vim net-tools curl
###########################################################################

# User add
RUN groupadd -r -g 2000 tmax && useradd -r -d /home/jeus -u 1000 -g tmax jeus
RUN mkdir /home/jeus

# Applications Deploy Location - pipeline
# COPY ./web-0.0.1-SNAPSHOT.war /root/app

# Configurations
COPY ./domain.xml /root/jeus8/domains/domain1/config/domain.xml

# scripts
COPY ./start.sh /root/script/
COPY ./env-run.sh /root/script/

RUN mv /root/* /home/jeus
RUN chown -R jeus. /home/jeus

USER jeus
WORKDIR /home/jeus

CMD ["script/start.sh"]

 

마찬 가지로 유저그룹 tmax 유저명 jeus 로 생성해주었고, 제우스 실행 경로는 default /root 였기 때문에 /home/jeus 디렉토리를 생성하고 마지막에 폴더를 이동시켜주었다. 지난 포스팅과 비교해 script가 추가되었는데, domain.xml에서 추가로 값을 치환하는 작업이 필요해져서 별도의 env-run.sh 파일을 만들었고, 이를 기동시키기 위해 기존에 있던 start.sh에 1line을 추가해주었다. 마지막으로 컨테이너 실행 유저작업디렉토리를 정해준 뒤 실행스크립트를 커맨드에 넣었다.

 

이제 이 베이스이미지로 pipeline을 태우면 되는데,

app base 경로/home/jeus/app 이 되었으니 이 폴더에 실제 애플리케이션.war를 넣어주면 완성된다.

마치며

컨테이너 보안이라고 하기에 너무많은 부분이 있을 텐데, 많은 부분에 대해 모르는게 많다.

그냥 Redhat OCP 를 사용할 때의 기억을 참고하여 일반계정 및 작업디렉토리 등의 설정을 해보았다.

이제 enviroment 를 정의해서 컨테이너를 기동하면 된다.

반응형