[Zero Trust Data] Day 3: 서비스 간 통신 보안 - mTLS와 워크로드 ID(SPIFFE/SPIRE)
[Zero Trust Data] Day 3: 서비스 간 통신 보안 - mTLS와 워크로드 ID(SPIFFE/SPIRE)
서론: 내부 서비스 호출도 신뢰하면 안 된다
데이터 플랫폼은 수많은 서비스가 서로 통신한다. ETL, 메타데이터, 카탈로그, 쿼리 게이트웨이 사이 호출에서 ID 검증이 약하면 내부 측면 이동(lateral movement)에 취약해진다.
mTLS와 워크로드 ID는 이 문제를 해결하는 핵심 조합이다.
1. mTLS의 역할
TLS가 서버만 인증한다면, mTLS는 클라이언트와 서버를 모두 인증한다.
효과:
- 통신 암호화
- 상호 신원 검증
- 중간자 공격 위험 감소
그러나 인증서 발급/회전 자동화가 없으면 운영 부담이 급격히 커진다.
2. SPIFFE/SPIRE의 가치
SPIFFE는 워크로드 ID 표준, SPIRE는 이를 발급/관리하는 구현체다.
예시 ID:
1
spiffe://data-platform/prod/service/query-gateway
이 ID를 기반으로 서비스 간 정책을 작성하면 IP 주소나 정적 시크릿에 의존하지 않아도 된다.
3. 적용 아키텍처
1
2
3
Workload -> SPIRE Agent -> SVID(cert) 발급
Service A <---mTLS---> Service B
Policy Engine: spiffe ID 기반 allow/deny
핵심은 “네트워크 위치” 대신 “검증된 워크로드 신원”을 정책 입력으로 쓰는 것이다.
4. 운영 실전 포인트
- 인증서 수명 짧게 + 자동 회전 필수
- 서비스 디스커버리와 ID 매핑 일관성 유지
- 장애 대비(Agent 다운, 인증서 갱신 실패) 런북 준비
- 통신 실패 로그를 신원 단위로 수집
5. 점진 도입 전략
- 민감 서비스 경로부터 mTLS 적용
- 비중요 트래픽은 모니터링 모드로 시작
- 정책 위반 트래픽을 관찰 후 차단 전환
- 전 경로 강제(enforce)로 확대
6. Day 3 체크리스트
- 서비스 간 호출 경로를 신뢰도 기준으로 분류했다.
- 워크로드 ID 네이밍 규칙을 표준화했다.
- 인증서 회전 실패 시 자동 복구 경로를 테스트했다.
- mTLS 실패/거부 이벤트를 보안 모니터링에 연결했다.
다음 글 예고
Day 4에서는 장기 고정 권한을 줄이기 위한 세션 격리와 JIT(Just-In-Time) 권한 부여 전략을 다룬다.
This post is licensed under CC BY 4.0 by the author.