Crius
(Crius)
6월 5, 2024, 8:54오전
1
안녕하세요, 데이터베이스에서 특정 사용자의 모든 흔적을 완전히 삭제해야 하는 상황이 생길 수 있습니다. 민감한 내용이라 세부 사항은 생략하겠습니다만, GDPR 규정상에도 시스템에 사용자 정보의 사본을 보유하고 있지 않음을 증명해야 할 수 있습니다.
제가 파악한 몇 가지 부분이 있습니다:
현재 익명화 과정은 사용자 프로필에는 적합합니다.
편집 기록이 삭제된다는 전제 하에, 사용자의 모든 답글을 사용자 요청에 따라 삭제됨으로 수정하는 것은 허용 가능합니다.
따라서 제가 실제로 필요한 것은 해당 사용자의 모든 메시지를 사용자 요청에 따라 삭제됨으로 대체하고, 해당 메시지의 모든 편집 기록을 지우는 쿼리(또는 ruby 함수?)입니다.
db/discourse 코드에 충분한 경험이 있는 분이 이 문제를 도와줄 수 있을까요?
pfaffman
(Jay Pfaffman)
6월 5, 2024, 3:35오후
3
그냥 삭제해 주실 수 있나요?
u=User.find_by_username('byebye')
posts=Post.where(user_id: u.id)
그리고 모든 게시글에 PostDestroyer를 호출하면 됩니다. (정확한 방법은 바로 떠오르지 않습니다.)
게시글을 "삭제됨…"으로 대체하고 싶다면 다음과 같이 하면 됩니다.
posts.update_all(raw: "deleted by user request")
그리고 PostRevision 모델에서 데이터를 지워야 할 수도 있습니다.
posts.each do |p|
bad=PostRevision.where(post_id: p.id)
bad.destroy_all
end
테스트로 몇 개는 수동으로 실행해 보거나, 정말 신중하게 하려면 스테이징 사이트에서 실행해 보세요.
Crius
(Crius)
6월 5, 2024, 8:06오후
4
잘 모르겠어서 물어본 거예요
앞으로 며칠 안에 스테이지 환경에서 시도해 볼게요. Jay, 항상 감사해요! 정말 보물 같은 존재예요!
다른 사람들이 주제에 대해 흥미로운 토론으로 기여했을 수 있는데, 누군가가 떠난다는 이유만으로 토픽이 사라지는 건 원치 않으니까, 가능하면 수정하는 쪽이 더 나을 것 같아요.
다만 한 가지 걱정되는 점은 사용자가 수천, 수만 개의 답글을 남긴 경우예요.
모든 데이터 삭제 요청을 받은 경우, 게시물이 고도로 개인적인 정보를 포함하지 않는 한, 익명화만으로도 GDPR 요건을 충족할 수 있으므로, 모든 게시물/답글을 삭제할 필요는 없습니다. 이는 아마도 이미 알고 계실 것입니다.
이 주제에 대해 여기에서 많은 논의가 이루어졌으며, 법은 국가마다 다릅니다.
Heliosurge
(Dan DeMontmorency)
6월 5, 2024, 10:04오후
6
실제로 첫 번째 사용자가 익명화되면, 이후 익명화된 사용자들을 모두 첫 번째 사용자에게 병합하면 됩니다.
Dan DeMontmorency:
미래의 익명 사용자들을 단순히 병합하세요
이 경우, 다른 플랫폼(예: Discord)에서처럼 모든 익명 계정이 "삭제된 사용자"로 표시되게 됩니다.
항상 그렇게 하는 것을 권장하지는 않지만, 랜덤 번호가 한 명의 작성자에게만 배정되지 않기 때문에 게시글 작성자의 신원을 보호할 수 있는 방법 중 하나입니다. 단점으로는 게시글이 같은 작성자의 것인지 다른 작성자의 것인지 구별하기가 어려워져 토론 주제를 따라가기 힘들어질 수 있다는 점입니다.
Crius
(Crius)
6월 18, 2024, 10:09오전
8
이것은 특히 답변이 많은 사용자의 경우 대부분 불가능합니다.
수천 개의 메시지가 있는 사용자를 병합하려고 할 때, 새 사용자의 메시지가 하나뿐인 경우에도 사용자 병합 기능이 자주 실패하는 것을 확인했습니다. (예시: 기존 사용자가 돌아와서 인증 정보를 잃어버린 경우, 저에게 신원 확인을 요청하고 확인이 완료된 후, 몇 개의 답변만 있는 새 사용자를 원래의 기존 사용자와 병합하려는 상황)