Spring Boot 시니어 보안 면접

Spring Boot 시니어 (7년+) 보안 10문항 조회수 17 · 2026-08-09 (일) 02:12:18
1 인증/인가
Hard

Q. JWT 기반 인증 시스템에서 Access Token과 Refresh Token을 함께 사용하는 구조를 설계할 때, 각 토큰의 저장 위치, 만료 시간, 갱신 전략을 어떻게 결정하시겠습니까? 보안과 사용자 경험 사이의 트레이드오프를 포함해서 설명해주세요.

토큰별 저장소(메모리, HttpOnly Cookie, LocalStorage)의 보안 특성과 XSS, CSRF 공격 시나리오를 고려해보세요.

A. 모범답안

Access Token은 짧은 만료시간(15-30분)으로 설정하고 메모리나 HttpOnly Cookie에 저장합니다. Refresh Token은 긴 만료시간(2주-1개월)으로 설정하고 반드시 HttpOnly, Secure, SameSite 속성이 적용된 Cookie에 저장하여 XSS 공격을 방어합니다. Refresh Token은 서버측 Redis 등에 화이트리스트로 관리하여 즉시 무효화가 가능하도록 합니다. Token 갱신은 Access Token 만료 5분 전부터 Silent Refresh 방식으로 자동 갱신하며, Refresh Token Rotation 기법을 적용해 재사용 공격을 방지합니다. 민감한 작업(결제, 정보변경)은 추가 인증을 요구하는 Step-up Authentication을 구현합니다.

핵심 포인트
  • • Access Token은 짧은 만료시간, Refresh Token은 긴 만료시간 설정
  • • HttpOnly Cookie 사용으로 XSS 공격 방어
  • • Refresh Token을 서버측에서 화이트리스트 관리
  • • Refresh Token Rotation으로 재사용 공격 방지
답변에 넣으면 좋은 키워드
JWT Refresh Token HttpOnly Cookie XSS CSRF Token Rotation Silent Refresh
실무에서는

대규모 사용자 서비스에서 세션 관리 없이 stateless한 인증 시스템을 구축할 때 필수적으로 고려해야 하는 설계 요소입니다.

Follow-up 질문

Refresh Token이 탈취되었을 때 이를 감지하고 대응하는 메커니즘을 어떻게 구현하시겠습니까?

2 웹 취약점
Hard

Q. Spring Boot 애플리케이션에서 SQL Injection을 방어하기 위한 다층 방어 전략을 설계해주세요. JPA, MyBatis를 각각 사용할 때의 주의사항과 데이터베이스 레벨, 네트워크 레벨에서의 추가 방어 방법도 포함해주세요.

Prepared Statement만으로는 불충분한 경우들과 입력 검증, 권한 분리, WAF 등 여러 레이어를 고려해보세요.

A. 모범답안

첫째, 애플리케이션 레벨에서 JPA는 JPQL 파라미터 바인딩을 사용하고 네이티브 쿼리 시 반드시 Prepared Statement를 적용합니다. MyBatis는 #{}을 사용하며 ${}는 테이블명 등 불가피한 경우에만 화이트리스트 검증 후 사용합니다. 둘째, 입력 검증 레이어에서 Bean Validation과 커스텀 Validator로 데이터 형식을 사전 검증하고 특수문자는 이스케이프 처리합니다. 셋째, 데이터베이스 레벨에서 애플리케이션 계정은 최소 권한 원칙을 적용하고 DDL 권한을 분리합니다. 넷째, 네트워크 레벨에서 WAF를 통해 SQL Injection 패턴을 탐지하고 차단합니다. 다섯째, 정기적인 보안 스캔과 코드 리뷰로 동적 쿼리 생성 부분을 집중 점검합니다.

핵심 포인트
  • • Prepared Statement와 파라미터 바인딩 필수 사용
  • • 입력 검증과 화이트리스트 방식의 검증
  • • 데이터베이스 계정 최소 권한 원칙 적용
  • • WAF와 보안 스캔을 통한 다층 방어
답변에 넣으면 좋은 키워드
SQL Injection Prepared Statement 파라미터 바인딩 JPQL MyBatis WAF 최소 권한 원칙
실무에서는

검색 기능, 동적 필터링, 정렬 기능 등 사용자 입력이 쿼리에 반영되는 모든 기능에서 필수적으로 적용해야 하는 보안 원칙입니다.

Follow-up 질문

Order By 절이나 Table 명처럼 Prepared Statement를 사용할 수 없는 동적 쿼리는 어떻게 안전하게 처리하시겠습니까?

3 인증/인가
Hard

