Init/centry#293
Conversation
- Sentry를 프로덕션(NODE_ENV=production) 환경에서만 초기화 - tracesSampleRate를 1.0에서 0.3으로 조정 (성능 최적화) - localhost 제거, 프로덕션 도메인만 tracePropagationTargets에 포함 - 테스트용 페이지 및 API 라우트 제거
📋 WalkthroughSentry 초기화 설정 파일 세 개(클라이언트, 엣지, 서버)가 프로덕션 환경 전용 조건부 가드로 감싸져 수정되었습니다. 각 파일에서:
🎯 Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes 추가 검토 필요 영역:
👥 Suggested reviewers
Pre-merge checks and finishing touches❌ Failed checks (3 warnings)
✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 0
♻️ Duplicate comments (1)
sentry.client.config.ts (1)
9-11: 클라이언트 측 개인 정보 수집도 활성화되어 있습니다서버 설정과 동일하게
sendDefaultPii: true가 설정되어 있어, 클라이언트 측에서도 사용자 정보를 수집합니다. 서버 설정 리뷰에서 언급한 프라이버시 정책 검토가 클라이언트 측에도 적용됩니다.
🧹 Nitpick comments (1)
sentry.client.config.ts (1)
17-21: 세션 리플레이 샘플링 비율을 검토해주세요현재 설정:
- 일반 세션: 10% 녹화 (
replaysSessionSampleRate: 0.1)- 에러 세션: 100% 녹화 (
replaysOnErrorSampleRate: 1.0)고려사항:
- 10%의 세션 녹화는 트래픽이 많은 서비스의 경우 상당한 양의 사용자 행동 데이터를 수집합니다
sendDefaultPii와 결합되면 개인 정보 수집 범위가 넓어집니다- Sentry 비용도 증가할 수 있습니다
권장사항:
- 초기에는 5% (0.05) 정도로 시작하여 필요에 따라 조정
- 에러 리플레이 100%는 디버깅에 유용하므로 유지 권장
필요시 샘플링 비율을 조정하려면:
- replaysSessionSampleRate: 0.1, // 일반 세션의 10% + replaysSessionSampleRate: 0.05, // 일반 세션의 5% replaysOnErrorSampleRate: 1.0, // 에러 발생 시 100%
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
sentry.client.config.ts(1 hunks)sentry.edge.config.ts(1 hunks)sentry.server.config.ts(1 hunks)
🔇 Additional comments (6)
sentry.server.config.ts (2)
6-23: 서버 사이드 Sentry 설정이 일관성 있게 구성되었습니다엣지 설정과 동일한 패턴을 따르고 있어 유지보수가 용이합니다:
- 프로덕션 환경 가드: 개발 환경 노이즈 방지 ✓
- 샘플링 비율 30%: 비용과 가시성의 균형 ✓
- 디버그 모드 비활성화: 프로덕션 로그 클린 ✓
sendDefaultPii옵션에 대한 프라이버시 검토만 완료되면 배포 준비가 완료됩니다.
12-14: sendDefaultPii 활성화로 인한 개인정보 처리 - GDPR 준수 필수
sendDefaultPii: true설정은 사용자 IP 주소, 이메일/ID/사용자명, 쿠키, 요청 헤더 등 추가 개인정보를 Sentry로 전송합니다. EU 개인정보보호규정(GDPR) 준수를 위해 다음 사항들을 확인하고 구현해주세요:
법적 근거 및 계약 확인
- 개인정보 처리의 법적 근거(동의/정당한 이익 등) 문서화
- Sentry와 데이터 처리 부속약정(DPA) 체결 여부 확인
개인정보 최소화 설정
- Sentry 프로젝트의 Security & Privacy 설정에서 민감한 헤더/필드 제외
- 데이터 스크러빙(data scrubbing) 규칙 적용
- IP 지리정보 수집 비활성화 또는 IP 익명화 구성
투명성 및 사용자 권리
- 개인정보 처리방침에 Sentry를 통한 데이터 처리 내역 명시
- 사용자 동의 프로세스 및 데이터 주체 권리 이행 절차 마련
위험 평가
- 고위험 처리인 경우 개인정보 영향평가(DPIA) 수행
- Sentry의 보안 인증(ISO/SOC 보고서) 확인
sentry.client.config.ts (3)
6-7: 클라이언트 측 환경 변수 설정이 올바릅니다
NEXT_PUBLIC_접두사를 사용하여 브라우저에서 접근 가능한 환경 변수를 올바르게 참조하고 있습니다:
- DSN:
NEXT_PUBLIC_SENTRY_DSN→SENTRY_DSN→""순으로 폴백- 환경:
NEXT_PUBLIC_SENTRY_ENVIRONMENT→SENTRY_ENVIRONMENT→"production"순으로 폴백참고:
NEXT_PUBLIC_접두사가 붙은 변수는 클라이언트 번들에 포함되어 브라우저에 노출됩니다. DSN은 공개되어도 안전하지만, 다른 민감한 정보는 이 패턴을 사용하지 않도록 주의해주세요.
32-35: 세션 리플레이 프라이버시 설정이 훌륭합니다!사용자 프라이버시를 최우선으로 고려한 설정입니다:
- maskAllText: true: 모든 텍스트 콘텐츠 마스킹 ✓
- 사용자 입력, 개인 정보, 민감한 데이터가 녹화되지 않음
- blockAllMedia: true: 모든 이미지/비디오 차단 ✓
- 미디어를 통한 개인 식별 방지
이 설정으로 사용자 행동 패턴과 UI 상호작용은 추적하면서도 실제 콘텐츠는 보호됩니다. 세션 리플레이의 모범 사례를 따르고 있습니다.
25-29:tracePropagationTargets설정이 실제 사용 도메인과 불일치 - 긴급 검증 필요코드베이스 분석 결과, 다음과 같은 문제가 확인되었습니다:
실제 API 엔드포인트 vs 설정의 불일치
- 실제 사용:
https://api.stage.solid-connection.com(개발) 및https://solid-connection.com(프로덕션)- 설정된 문자열:
"solid-connection.com"→ 이 패턴은https://api.stage.solid-connection.com을 포함하는 모든 요청을 매칭- 설정된 정규식:
/^https:\/\/(www\.)?solid[\-]?connection\.com/→https://api.stage.solid-connection.com을 매칭하지 않음 (서브도메인 차단)패턴 간 동작 차이의 보안 위험
- 문자열
"solid-connection.com"은 URL에 해당 문자열이 어디든 포함되면 매칭 (예:https://fakesolid-connection.com)- 정규식은 정확한 도메인만 매칭 (더 안전)
- 두 패턴을 함께 사용하면 의도하지 않은 도메인까지 추적될 가능성
필수 확인 사항
- 스테이징 API 서브도메인 (
api.stage.solid-connection.com)에 대한 트레이싱이 의도된 것인지solidconnection.com(하이픈 없음)도 실제 운영 도메인인지- 보다 명확한 패턴으로 재구성이 필요한지 (예:
["solid-connection.com", "api.stage.solid-connection.com", /^https:\/\/(www\.)?solid[\-]?connection\.com/])sentry.edge.config.ts (1)
7-20: 추가 검증을 위해 배포 설정과 Sentry의 빈 DSN 처리 방식을 확인하겠습니다.Sentry 초기화 방식이 최고의 관행을 따르고 있습니다! 수정할 사항이 없습니다.
프로덕션 환경 보호: 프로덕션에서만 초기화하는 조건부 로직은 완벽합니다.
빈 DSN 처리는 안전합니다: Sentry SDK는 공식적으로 빈 DSN을 유효한 설정으로 받아들이며, 빈 DSN으로 초기화된 경우 SDK는 네트워크로 데이터를 전송하지 않습니다. 이는 설계된 대로의 동작이며, 개발 환경에서 불필요한 에러 리포팅을 방지하는 우아한 방식입니다.
샘플링 비율 30%: 성능 모니터링에 적절한 수준입니다.
디버그 플래그 비활성화: 프로덕션 환경에서 깔끔한 로그를 유지합니다.
관련 이슈
작업 내용