본문 바로가기
Develop/Spring˙Spring Boot

[Spring Boot] 액추에이터로 내부 들여다보기 - 2

by 독서왕뼝아리 2023. 2. 17.
다루는 내용
- 액추에이터 원격 셸에 접속하기
- 액추에이터 보안

 

원격 셸을 이용해 접속하기(DEPRECATED)

엔드포인트를 이용한 방법 말고도 원격 셸을 이용하면 작동 중인 애플리케이션의 내부를 알 수 있다. 스프링 부트는 CRaSH를 내장하고 있는데 이 셸은 어떤 자바 애플리케이션에서든 내장할 수 있다. 또 스프링 부트는 액추에이터의 엔드포인트와 거의 동일한 기능을 스프링 부트에 특화된 명령으로 제공하려고 CRaSH를 확장했다.

 

?

쩝... 대략 18년 이후부터 deprecated 되었나보다. 이런 방법이 있었다~

 

 

액추에이터 사용자화하기

  • 엔드포인트 ID 변경하기
management:
  endpoints:
    shutdown:
      id: kill
  • 엔드포인트 활성화/비활성화하기
management:
  endpoints:
    metrics:
      enabled: false
  • 사용자 정의 메트릭과 게이지 추가하기

등 다양하게 사용자정의하여 사용할 수 있다. 하지만 매트릭스 모니터링 툴인 Prometheus와 Grafana 오픈소스가 잘 되어있으므로 대안을 찾아보자! (https://brunch.co.kr/@springboot/734)

 

 

액추에이터 엔드포인트 보안

액추에이터 엔드포인트는 민감한 정보를 많이 포함하고 있다. 따라서 권한이 있는 관리자만 접근할 수 있도록 액추에이터 보안을 적용해야 한다. 다른 URL 경로처럼 스프링 시큐리티로 보안을 적용하면 된다. 

protected void configure(HttpSecurity http) throws Exception {
    http
      .authorizeRequests()
        .antMatchers("/").access("hasRole('READER')")
        .antMatchers("/mgmt/**").access("hasRole('ADMIN')") // 보안 적용
        .antMatchers("/**").permitAll()

     .and()

      .formLogin()
        .loginPage("/login")
        .failureUrl("/login?error=true");
}

위처럼 스프링 시큐리티 configuration에 접근 제한을 할 수 있다.