103 lines
8.8 KiB
Markdown
103 lines
8.8 KiB
Markdown
---
|
|
title: 우아한형제들 — Security Actuator 안전하게 사용하기
|
|
source_type: company-tech-blog
|
|
url: https://techblog.woowahan.com/9232/
|
|
archive_url:
|
|
status: raw
|
|
confidence: medium
|
|
tags: [ca-security-baseline, actuator, management-endpoint, korean-tech-blog, woowahan]
|
|
related_branches: [feature-management-actuator-security-contract]
|
|
related_projects: [ca-skeleton-operational-contract]
|
|
created: 2026-05-22
|
|
last_reviewed: 2026-05-27
|
|
---
|
|
|
|
# 우아한형제들 — Security Actuator 안전하게 사용하기
|
|
|
|
> Layer: `raw/company-tech-blogs/` — 우아한형제들 기술블로그 (권현준, SOC팀 Application Security 담당, 2022-10-27). Spring Actuator 의 attack surface 분류 + 안전 설정 한국 도메인 사례. **공식 best practice 아님 — Spring 공식 docs 와 교차 확인 필수.**
|
|
|
|
## Parent / 활용 branch (필수)
|
|
|
|
| Branch | 이 자료가 정당화하는 결정 |
|
|
|---|---|
|
|
| [[raw/branch-notes/feature-management-actuator-security-contract]] | management port 분리 + prod allowlist (health/prometheus/info) + env/heapdump/threaddump/shutdown forbidden 의 한국 도메인 사례 근거 |
|
|
| [[raw/project-notes/ca-skeleton-operational-contract]] | Security Baseline (Actuator 관리면 노출 정책) Group G-B 비교 자료 |
|
|
|
|
## 컨텍스트 / 왜 저장했는지
|
|
|
|
ca-tmpl `feature-management-actuator-security-contract` 의 **management port 분리 + prod allowlist + env/heapdump/threaddump/shutdown forbidden** 결정에 대한 **한국 도메인 사례** 근거. Spring 공식 docs (default exposure) 를 보완하는 회사 단위 보안 운영 관점. 한국 기업이 실제 사고/공격 표면으로 어떤 endpoint 를 분류하는지 확인.
|
|
|
|
## 출처 / Source
|
|
|
|
- 원본 URL: https://techblog.woowahan.com/9232/
|
|
- 아카이브 URL: (미수집)
|
|
- 저자 / 조직: 권현준 (우아한형제들 SOC팀 Application Security 담당)
|
|
- 발행일: 2022-10-27
|
|
- 마지막 확인일: 2026-05-27
|
|
|
|
## 핵심 인용 / Key quotes (verbatim)
|
|
|
|
> [§기본 비활성화 권고] "기본 설정을 따르지 않겠다는 설정을 해주어야 합니다"
|
|
|
|
> [§환경변수 유출 위험] "서비스에서 사용 중인 환경 변수를 볼 수 있게 되기 때문에, 의도치 않게 설정해둔 중요 정보가 유출"
|
|
|
|
> [§Heapdump 위험] "현재 서비스가 점유 중인 heap메모리를 덤프 하여 그 데이터를 제공해 주는 기능"
|
|
|
|
> [§포트 분리] "서비스를 운영하는 포트와 다른 포트로 설정하여 사용할 것을 추천"
|
|
|
|
> [§기본 경로 변경] "알려진 기본 경로(/actuator/[endpoint]) 대신 다른 경로를 사용함으로써 외부 공격자의 스캐닝으로부터 보호"
|
|
|
|
> [§Shutdown endpoint] "절대로 enable하지 않도록 각별히 신경을 써주어야 합니다"
|
|
|
|
> [§JMX 비활성화] "사용하지 않음에도 enable 시켜두면 잠재적 위험이 될 수 있습니다"
|
|
|
|
> [§인증/인가 제어] "인증되었으며 권한이 있는 사용자만이 접근가능하도록 제어"
|
|
|
|
## Claims Extracted / 추출된 주장
|
|
|
|
| Claim ID | Claim (이 자료가 직접 말하는 것) | Evidence quote | Strength | Applies to | Does not prove |
|
|
|---|---|---|---|---|---|
|
|
| WW-ACT-C1 | Actuator 기본 설정 (전부 활성화) 을 따르지 말고 명시적으로 비활성화 후 필요한 endpoint 만 활성화해야 함 (allowlist 방식) | [§기본 비활성화 권고] "기본 설정을 따르지 않겠다는 설정을 해주어야 합니다" | `company-case-study` | Spring Boot Actuator 운영 정책 — 우아한형제들 SOC 권고 | "기본 설정이 보안 결함이다" 라는 Spring 공식 입장이 아님 — 회사 사례 |
|
|
| WW-ACT-C2 | `/actuator/env` 노출 시 환경변수 (DB credentials, API key 등 중요 정보) 유출 위험 | [§환경변수 유출 위험] "서비스에서 사용 중인 환경 변수를 볼 수 있게 되기 때문에, 의도치 않게 설정해둔 중요 정보가 유출" | `company-case-study` | env endpoint 활성화 환경 | `env` 가 항상 sanitize 없이 모든 값을 노출한다는 뜻 아님 (Spring 의 `sanitize` 옵션 별도 확인) |
|
|
| WW-ACT-C3 | `/actuator/heapdump` 는 heap 메모리 덤프 데이터 제공 → 메모리 내 평문 secret 노출 가능 | [§Heapdump 위험] "현재 서비스가 점유 중인 heap메모리를 덤프 하여 그 데이터를 제공해 주는 기능" | `company-case-study` | heapdump endpoint 활성화 환경 | heapdump 분석으로 모든 secret 이 항상 추출 가능하다는 뜻 아님 — 분석 기법 / GC 시점에 의존 |
|
|
| WW-ACT-C4 | 서비스 운영 포트와 다른 포트 (management port) 로 Actuator 분리 사용 권고 (공격자 스캔 1차 방어) | [§포트 분리] "서비스를 운영하는 포트와 다른 포트로 설정하여 사용할 것을 추천" | `company-case-study` | Spring Boot management.server.port 운영 결정 | 포트 분리만으로 완전 보호 안 됨 (인증 별도 필수) — 우아한형제들도 "1차" 라고 표현 |
|
|
| WW-ACT-C5 | `/actuator/[endpoint]` 알려진 기본 경로 대신 `management.endpoints.web.base-path` 변경하여 공격자 스캔 1차 방어 | [§기본 경로 변경] "알려진 기본 경로(/actuator/[endpoint]) 대신 다른 경로를 사용함으로써 외부 공격자의 스캐닝으로부터 보호" | `company-case-study` | base-path 변경 정책 | base-path 변경이 OWASP / Spring 공식 권고 라는 뜻 아님 — security through obscurity 일부 |
|
|
| WW-ACT-C6 | `/actuator/shutdown` 은 **절대로** enable 하지 말 것 | [§Shutdown endpoint] "절대로 enable하지 않도록 각별히 신경을 써주어야 합니다" | `company-case-study` | shutdown endpoint 운영 정책 | dev / staging 에서도 항상 금지인지 본 인용 범위 밖 (운영 prod 강조로 해석) |
|
|
| WW-ACT-C7 | 사용하지 않는 JMX 도 enable 시 잠재적 위험 | [§JMX 비활성화] "사용하지 않음에도 enable 시켜두면 잠재적 위험이 될 수 있습니다" | `company-case-study` | Spring Boot Actuator JMX 노출 | JMX 자체가 항상 위험하다는 일반 권고 아님 — "사용 안 하면 끄기" |
|
|
| WW-ACT-C8 | Actuator 접근은 인증·권한 있는 사용자만 가능하도록 제어 필요 | [§인증/인가 제어] "인증되었으며 권한이 있는 사용자만이 접근가능하도록 제어" | `company-case-study` | management endpoint 접근 통제 | 어떤 인증 메커니즘 (Basic / OAuth / mTLS) 이 권장되는지 본 인용에 없음 |
|
|
|
|
## Usage Boundaries / 적용 경계
|
|
|
|
- **이 자료가 직접 증명하는 것**:
|
|
- `WW-ACT-C1`~`C8`: 우아한형제들 SOC 팀의 Spring Actuator 운영 권고 (allowlist / env-heapdump-shutdown 위험 / 포트 분리 / base-path 변경 / JMX 비활성화 / 인증·인가)
|
|
- **이 자료가 증명하지 않는 것**:
|
|
- 위 권고가 Spring 공식 best practice 라는 주장 — 별도 Spring Boot Reference §Actuator 인용 필요
|
|
- 모든 Spring Boot 버전에서 동일 default 가 적용된다는 주장 — Spring docs 교차 확인 필요
|
|
- 한국 외 다른 국가 / 도메인 사례도 동일한지
|
|
- **내 프로젝트에 적용하려면 추가 확인이 필요한 것**:
|
|
- ca-tmpl 의 prod allowlist (health/prometheus/info) 가 Spring 공식 `management.endpoints.web.exposure.include` 권고와 정합한지
|
|
- `management.endpoints.web.base-path` 변경의 trade-off (CD pipeline / 모니터링 도구 설정 영향)
|
|
- 인증 메커니즘 결정 (Spring Security + Actuator role / mTLS)
|
|
|
|
## 메모 / Notes (내 프로젝트 해석)
|
|
|
|
> 본 섹션은 자료 직접 인용 아님. ca-tmpl 결정 컨텍스트 해석.
|
|
|
|
- ca-tmpl 결정과의 정합성 (가설):
|
|
- **management port 9001 분리** ← 우아한형제들 "다른 포트 사용" 권고와 정합 (`WW-ACT-C4`).
|
|
- **prod allowlist (health/prometheus/info)** ← "엔드포인트 화이트리스트 운영, 기본 비활성화 후 필요한 것만" 권고와 동일 방향 (`WW-ACT-C1`).
|
|
- **shutdown / heapdump / threaddump prod forbidden** ← 동일하게 강조됨 (`WW-ACT-C2`, `C3`, `C6`).
|
|
- **base-path 변경 권고** 는 ca-tmpl 에 현재 미반영 (선택적 보강 항목 후보, `WW-ACT-C5`).
|
|
- **취급 주의**: 회사 기술블로그 = 공식 best practice 아님 (CLAUDE.md §5). 패턴은 Spring 공식 docs (default exposure 정책) 와 교집합이지만 정의 자체는 공식 출처가 우선.
|
|
- 시사점: ca-tmpl baseline 결정은 Spring 공식 + 한국 보안 운영 사례 (우아한형제들) 의 교집합 — 임의 결정 아님 (추정 정합, 공식 docs 별도 인용으로 보강 필요).
|
|
|
|
## Related / 관련
|
|
|
|
- 같은 주제 다른 raw:
|
|
- [[raw/company-tech-blogs/security-toss-actuator-healthcheck]] (health endpoint 단일 focus 보완)
|
|
- 인용하는 branch:
|
|
- [[raw/branch-notes/feature-management-actuator-security-contract]]
|
|
- 인용하는 project:
|
|
- [[raw/project-notes/ca-skeleton-operational-contract]] (Group G-B)
|
|
- 인용한 wiki 요약: (미작성)
|