사용자 사칭에 대한 의견

Discobot 스레드에서 오프토픽으로 플래그가 걸린 내용을 보고, 한 번의 클릭으로 사용자 사칭을 허용하는 것이 적절한지, 아니면 특정 시나리오로만 제한해야 하는지에 대해 Discourse 커뮤니티가 논의해 볼 가치가 있는지 궁금해졌습니다.

제 개인적인 관점으로는, 이는 타인의 IP나 ID를 사용하는 것과 같습니다. 이러한 행동은 법적 문제 이전에 윤리나 도덕적 측면에서도 적절하지 않습니다.

관리자가 다른 사용자로 포스트를 작성할 수 있는 원클릭 사칭 기능도 마찬가지라고 생각합니다.

Discourse에서 몇 가지 사항을 변경하려면 수동으로 앱에 진입하고 Postgres를 사용하며, 수많은 쿼리에서 데이터를 다루어야 합니다.

여러 관점과 다양한 법적 이해관계가 얽힌 스레드를 포함하고 있는 사칭 기능이 왜 이렇게 쉬운가요?

대부분의 사용자는 이를 잘 모를 것이며, 관리자가 데이터베이스에 접근하여 항목을 변경할 수 있다는 점은 모두가 알고 있습니다. 하지만 그것은 버튼을 클릭하여 다른 사용자로 포스트를 작성하는 것과 완전히 다릅니다.

포럼에서 문제가 발생하면 관리자는 사용자를 정지하거나 차단할 수 있으며, 그들은 웹사이트의 법적 책임 소재와 관련이 있습니다.

3개의 좋아요

저는 아닙니다. 그래서 어떤 곳에서는 그것이 사실이고, 어떤 곳에서는 사실이 아닙니다. 13년 전의 limit과 같은 경우입니다. 또는 자신의 전화 통화를 녹음하는 것과도 마찬가지입니다.

문제를 해결할 때, 기술적인 문제든 다른 문제든 매우 강력한 도구이기 때문입니다.

저에게 있어 행위 자체는 불법이 아닙니다. 다른 사람인 척하는 것이 제가 하는 일일 수 있지만, 그것은 경우에 따라 다릅니다.

그리고 IP는 개인의 재산이 아닙니다.

4개의 좋아요

개발자로서, Impersonate는 개발 프로세스에 정말로 훌륭하게 유용한 기능입니다. 이를 통해 관리자 역할에서 벗어나 신규 사용자의 역할로 빠르게 전환하여, 해당 사용자가 어떤 것을 볼 수 있는지 확인할 수 있습니다 …

15개의 좋아요

말씀하려는 핵심은, 간편하고(그리고 조용한) 사칭이 적어도 일부 커뮤니티에서는 기대를 저버릴 수 있다는 점입니다.

이 문제를 법률의 문제로 볼 것이 아니라 정책과 문화의 문제로 봐야 합니다. 그리고 사이트 관리자가 한 가지 방식이나 다른 방식을 선택할 수 있는 종류의 정책일 수도 있습니다.

사칭이 유용한 경우가 있긴 하지만, 관련 당사자에게 알림을 보내는 것이 좋을 수도 있습니다. 많은 경우, 관련 당사자가 사칭 요청을 승인할 수 있도록 하는 것도 방법입니다.

5개의 좋아요

솔직히 제 의견으로는 이 기능이 필요 없다고 생각합니다. 제거되어야 합니다. 하지만 팀이 이 기능을 유지하는 데에는 이유가 있을 거라고 확신합니다. 예를 들어 테스트 사용자 계정으로 전환하는 용도 같은 것 말입니다.

다른 사용자로 게시물을 작성하기 위해 임의 사용자 기능을 사용하는 것에 관해서는, 공개적으로는 단순히 3번의 클릭으로 소유권을 변경하는 기능을 사용할 수 있을 것입니다.

결론은 잘 선정된 관리자만 권한을 갖게 해야 한다는 것입니다.

이는 문제가 될 수 있습니다. @pfaffman의 클라이언트 사례처럼 일부 관리자는 인터페이스 유지보수만 담당하기 때문입니다. 모든 관리자는 전체 권한을 가지고 있지만, 자신의 업무 범위 밖의 기능은 사용하지 않습니다. 앞서 언급했듯이 해당 지역의 법률을 확인해야 합니다. 그러나 여행 시에도 주의가 필요할 수 있습니다.

