#보안 강화 가이드

버전: 0.33.0 최종 업데이트: 2026-03-15 적용 대상: ranvier-core, ranvier-http, ranvier-compliance, ranvier-inspector 카테고리: 가이드


#1. 개요

이 가이드는 OWASP Top 10 (2021) 및 Ranvier 고유 보안 패턴을 중심으로 프로덕션 Ranvier 배포의 보안 강화를 다룹니다.


#2. OWASP Top 10 준수

#A01: 취약한 접근 제어

Ranvier 패턴: Bus Capability 적용은 무단 리소스 접근을 방지합니다.

use ranvier_core::prelude::*;

// Bus capabilities는 Transition이 접근할 수 있는 리소스를 제한합니다.
// 명시적으로 선언된 capability만 런타임에 사용 가능합니다.
fn configure_bus(bus: &mut Bus) {
    bus.with_capability::<DatabasePool>();
    // UserSecrets는 추가되지 않음 — Transition이 접근할 수 없음
}

체크리스트:

  • ✅ Bus Capabilities를 사용하여 회로별 리소스 접근 제한
  • ✅ 인증된 엔드포인트에 ranvier-auth JWT 검증 사용
  • ranvier-guard CORS로 교차 출처 접근 제한
  • ✅ 미들웨어 레이어를 통한 라우트 수준 인가 적용

#A02: 암호화 실패

체크리스트:

  • ✅ 프로덕션에서 TLS 1.3+ 적용 (리버스 프록시 또는 rustls로 구성)
  • ✅ 민감한 데이터를 절대 로깅하지 않음 — ranvier-observe 수정 정책 사용
  • ✅ 시크릿을 코드가 아닌 환경 변수에 저장
  • ✅ 강력한 JWT 서명 알고리즘 사용 (RS256 또는 ES256, 공유 환경에서 HS256 지양)

#A03: 인젝션

체크리스트:

  • ranvier-db에서 매개변수화된 쿼리 사용 (기본적으로 준비된 구문)
  • ✅ 사용자 입력으로 SQL을 절대 구성하지 않음
  • ✅ 디렉토리 순회를 방지하기 위해 파일 경로 검증 및 위생 처리
  • ✅ 타입화된 추출기 (Json<T>, Query<T>) 사용 — 잘못된 입력을 거부

#A04: 안전하지 않은 설계

Ranvier의 장점: Schematic + Transition 패턴은 명시적 의사결정 흐름을 강제하여 설계상 안전하지 않은 패턴의 도입을 어렵게 만듭니다.

체크리스트:

  • ✅ Schematic 검증을 사용하여 비즈니스 로직 무결성 확인
  • ✅ 각 Axon 회로에 대한 위협 모델 문서화
  • ✅ 처리되지 않은 오류 경로에 대한 Transition Outcome 검토

#A05: 보안 설정 오류

최대 보안 헤더를 위해 SecurityHeadersPolicy::strict() 적용:

use ranvier_guard::prelude::*;

let security = SecurityHeadersLayer::new(SecurityHeadersPolicy::strict());
// 포함: HSTS, CSP default-src 'self', COEP, COOP, CORP,
// Permissions-Policy, X-XSS-Protection, Referrer-Policy

커스텀 CSP:

use ranvier_guard::{CspBuilder, SecurityHeadersPolicy, SecurityHeadersLayer};

let csp = CspBuilder::new()
    .default_src(&["'self'"])
    .script_src(&["'self'", "https://cdn.example.com"])
    .style_src(&["'self'", "'unsafe-inline'"])
    .img_src(&["'self'", "data:", "https:"])
    .connect_src(&["'self'", "https://api.example.com"])
    .frame_ancestors(&["'none'"]);

let policy = SecurityHeadersPolicy::default().csp(csp);
let layer = SecurityHeadersLayer::new(policy);

체크리스트:

  • SecurityHeadersPolicy::strict()를 기본 수준으로 사용
  • ✅ 프로덕션에서 상세 오류 메시지 제거
  • ✅ 프로덕션 빌드에서 디버그 엔드포인트 비활성화
  • ✅ 배포 전 기본 구성 검토

