회원 파트를 구현하면서 생각해 보고 찾아보았던 내용에 대해 공유하고자 작성합니다.
모든 내용의 기준은 2023.09.27을 기준으로 작성되었습니다. 틀린 부분이 있을 수도 있습니다.
1. 회원의 개인정보 처리 동의
웹 사이트에서 회원가입을 하게 되면, 회원 정보에 대한 수집에 동의를 구하는데 어떤 기준인지 알아보았고, 개인정보 처리 동의 안내서 - 개인정보 보호위원회
를 기반으로 작성하였습니다.
동의받을 때 준수할 사항
필요한 최소한의 개인정보만을 수집하여야 한다.
- 정보 수집을 할 때는 수행하려는 업무 목적 등을 고려하여 합리적인 범위 내에서 필요한 최소한의 개인정보를 수집해야 합니다.
- 최소한 개인 정보에도 각 정보별
용도와 선택의 자유
를 제공해 줘야 합니다.- Ex) 수집 목적, 이용 내용, 수집 항목, 보유기간, 동의 여부
- 여기서 주의해야 할 점은 해당 목적에 따른 개인정보 수집을 입증할 수 있어야 합니다.
- 또한, 이용 여부가 불확실한 경우 미리 수집하는 것은 불필요한 개인 정보 수집에 해당할 수 있습니다.
- 더보기
- 제 3자의 동의 범위
- 제공받는 자의 범위를
~등
과 같이 포괄적으로 고지하여 범위가 확대되지 않아야 하며, 제3자를 확인할 수 있는 홈페이지 링크 등을 안내해야 한다.
- 제공받는 자의 범위를
동의내용의 명확한 고지
- 수집 이용 :
목적, 항목, 보유 및 이용기간, 동의를 거부할 권리가 있다
는 사실 및 동의 거부에 따른 불이익이 있는 경우에는 그 불이익에 대한 내용 고지 - 제공 :
제공받는 자, 목적, 항목, 보유 및 이용기간, 동의를 거부할 권리가 있다
는 사실 및 동의 거부에 따른 불이익이 있다는 내용 고지
- 개인정보 이용 목적은
개인정보보호위원회
가 고시하는 방법으로 표시하여야 한다. - 중요 내용 표시 방법
- 글씨의 크기는 최소 9포인트 이상, 다른 내용보다 20퍼센트 이상 크게 하여 알아보기 쉽게 한다.
- 글씨의 색깔, 굵기 또는 밑줄 등을 통하여 그 내용을 명확하게 명시
- 동의 사항이 많아 중요한 내용이 명확히 구분되기 어려운 경우 중요한 내용이 쉽게 확인될 수 있도록 구분하여 표시
- 홍보 목적의 개인정보 처리
- 부가 서비스 제공, 제휴서비스 제공 등으로 명시하면 안 된다.
- 고유식별정보 및 민감정보의 별도 동의
- 주민등록 번호를 제외한 고유식별정보 및 민감정보는 법령에 근거하거나 별도로 동의를 받은 경우에만 처리가능
- 전 항의 주민등록 번호의 경우 정보 주체의 동의를 근거로 처리할 수 없다. 법률, 대통령령 등에 처리를 요구하는 경우에만 가능, 즉 법이나 령에 의거한 수집 근거가 필요하다.
- 꼭 필요한 경우 그 목적을 명확히 하고, 향후 수집 가능성이 있다는 이유로 동의를 받으면 안된다.
동의의사 확인
- 동의의사 확인은
서명, 날인, 정보주체의 음성, 전자우편, 동의 항목에 클릭 등
으로 나타낼 수 있다. - 전항의 동의의사에서 동의함 체크 박스는 기본값으로 설정되어 있으면 안된다.
- 만 14세 미만 아동의 동의는 개인정보를 처리하기 위하여 그 법정대리인의 동의를 받아야 한다.
그렇다면 개인정보 처리방침을 정하지 않는다면?
개인정보 처리방침을 정하지 않거나, 공개하지 않는 경우 개인정보 처리자는 1천만원이하 과태료가 적용됩니다. 주의!
2. 동의서는 어떻게 작성할까?
업무처리에 필요한 개인정보 확인
업무에 반드시 필요한 최소한의 개인정보 결정해야 하고, 고유식별정보나 민감정보가 있는지 확인 필수!
- 고유식별정보 : 주민등록번호, 운전면허번호, 여권번호, 외국인등록번호
- 민감정보 : 건강, 개인의 신체적, 생리적, 행동적 특징에 관한 정보, 특정 개인을 알아볼 목적으로 일정한 기술적 수단을 통해 생성한 정보
동의의 필요성 확인
동의가 필요하면 동의서에 추가, 필요하지 않다면 수집 및 이용 근거 안내
동의가 없는 경우?