디자이너/유지보수 담당자가 필요한 부분적인 관리자 기능을 사용자에게 부여하도록 API를 제안하는 것입니다.

사실이지만, 이는 특정 테스트 계정을 사용하여 수행할 수 있습니다. 여기서 핵심은 최종 사용자의 무결성(integrity)입니다. 이는 OP가 제안했듯이 악용되거나 부패된 용도로 사용될 수 있습니다.

2개의 좋아요

리눅스에서 sudo 명령을 처음 사용할 때 표시되는 경고문이 떠오릅니다:

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

즉, Impersonate를 처음 사용할 때나 매번 사용할 때 관리자에게 클릭을 통해 확인하는 창을 표시할 수 있으며, 그 안에는 타인의 프라이버시를 존중하고 정직하게 행동하라는 메시지가 담길 수 있습니다.

7개의 좋아요

잠깐만 생각해 보면, impersonate(대리 로그인) 기능은 좋은 기능입니다. 다만 이미 언급된 이유 때문만은 아닙니다.

Impersonate 사용 내역은 관리자 로그에 기록됩니다. 물론 관리자가 Rails 콘솔이나 Postgres에서 직접 SQL 쿼리를 실행하여 해당 항목을 삭제할 수는 있지만, 그렇게 하면 그 자체로 흔적이 남게 됩니다(로그 ID에 공백이 생기며, 다른 스태프가 이를 찾으면 이를 발견하게 됩니다).

Impersonate 기능이 없다면, 기록되지 않는 훨씬 더 악의적인 대안 남용을 관리자가 적극적으로 하게 될 것입니다. 그리고 방금 제가 쓴 내용을 읽는 개발자라면 제가 이제 곧 말할 내용을 이미 알아차렸을 것입니다.

단일 로그 항목을 쉽게 숨기고, 심지어 몇 달 전에 처리하여 다른 포럼 스태프가 두 가지 행위를 연결하지 못하게 하려면 어떻게 해야 할까요? 'All Users API Key(모든 사용자 API 키)'를 생성하면 됩니다. 로그 항목은 1개뿐이며, 원하는 시점에 원하는 사람으로 무엇이든 할 수 있습니다. 그리고 당신이 행동하는 사용자의 경우 일반적으로 기록되지 않는 행위라면, 아무런 흔적도 남기지 않습니다.

7개의 좋아요

개발(Dev) 환경에서는 본래 테스트 계정을 사용하는 경우가 많지만, Dev 환경에 테스트 계정을 설정하는 것은 추가적인 작업입니다. 이 기능은 로그아웃했다가 다시 로그인해야 하는 번거로움을 줄여줍니다. 이는 워크플로우를 느리게 만들며, 특히 여러 비밀번호를 설정해야 하는 것은 불편한 경험일 뿐만 아니라 속도를 떨어뜨리고 개발 환경에서는 아무런 가치도 더해주지 않습니다. Impersonate를 사용하면 관리자 비밀번호만 기억하면 됩니다.

저는 이 특정 사용 사례에서 이 기능이 제공하는 추가적인 이점을 단순히 보여드리고자 할 뿐입니다.

5개의 좋아요

약간 관련은 없지만, 이 방법이 훨씬 더 빠릅니다:

이것은 개발 환경에서만 작동합니다. 브라우저의 주소창에서 계정을 전환할 수 있습니다.

6개의 좋아요

아, 그거 역시 엄청 유용하네요. 감사합니다! undocumented features(문서화되지 않은 기능)의 위대한 책에 기록할 만한 거네요! :sweat_smile:

2개의 좋아요

테스트 계정을 만드는 데는 실제로 시간이 거의 들지 않으며, 이 아이디어에서는 Discobot이나 시스템 계정과 마찬가지로 Discourse 설치의 표준 부분이 될 것입니다. “Impersonate” 기능은 안전하게 유지되되, 예를 들어 다양한 수준의 사용자를 시뮬레이션할 수 있도록 수정 가능한 3~4개의 테스트용 널(null) 계정에서만 작동하도록 제한됩니다.

