headless 보안 아키텍처 백서
- 작성 기준일
- 2026-05-18
- 발급
- 주식회사 볼타코퍼레이션 (국세청 전자(세금)계산서 표준인증 사업자)
- 대상
- 도입 검토 단계의 보안·정보보호·구매 담당자
이 문서는 headless 가 금융기관 인증정보와 수집 데이터를 어떻게 다루는지를 설계 수준에서 설명한다. 주식회사 볼타코퍼레이션은 국세청 전자(세금)계산서 표준인증 사업자이며, 본 문서는 실제 구현·운영 중인 통제를 기준으로 기술한다.
1. 서비스 개요와 데이터 흐름
headless 는 홈택스·은행·카드의 거래내역·세금계산서·현금영수증을 표준 데이터 형식과 API 로 제공하는 금융 데이터 수집 플랫폼이다. 데이터는 다음 경로로 흐른다.
- 입력 — 고객이 외부 시스템 접속 인증정보를 등록한다. 등록 즉시 암호화되어 저장된다(3장).
- 실행 — 고객 요청이 비동기 작업으로 큐에 들어가고, 분리된 워커가 수집을 수행한다.
- 저장 — 정규화된 결과를 PostgreSQL 에 저장하고, 대용량 산출물은 객체 스토리지에 둔다.
- 전달 — 폴링·웹훅·큐를 통해 고객에게 결과를 전달한다.
각 단계는 별도 서비스로 분리돼 있고, 인증정보를 다루는 구간과 결과를 다루는 구간이 나뉜다.
2. 인증과 접근 통제
| 경로 | 인증 수단 | 구현 |
|---|---|---|
| 웹 콘솔 | JWT (Access + Refresh) | HMAC-SHA256 서명. 비밀키는 256비트 이상으로 강제. Access 토큰 7일, Refresh 토큰 30일 만료 |
| 외부 API | API 키 | h6s_live_ 접두사 + 256비트 난수. 원문은 발급 시 1회만 노출, 서버에는 HMAC-SHA256 해시만 저장 |
- 비밀번호는 BCrypt 로 해시 저장한다. 평문은 어디에도 남기지 않는다.
- Refresh 토큰은 256비트 난수를 발급하되 DB 에는 SHA-256 해시만 저장한다. 로그아웃·폐기는 논리 삭제(soft delete)로 처리해 재사용 토큰을 부분 유니크 인덱스로 차단한다.
- API 키는 회전(rotate)과 폐기(revoke)를 지원한다. 회전 시 기존 키는 즉시 폐기 상태가 되고, 폐기된 키로는 어떤 요청도 통과하지 못한다. 마지막 4자리만 식별용 힌트로 보관한다.
- 인증·인가는 보안 필터 체인 한 곳에서만 결정한다. 개별 컨트롤러에 권한 분기를 두지 않아, 인가 규칙의 진실 원천이 한 파일에 모인다.
테넌트 격리
- 콘솔 요청은 워크스페이스 식별자가 URL 에 명시되고, 요청 계정이 해당 워크스페이스 멤버인지 매 요청 검증한다. 멤버가 아니면 403 으로 차단한다.
- 파트너 경로는 파트너 버킷 워크스페이스 + 요청별 사업자등록번호(10자리 숫자 검증) 로 데이터 경계를 분리한다.
- 요청 컨텍스트는 요청 단위로 설정하고 종료 시 반드시 정리해, 요청 간 식별자 누수를 막는다.
3. 인증정보 암호화
고객이 등록하는 외부 시스템 인증정보(아이디·비밀번호·인증서 등)는 다음과 같이 보호한다.
- 알고리즘: AES-256-GCM (
AES/GCM/NoPadding, 128비트 인증 태그). 기밀성과 무결성을 함께 보장한다. - 키: 정확히 256비트 키만 허용한다. 길이가 맞지 않으면 애플리케이션이 기동 자체를 거부한다.
- IV: 암호화마다 12바이트 난수를 새로 생성한다(
SecureRandom). - 복호화 시점: 인증정보는 스크래핑을 실제 실행하는 직전에만 복호화한다. 평문은 수집 실행에 필요한 짧은 구간에만 메모리에 존재하고, 영속 저장소에는 항상 암호문으로만 남는다.
4. 저장·전송 구간 보호
| 대상 | 통제 |
|---|---|
| 관리형 데이터베이스 | 저장 시 암호화(at-rest, KMS) 적용, 다중 가용영역(Multi-AZ) 구성, 자동 백업 운영 |
| 객체 스토리지 | 서버측 암호화(SSE, AES-256) 기본 적용, 버전 관리 활성화, 퍼블릭 액세스 전면 차단 |
| 캐시·세션 저장소 | 저장 시 암호화 및 전송 구간 TLS 적용 |
| 외부 통신 | 로드밸런서에서 HTTPS 종단, 단일 리전(AWS 서울, ap-northeast-2) 운영 |
| 인증정보 컬럼 | 위 저장소 암호화에 더해 애플리케이션 레벨 AES-256-GCM 이중 적용 (3장) |
수집 결과 데이터(거래내역·세금계산서 등)는 관리형 데이터베이스와 객체 스토리지의 저장 시 암호화(KMS)와 접근 통제로 보호한다. 고객이 등록한 외부 시스템 인증정보는 이에 더해 애플리케이션 레벨 AES-256-GCM 필드 암호화(3장)를 적용한다.
5. 운영 보안과 감사
- 민감정보 마스킹: 운영 알림으로 나가는 요청 본문은 비밀번호·토큰·인증서·인증정보 래퍼 등 20여 개 키를 재귀적으로 마스킹한다. 운영자에게는 값의 길이만 노출되고 원문은 전달되지 않는다.
- 관리자 감사 로그: 요금제 변경·파트너 프로비저닝 같은 관리자 행위를 append-only 로 기록한다. 한 번 기록된 항목은 수정·삭제하지 않는다.
- 최소 권한: 인프라 서비스마다 권한을 분리해 부여한다.
- 운영 인프라 접근 통제: 서버·DB 등 운영 인프라 접근은 VPN, IdP 기반 인증·MFA 등 다중 레이어를 통과해야만 가능하다(Zero-trust 접근 모델).
- 접속·호출·오류 로그는 자동 수집하며, 보존 기간은 「개인정보의 안전성 확보조치 기준」 고시와 통신비밀보호법 범위를 따른다.
6. 데이터 수명주기
- 인증정보는 고객이 연동을 삭제하거나 탈퇴하면 지체 없이 복구 불가능한 방식으로 파기한다.
- 수집 데이터와 정규화 결과의 소유권은 고객에게 귀속된다. 이용계약이 종료되면 고객이 달리 요청하지 않는 한 지체 없이 삭제한다.
- 법령상 보존 의무가 있는 거래·결제·정산 기록과 보안 대응용 로그는 해당 법정 기간 동안 분리 보관한다.
- 위탁·국외이전 현황은 개인정보처리방침 5조·6조에 공개돼 있으며, 본 백서 부록 A 에 요약한다.
7. 보안 사고·문의 연락
- 인증정보 유출이 의심되면 즉시 API 키를 재발급하고 h6s@bolta.io 로 통지한다.
- 보안 검토 자료 추가 요청, 취약점 제보는 모두 h6s@bolta.io 로 접수한다.
부록 A. 서브프로세서(처리 위탁) 요약
| 수탁자 | 위탁 업무 | 위치 |
|---|---|---|
| Amazon Web Services, Inc. | 클라우드 인프라(컴퓨팅·스토리지·네트워크·보안) | 데이터는 AWS 서울 리전(ap-northeast-2) 보관 |
| Microsoft Corporation | 사용자 행동 분석(Microsoft Clarity) | 미국 |
| Vercel, Inc. | 프론트엔드 호스팅·이용 통계 | 미국 |
| 주식회사 스티비 | 가입 확인·공지 이메일 발송 | 국내 |
| 주식회사 채널코퍼레이션 | 고객 문의 접수·처리 | 국내 |
| 주식회사 페이플 | 국내 결제 승인·정산 | 국내 |
| Polar Software, Inc. | 국제 결제·구독 정산 | 미국 |
국외 이전 대상·항목·연락처의 전체 내역은 개인정보처리방침 6조에 공개돼 있다. 최신 기준은 항상 https://h6s.ai/privacy 의 공개본을 따른다.
규제 준수 매트릭스
- 작성 기준일
- 2026-05-18
- 발급
- 주식회사 볼타코퍼레이션 (국세청 전자(세금)계산서 표준인증 사업자)
- 대상
- 도입 검토 단계의 보안·정보보호 담당자
- 범위
- 「개인정보 보호법」, 「개인정보의 안전성 확보조치 기준」 고시, 「신용정보의 이용 및 보호에 관한 법률」의 핵심 요구사항
상태 표기: 준수 = 구현·운영 중 / 부분 = 일부 적용 / 해당없음 = 서비스 성격상 비적용.
1. 개인정보 보호법
| 조항 | 요구사항 | 상태 | 근거 |
|---|---|---|---|
| 제3조 | 수집 최소화·목적 내 이용 | 준수 | 수집 항목을 연동·요청 단위로 한정. 개인정보처리방침 1·2조 |
| 제15·22조 | 수집·이용 동의 | 준수 | 가입·연동 시 동의 절차, 처리방침 고지 |
| 제21조 | 목적 달성 후 파기 | 부분 | 탈퇴·연동 삭제 시 인증정보 복구불가 파기, 계약 종료 시 고객 데이터 삭제, 법령상 보존 의무 기록은 법정 기간 분리 보관 |
| 제24·29조 | 안전성 확보조치 | 부분 | 인증정보 AES-256-GCM, 비밀번호 BCrypt, 토큰 SHA-256 해시, 접근통제 필터 체인, 관리형 DB·객체 스토리지 저장 시 암호화(KMS) |
| 제26조 | 처리위탁 시 문서화·관리·감독 | 준수 | 이용약관 21조 3항이 §26 위탁문서를 구성 |
| 제28조의8 | 국외 이전 시 동의·고지 | 준수 | 이전 대상·항목·연락처를 개인정보처리방침 6조에 공개 |
| 제30조 | 개인정보처리방침 공개 | 준수 | https://h6s.ai/privacy 공개 (rev.1, 2026-05-04) |
| 제31조 | 개인정보 보호책임자 지정 | 준수 | CPO 지정·연락처 공개 (처리방침 12조) |
| 제35~37조 | 정보주체 권리(열람·정정·삭제·처리정지) | 준수 | 설정 메뉴·이메일·서면 경로, 원칙 10일 내 처리 (처리방침 7조) |
2. 개인정보의 안전성 확보조치 기준 고시
| 항목 | 요구사항 | 상태 | 근거 |
|---|---|---|---|
| 내부 관리계획 | 내부관리계획 수립·시행, 정기 교육 | 부분 | 처리방침 11조 관리적 조치 명시 |
| 접근권한 관리 | 권한 차등 부여·회수 | 준수 | 보안 필터 체인 단일 결정점, 워크스페이스 멤버십 검증(비멤버 403), 인프라 최소 권한 |
| 접근통제 | 인증·세션·외부 접속 통제 | 준수 | JWT(HMAC-SHA256, Access 7일/Refresh 30일), API 키(HMAC-SHA256 해시 저장, 회전·폐기), 파트너 사업자번호 경계 분리 |
| 개인정보 암호화 | 인증정보 등 암호화 저장 | 준수 | 외부 시스템 인증정보 AES-256-GCM(실행 직전에만 복호화), 비밀번호 BCrypt, Refresh 토큰 SHA-256 해시, 관리형 DB 저장 시 암호화(at-rest, KMS)·Multi-AZ·자동 백업, 객체 스토리지 SSE(AES-256) |
| 접속기록 보관·점검 | 접속기록 보관, 위변조 방지 | 부분 | 접속·API 호출·오류 로그 자동 수집, 관리자 행위 append-only 감사 로그 |
| 악성코드·취약점 | 보안 프로그램 설치·갱신 | 부분 | 운영 알림 민감정보 마스킹(20여 키), 전송 구간 TLS, HTTPS 종단 |
| 물리적 안전조치 | 출입 통제 | 준수(위탁) | 클라우드 인프라(AWS 서울 리전) 물리 보안에 위임. 처리방침 11조 |
3. 신용정보법 (해당 시)
적용 전제: 고객이 신용정보법 적용 대상이거나 위탁 대상에 신용정보가 포함되는 경우. 일반 고객에게는 1·2장이 우선한다.
| 조항 | 요구사항 | 상태 | 근거 |
|---|---|---|---|
| 제19조 | 신용정보전산시스템 보안대책 | 부분 | 저장 시 암호화(KMS)·접근통제·접속기록 등 1·2장과 동일 통제 적용. 신용정보 특화 보호조치는 도입 협의 단계에서 부속합의로 구체화 |
| 제20조 | 처리·이용 기록 보존 | 부분 | 접속·호출·오류 로그 수집, 법정 보존 기간 분리 보관 |
| 제17조 | 처리위탁 시 보호조치 | 준수 | 위탁 프레임은 개인정보 보호법 26조와 동일하게 운용 |
세부 질의는 h6s@bolta.io 로 접수하면 최신 상태를 회신한다.