또한, 동의 없이 처리할 수 있는 개인정보라는 입증 책임은 개인정보처리자가 부담(법 제22조 제3항) 따라서 주의 필요.
다만, 종전에는 불가피하게
필요한 경우로 한정하였으나, 최근 개정에서는 불가피하게
를 삭제하여 서로 예상할 수 있는 합리적인 범위 내에서는 상호 신뢰에 기반하여 별도의 동의 없이도 개인정보를 수집하여 이용할 수 있다.
개인정보의 보유기간 확인
수집 이용하는 개인정보의 보유기간 설정 (관련 법령 및 처리방침 참고)
- Ex) 전자상거래법에서 규정한 소비자 보호에 관한 법률 : 거래에 관한 기록은 5년
- 일반적인 사용자에 대한 개인정보, 즉 특정할 수 있는 정보는 불필요한 시점을 기점으로 5일입니다.
개인정보의 제3자 제공 여부 확인
- 개인정보를 제공받는 자
- 개인정보를 제공받는 자의 개인정보 이용 목적
- 제공하는 개인정보 항목
- 개인정보를 제공받는 자의 개인정보 보유 및 이용기간
- 동의를 거부할 권리가 있다는 사실
- 불이익의 내용
개인정보 처리업무 위탁 여부 확인
위탁은 가능하며, 동의는 필요가 없다. 다만 홈페이지 등에 게시할 필요가 있다.
3. 동의서
동의서 제목 기재
동의서의 목적과 내용을 쉽게 이해할 수 있도록 동의서 제목을 작성
- Ex) 제휴 서비스의 이벤트 - 혜택 등이 정보 발송을 위한 동의
동의내용 기재
- 개인정보의 항목
- 목적
- 처리 내용
- 보유 및 이용기간

단, 위에서도 언급했듯, 중요 사항의 글씨 크기는 최소한 9포인트, 다른 내용보다 20퍼센트 이상 크게 해야 한다.
제 3자 제공 내용 기재
동의사항을 구분하여 정보주체가 명확하게 인지 후 각각 동의를 받아야 한다.
관련 이미지


동의 후 조치사항
동의의사를 확인 및 정보주체가 만 14세 미만의 아동이라면 법정대리인의 동의 확인
법정대리인 동의의 확인 방법

