기존 JDK를 지우지 않고 JDK 11로 빌드하기: SDKMAN이 PATH를 가로채는 원리
로컬은 Corretto 21인데 빌드 테스트는 JDK 11이 필요할 때, SDKMAN이 기존 JDK를 건드리지 않고 PATH 우선순위만 가로채 세션 단위로 버전을 바꾸는 원리와 기존 JDK를 처리하는 세 가지 선택
로컬은 Corretto 21인데 빌드 테스트는 JDK 11이 필요할 때, SDKMAN이 기존 JDK를 건드리지 않고 PATH 우선순위만 가로채 세션 단위로 버전을 바꾸는 원리와 기존 JDK를 처리하는 세 가지 선택
docker run을 감싼 쉘로는 실패 원인도 롤백도 다룰 수 없어 Dockerode와 스키마 분리로 테넌트 생성을 자동화한 과정
테넌트가 생길 때마다 손으로 하던 도메인 연결을 Nginx Proxy Manager API로 Proxy Host를 만들어 자동화했다.
Ubuntu 컨테이너의 Nginx에 ModSecurity를 붙이고, test가 든 요청만 403으로 막히는 것을 access log와 audit log로 확인했다.
Docker로 ModSecurity WAF를 띄우고 SQL Injection 요청이 403으로 막히는 과정을 로그의 Anomaly Score로 따라가 본 실습 기록
MyBatis 의 쓸모는 쿼리로도 되는 계산보다 Enum 메서드 반환값을 SQL로 끌어와 하드코딩을 없애는 데 있었다.
Nginx 컨테이너로 로그 전달 경로를 먼저 확인하고, 같은 볼륨 공유 방식으로 Nginx Proxy Manager에 ELK를 합쳐 ModSecurity 로그를 Kibana에 쌓았다.
커스텀을 위해 코드 수정 후 Nginx Proxy Manager를 정상적으로 실행할 수 있어야했는데, 그 어디에서도 이를 위한 가이드를 찾을 수 없었다. 결국 직접 소스코드 분석 후 다음과 같은 내용들을 확인했다.
개발용과 배포용 패키지가 섞이는 requirements.txt 대신 Poetry로 의존성과 가상 환경을 관리하는 명령어를 정리했다.
IntelliJ Maven Sync가 jar:unknown 의존성을 못 찾을 때 -U 강제 업데이트와 pom.xml 버전 명시로 푼 기록.