#A06: 취약하고 오래된 컴포넌트

# 정기적으로 실행:
cargo audit          # 알려진 취약점 확인
cargo update         # 의존성 업데이트
cargo outdated       # 오래된 의존성 찾기

체크리스트:

  • ✅ CI 파이프라인에서 cargo audit 실행
  • ✅ 자동 의존성 업데이트를 위해 Dependabot 또는 Renovate 활성화
  • Cargo.lock에 의존성 버전 고정

#A07: 식별 및 인증 실패

체크리스트:

  • ✅ JWT 기반 인증에 ranvier-auth 사용
  • ✅ 브루트포스 방지를 위해 로그인 엔드포인트에 RateLimitLayer 적용
  • ✅ 반복 실패 후 계정 잠금 구현 (애플리케이션 수준)
  • ✅ 안전한 세션 저장소 사용 (프로덕션 클러스터에서 인메모리 사용 금지)

#A08: 소프트웨어 및 데이터 무결성 실패

체크리스트:

  • Cargo.lock을 통해 크레이트 체크섬 검증
  • ✅ 공급망 보안을 위해 cargo vet 사용
  • ✅ 릴리스 서명 (GPG 또는 Sigstore)
  • ✅ CI/CD 파이프라인 무결성 검증

#A09: 보안 로깅 및 모니터링 실패

Ranvier 패턴: 구조화된 OTel 호환 로깅에 ranvier-observe를 사용합니다.

체크리스트:

  • ✅ 소스 IP와 함께 인증 실패 로깅
  • ✅ 시도된 리소스와 함께 인가 거부 로깅
  • ✅ OTel exporter를 사용하여 SIEM에 보안 이벤트 전송
  • RateLimitLayer 활성화 — 제한 위반 시 로그 발행

#A10: 서버 측 요청 위조 (SSRF)

체크리스트:

  • ✅ 아웃바운드 요청 전 모든 URL 검증
  • ✅ 허용된 외부 도메인에 대한 허용 목록 사용
  • ✅ 내부 네트워크 범위에 대한 요청 차단 (10.x, 172.16.x, 192.168.x, 169.254.x)
  • ✅ 사용자가 제어하는 URL을 HTTP 클라이언트에 직접 전달하지 않음

#3. DDoS 보호 구성

use ranvier_guard::prelude::*;

// 속도 제한: 클라이언트 IP당 분당 100개 요청
let rate_limit = RateLimitLayer::new(
    RateLimitPolicy::per_minute(100)
);

// 연결 제한: IP당 최대 50개 동시 요청
let conn_limit = ConnectionLimitLayer::new(50);

// 요청 크기 제한: 헤더 8KB, URL 2KB
let size_limit = RequestSizeLimitLayer::new()
    .max_header_bytes(8 * 1024)
    .max_url_bytes(2 * 1024);

#4. 프로덕션 배포 체크리스트

#필수

  • TLS 1.3 활성화 (리버스 프록시 또는 rustls를 통해)
  • SecurityHeadersPolicy::strict() 적용
  • 모든 공개 엔드포인트에 RateLimitLayer 구성
  • ConnectionLimitLayer 구성
  • RequestSizeLimitLayer 구성
  • CorsGuardLayer 구성 (프로덕션에서 permissive() 사용 금지)
  • cargo audit가 취약점 없이 통과
  • 시크릿에 환경 변수 사용 (하드코딩된 자격증명 금지)
  • 디버그/inspector 엔드포인트 비활성화 또는 보호

#권장

  • 프론트엔드에 맞는 커스텀 CspBuilder 구성
  • 보안 이벤트 알림이 포함된 OTel 로깅 활성화
  • 의존성 업데이트 자동화 (Dependabot/Renovate)
  • 로드 밸런서 헬스 체크 구성
  • 백업 및 재해 복구 계획 문서화

#5. 참고 자료

  • OWASP Top 10 (2021)
  • Ranvier 보안 정책
  • 프로덕션 준비 체크리스트
  • 배포 가이드
  • OTel 운영 플레이북