개인정보 파기 특례규정 삭제
기존에는 법 제39조의6의 규정에 따라 정보통신 서비스 제공자등은 1년 동안 서비스 이용이 없는 이용자의 개인정보는 파기하거나 별도 분리하여 보관하도록 의무 삭제
- 정보통신시버스 제공자들에게만 별도로 부여되던 정보주체의 미이용 기간에 따른 개인정보 파기 의무사항은 없다.
- 법 제21조 개인정보의 파기 규정에 따라 보유기간의 경과, 개인정보의 처리 목적 달성 등 개인정보의 파기 사유가 발생하였을 때, 지체 없이 파기하여야 한다.
- 다른 법령에 따라 보존하는 경우 분리하여 저장 관리하도록 하는 일반규정의 적용을 받는다.
유의사항
- 서비스의 특성과 정보주체의 이용주기 등 개별적 상황을 고려하여 자율적으로 휴먼정책 유지 여부 정할 수 있다.
- 개인정보 파기 시 정보주체에게 사전에 고지하여 의사 확인 여부 필요가 있다.
- 전항의 개인정보 파기는 복구 또는 재생 되지 아니하도록 조치해야 한다.
- 기존 DB에 통합하여 운영하려는 경우, 본인인지 여부를 확인하는 절차를 마련하는 등 안전성 확인을 위한 조치를 병행할 필요가 있다.
다른 법령이 정하는 예외적인 경우
- 계약 또는 청약철회 등에 관한 기록 : 전자상거래에서 소비자 보호에 관한 법률 (5년)
- 대금결제 및 재화 등의 공급에 따른 기록 : 전자상거래등에서의 소비자보호에 관한 법률 (5년)
- 소비자의 불만, 분쟁 처리에 관한 기록 : 전자상거래등에서의 소비자보호에 관한 법률에 따라 3년
- 신용정보의 수집 / 처리 및 이용 등에 관한 기록 : 신용정보의 이용 및 보호에 관한 법률에 따라 3년
- 본인확인에 관한 기록 : 정보통신망 이용촉진 및 정보보호 등에 관한 법률에 따라 6개월
- 방문에 관한 기록 : 통신비밀보호법에 따라 3개월
추가
이러한 동의서를 만들어 주는 곳도 존재했지만 현재는 접속이 안됩니다. 다만 유사한 서비스는 지속적으로 제공하기 때문에 개인정보포털 도 이용해 보는 것도 좋을 거 같습니다.
또한 개인정보 보호법과 시행령, 행정규칙에 대해서도 나와있기 때문에 유용한 사이트입니다.
4. 정리
위에 내용을 정리하면
- 개인정보처리자는 보유기간의 경과, 개인정보의 처리 목적 달성등 개인정보가 불필요하게 되었다면 파기해야 한다.
- 파기는 복구 또는 재생되지 않도록 해야 한다.
- 하지만, 다른 법령에 따라 보존하여야 하는 경우 유지 가능
- 개인정보의 보존 필요성이 있는지 여부는 객관적인 판단으로 이뤄져야 한다.
여기서 궁금했던 점은
다른 법령의 보존 기간까지 개인 정보를 저장하면 안 되나?
각 법령은 서로 다른 기록의 기한이 존재합니다. 그렇다면 가장 긴 시간을 기준으로 다른 데이터도 저장하면 안 되나?라고 생각도 했었는데,
개인정보 보호법 제 21조 (개인정보의 파기)에서도 나와있듯이 보유기간이나 처리 목적을 위해 그 기한이 필요한가
이기 때문에 제한이 있기 때문에 법적으로 불가능합니다.
이걸 기반으로 회원에 대해서 생각해 보았습니다.
5. 회원 생성 (개발의 관점)
회원 생성에서는 어떤 문제를 고민해야 할까요? 가장 크게는 개인정보
일 거 같습니다. 개인정보 보호법의 대상이 되는 회원은 여러 중요한 정보를 가지게 되는데 이러한 데이터를 암호화
하여 저장해야 합니다.
먼저, 개인정보 보호법의 대상이 되는 개인정보
의 범위에 대해 생각해 봐야 할 거 같은데 흔히 생각하는 비밀번호가 가장 대표적인 개인정보에 해당합니다.
만약 비밀번호를 암호화했다고 생각해 볼게요. 개인정보 보호 다했다 끝~? 이 아닙니다!
개인정보 보호법에서 말하는 개인정보는 개별적으로도 대상이 되지만, 여러 데이터들을 조합하여 개인을 특정
할 수 있는 정보들도 개인정보 보호법의 대상입니다. 쉽게 생각하면, 계약서에서 말하는 특정하는 것
과 동일하다고 생각하면 됩니다.
만약, 홍길동이라고 하면 동인인물이 있을 수 있지만, 주소 및 생일을 함께 기입하여 특정 지을 수 있기 때문입니다.
어떻게 해결할까? - 민감한 정보를 저장하는 방법
해결할 수 있는 방법으로는 암호화
와 분리 저장
이라고 볼 수 있는데, 분리 저장
의 경우 개별적인 값이 개인을 특정 지을 수 있기 때문에 적절하게 혼합하여 사용해야 합니다.
(암호화 방식에 대해서는 작성할 내용이 많아서 추가 작성합니다)
대표적인 암호화 알고리즘으로는 대칭키 암호 알고리즘
, 공개키 암호 알고리즘
, 일방향 암호 알고리즘
이 있습니다.
만약, 비밀번호의 경우 일방향이 아닌 양방향 암호화를 한다면 암호화 위반 사항입니다.
6. 회원탈퇴 (개발의 관점)
회원 탈퇴의 경우 회원 생성보다 법에 관해 지켜야 할 사항이 많기 때문에 생각해야 할 것이 많습니다.
고민1 - 회원의 개인정보
위에서도 언급했듯이, 개인정보가 포함되어 있는 회원은 탈퇴를 할 때 모든 개인정보를 삭제해야 합니다.
따라서 데이터가 복구되지 않도록 탈퇴 회원의 원본 데이터를 물리적으로 삭제하거나, 데이터가 복원되지 않게 덮어쓰기를 수행하는 등 다시 재생시킬 수 없는 기술적인 방법을 사용해야 합니다.
- 물리적 삭제 : db에서 회원에 대한 정보를 삭제하는 방법, 회원과 관련된 다른 데이터들의 무결성이 깨진다.
- 데이터 마스킹 : 데이터 자체를 개인정보들을 전부 null과 같이 개인정보를 복원하지 못하게 마스킹한다.
고민2 - 데이터의 무결성
회원이 탈퇴하는 경우에는 5일 이내로 데이터를 바로 삭제하면 됩니다. 하지만 여기서 문제점은 전자상거래 법에서 보면 각 기록에 대한 보존 기한이 전부 다르기 때문에 문제인데
예를 들어, 결제에 대한 정보를 저장한다고 가정해 보겠습니다. 그러면 소비자 보호에 관한 법률에 의해 5년 동안 결제에 대한 정보를 가지고 있어야 합니다.
하지만, 그전에 회원이 탈퇴한다면? 회원과 관련된 데이터는 회원과의 연관관계가 존재하지만, 해당 회원이 없어지면서 무결성이 깨지게 됩니다.
따라서 이를 해결하기 위한 몇 가지 생각한 점은
1. 회원의 개인정보 데이터 마스킹으로 개인을 특정 지을 수 없게 한다.
이렇게 하면 개인정보에 대한 데이터는 없게 되지만, DB에는 남아있다 보니 용량을 차지한다. 또한 DB의 해당 데이터 영역을 여러 번 덮어써야 하는 단점이 있습니다.
2. 회원과 다른 데이터 간 연관관계 끊기
FK 자체를 끊음으로써 참조 무결성이 존재하더라도 에러가 안 나도록 할 수도 있을 거 같습니다. 이렇게 하면 회원의 정보를 바로 삭제도 가능하고 DB에서 없애도 된다는 장점이 있습니다.
고민3 - 보유 기간
다음으로는 '데이터를 바로 삭제하는 것이 아니라 사용 목적을 다하였더라도 그 기록 목적에 따라 가지고 있어야 하는 기한이 있는데 어떻게 구현하면 좋을까?'에 대한 생각으로는 대체로 flag를 통한 방식을 사용합니다.
대체적으로 Soft delete
와 Hard delete
에 대한 차이로 생각하면 좋을 거 같습니다.
(Soft delete와 Hard delete에 대해서는 코드와 함께 추가적으로 작성할 예정입니다. => 추후 추가)
쉽게 말해 삭제했는가?
에 대한 boolean type
과 같은 칼럼을 통해 해당 회원이나 데이터가 삭제되었는지를 확인하면 되는데, 시간에 따른 삭제를 원하므로 시간 타입을 가지는 칼럼을 통해 삭제 시기가 오면 삭제를 하도록 합니다.
다만, 여기서 고민이 생기는데
고민4 - 삭제를 언제 해야 할까?
데이터를 삭제하기 위해서는 매번 시간을 비교해야 하는데, '데이터들이 많다고 하면 그 많은 데이터들을 확인하는 시간으로 다른 요청이 느려지는 것은 아닌가?'입니다.
사실 이에 대해서는 팀원분들과 얘기하고 나온 결론이 "사람들이 이용하지 않는 새벽 시간대"밖에 없었던 거 같습니다.
고민5 - 회원과 휴먼계정
회원은 최근 1년 동안 활동이 없다면 휴먼 계정으로 넘겨야 하는데, 여기서 휴먼계정은 별도의 DB를 분류하여 관리해야 합니다. 이렇게 되면 접근 권한도 다르게 설정하여야 하지만, 현실적으로 별도 DB 구축이 어려울 경우도 생깁니다.
그렇다면 어떻게 해야 할까 찾아봤습니다.
휴먼계정을 별도의 DB에 분리하여 관리하기가 힘들다면, 개인정보 자체를 삭제하면 됩니다. 단 1개월 전에 휴먼계정으로 전환한 다는 점은 고지
해야 합니다.
이렇게 휴먼계정에서 동일하게 개인정보를 삭제로 넘어간다면, 회원 테이블에서는 삭제 기간인지 확인해야 하며, 휴먼 계정인지도 확인해야 한다. 따라서 회원 테이블 전체를 2번이나 확인해야 하는 문제가 있다.
이러한 문제는 어떻게 해결하면 좋을까 하다.
휴먼계정을 관리하는 테이블처럼 삭제 테이블에 회원에 관한 칼럼을 넣고 관리하는 방식을 생각했습니다.
마무리
회원 하나를 구현하는데 많은 고찰이 들어갔고, 실제로 서비스에 적용하려다 보니 많은 고민이 생겼던 거 같습니다.
회원 테이블이 개인정보와 많은 연관이 있다 보니 많은 법들을 어느 정도 알아야 했습니다. 법을 적용하기 위한 여러 개발 방식에 대해 생각해 본 계기가 되었고, 동일한 고민을 하시는 분들이 계실 수도 있어서 공유합니다
위 글은 법과 관련된 사항도 있고 하다 보니 정확한 정보 전달이 힘들었던 점이 있었습니다. 최대한 정확한 정보만 전달하려 했습니다. 그럼에도 잘못된 부분은 있을 수 있다 생각하고 알려주시면 감사히 고치겠습니다ㅎㅎ
그리고 추후 지속적으로 확인하면서 업데이트할 예정입니다!
참고 문헌
1. 알기쉬운 개인정보 처리 동의 안내서 - 개인정보보호위원회
2. 개인정보 보호법 및 시행령 개정 안내서 초안 - 개인정보보호위원회
- 해당 초안은 2023.09.15일에 시행되는 개인정보 보호법의 온오프라인의 개인정보처리 일원화에 대한 내용입니다.