Q. MSA 환경에서 여러 마이크로서비스 간 인증/인가를 구현할 때, OAuth 2.0과 API Gateway 패턴을 결합한 아키텍처를 설계해주세요. 서비스 간 통신의 보안과 성능을 모두 고려해야 합니다.

API Gateway에서의 인증 처리, 서비스 간 토큰 전파, 그리고 내부 서비스 간 인증 방식을 각각 고려해보세요.

A. 모범답안

API Gateway에서 클라이언트 인증을 처리하고 JWT를 검증한 후, 내부 서비스로는 변환된 토큰이나 사용자 컨텍스트를 전달합니다. Gateway는 OAuth 2.0 Authorization Server와 통신하여 토큰 검증을 수행하고, 검증 결과를 Redis에 캐싱하여 성능을 최적화합니다. 내부 서비스 간 통신은 mTLS(mutual TLS)로 암호화하고 Service Mesh(Istio 등)를 활용해 자동으로 인증서를 관리합니다. 각 마이크로서비스는 Spring Security의 Method Security로 세밀한 권한 검증을 수행하며, 권한 정보는 중앙화된 Policy Engine(OPA 등)에서 관리합니다. 서비스별 Circuit Breaker 패턴을 적용하여 인증 서비스 장애 시에도 시스템이 degraded mode로 동작하도록 설계합니다.

핵심 포인트
  • • API Gateway에서 중앙화된 인증 처리
  • • 토큰 검증 결과 캐싱으로 성능 최적화
  • • 내부 서비스 간 mTLS와 Service Mesh 활용
  • • 중앙화된 Policy Engine으로 권한 관리
답변에 넣으면 좋은 키워드
MSA OAuth 2.0 API Gateway mTLS Service Mesh JWT Policy Engine OPA
실무에서는

수십 개의 마이크로서비스로 구성된 대규모 시스템에서 일관된 보안 정책을 적용하면서도 서비스 간 낮은 레이턴시를 유지해야 할 때 사용됩니다.

Follow-up 질문

Authorization Server가 다운되었을 때도 서비스가 계속 동작할 수 있도록 하는 Fallback 전략은 무엇입니까?

4 암호화
Hard

Q. 개인정보(주민등록번호, 카드번호 등)를 데이터베이스에 저장할 때의 암호화 전략을 설계해주세요. 암호화 알고리즘 선택, 키 관리, 검색 기능 지원, 성능 최적화를 모두 고려해야 합니다.

컬럼 레벨 암호화, 애플리케이션 레벨 암호화의 장단점과 HSM, KMS 같은 키 관리 솔루션을 고려해보세요.

A. 모범답안

민감 정보는 AES-256-GCM 알고리즘으로 애플리케이션 레벨에서 암호화하며, 각 레코드마다 다른 IV(Initialization Vector)를 사용합니다. 암호화 키는 AWS KMS나 HashiCorp Vault 같은 외부 Key Management Service에서 관리하고, 애플리케이션은 DEK(Data Encryption Key)를 메모리에 캐싱하되 주기적으로 로테이션합니다. 검색이 필요한 필드는 HMAC 기반의 해시값을 별도 컬럼에 저장하여 인덱싱하거나, Format Preserving Encryption을 적용합니다. 성능 최적화를 위해 암/복호화가 필요한 컬럼만 선택적으로 처리하고, 배치 작업 시에는 비동기 처리를 적용합니다. 키 로테이션 전략으로 새로운 키로 점진적 재암호화를 수행하며, 감사 로그를 통해 모든 복호화 접근을 추적합니다.

핵심 포인트
  • • AES-256-GCM으로 애플리케이션 레벨 암호화
  • • 외부 KMS로 키 관리 및 주기적 로테이션
  • • 검색용 HMAC 해시나 FPE 적용
  • • 복호화 접근에 대한 감사 로그 유지
답변에 넣으면 좋은 키워드
AES-256-GCM KMS DEK IV 키 로테이션 HMAC Format Preserving Encryption HSM
실무에서는

금융, 의료, 전자상거래 등 개인정보보호법과 GDPR 준수가 필요한 모든 시스템에서 필수적으로 구현해야 하는 요구사항입니다.

Follow-up 질문

암호화된 데이터를 마이그레이션하거나 키를 로테이션할 때 무중단으로 처리하는 방법은 무엇입니까?

5 웹 취약점
Medium

Q. Spring Boot 애플리케이션에서 CSRF 공격을 방어하기 위한 전략을 설명해주세요. SPA(Single Page Application)와 전통적인 서버 렌더링 방식에서 각각 어떻게 다르게 적용해야 하는지 포함해주세요.

