도커 네트워크에서 프로메테우스, 스프링 부트 및 스프링 시큐리티 마스터하기: 종합 가이드
Mastering Prometheus, Spring Boot, and Spring Security in Docker Networks: A Comprehensive Guide by codemasterkimc
이번 글을 통해 배워 갈 내용
- 프로메테우스 보안 설정(포트 기반/ kotlin)
먼저 스프링 부트 프로메테우스 기본 설정은 아래 블로그를 참조해 주시면 됩니다
https://codemasterkimc.tistory.com/691
먼저 Spring Security 내부에 코드를 수정합니다
Security Config 에
SecurityFilterChain에
몇 가지 추가하였습니다
먼저
requestMatcher에 커스텀 함수 forPort를 만들어서 사용하였습니다
.requestMatchers(forPort(managementServerPort)).permitAll()
아래와 같이 forPortAndPath도 만들었으며 다음과 같이 사용도 가능합니다
.requestMatchers(forPortAndPath(managementServerPort, "/actuator/prometheus")).permitAll()
managementServerPort 는 9999와 같이 쓰시고자 하는 포트 번호를 인트 값으로 넣어주면 됩니다
/**
* Constructs a RequestMatcher for requests matching a specific port and path.
* Author: codemasterkimc
*
* @param port Target port for matching.
* @param pathPattern Ant-style path pattern for matching.
* @return Combined RequestMatcher for port and path.
*/
private fun forPortAndPath(port: Int, pathPattern: String): RequestMatcher {
return AndRequestMatcher(forPort(port), AntPathRequestMatcher(pathPattern))
}
/**
* Creates a RequestMatcher for requests on a specific local port.
* Author: codemasterkimc
*
* @param port Target port for matching.
* @return RequestMatcher for the specified port.
*/
private fun forPort(port: Int): RequestMatcher {
println("port")
return RequestMatcher { request: HttpServletRequest -> port == request.localPort }
}
그다음 docker compose에 포트를 열어줍니다
컨테이너명칭:
... 다른 값들
expose:
- "9999"
prometheus.yml 파일도 수정해 줍니다
global:
...기타설정
scrape_configs:
...기타설정
static_configs:
- targets: ['컨테이너명:9999']
그다음 스프링 프로젝트를 빌드하고
도커 컴포즈 컨테이너들을 내렸다가 올리면
docker compose down 스프링컨테이너명칭
docker compose down 프로메테우스컨테이너명칭
docker compose up -d 프로메테우스컨테이너명칭
docker-compose up -d --build 스프링컨테이너명칭
보안 세팅이 적용되어서
외부에서는 접근이 안되고
도커 네트워크 내부에서만 접근이 되는 것을 확인할 수 있습니다
필요시 Nginx 세팅을 해서
외부에서 특정 IP만 접속가능하게 변경을 해줍니다
읽어주셔서 감사합니다
결과물 확인
참조 및 인용
https://stackoverflow.com/questions/50009932/environment-variables-in-prometheus-values
https://stackoverflow.com/questions/60272588/securing-spring-boot-2-actuator-prometheus-end-points
블로그 추천 포스트
https://codemasterkimc.tistory.com/50
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)