관리자나 모드가 사용자의 쪽지를 읽으면 알림이 어떻게 뜨나요?

안녕하세요 :wave:

오늘 제가 아주 끔찍한 문제를 발견했습니다. 관리자가 관리자 패널을 벗어나지 않고도 사용자의 개인 메시지를 읽을 수 있다는 점입니다.

또한 관리자는 사용자 계정의 로그인 기록을 숨기고, 비밀번호와 2FA를 우회하여 암호화된 메시지(Discourse Encrypt)를 읽을 수도 있습니다.

저만 관리자의 이러한 권한과 Discourse 개발진의 변함없는 입장, 즉 사용자 프라이버시가 아무런 가치를 갖지 않는다는 사실에 경악하고 있는 것이 아닐 것이라 생각합니다.

혹시 이 문제를 해결하여 관리자의 권한 행사를 더 투명하게 만들고, 관리자가 사용자의 계정에 접근했거나 개인 메시지를 읽은 경우 사용자에게 알리는 방법을 찾으신 분이 계신가요?

백엔드에는 관리자가 다른 사용자의 메시지를 열 때마다 로그를 기록하도록 설정할 수 있는 옵션이 있습니다:

최종 사용자에게 알림은 보내지 않지만, 적어도 로그 항목은 남습니다. 이것이 목적에 부합합니까?

아니요, 로그에서 이 동작은 관리자/모더레이터만 볼 수 있습니다.

관리자/모더레이터가 사용자 계정에 로그인하거나 사용자의 개인 메시지를 읽을 경우 사용자에게 알림을 보내고 싶습니다.

시스템 봇을 통해 개인 메시지로 알림을 보내거나, 사용자 프로필에 이러한 로그 동작을 표시하는 방식으로 처리할 수 있습니다. 예를 들어 사용자 계정 설정에 “로그” 메뉴를 만들어, 사용자가 이 동작(관리자/모더레이터의 로그인/개인 메시지 읽기)을 확인할 수 있도록 하는 것입니다.

기억이 맞다면, PM(개인 메시지) 접근 기능은 관리자(admin)만 사용할 수 있습니다._MOD(운영진)은 다른 사용자의 메시지를 열 수 없습니다. 따라서 간단한 답은, Discourse 인스턴스 자체를 관리하고 운영하는 특정 인원에게만 관리자 권한을 부여하는 것입니다. 기술적인 관점에서 보면, 인스턴스를 관리하는 사람은 로그 항목을 생성하지 않고도 데이터베이스 자체를 통해 PM에 접근할 수 있습니다. 사이트와 해당 서버의 관리자로서, 관리자가 이러한 수준의 접근을 하는 것을 궁극적으로 방지하는 유일한 방법은 그들이 키를 가지고 있지 않도록 콘텐츠를 암호화하는 것입니다.

원하시는 보안 수준을 위해 기본적으로 다음이 필요합니다:

저는 아직 사용해 본 적이 없지만, 이 도구가 키를 클라이언트 측에서 생성하고 저장하여 위장(impersonation) 기능을 통해 접근할 수 없도록 한다고 믿습니다. 키는 여전히 로컬에 저장되며, 위장 기능을 통해 접근할 수 없을 것입니다(제가 아는 한). 이는 데이터베이스 자체에 있는 데이터를 보호하는 사실상 유일한 방법입니다.

디스코urse의 "오픈소스"가 관리자로서 제 기회를 심각하게 제한한다는 점이 매우 불만스럽습니다. 이 포럼의 세밀한 설정이 매우 제한적이며, 다음과 같은 작업을 수행할 수 없습니다:

  • 이메일 활성화 비활성화
  • 기본 배지 삭제
  • nginx CSP를 안전한 onebox로 변경 (iplogger)
  • 모든 로그 및 통계 삭제
  • 관리자 패널을 통한 플러그인 설치
  • 도메인(localhost가 아닌 경우)을 사용하여 docker 없이 설치
  • 플러그인 없이 온라인 사용자 확인 (웃기게도)
  • 미국 외 서버 로케일에 Discourse 설치
  • 포럼 설치 시 데이터베이스에 사용자명/비밀번호 설정

하지만 Discourse는 사용자를 감시하고 사용자 활동에 대한 더 많은 정보를 기록하는 데 매우 좋은 제품입니다.

Discourse Encrypt (deprecated)

네, 이 플러그인을 사용해 관리자 패널을 통해 암호화된 메시지를 읽을 수 있었습니다. 정말 슬픈 일입니다.

실제로는 그렇지 않습니다. 상대방의 키로 복호화할 수 있는 경우를 제외하고는 다른 사용자의 암호화된 메시지를 읽을 수 없습니다. 암호화/복호화는 클라이언트 측에서 이루어지며, 서버에서는 암호화된 상태로 메시지가 저장됩니다.

관리자가 개인 메시지를 읽을 수 있는 문제는 자주 논의되는 사안이며, 이는 변경되지 않을 것입니다. 프라이버시와 보안을 우려하신다면, 관리자 접근 권한을 엄격하게 제한하시고, 사이트 설정을 변경하거나 백업을 다운로드해야 할 때만 관리자 계정으로 로그인하시기 바랍니다.

Discourse에 대해 상당히 불만족스러워 보이네요. 오픈 소스이므로 다른 소프트웨어를 사용하셔도 됩니다.

아, 오늘 테스트해 보겠습니다.

네, 어떤 소프트웨어든 보안과 개인정보 보호가 매우 중요합니다.

따라서 제안을 받아들여 감시 기능이 있는 Discourse 사용을 거부하겠습니다.

정말 암호화된 메시지를 보고 있었던 거 맞아? 사용자가 실제로 설정을 완료하고 메시지를 보내고 받는 데 사용하기 시작해야 해. 이렇게 하기 전에 생성된 기존 메시지는 암호화되지 않으며, 여전히 암호화되지 않은 메시지를 보내는 것을 선택할 수도 있어.

그렇게 듣게 되어 안타깝지만, 모든 것이 잘 되길 바라며 행운을 빈다!

네.
저는 이 플러그인을 모든 사용자를 대상으로 기본 활성화 상태로 설정하여 신규 설치 시 적용했습니다.

잘 가세요!

암호화되지 않은 메시지를 보고 있는 것 같습니다. 관리자가 메시지를 복호화하려면 사용자의 비밀번호를 알아야 하는데, 비밀번호는 PBKDF2 해시로 저장되어 있어 해시를 무차별 대입 공격(브루트포스)으로 풀기에는 비용이 많이 들고 시간이 오래 걸리는 과정입니다. 추가적인 프라이버시가 필요하시다면 암호화된 개인 메시지(Private Message) 플러그인의 만료 기능이 있습니다. 어쨌든, 관리자 UI에 개인 메시지 읽기 옵션이 없더라도 암호화 플러그인을 사용하지 않는 한 데이터베이스에는 평문으로 저장되어 있을 것입니다.

오픈소스라고 해서 프라이버시가 보장되는 것은 아닌 것 같습니다. 용어를 혼동하고 계신 것 같습니다.