말씀하신 대로 높은 가치관과 정직성을 가진 사람들은 악의적인 목적으로 Impersonate를 사용하지 않을 수 있습니다. 하지만 그럼에도 불구하고 유혹은 여전히 존재합니다. 또한, 사이트의 멤버들이 관리자가 자신의 계정을 사용해 자신을 impersonate할 수 있다는 사실을 알게 되면 플랫폼에 대한 신뢰를 잃을 수 있습니다. 현재 Impersonate는 오직 정직성에만 의존하며, 선택적인 해결책이 없습니다. 이는 Encrypt Plugin이 커뮤니티가 기대하는 기능처럼 DM/PM을 비공개로 유지하도록 Discourse 포럼 사용자의 문제를 해결하는 것과 다릅니다. 단, DM/PM이 커뮤니티가 기대하는 것처럼 안전하고 비공개가 아니라는 것이 명확히 명시되지 않는 한요. Plus에서 저는 Impersonate가 Encrypt Plugin을 우회하는 데 사용될 수 있는지 구체적으로 물었고, Sam은 이것이 End-to-End 암호화이므로 보호를 우회할 수 없다고 설명하고 확인해 주었습니다.

저는 테스트 계정에서만 Impersonate를 사용합니다.

4개의 좋아요

사실이 아닙니다. 매번 테스트 사용자를 만드는 것은 귀찮은 일입니다. 저는 보통 편의를 위해 새로운 개발자용 설치를 하거나 dev fixtures를 실행합니다. (해당 fixture 사용자의 비밀번호는 제가 아는 한 알려져 있지 않습니다.) 그런 다음 관리자 계정 하나만 추가하면 됩니다. impersonation(대리 로그인) 기능을 사용하면 UI에서 계정 간 전환을 깔끔하게 할 수 있습니다. 이렇게 하면 됩니다.

여기서 당신의 부정적인 태도가 조금은 이해가 되지 않습니다 … 저는 정기적으로 업무에서 사용하는 유용한 기능이 있다는 점을 플랫폼에 칭찬한 것뿐입니다. 그런데 지금은 이 기능과 제 접근 방식을 공격하고 있는데, 그 목적은 무엇인가요? 우리의 삶을 더 어렵게 만들려고? 저는 그것을 매우 기꺼이 받아들이기 어렵습니다!

2개의 좋아요

정말로 “impersonate” 기능의 문제는 무엇인가요? 왜 아무 문제없는 것을 문제 삼고 계신 건가요? 어쨌든 이 기능은 꽤 유용하며, 빅테크 기업들도 프라이버시를 논한다면 이런 기능을 사용하고 있습니다. 프라이버시를 논하자면, 관리자는 사이트의 모든 것을 보고 모든 것을 할 수 있습니다. Google, Facebook 등 모든 빅테크 기업들이 그렇게 하고 있습니다. 이건 원래 새롭지 않은 일입니다.

그리고 문제가 사용자 측에서 발생했는데, 왜 개발자가 계정을 만들어야 하죠? 그런 경우 이 기능은 꽤 유용합니다. 문제가 있다면 그 기능을 쓰지 않으면 됩니다.

1개의 좋아요

전 그걸 공격하는 게 아닙니다. 단순히 남용하기 쉬운 기능이며, 이로 인해 수많은 문제가 발생할 수 있다는 점을 지적하는 것뿐입니다. 직접 사용을 위해 테스트 계정을 내장하면, 해당 기능이 사용 불가능해지므로 잠재적인 오용을 방지할 수 있습니다. 테스트 계정 생성에 관해서는, 제 2번째 탭에서 가상의 비이메일 주소로 계정을 생성한 뒤, 관리자 계정으로 로그인한 제 탭으로 돌아가서 인증을 확인해 보았습니다.

Impersonate(대리 접속)는 확실히 유용한 도구입니다. 기본 테스트 계정이나 관리자 패널 내에서 null 계정을 생성할 수 있는 관리자 옵션이 있다면, 이 계정을 Impersonate와 함께 사용할 수 있을 것입니다. 이렇게 하면 잠재적인 오용을 막을 수 있습니다.

앞서 언급했듯이, 커뮤니티가 스태프 계정이 자신들을 대리 접속할 수 있다는 사실을 인지하게 되면 커뮤니티 플랫폼에 대한 신뢰를 잃을 수 있습니다.

