데이터 보안
SecureCodingHub는 모든 계층에 보안이 설계되어 있습니다. 이 페이지는 조직의 데이터를 보호하는 방법을 다룹니다.
암호화
모든 데이터는 업계 표준 암호화로 보호됩니다:
전송 중
모든 데이터는 브라우저와 서버 간에 TLS 1.2+를 사용하여 암호화됩니다. 평문 전송이 없습니다.
저장 시
모든 저장 데이터는 AES-256 암호화를 사용하여 암호화됩니다. 데이터베이스 백업은 암호화됩니다.
인프라
- AWS(US 리전)에 호스팅됨
- 애플리케이션과 데이터베이스가 격리된 네트워크에 있음
- 정기적인 보안 패치 및 업데이트
- AWS Shield를 통한 DDoS 보호
- 자동화된 모니터링 및 알림
데이터 처리
다음은 저장하는 데이터와 그 이유입니다:
| 데이터 유형 | 저장됨 | 용도 |
|---|---|---|
| 사용자 이메일 및 이름 | 예 | 계정 식별 |
| 챌린지 진행 상황 및 점수 | 예 | 교육 추적 |
| 스택 설정 | 예 | 개인화 |
| 인증 토큰 | 임시 | 세션 관리 |
| 비밀번호 | 아니오 | 비밀번호 없는 인증 사용 |
| 소스 코드 | 아니오 | 챌린지는 클라이언트 측에만 있음 |
컴플라이언스
- GDPR 준수 — 정당한 이익 / 계약 기반의 데이터 처리
- 사용자는 데이터 내보내기 또는 삭제를 요청할 수 있음
- 데이터 보존: 활성 계정은 무기한 보존, 삭제된 계정은 90일 후 제거
- 개인정보처리방침에 나열된 하위 처리자
액세스 제어
- 각 조직 내 역할 기반 액세스 제어 (
org_admin및learner) - 조직 수준 데이터 격리(다중 테넌트) — 모든 레코드는 데이터 액세스 계층에서 시행되는
organizationId범위를 가집니다 - 프로비저닝 API를 위한 SCIM 토큰 인증 (먼저 SSO가 구성되어야 함)
- 공개 REST 및 웹훅 화면에 대한 API 키당 요청 한도 (키당 분당 60회 요청 및 시간당 1,000회 요청); 익명 웹 문의 양식에 대한 별도의 IP 제한기 (15분당 5회)
- 브라우저 대면 관리자 및 학습자 엔드포인트를 위한 JWT bearer 토큰; 공개 화면을 위한 장기간 사용 가능한 해시 API 키 — 전체 세부 정보는 인증에 있음
웹훅 서명
SecureCodingHub에서 엔드포인트로의 아웃바운드 웹훅은 엔드포인트 생성 시 관리자에게 한 번 표시되고 다시 반환되지 않는 엔드포인트별 시크릿을 사용하여 HMAC-SHA256으로 서명됩니다. 서명 헤더는 t=<unix_seconds>,v1=<hex> 형식입니다. 서명된 페이로드는 <t>.<raw_body>입니다. 수신자는 재생을 방어하기 위해 타임스탬프가 수신자의 시계에서 5분 이상 벗어난 모든 전달을 거부하고 서명을 일정 시간 내에 비교해야 합니다.
전달은 최소 1회입니다. 실패한 전달(2xx가 아닌 응답 또는 네트워크 실패)은 1분 / 5분 / 30분 / 2시간 / 최종 시도 일정으로 지수 백오프를 사용하여 재시도됩니다. 5회 실패한 시도 후 엔드포인트는 자동으로 비활성화되며 조직 관리자는 감사 로그를 통해 알림을 받습니다. 설정 및 검증 코드 샘플은 API → 웹훅에 있습니다.
애플리케이션 수준 시크릿 처리
세 가지 시크릿 유형이 애플리케이션 계층에서 관리됩니다. 위의 저장 계층 암호화와 함께 완전성을 위해 디스크상 처리가 여기에 설명되어 있습니다.
| 시크릿 | 저장소 | 수명 |
|---|---|---|
| 공개 API 키 | SHA-256 해시, 9자 접두사(scs_live_) 및 마지막 4자만 유지됩니다. 전체 토큰은 생성 시 한 번 표시되며 서버에서 다시 검색할 수 없습니다. | 기본적으로 무기한입니다. 생성 시 선택적 만료 날짜를 설정할 수 있습니다. 취소는 즉시 적용됩니다. |
| 웹훅 서명 시크릿 | 서버가 모든 아웃바운드 전달에 서명하기 위해 원시 값이 필요하기 때문에 웹훅 엔드포인트 레코드와 함께 평문으로 저장됩니다. 생성 시 한 번 표시되며 API를 통해 다시 반환되지 않습니다. 회전에는 엔드포인트 삭제 및 재생성이 필요합니다. | 웹훅 엔드포인트가 존재하는 동안 유효합니다. |
| 매직 코드 (이메일 OTP) | 6자리 코드는 매직 코드 행에 평문으로 유지됩니다. 코드는 단일 사용이며 사용자의 이메일에 바인딩됩니다. 행은 첫 검증 후 사용된 것으로 표시됩니다. | 각 코드는 발급 후 10분 후 만료됩니다. 사용되지 않은 만료된 코드는 정리가 지울 때까지 테이블에 감사 추적으로 남아 있습니다. |
| SSO 클라이언트 시크릿 / SAML 인증서 | 서버가 IdP와 협상하기 위해 원시 값이 필요하기 때문에 SchSsoConfig 레코드에 평문으로 저장됩니다. 구성이 저장된 후에는 어떤 읽기 엔드포인트를 통해서도 노출되지 않습니다. | SSO 구성이 존재하는 동안 유효합니다. |
취약점 보고
보안 취약점을 발견한 경우 security@securecodinghub.com으로 문의하세요. 우리는 모든 보고를 진지하게 받아들이며 48시간 이내에 응답하는 것을 목표로 합니다.
SecureCodingHub의 데이터 분류
환경 내 데이터를 세 가지 실용적인 버킷으로 떨어진다고 다룹니다. 고객 데이터는 조직에 속하고 사용자가 플랫폼을 통해 입력하거나 생성한 정보입니다: 계정 식별자, 학습자 이메일 주소, 역할 할당, 교육 진행 상황, 개별 챌린지에 대한 점수 및 스택 설정입니다. 이 버킷은 DPO가 관심을 갖는 것이고 내부적으로 가장 높은 민감도 계층으로 다루는 것입니다.
운영 텔레메트리는 두 번째 버킷입니다. 요청 로그, 익명화된 성능 메트릭, 개인 식별자가 제거된 오류 추적 및 플랫폼 전반의 안정성 대시보드를 표면화하는 데 사용되는 카운터를 다룹니다. 이 데이터는 서비스를 안전하게 실행하는 데 필요하며 고객 데이터보다 더 짧은 롤링 윈도우에 보존됩니다. 세 번째 버킷은 챌린지 콘텐츠 자체입니다 — 우리가 작성하고 사용자에게 출하하는 취약한 코드 샘플, 힌트 및 참조 솔루션입니다. 그 콘텐츠는 우리의 지적 재산이지 여러분의 것이 아니며, 조직의 레코드와 혼합되지 않습니다.
보존 윈도우는 그에 따라 다릅니다. 활성 고객 계정은 계약이 유효한 동안 보존됩니다. 계정 삭제 시 식별 가능한 고객 데이터를 90일 시계로 제거하며, 윈도우 내에서 우발적인 삭제를 되돌릴 수 있도록 지연이 존재합니다. 운영 텔레메트리는 개월이 아니라 주 단위로 측정되는 더 짧은 주기로 떨어집니다. 전체 데이터 인벤토리 및 보존 세부 정보는 아래에 나열된 요청 채널을 통해 NDA 하에서 고객에게 제공되며, 최종 사용자를 위해 개인정보처리방침에 요약되어 있습니다.
암호화가 계층화되는 방식
SecureCodingHub의 암호화는 단일 통제가 아니라 계층화되어 있으며, 각 계층은 다른 계층이 실패할 수 있다고 가정합니다. 사용자와 플랫폼 간의 전송 중 데이터는 로드 밸런서에서 시행되는 최신 암호 선택과 함께 전송 계층 암호화로 보호되며, 약한 프로토콜과 다운그레이드 가능성이 있는 암호가 비활성화됩니다. 동일한 전송 자세가 애플리케이션 서비스와 관리되는 데이터스토어 간의 트래픽에도 적용됩니다. 프로덕션 VPC 내부의 어떤 것도 네트워크 경계를 통해 평문으로 이동하지 않습니다.
저장 시 데이터는 호스팅 플랫폼이 제공하는 암호화 서비스를 사용하여 스토리지 계층에서 암호화되며, 키 관리는 코드베이스에 체크인된 애플리케이션 수준 키 자료가 아니라 동일한 공급자의 관리되는 키 서비스에 의해 처리됩니다. 백업은 기본 저장소와 동일한 암호화 자세를 상속합니다. 우리는 의도적으로 공개 페이지에서 특정 알고리즘, 키 길이 또는 회전 주기를 게시하기보다는 정책 수준에서 설명을 유지합니다. 이러한 값을 게시하면 취약한 종속성을 초대하고 공격자에게 대상 목록을 제공하기 때문입니다. 구체적인 내용은 조달 검토를 위해 NDA 하에서 사용할 수 있습니다.
테넌트 격리는 세 번째 계층입니다. 고객 데이터 계층의 모든 레코드는 조직 식별자로 범위가 지정되며, 그 범위 지정은 애플리케이션 수준 필터에만 의존하는 대신 데이터 액세스 계층에서 시행됩니다. 실용적인 효과는 한 기능의 쿼리 버그가 다른 조직의 데이터를 API를 통해 우발적으로 노출할 수 없다는 것입니다. 누락된 범위는 잘못된 결과가 아닌 결과 없음으로 표시되기 때문입니다. 조직 내 역할 기반 액세스도 동일한 데이터 액세스 계층에 의해 시행되므로, 사용자의 조직 범위와 역할이 함께 애플리케이션 수준 필터가 실행되기 전에 어떤 레코드가 보이는지 결정합니다.
하위 처리자 및 데이터 거주 자세
SecureCodingHub는 오늘 미국 리전에서만 호스팅됩니다. 그것은 현재 규모에서의 의도적인 운영 선택입니다 — 단일 기본 리전 실행은 사고 대응을 단순화하고, 감사관이 살펴봐야 하는 표면적을 줄이며, 하위 처리자 목록을 짧게 유지합니다. 미국 외부에서 우리를 평가하는 조직의 경우, 이것이 데이터 보호 책임자에게 처음에 표면화할 가장 중요한 사실입니다: 데이터는 설계상 미국 경계를 넘으며, 그 전송을 지원하기 위해 표준 계약 조항을 포함한 계약상 보호 장치가 제공됩니다.
향후 EU 거주 배포를 추가하는 경우, 변경은 장식적이 아니라 실질적일 것입니다. 별도의 기본 리전은 EU 거주 운영을 가진 별도의 하위 처리자 세트, 별도의 백업 대상 세트, 그리고 새로운 흐름을 반영하는 업데이트된 데이터 처리 부록을 의미합니다. 우리는 기존 조직을 새 리전으로 조용히 백포트하지 않을 것입니다. 어떤 이동이든 알림과 정의된 컷오버 윈도우가 있는 옵트인 마이그레이션이 될 것입니다. 현재 하위 처리자 목록, 지역 자세 진술 및 현재 침투 테스트 요약은 security@securecodinghub.com에서 요청 시 사용할 수 있습니다. 우리는 공유 신뢰 포털을 통해서만이 아니라 공급업체 보안 설문지에 직접 답하며, 현재 하위 처리자 목록을 받기 위해 요청하는 당사자가 유료 고객일 필요가 없습니다.