Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: Actuator 설정 값 변경 #555

Open
2 tasks done
Ho-Tea opened this issue Nov 14, 2024 · 2 comments
Open
2 tasks done

refactor: Actuator 설정 값 변경 #555

Ho-Tea opened this issue Nov 14, 2024 · 2 comments
Assignees
Labels
backend We are backend>< confirm need confirmation! refactor 리팩토링 (변수 및 메서드 네이밍 변경)
Milestone

Comments

@Ho-Tea
Copy link
Contributor

Ho-Tea commented Nov 14, 2024

🤮 As Is

리팩터링하고자 하는 파트와 이유를 구체적으로 설명해주세요.

현재 Actuator 설정 상에서 불필요한 endpoint가 활성화 되어있고, 적절하지 못한 설정값으로 구성되어 있습니다.
보안상의 이유로 기존에 설정해놓은 Actuator의 설정 값을 변경하고자 합니다.

management:
  server:
    port: 8080
  endpoints:
    web:
      exposure:
        include: info, health, metrics, env, beans, threaddump, loggers, prometheus
  endpoint:
    health:
      show-components: when_authorized # Spring Security를 사용하지 않으므로 사용되지 않음

🤩 To Be

리팩터링 방향을 구체적으로 공유해주세요.

management:
  server:
    port: 9292
  endpoints:
    web:
      base-path: /manage # 임시로 구성해놓은 uri
      exposure:
        include: info, health, prometheus
    jmx:
      exposure:
        exclude: "*"
  endpoint:
    health:
      show-components: never

server:
  tomcat:
    mbeanregistry:
      enabled: true

좁은 범위로 제약을 두어 구성할 예정

  • Actuator endpoint는 all disable 상태에서 필요한 것만 include하여 화이트리스트 형태로 운영해야 한다. (*를 이용하여 include 하지 않는다)
  • shutdown endpoint는 enable하지 않는다.
  • JMX형태로 Actuator 사용이 필요하지 않을 경우, 반드시 disable한다.
  • 필요한 경우가 아니라면 env 노출을 자제하자.
    • 환경변수로 중요 정보를 저장해 둔 경우 Spring Actuator의 env endpoint를 활성화 시 서비스에서 사용 중인 환경 변수를 볼 수 있게 되기 때문에, 의도치 않게 설정해둔 중요 정보가 유출될 가능성이 존재한다.
  • 필요한 경우가 아니라면 heapdump 노출을 자제하자.
    • Spring Actuator의 heapdump endpoint를 이용하여 웹 애플리케이션의 heap메모리를 덤프 하여, 실제 application.properties에 작성되어 사용되고 있는 Database의 정보를 확인할 수 있으므로.
  • Actuator는 서비스 운영에 사용되는 포트와 다른 포트를 사용한다.
  • Actuator Default 경로를 사용하지 않고, 경로를 변경하여 운영한다.
  • Actuator에 접근할 때에는, 인증되었으며 권한이 있는 사용자만이 접근가능하도록 제어한다. → Spring Security를 사용하지 않으므로 해당사항 없다고 판단.
  • 톰캣의 최대 쓰레드, 사용 쓰레드 수를 포함한 다양한 메트릭을 확인할 수 있어야 한다.

😇 이때까지 끝낼게요!

리팩터링 완료 예상 날짜를 작성해주세요. 신중하게 생각해요!

😵 참고 자료(선택)

우아한 기술 블로그

🙇‍♀️이슈 확인했어요:)

팀원에게 이슈 확인을 부탁해요!

@Ho-Tea Ho-Tea added backend We are backend>< refactor 리팩토링 (변수 및 메서드 네이밍 변경) confirm need confirmation! labels Nov 14, 2024
@Ho-Tea Ho-Tea added this to the sprint-7 milestone Nov 14, 2024
@Ho-Tea Ho-Tea self-assigned this Nov 14, 2024
@linirini
Copy link
Contributor

자세하게 내용을 공유해주셔서 감사해요👍

  • shutdown endpoint는 enable하지 않는다.
  • 필요한 경우가 아니라면 env 노출을 자제하자.
    환경변수로 중요 정보를 저장해 둔 경우 Spring Actuator의 env endpoint를 활성화 시 서비스에서 사용 중인 환경 변수를 볼 수 있게 되기 때문에, 의도치 않게 설정해둔 중요 정보가 유출될 가능성이 존재한다.
  • 필요한 경우가 아니라면 heapdump 노출을 자제하자.
    Spring Actuator의 heapdump endpoint를 이용하여 웹 애플리케이션의 heap메모리를 덤프 하여, 실제 application.properties에 작성되어 사용되고 있는 Database의 정보를 확인할 수 있으므로.

위와 관련된 설정은 리팩토링 방향 코드에서 보이지 않는데, default가 disable인 것이라고 이해하면 될까요?

@Ho-Tea
Copy link
Contributor Author

Ho-Tea commented Nov 18, 2024

맞습니다, shutdown, env, heapdump 모두 해당 코드에서 disable 된 상태입니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend We are backend>< confirm need confirmation! refactor 리팩토링 (변수 및 메서드 네이밍 변경)
Projects
Status: No status
Development

No branches or pull requests

2 participants