CSRF 토큰의 생성, 전달, 검증 과정과 Stateless한 REST API에서의 대안을 생각해보세요.

A. 모범답안

전통적인 서버 렌더링 방식에서는 Spring Security의 CSRF Protection을 활성화하고, 모든 폼에 CSRF 토큰을 hidden field로 포함시킵니다. 토큰은 세션에 저장되며 POST, PUT, DELETE 요청 시 자동으로 검증됩니다. SPA 환경에서는 CSRF 토큰을 Cookie(non-HttpOnly)에 저장하고 클라이언트가 이를 읽어 커스텀 헤더(X-XSRF-TOKEN)로 전송하는 Double Submit Cookie 패턴을 사용합니다. Stateless한 JWT 기반 API는 토큰을 HttpOnly Cookie가 아닌 Authorization 헤더로 전송하면 CSRF 공격에 안전하지만, SameSite Cookie 속성을 Strict나 Lax로 설정하는 추가 방어층을 적용합니다. 중요한 작업은 재인증이나 CAPTCHA를 요구하는 추가 검증을 구현합니다.

핵심 포인트
  • • 서버 렌더링에서는 세션 기반 CSRF 토큰 사용
  • • SPA에서는 Double Submit Cookie 패턴 적용
  • • JWT 사용 시 Authorization 헤더로 전송
  • • SameSite Cookie 속성으로 추가 방어
답변에 넣으면 좋은 키워드
CSRF CSRF Token Double Submit Cookie SameSite Spring Security XSS Same-Origin Policy
실무에서는

사용자 인증이 있는 모든 웹 애플리케이션에서 상태 변경 요청을 처리할 때 반드시 구현해야 하는 보안 메커니즘입니다.

Follow-up 질문

CORS가 활성화된 환경에서 CSRF 방어 전략은 어떻게 달라져야 합니까?

6 웹 취약점
Medium

Q. Spring Boot 애플리케이션에서 XSS(Cross-Site Scripting) 공격을 방어하기 위한 종합적인 전략을 설명해주세요. Stored XSS, Reflected XSS, DOM-based XSS를 모두 고려해야 합니다.

입력 검증, 출력 인코딩, CSP 헤더, 그리고 프론트엔드와 백엔드의 역할 분담을 생각해보세요.

A. 모범답안

입력 단계에서 Bean Validation과 커스텀 Validator로 악성 스크립트 패턴을 검증하고, OWASP Java HTML Sanitizer로 HTML 입력을 정제합니다. 저장 전에 위험한 태그와 속성을 화이트리스트 방식으로 필터링하여 Stored XSS를 방어합니다. 출력 단계에서는 Thymeleaf의 자동 이스케이프 기능을 활용하거나 명시적으로 HtmlUtils.htmlEscape()를 사용하여 Reflected XSS를 방어합니다. HTTP 응답 헤더에 Content-Security-Policy를 설정하여 인라인 스크립트 실행을 차단하고, X-XSS-Protection과 X-Content-Type-Options 헤더도 함께 적용합니다. SPA에서는 DOMPurify 같은 라이브러리로 클라이언트 측 정제를 추가하고, innerHTML 대신 textContent를 사용하여 DOM-based XSS를 방어합니다.

핵심 포인트
  • • 입력 검증과 HTML Sanitizer로 악성 스크립트 제거
  • • 출력 시 자동 이스케이프 적용
  • • CSP 헤더로 인라인 스크립트 차단
  • • 프론트엔드에서 안전한 DOM 조작 방식 사용
답변에 넣으면 좋은 키워드
XSS HTML Sanitizer 이스케이프 CSP Content-Security-Policy DOMPurify 화이트리스트
실무에서는

게시판, 댓글, 사용자 프로필 등 사용자 입력을 받아 화면에 표시하는 모든 기능에서 필수적으로 적용해야 하는 방어 기법입니다.

Follow-up 질문

사용자가 HTML 콘텐츠를 작성할 수 있는 에디터 기능을 제공해야 한다면 어떻게 안전하게 구현하시겠습니까?

7 인가
Hard

Q. 대규모 엔터프라이즈 시스템에서 RBAC(Role-Based Access Control)과 ABAC(Attribute-Based Access Control)을 결합한 하이브리드 권한 관리 시스템을 설계해주세요. 성능과 유연성을 모두 고려해야 합니다.

역할 계층 구조, 동적 속성 평가, 권한 캐싱 전략, 그리고 정책 변경 시 즉시 반영 방법을 고려해보세요.

A. 모범답안

기본 권한은 RBAC으로 관리하여 역할별 메뉴와 기능 접근을 제어하고, 역할 계층 구조를 통해 상위 역할이 하위 역할의 권한을 상속받도록 설계합니다. 세밀한 데이터 레벨 접근 제어는 ABAC으로 구현하여 사용자 속성(부서, 직급), 리소스 속성(민감도, 소유자), 환경 속성(시간, IP)을 조합해 동적으로 평가합니다. Spring Security의 Method Security와 SpEL을 활용하여 @PreAuthorize 애노테이션에 복합 조건을 표현하고, 커스텀 Permission Evaluator를 구현합니다. 성능을 위해 사용자별 권한 정보는 Redis에 캐싱하고 TTL을 설정하며, 정책 변경 시 Pub/Sub으로 캐시를 무효화합니다. 정책 엔진(OPA, AWS Verified Permissions)을 분리하여 비즈니스 로직과 권한 로직을 디커플링하고, 정책은 외부화하여 코드 변경 없이 수정 가능하도록 합니다.

핵심 포인트
  • • RBAC으로 기본 권한, ABAC으로 세밀한 제어
  • • 역할 계층 구조와 동적 속성 평가 결합
  • • 권한 정보 캐싱과 Pub/Sub 기반 무효화
  • • 정책 엔진 외부화로 유연성 확보
답변에 넣으면 좋은 키워드
RBAC ABAC Spring Security Method Security Permission Evaluator OPA 정책 엔진 권한 캐싱
실무에서는

대기업 ERP, 금융 시스템처럼 복잡한 조직 구조와 다양한 접근 제어 요구사항이 있는 시스템에서 필수적인 아키텍처입니다.

Follow-up 질문

수천 명의 사용자가 동시에 권한 검증을 요청할 때 정책 엔진의 병목을 어떻게 해결하시겠습니까?

8 개인정보 보호
Hard

Q. GDPR과 개인정보보호법을 준수하는 Spring Boot 애플리케이션을 설계할 때, 개인정보의 수집·이용·파기 전 생명주기를 어떻게 관리하시겠습니까? 특히 잊혀질 권리와 데이터 이동권 구현 방법을 포함해주세요.

개인정보 항목별 보관 기간, 자동 삭제, 익명화, 데이터 추출 API, 그리고 감사 로그를 고려해보세요.

A. 모범답안

개인정보 항목별로 법적 보관 기간을 메타데이터로 관리하고, Spring Batch로 매일 만료된 데이터를 자동 삭제하거나 익명화하는 스케줄러를 구현합니다. 익명화는 K-익명성을 보장하도록 개인 식별 정보를 제거하고 통계적 분석만 가능하도록 처리합니다. 잊혀질 권리 구현을 위해 사용자 요청 시 관련된 모든 데이터를 찾아 삭제하는 API를 제공하며, 분산 시스템에서는 이벤트 기반으로 전파합니다. 데이터 이동권을 위해 개인정보를 JSON이나 CSV로 추출하는 Export API를 제공하고, 비동기 처리로 대용량 데이터를 안전하게 다운로드할 수 있게 합니다. 모든 개인정보 접근과 수정은 감사 로그에 기록하여 누가, 언제, 어떤 목적으로 접근했는지 추적 가능하도록 하며, 로그는 암호화하여 별도 저장소에 보관합니다.

핵심 포인트
  • • 항목별 보관 기간 관리와 자동 삭제/익명화
  • • 잊혀질 권리를 위한 완전 삭제 API 구현
  • • 데이터 이동권을 위한 Export API 제공
  • • 모든 접근에 대한 암호화된 감사 로그 유지
답변에 넣으면 좋은 키워드
GDPR 개인정보보호법 잊혀질 권리 데이터 이동권 익명화 K-익명성 감사 로그 보관 기간
실무에서는

EU 사용자를 대상으로 서비스하거나 국내 개인정보보호법 적용 대상인 모든 시스템에서 법적으로 필수 구현해야 하는 요구사항입니다.

Follow-up 질문

백업 데이터나 로그에 남아있는 개인정보도 완전히 삭제해야 한다면 어떻게 처리하시겠습니까?

9 보안 아키텍처
Hard

Q. 클라우드 환경(AWS, Azure 등)에서 운영되는 Spring Boot 애플리케이션의 보안 아키텍처를 설계할 때, 네트워크 레벨부터 애플리케이션 레벨까지의 다층 방어 전략을 설명해주세요. Zero Trust 모델을 적용한다고 가정합니다.

VPC 구성, 보안 그룹, IAM 역할, Secrets 관리, 런타임 보안, 로깅/모니터링을 각 레이어별로 고려해보세요.

