27장. Credential stuffing과 자동화를 제어한다
Spring Security 설정만으로 rate limiting이 완성되지 않는다. edge, gateway, 애플리케이션, IDP에서 계층적으로 제어한다. 로그인 endpoint는 계정과 IP 단위 제한, 지연, bot 신호, 유출 비밀번호 차단을 조합한다. CAPTCHA는 접근성과 우회 비용을 평가한 보조 수단이다.
signal: 실패율, 고유 계정 수, IP/ASN 분포, 성공 전환, device 변화
action: 지연 -> challenge -> 제한 -> 조사
avoid : 영구 IP 차단 하나, 계정 존재 노출, 전사 장애
응답 시간 차이로 계정 존재가 드러나지 않는지 측정한다. 성공 계정만 따로 빨라지거나 password encoder가 없는 계정에서 즉시 반환되면 enumeration 신호가 된다. dummy hash 검증 같은 완화를 실제 부하에서 평가한다.
rate limit 저장소가 장애일 때 fail-open 또는 fail-closed를 endpoint별로 정한다. 로그인 전체가 닫히는 것이 더 큰 위험일 수 있고, 관리자 승인은 닫히는 것이 안전할 수 있다. 이 결정도 runbook에 적는다.