문제: SAML, 익명화된 사용자 및 차단

재현 단계:

  • SAML 사용자인 사용자 A가 존재합니다
  • 관리자는 사용자 A가 더 이상 Discourse를 사용할 수 없도록 하기를 원합니다
  • 관리자는 사용자 A에 대해 “사용자 익명화” 기능을 사용합니다(모든 항목이 익명화되지 않음 => 좋습니다)
  • 관리자는 사용자 A의 추가 액세스를 차단하기 위해 사용자를 차단하기를 원합니다(사용자 차단 기능)

참고: 사용자는 SAML 서버에서 제거되지 않았으며 여전히 활성 상태입니다

기대 동작:
사용자가 SAML 서버에 여전히 존재하더라도, 사용자는 차단되었으므로 로그인할 수 없어야 합니다.

현재 동작:
사용자가 로그인할 수 있습니다.

Discourse에서 사용자 계정을 일시 정지해 보셨나요?

죄송합니다. “block” 대신 “suspend”(정지)를 의미했습니다.
네, 이 방법을 시도해 보았습니다.

문제는 사용자가 익명화되면 사용자 이름이 변경된다는 점입니다. 아마도 SAML이 이를 인식하지 못하여 기존 사용자를 찾을 수 없으므로(= 사용자가 이전에 익명화되었기 때문에) 새로운 사용자로 추가하는 것 같습니다.

discourse-saml이 discourse-saml/lib/saml_authenticator.rb at 230a58b2d86465ec8aa75fb755558d4fdda73773 · discourse/discourse-saml · GitHub 에서 사용자 이름 기반으로 사용자를 찾으려고 한다고 추측합니다.

익명화된 사용자를 SAML 사용자 데이터와 매칭할 수 있는 방법이 필요할 것 같습니다. 어떤 방법으로 어떤 속성을 검증해야 하는지 아는 분이 있을까요?

리플을 올리는 것이라 죄송하지만, 저희도 정확히 같은 문제를 겪고 있습니다.

  • 사용자는 SSO 제공자를 통해서만 로그인합니다.
  • UserA는 포럼에서는 차단되어 있지만 SSO에서는 차단되지 않았습니다.
  • UserA가 사용자 데이터 삭제를 요청하여 계정을 익명화했습니다.
  • UserA는 SSO 로그인을 통해 새로운 계정을 생성할 수 있습니다.

계정이 없는 이메일을 수동으로 정지하는 방법이 있을까요?

새 계정을 그냥 중지하라고요?

네, 사용자가 포럼과 상호작용할 수 있는 기회를 주지 않는 것이 좋고, 새 사용자가 누구인지 계속 감시하고 싶지도 않을 거예요.

IP를 차단하는 것과 마찬가지로 이메일을 일시 정지할 수 있는 방법이 있어야 합니다.

사용자가 요청한 삭제 처리 방법과 그것이 적용되지 않는 경우/장소에 대해 이해하지 못하고 있는 것 같습니다.

사용자가 사이트에 가입할 때, 등록 목적을 위해 제공된 정보(이메일과 사용자 이름)를 처리할 권리가 있습니다. 사용자가 정지된 상태에서 사이트를 떠나려 하고, 자신의 "장난감"을 가지고 가려 한다고 해서 그 처리가 끝나지는 않습니다.

밴 또는 정지된 사용자의 이메일을 삭제할 의무가 없습니다. 잊힐 권리는 처리 목적보다 우선하지 않습니다.

그렇다면 GDPR(일반 데이터 보호 규칙)과 사용자가 자신의 데이터 삭제를 요청할 수 있는 권리와 어떻게 양립할 수 있나요?

계정을 유지하는 경우, 이는 여전히 해당 사용자의 데이터와 연관되어 있으며, 사용자가 사용자 데이터 삭제를 요청한 상태에서도 그 정보를 계속 보유하게 됩니다.

솔직히 말해, 저는 법률 전문가가 아닙니다.

사용자는 개인정보 처리에 대한 동의를 철회할 수 있지만, 동의는 GDPR(일반 데이터 보호 규정)에 따라 데이터 처리를 합법적으로 만드는 근거 중 하나일 뿐입니다.

다른 근거로는 데이터 처리자의 정당한 이익(제6조 1항 f: 처리자의 정당한 이익 추구 목적에 필요한 경우)이 있을 수 있습니다. 이러한 정당한 이익의 예로는 사용자가 새로운 계정을 생성하지 못하도록 하는 것이 있습니다. 그렇지 않으면 사용자가 GDPR을 남용하여 자신의 부당한 행위 사실까지 포함해 모든 기록을 삭제할 수 있기 때문입니다.

GDPR 제17조, 강조는 필자.

  1. 데이터 주체는 정당한 지연 없이 데이터 처리자에게 자신에 관한 개인정보의 삭제를 요청할 권리를 가지며, 다음 중 하나의 근거가 적용되는 경우 데이터 처리자는 정당한 지연 없이 개인정보를 삭제할 의무가 있습니다. (…)
    데이터 주체가 처리의 근거가 된 동의를 철회하는 경우 (…) 그리고 처리에 대한 다른 법적 근거가 없는 경우;

이는 기본적으로 다음과 같은 의미를 갖습니다. 네, 포럼은 사용자의 요청에 따라 사용자의 데이터를 삭제해야 하지만, 포럼이 해당 사용자를 정지시켰기 때문에 사용자가 새 계정을 생성하지 않도록 보장할 방법이 필요합니다. 따라서 사용자의 요청에도 불구하고 정지된 사용자의 이메일 주소를 기록으로 남겨둘 만한 정당한 이유가 있습니다.

Discourse에서 이를 수행하는 한 가지 방법은 (이미 정지된) 사용자를 익명화한 후, 익명화된 이메일 주소를 실제 이메일 주소로 되돌리는 것입니다. 동일한 근거에 따라 등록 IP 주소를 유지하고 차단 목록에 추가하는 것도 고려할 수 있습니다.