[스프링] 스프링 클라우드 게이트웨이의 보안 취약점 관리
스프링 클라우드 게이트웨이는 마이크로서비스 아키텍처에서 API 라우팅 및 보안을 제공하는 데 사용됩니다. 그러나 여러 보안 취약점이 존재할 수 있습니다.
1. 인가되지 않은 엔드포인트 접근
게이트웨이에서 인가되지 않은 사용자가 보호된 엔드포인트에 접근하려는 시도를 방지해야 합니다.
@Bean
public SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity http) {
http.authorizeExchange()
.pathMatchers("/protected/**").authenticated()
.anyExchange().permitAll();
return http.build();
}
2. 보안 헤더 누락
게이트웨이에서 보낼 응답에 보안 헤더가 누락되면 보안 취약점이 될 수 있습니다.
@Bean
public SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity http) {
http.headers()
.contentSecurityPolicy("script-src 'self'");
return http.build();
}
3. 인가되지 않은 라우트
게이트웨이의 라우트가 인가되지 않은 사용자에게 공개되어 있으면 보안 문제가 될 수 있습니다.
spring:
cloud:
gateway:
routes:
- id: backend
uri: http://backend:8080
predicates:
- Path=/api/**
filters:
- RewritePath=/api/(?<segment>.*), /$\{segment}
이러한 취약점을 방지하기 위해선 올바른 권한 부여 및 보안 정책을 적용하는 것이 중요합니다.
참고문헌: