B2B SaaS와 PIPA — 고객사 데이터를 처리할 때 반드시 알아야 할 것
HR SaaS, CRM, 회계 소프트웨어, 협업 툴 — B2B SaaS는 고객사의 직원 정보, 거래처 연락처, 고객 명단을 처리합니다. 이 데이터는 누구의 책임 하에 어떻게 보호되어야 할까요? B2B SaaS 운영자라면 반드시 알아야 할 PIPA 의무를 정리합니다.
핵심 개념: 개인정보처리자 vs 수탁자
B2B SaaS 관계에서 누가 어떤 역할을 하는지 먼저 구분해야 합니다.
| 역할 | 정의 | 예시 | |------|------|------| | 개인정보처리자 | 개인정보 처리 목적과 방법을 결정하는 자 | SaaS를 이용하는 고객사 | | 수탁자 | 처리자의 지시에 따라 개인정보를 처리하는 자 | SaaS 운영사 (귀사) |
B2B SaaS 운영사는 대부분 수탁자입니다.
고객사가 자사 직원·고객 데이터를 SaaS에 넣는 것은 고객사가 귀사에게 처리를 위탁하는 것입니다.
수탁자로서 B2B SaaS가 지켜야 할 의무
1. DPA(데이터 처리 계약) 체결
고객사와 반드시 데이터 처리 계약(DPA: Data Processing Agreement)을 체결해야 합니다. 단순 이용약관만으로는 부족합니다.
DPA 필수 포함 항목:
□ 위탁하는 업무의 목적 및 범위
□ 처리하는 개인정보 항목
□ 개인정보 보관 기간
□ 안전조치 의무
□ 재위탁 제한 조항 (SaaS가 다른 업체에 재위탁 시 고객사 사전 승인 필요)
□ 계약 종료 시 데이터 반환 또는 파기 절차
□ 침해 사고 발생 시 통지 의무 (고객사에 즉시 통보)
실무 팁: 엔터프라이즈 고객사는 DPA를 반드시 요구합니다. 미리 표준 DPA 템플릿을 만들어두면 영업 속도가 빨라집니다.
2. 고객사의 지시 범위 내에서만 처리
수탁자는 고객사가 허용한 목적과 범위 내에서만 데이터를 사용해야 합니다.
❌ 금지 사례
- 고객사 데이터를 AI 모델 학습에 무단 사용
- 고객사 데이터를 분석해서 마케팅 인사이트로 활용
- 여러 고객사 데이터를 혼합하여 벤치마크 데이터셋 제작
- 고객사 데이터로 자사 통계 대외 공개 (익명화 여부와 관계없이 동의 필요)
3. 재위탁 시 고객사 사전 동의
귀사가 AWS, Stripe, SendGrid 등 외부 서비스를 사용한다면, 이는 고객사 데이터의 재위탁에 해당합니다.
처리 방법:
1. DPA에 재위탁 가능한 서비스 목록 명시
(예: "AWS, Stripe 등 하위 처리자 목록은 [링크]에서 확인")
2. 새로운 하위 처리자 추가 시 고객사에 사전 통보
3. 고객사가 이의를 제기할 수 있는 절차 마련
4. 계약 종료 시 데이터 처리
고객사가 서비스 해지하면:
def handle_account_termination(customer_id: str, termination_date: date):
# 1. 데이터 내보내기 기능 제공 (해지 전 30일 이상)
enable_data_export(customer_id)
# 2. 해지 후 유예 기간 내 완전 삭제
# (보통 DPA에서 30~90일 명시)
schedule_deletion(
customer_id=customer_id,
delete_after=termination_date + timedelta(days=30)
)
# 3. 삭제 완료 증명서 발급 (엔터프라이즈 요구 시)
if is_enterprise(customer_id):
issue_deletion_certificate(customer_id)
고객사가 요구하는 보안 체크리스트
엔터프라이즈 고객사는 계약 전 보안 심사(Vendor Security Assessment)를 요구합니다. 미리 준비해두면 영업 속도가 빨라집니다.
✅ 고객사 보안 심사 대비 체크리스트
□ SOC 2 Type II 인증 또는 동등 보안 보고서
□ 침투 테스트(Pen Test) 연간 1회 이상 실시
□ 데이터 암호화 (저장 + 전송)
□ 접근 통제 및 권한 관리 정책
□ 직원 보안 교육 기록
□ 보안 사고 대응 절차 문서
□ 서브프로세서(하위 처리자) 목록 공개
□ 개인정보 처리 현황 기록 (ROPA)
데이터 격리 의무
B2B SaaS에서 고객사 데이터는 다른 고객사와 논리적으로 격리되어야 합니다.
-- 멀티테넌트 DB 설계 예시: tenant_id로 완전 격리
CREATE TABLE customer_records (
id UUID PRIMARY KEY,
tenant_id UUID NOT NULL REFERENCES tenants(id),
-- 모든 쿼리에 tenant_id 조건 필수
INDEX idx_tenant (tenant_id)
);
-- RLS(Row Level Security) 활용 (PostgreSQL)
ALTER TABLE customer_records ENABLE ROW LEVEL SECURITY;
CREATE POLICY tenant_isolation ON customer_records
USING (tenant_id = current_setting('app.tenant_id')::UUID);
침해 사고 발생 시 고객사 통지
귀사 시스템에서 침해가 발생하면 고객사에 즉시 통보해야 합니다. DPA에 통지 기한을 명시해두어야 합니다 (통상 24~72시간).
통지 내용 포함 항목:
- 침해 발생 일시 및 인지 일시
- 침해된 데이터 항목 및 규모 (추정)
- 현재까지 취한 조치
- 고객사가 해야 할 조치
- 추가 문의 연락처
pipaguard로 B2B SaaS 컴플라이언스 점검
고객사에 제공할 수 있는 보안·개인정보보호 현황을 자동으로 진단해드립니다.