제가 여러분과 이곳의 수많은 훌륭한 분들을 읽어본 바로는, 여러분은 이 기능을 오용할 가능성이 거의 없을 것입니다. 하지만 이 기능의 개방적인 특성은 커뮤니티가 Discourse를 포럼 플랫폼으로서 덜 신뢰하게 만들 수 있습니다.

개방적인 토론을 부정적으로 보지 말아야 합니다. 장단점을 저울질하는 것은 자연스러운 일입니다.

3개의 좋아요

Sam’s Encrypt 플러그인은 WhatsApp과 같은 앱들이 초대되지 않는 한 대화를 볼 수 없다고 광고하는 방식과 유사하게, 관리자(Admin)와 모더레이터(Mods)가 DM/PM(다이렉트 메시지/개인 메시지)을 보는 것을 방지합니다. 따라서 DM/PM을 볼 수 있는 기능이 차단되며, 이는 명확히 명시되지 않은 상태에서 실제로는 비공개가 아님을 기대하는 프라이버시 침해로 간주될 수 있는 부분을 해결해 줍니다.

3개의 좋아요

그리고 이제 이 새로운 사용자들로 테스트 주제, 게시글, 좋아요 등을 만들어야 합니다… 계속 나열할 수 있겠네요!

이것은 효율적이지 않습니다.

1개의 좋아요

그러면 모든 커뮤니티에서 관리자가 사용자를 사칭할 수 있다는 사실을 공개적으로 홍보해야 합니다. 효율성을 위한 경쟁은 불신으로 대체됩니다.

@simon 님은 개발 환경에서 부분적으로 괜찮은 해결책을 게시했습니다.

1개의 좋아요

이건 완전히 별개의 문제입니다. 관리자로서 정말로 사용자의 개인 통신 내용을 읽고 싶다면, (암호화를 활성화하지 않는 한) 데이터베이스에 직접 들어가서 확인하면 됩니다.

웹사이트 소유자는 어쨌든 모든 것에 접근할 수 있고, 원하는 대로 수정 사항을 적용하며, 암호화를 켜고 끌 수 있고, 무엇이든 할 수 있습니다.

사용자로서 제3자 시스템을 사용할 때, 사람들이 내 데이터로 무엇을 할 수 있는지에 대해 직접적인 통제를 가질 수 없습니다.

어쨌든 저는 프로덕션(운영) 환경에 대해 논쟁하는 것이 아닙니다. 제 핵심은 이 기능이 개발(Development) 환경에서도 또한 그 이점이 있으며, 이를 쉽게 시연할 수 있다는 점이었을 뿐입니다.

따라서 제 관점에서는 이 건에 +1을 줍니다. 이제 이 주제에 대해 더 논쟁할 시간이 없습니다. 좋은 하루 보내세요.

3개의 좋아요

그렇다면 Google, Facebook, Microsoft 등 이 모든 것들을 사용하는 것을 중단하세요. 모두 같은 일을 하고 있기 때문입니다. 그들은 당신을 "대리 impersonate(대리 impersonate)"할 수 있다는 것을 공개적으로 말하지는 않습니다. 당신이 상상할 수 있는 모든 일을 할 수 있지만, 여전히 당신은 그들을 신뢰하고, 무엇이든 할 수 있다는 것을 알면서도 여전히 그들을 사용합니다. 그래서 진짜 문제가 무엇인지 모르겠습니다, 친구. 아마도 당신의 포럼 모드와 관리자가 걱정되시는 것일 수 있지만, 그래도 어떤 관리자가 “impersonate” 기능을 사용하더라도 모든 행동이 기록됩니다. 그래서 제가 이해할 수 없는 것이 문제점이 어디에 있는지입니다. 만약 이 기능이 문제였다면, Discourse 팀이 애초에 그걸 넣지 않았을 것입니다.

1개의 좋아요

물론 그 말에는 타당성이 있습니다. 하지만 이 기능을 프로덕션 환경에서 사용할 수 있게 하는 것은 위험합니다.

따라서 다른 기능들처럼, 이 기능을 루트 서버에서 활성화하도록 설정해야 하는 방식으로 조정하는 것이 좋을 것 같습니다.

개발 환경에서는 사용자가 테스트 환경임을 인식하고 있을 가능성이 높으므로, 가치가 있을 수 있다는 점은 이해합니다.

이미 암호화(Encrypt)를 사용하여 해당 개방된 기능을 닫는 방법을 언급한 바 있습니다.