솔직히 제 의견으로는 이 기능이 필요 없다고 생각합니다. 제거되어야 합니다. 하지만 팀이 이 기능을 유지하는 데에는 이유가 있을 거라고 확신합니다. 예를 들어 테스트 사용자 계정으로 전환하는 용도 같은 것 말입니다.
다른 사용자로 게시물을 작성하기 위해 임의 사용자 기능을 사용하는 것에 관해서는, 공개적으로는 단순히 3번의 클릭으로 소유권을 변경하는 기능을 사용할 수 있을 것입니다.
결론은 잘 선정된 관리자만 권한을 갖게 해야 한다는 것입니다.
이는 문제가 될 수 있습니다. @pfaffman의 클라이언트 사례처럼 일부 관리자는 인터페이스 유지보수만 담당하기 때문입니다. 모든 관리자는 전체 권한을 가지고 있지만, 자신의 업무 범위 밖의 기능은 사용하지 않습니다. 앞서 언급했듯이 해당 지역의 법률을 확인해야 합니다. 그러나 여행 시에도 주의가 필요할 수 있습니다.
디자이너/유지보수 담당자가 필요한 부분적인 관리자 기능을 사용자에게 부여하도록 API를 제안하는 것입니다.
사실이지만, 이는 특정 테스트 계정을 사용하여 수행할 수 있습니다. 여기서 핵심은 최종 사용자의 무결성(integrity)입니다. 이는 OP가 제안했듯이 악용되거나 부패된 용도로 사용될 수 있습니다.
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를 처음 사용할 때나 매번 사용할 때 관리자에게 클릭을 통해 확인하는 창을 표시할 수 있으며, 그 안에는 타인의 프라이버시를 존중하고 정직하게 행동하라는 메시지가 담길 수 있습니다.
잠깐만 생각해 보면, impersonate(대리 로그인) 기능은 좋은 기능입니다. 다만 이미 언급된 이유 때문만은 아닙니다.
Impersonate 사용 내역은 관리자 로그에 기록됩니다. 물론 관리자가 Rails 콘솔이나 Postgres에서 직접 SQL 쿼리를 실행하여 해당 항목을 삭제할 수는 있지만, 그렇게 하면 그 자체로 흔적이 남게 됩니다(로그 ID에 공백이 생기며, 다른 스태프가 이를 찾으면 이를 발견하게 됩니다).
Impersonate 기능이 없다면, 기록되지 않는 훨씬 더 악의적인 대안 남용을 관리자가 적극적으로 하게 될 것입니다. 그리고 방금 제가 쓴 내용을 읽는 개발자라면 제가 이제 곧 말할 내용을 이미 알아차렸을 것입니다.
단일 로그 항목을 쉽게 숨기고, 심지어 몇 달 전에 처리하여 다른 포럼 스태프가 두 가지 행위를 연결하지 못하게 하려면 어떻게 해야 할까요? 'All Users API Key(모든 사용자 API 키)'를 생성하면 됩니다. 로그 항목은 1개뿐이며, 원하는 시점에 원하는 사람으로 무엇이든 할 수 있습니다. 그리고 당신이 행동하는 사용자의 경우 일반적으로 기록되지 않는 행위라면, 아무런 흔적도 남기지 않습니다.
개발(Dev) 환경에서는 본래 테스트 계정을 사용하는 경우가 많지만, Dev 환경에 테스트 계정을 설정하는 것은 추가적인 작업입니다. 이 기능은 로그아웃했다가 다시 로그인해야 하는 번거로움을 줄여줍니다. 이는 워크플로우를 느리게 만들며, 특히 여러 비밀번호를 설정해야 하는 것은 불편한 경험일 뿐만 아니라 속도를 떨어뜨리고 개발 환경에서는 아무런 가치도 더해주지 않습니다. Impersonate를 사용하면 관리자 비밀번호만 기억하면 됩니다.
저는 이 특정 사용 사례에서 이 기능이 제공하는 추가적인 이점을 단순히 보여드리고자 할 뿐입니다.
테스트 계정을 만드는 데는 실제로 시간이 거의 들지 않으며, 이 아이디어에서는 Discobot이나 시스템 계정과 마찬가지로 Discourse 설치의 표준 부분이 될 것입니다. “Impersonate” 기능은 안전하게 유지되되, 예를 들어 다양한 수준의 사용자를 시뮬레이션할 수 있도록 수정 가능한 3~4개의 테스트용 널(null) 계정에서만 작동하도록 제한됩니다.
말씀하신 대로 높은 가치관과 정직성을 가진 사람들은 악의적인 목적으로 Impersonate를 사용하지 않을 수 있습니다. 하지만 그럼에도 불구하고 유혹은 여전히 존재합니다. 또한, 사이트의 멤버들이 관리자가 자신의 계정을 사용해 자신을 impersonate할 수 있다는 사실을 알게 되면 플랫폼에 대한 신뢰를 잃을 수 있습니다. 현재 Impersonate는 오직 정직성에만 의존하며, 선택적인 해결책이 없습니다. 이는 Encrypt Plugin이 커뮤니티가 기대하는 기능처럼 DM/PM을 비공개로 유지하도록 Discourse 포럼 사용자의 문제를 해결하는 것과 다릅니다. 단, DM/PM이 커뮤니티가 기대하는 것처럼 안전하고 비공개가 아니라는 것이 명확히 명시되지 않는 한요. Plus에서 저는 Impersonate가 Encrypt Plugin을 우회하는 데 사용될 수 있는지 구체적으로 물었고, Sam은 이것이 End-to-End 암호화이므로 보호를 우회할 수 없다고 설명하고 확인해 주었습니다.
사실이 아닙니다. 매번 테스트 사용자를 만드는 것은 귀찮은 일입니다. 저는 보통 편의를 위해 새로운 개발자용 설치를 하거나 dev fixtures를 실행합니다. (해당 fixture 사용자의 비밀번호는 제가 아는 한 알려져 있지 않습니다.) 그런 다음 관리자 계정 하나만 추가하면 됩니다. impersonation(대리 로그인) 기능을 사용하면 UI에서 계정 간 전환을 깔끔하게 할 수 있습니다. 이렇게 하면 됩니다.
여기서 당신의 부정적인 태도가 조금은 이해가 되지 않습니다 … 저는 정기적으로 업무에서 사용하는 유용한 기능이 있다는 점을 플랫폼에 칭찬한 것뿐입니다. 그런데 지금은 이 기능과 제 접근 방식을 공격하고 있는데, 그 목적은 무엇인가요? 우리의 삶을 더 어렵게 만들려고? 저는 그것을 매우 기꺼이 받아들이기 어렵습니다!
정말로 “impersonate” 기능의 문제는 무엇인가요? 왜 아무 문제없는 것을 문제 삼고 계신 건가요? 어쨌든 이 기능은 꽤 유용하며, 빅테크 기업들도 프라이버시를 논한다면 이런 기능을 사용하고 있습니다. 프라이버시를 논하자면, 관리자는 사이트의 모든 것을 보고 모든 것을 할 수 있습니다. Google, Facebook 등 모든 빅테크 기업들이 그렇게 하고 있습니다. 이건 원래 새롭지 않은 일입니다.
그리고 문제가 사용자 측에서 발생했는데, 왜 개발자가 계정을 만들어야 하죠? 그런 경우 이 기능은 꽤 유용합니다. 문제가 있다면 그 기능을 쓰지 않으면 됩니다.
전 그걸 공격하는 게 아닙니다. 단순히 남용하기 쉬운 기능이며, 이로 인해 수많은 문제가 발생할 수 있다는 점을 지적하는 것뿐입니다. 직접 사용을 위해 테스트 계정을 내장하면, 해당 기능이 사용 불가능해지므로 잠재적인 오용을 방지할 수 있습니다. 테스트 계정 생성에 관해서는, 제 2번째 탭에서 가상의 비이메일 주소로 계정을 생성한 뒤, 관리자 계정으로 로그인한 제 탭으로 돌아가서 인증을 확인해 보았습니다.
Impersonate(대리 접속)는 확실히 유용한 도구입니다. 기본 테스트 계정이나 관리자 패널 내에서 null 계정을 생성할 수 있는 관리자 옵션이 있다면, 이 계정을 Impersonate와 함께 사용할 수 있을 것입니다. 이렇게 하면 잠재적인 오용을 막을 수 있습니다.
앞서 언급했듯이, 커뮤니티가 스태프 계정이 자신들을 대리 접속할 수 있다는 사실을 인지하게 되면 커뮤니티 플랫폼에 대한 신뢰를 잃을 수 있습니다.
제가 여러분과 이곳의 수많은 훌륭한 분들을 읽어본 바로는, 여러분은 이 기능을 오용할 가능성이 거의 없을 것입니다. 하지만 이 기능의 개방적인 특성은 커뮤니티가 Discourse를 포럼 플랫폼으로서 덜 신뢰하게 만들 수 있습니다.
개방적인 토론을 부정적으로 보지 말아야 합니다. 장단점을 저울질하는 것은 자연스러운 일입니다.
Sam’s Encrypt 플러그인은 WhatsApp과 같은 앱들이 초대되지 않는 한 대화를 볼 수 없다고 광고하는 방식과 유사하게, 관리자(Admin)와 모더레이터(Mods)가 DM/PM(다이렉트 메시지/개인 메시지)을 보는 것을 방지합니다. 따라서 DM/PM을 볼 수 있는 기능이 차단되며, 이는 명확히 명시되지 않은 상태에서 실제로는 비공개가 아님을 기대하는 프라이버시 침해로 간주될 수 있는 부분을 해결해 줍니다.
그렇다면 Google, Facebook, Microsoft 등 이 모든 것들을 사용하는 것을 중단하세요. 모두 같은 일을 하고 있기 때문입니다. 그들은 당신을 "대리 impersonate(대리 impersonate)"할 수 있다는 것을 공개적으로 말하지는 않습니다. 당신이 상상할 수 있는 모든 일을 할 수 있지만, 여전히 당신은 그들을 신뢰하고, 무엇이든 할 수 있다는 것을 알면서도 여전히 그들을 사용합니다. 그래서 진짜 문제가 무엇인지 모르겠습니다, 친구. 아마도 당신의 포럼 모드와 관리자가 걱정되시는 것일 수 있지만, 그래도 어떤 관리자가 “impersonate” 기능을 사용하더라도 모든 행동이 기록됩니다. 그래서 제가 이해할 수 없는 것이 문제점이 어디에 있는지입니다. 만약 이 기능이 문제였다면, Discourse 팀이 애초에 그걸 넣지 않았을 것입니다.