A. 모범답안

네트워크 레벨에서 VPC를 Public/Private Subnet으로 분리하고 애플리케이션은 Private Subnet에 배치하며, WAF와 ALB를 Public Subnet에 두어 외부 트래픽을 필터링합니다. Security Group과 NACL로 최소 권한 원칙을 적용하고 Egress 트래픽도 제한합니다. 인프라 레벨에서 EC2나 컨테이너에 IAM Role을 부여하여 임시 자격증명을 사용하고, 애플리케이션 코드에 하드코딩된 자격증명이 없도록 합니다. Secrets Manager나 Parameter Store로 DB 비밀번호, API 키를 관리하고 자동 로테이션을 설정합니다. 애플리케이션 레벨에서 모든 내부 통신도 mTLS로 암호화하고, Service Mesh를 통해 서비스 간 인증을 강제합니다. 런타임 보안을 위해 컨테이너 이미지 스캔을 CI/CD 파이프라인에 통합하고, 런타임에 Falco 같은 도구로 이상 행위를 탐지합니다. 모든 보안 이벤트는 CloudWatch나 SIEM 시스템으로 중앙화하여 실시간 모니터링하고 자동 알림을 설정합니다.

핵심 포인트
  • • VPC와 Security Group으로 네트워크 격리
  • • IAM Role과 Secrets Manager로 자격증명 관리
  • • 내부 통신도 mTLS로 암호화
  • • 컨테이너 스캔과 런타임 이상 탐지
  • • 중앙화된 보안 로깅과 모니터링
답변에 넣으면 좋은 키워드
Zero Trust VPC Security Group IAM Role Secrets Manager mTLS WAF SIEM 컨테이너 보안
실무에서는

클라우드 네이티브 애플리케이션을 구축할 때 보안 침해 영향을 최소화하고 규제 준수를 달성하기 위한 필수 아키텍처 패턴입니다.

Follow-up 질문

개발 환경과 운영 환경의 보안 수준을 어떻게 다르게 가져가면서도 일관성을 유지하시겠습니까?

10 보안 모니터링
Medium

Q. Spring Boot 애플리케이션에서 보안 이벤트를 탐지하고 대응하기 위한 모니터링 시스템을 설계해주세요. 어떤 이벤트를 추적해야 하고, 이상 징후를 어떻게 탐지하며, 자동 대응은 어떻게 구현하시겠습니까?

로그인 실패, 비정상적인 API 호출 패턴, 권한 상승 시도 등의 이벤트와 임계값 기반, 머신러닝 기반 탐지를 생각해보세요.

A. 모범답안

추적할 보안 이벤트로 인증 실패, 권한 거부, 비정상적인 API 호출 빈도, SQL Injection 패턴 탐지, 민감 데이터 접근, 계정 잠금 등을 정의하고 Spring AOP로 횡단 관심사로 구현합니다. 각 이벤트는 구조화된 JSON 로그로 기록하여 ELK Stack이나 Splunk로 수집하고, 사용자 ID, IP, 타임스탬프, 리소스 정보를 포함시킵니다. 임계값 기반 탐지로 5분 내 로그인 5회 실패, 1분 내 동일 API 100회 호출 등의 룰을 설정하고, 이상 징후 발생 시 자동으로 계정을 일시 잠금하거나 IP를 차단합니다. 머신러닝 기반으로 평소와 다른 접속 시간, 위치, 행동 패턴을 탐지하여 추가 인증을 요구합니다. Prometheus와 Grafana로 보안 메트릭을 시각화하고, PagerDuty나 Slack으로 즉시 알림을 발송하며, 중요 이벤트는 자동으로 티켓을 생성합니다.

핵심 포인트
  • • 인증 실패, 권한 거부 등 보안 이벤트 추적
  • • 구조화된 로그와 중앙화된 수집
  • • 임계값과 머신러닝 기반 이상 탐지
  • • 자동 차단과 알림을 통한 즉각 대응
답변에 넣으면 좋은 키워드
보안 모니터링 AOP ELK Stack 이상 탐지 자동 대응 Prometheus SIEM 구조화된 로깅
실무에서는

실시간으로 보안 위협을 탐지하고 대응하여 침해 사고의 영향 범위를 최소화하고 컴플라이언스 요구사항을 충족시키는 데 필수적입니다.

Follow-up 질문

False Positive를 줄이면서도 실제 공격을 놓치지 않기 위한 탐지 정확도 개선 방법은 무엇입니까?

댓글 0

로그인 후 댓글을 작성할 수 있습니다.

아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요!