소셜 로그인은 개발이 편하고 사용자 경험도 좋습니다. 카카오, 구글, 네이버 OAuth 하나면 회원가입 장벽이 크게 낮아지죠.
그런데 이 편리함 뒤에 개인정보보호법상 의무가 따릅니다. "카카오가 알아서 처리하겠지"라는 생각은 위험합니다. 소셜 로그인으로 받아온 개인정보를 처리하는 주체는 여러분의 서비스입니다.
소셜 로그인이 만드는 PIPA 의무
소셜 로그인 흐름을 법적으로 분석하면 다음과 같습니다.
사용자 → 카카오(제3자) → 여러분의 서비스
↑ ↑
카카오 자체 처리 개인정보 수신 후 처리
(카카오 약관 적용) (PIPA 의무 발생)
카카오·구글·네이버는 자신의 개인정보처리방침을 따릅니다. 하지만 그 데이터가 여러분의 서버에 들어오는 순간 여러분이 개인정보처리자가 됩니다.
어떤 정보가 넘어오는가
| 플랫폼 | 기본 제공 정보 | 추가 요청 가능 정보 | |--------|--------------|-------------------| | 카카오 | 카카오 계정 ID, 닉네임 | 이메일, 생년월일, 성별, 전화번호 | | 네이버 | 이름, 이메일, 프로필 사진 | 생년월일, 성별, 연령대, 전화번호 | | 구글 | 이메일, 이름, 프로필 사진 | (추가 scope 요청 가능) | | 애플 | 이메일 (릴레이 주소 가능), 이름 | 없음 |
핵심 원칙: 필요한 정보만 요청하세요.
전화번호를 서비스에서 사용하지 않는데 카카오 전화번호 scope를 요청하면 과도한 수집으로 PIPA 위반입니다.
개인정보처리방침에 반드시 기재할 내용
소셜 로그인을 도입하면 처리방침에 2가지를 추가해야 합니다.
1. 수집 항목에 소셜 계정 정보 명시
■ 수집하는 개인정보 항목
[소셜 로그인 이용 시]
- 카카오: 카카오 계정 ID, 닉네임, 이메일(선택)
- 구글: 이메일 주소, 성명, 프로필 이미지 URL
- 네이버: 이름, 이메일 주소, 프로필 이미지 URL
2. 제3자로부터 수집하는 경우 별도 기재
개인정보보호법 시행령 제14조에 따라 정보주체 이외의 자(소셜 플랫폼)로부터 수집하는 경우 이를 처리방침에 명시해야 합니다.
■ 제3자로부터의 개인정보 수집
당사는 다음 외부 서비스로부터 개인정보를 수집할 수 있습니다.
- 제공자: 카카오(Kakao Corp.)
수집 항목: 카카오 계정 ID, 닉네임, 이메일
목적: 회원 식별 및 로그인 처리
소셜 로그인 동의 화면 설계
❌ 흔한 실수
"카카오로 시작하기" 버튼만 있고, 어떤 정보를 가져오는지 안내가 없는 경우.
사용자가 소셜 로그인 버튼을 클릭하면 카카오 동의 화면이 뜨지만, 이것은 카카오와 사용자 간의 동의입니다. 여러분의 서비스가 그 정보를 어떻게 쓰는지는 별도로 안내해야 합니다.
✅ 올바른 설계
소셜 로그인 버튼 근처에 다음 정보를 간결하게 표시하거나, 최초 로그인 후 추가 동의 화면을 제공합니다.
카카오로 시작하기
─────────────────
로그인 시 카카오 닉네임, 이메일을 수집합니다.
[개인정보처리방침 보기]
또는 최초 소셜 로그인 직후 추가 동의 레이어 표시:
[카카오에서 다음 정보를 가져옵니다]
• 닉네임: hong**
• 이메일: h***@kakao.com
□ (필수) 개인정보 수집·이용에 동의합니다.
□ (선택) 마케팅 수신에 동의합니다.
[시작하기]
소셜 플랫폼을 수탁사로 등록해야 하나?
이것이 가장 많이 헷갈리는 부분입니다.
| 관계 | 설명 | |------|------| | 위탁 (수탁사 등록 필요) | 여러분이 카카오에게 개인정보 처리를 맡기는 경우 | | 제3자 제공 (동의 필요) | 여러분이 카카오에게 개인정보를 넘겨주는 경우 | | 제3자로부터 수집 (처리방침 기재) | 카카오로부터 개인정보를 받아오는 소셜 로그인 |
소셜 로그인은 카카오로부터 수집하는 구조이므로, 원칙적으로 카카오를 수탁사로 등록할 필요는 없습니다.
단, 만약 여러분이 카카오 알림톡·문자 발송 등을 위해 사용자 정보를 카카오에 전달한다면, 그 부분은 처리 위탁에 해당하여 수탁사 등록이 필요합니다.
회원 탈퇴 시 소셜 연결 해제
회원 탈퇴를 처리할 때 소셜 플랫폼 연동도 해제해야 합니다.
카카오의 경우 탈퇴 시 연결 끊기 API를 호출하지 않으면, 카카오 입장에서는 여러분의 앱이 여전히 해당 사용자의 정보에 접근할 수 있는 상태가 됩니다. 이는 개인정보 파기 의무 위반으로 이어질 수 있습니다.
# 카카오 연결 끊기 예시
import requests
def unlink_kakao(kakao_user_id, admin_key):
url = "https://kapi.kakao.com/v1/user/unlink"
headers = {
"Authorization": f"KakaoAK {admin_key}",
"Content-Type": "application/x-www-form-urlencoded"
}
data = {"target_id_type": "user_id", "target_id": kakao_user_id}
response = requests.post(url, headers=headers, data=data)
return response.json()
탈퇴 처리 체크리스트:
- [ ] DB에서 회원 개인정보 삭제 또는 파기
- [ ] 카카오 연결 끊기 API 호출
- [ ] 구글 OAuth 토큰 폐기 (revoke)
- [ ] 네이버 연결 해제 API 호출
소셜 계정 연동 정보의 보유 기간
소셜 로그인으로 받아온 정보도 보유 기간을 설정해야 합니다.
■ 개인정보 보유·이용 기간
회원 탈퇴 시 즉시 삭제
단, 관계 법령에 따라 다음 정보는 해당 기간 보관:
- 전자상거래 계약·청약철회 기록: 5년 (전자상거래법)
- 소비자 불만·분쟁 처리 기록: 3년 (전자상거래법)
실무 체크리스트
소셜 로그인 연동 전 이 목록을 확인하세요.
동의 설계
- [ ] 소셜 로그인 scope는 서비스에 실제로 필요한 항목만 요청한다
- [ ] 최초 로그인 시 수집 항목과 처리 목적을 사용자에게 안내한다
- [ ] 필수·선택 동의가 분리되어 있다
처리방침
- [ ] 소셜 로그인으로 수집하는 항목을 명시했다
- [ ] 제3자(소셜 플랫폼)로부터의 수집임을 기재했다
- [ ] 보유 기간을 명시했다
탈퇴 처리
- [ ] 탈퇴 시 소셜 플랫폼 연동 해제 API를 호출한다
- [ ] DB에서 소셜 계정 관련 정보를 파기한다
- [ ] 파기 이력을 기록한다
PipaGuard로 소셜 로그인 컴플라이언스 점검
소셜 로그인 동의 화면, 처리방침 기재, 탈퇴 처리까지 — 빠진 부분이 없는지 자동으로 점검받고 싶다면 PipaGuard를 이용해 보세요.
pipaguard.vercel.app에서 무료로 시작할 수 있습니다.