사용자 디렉터리와 상위 기여자에서 관리자 사용자를 숨기기

로그아웃 상태에서는 작동하지 않습니다:

https://meta.discourse.org/u?exclude_groups=admins&order=likes_received

로그아웃 상태:

로그인 상태:

자신의 포럼에서 로그아웃된 상태로 있을 때, 받은 좋아요 순으로 정렬된 사용자 목록에서 더 이상 제외되지 않는 것을 발견하면서 이 문제를 알게 되었습니다.

/u?exclude_groups=admins가 설정되어 있더라도 관리자 그룹의 멤버가 노출되는 것이 의도된 것인가요?

이 문제는 로그인하지 않은 사용자에게 관리자 그룹의 멤버가 기본적으로 표시되지 않기 때문에 발생하는 것 같습니다. 예를 들어, Meta의 관리자 그룹(https://meta.discourse.org/g/admins)으로 테스트해볼 수 있습니다.

그룹 설정에서 이 부분을 구성할 수 있으며, 이렇게 하면 문제가 해결될 것입니다(직접 테스트는 하지 않았습니다).

알지 못하는 그룹이나 멤버를 볼 권한이 없는 그룹으로 사용자 디렉토리를 필터링할 수 있다면 정보 누출이 발생할 수 있습니다. 이는 관리자 그룹의 경우 중요하지 않을 수 있지만, Meta의 숨겨진 기업 고객 그룹으로 사용자 디렉토리를 필터링할 수 있다고 상상해 보세요.

게시하기 전에 로그인하지 않은 사용자에게 숨겨진 https://meta.discourse.org/g/admins 페이지를 방문했습니다. 이것이 제가 이 주제를 시작한 이유입니다. /g/admins는 미등록 사용자에게 숨겨져 있지만, /u?exclude_groups=admins을 방문할 때 Admin 그룹의 멤버는 여전히 볼 수 있습니다. 이것은 적어도 이상해 보입니다.

수정:

저의 포럼이 이미 "로그인한 사용자"로만 설정되어 있음을 확인했습니다:

여전히 /u?exclude_groups=admins 페이지에서 관리자(admins)가 보입니다. 이 포럼에서도 마찬가지입니다. /g/admins에서는 비회원에게 숨겨져 있지만, 로그인하지 않은 사용자도 /u?exclude_groups=admins에서 관리자(admins)가 보이거나 목록에 표시됩니다.

이제 저도 혼란스럽습니다. 제목을 보고 /g/admins/u?exclude_groups=admins이 모두 로그인한 사용자에게는 작동하지만, 로그아웃된 사용자에게는 작동하지 않는다고 예상했습니다.

아마도 우리는 그룹 페이지에서 “숨김(hidden)” 상태에 대해 다른 의미로 이야기하고 있는 것 같습니다.
제가 "숨김"이라고 한 것은 비공개(private)와 같은 의미였습니다. /g/admins를 방문하면 로그아웃된 사용자는 오류 페이지로 이동합니다. 아마도 여러분은 대부분의 사용자가 그룹 페이지에서 기본 그룹을 볼 수 없다는 사실(관리자 제외)을 생각하고 계신 것 같습니다. 이는 추가적인 코드가 그들을 숨기기 때문입니다. 하지만 그룹이 그룹 페이지에 표시되지 않더라도, 링크를 클릭한 사용자는 해당 그룹의 페이지를 볼 수 있습니다.

비공개(hidden)인 상태가 그룹을 비밀로 만들며, 이것이 사용자 디렉터리에서 필터가 작동하지 않는다고 생각하는 이유입니다. 그렇지 않으면 정보가 유출됩니다. 단순히 표시되지 않는 그룹은 비밀이 아닙니다.

즉, 로그인한 사용자만 접근할 수 있도록 제한하고 계신 것이죠. 방문자에게도 그룹에 대한 접근 권한을 주고 싶다면, "모두"를 선택하는 대신 왜 가시성과 접근을 멤버로 제한하고 계신 건가요?

로그아웃 상태이고 URL = /u?exclude_groups=admins:

잘못 이해하고 있다면 죄송합니다. /u?exclude_groups=admins는 관리자가 목록에 포함되지 않는다는 뜻인 줄 알았거든요. 하지만 아닙니다.

현재는 로그인한 상태일 때만 제외되고, 로그아웃 상태에서는 포함됩니다.

/u?exclude_groups=admins가 로그인한 방문자와 미등록 방문자 모두에게 작동하면 좋겠습니다.

그 스크린샷으로 말씀하시고자 하는 내용을 좀 더 자세히 설명해 주시겠어요?

그룹 접근을 로그인한 사용자로 제한하고, 그룹 멤버 접근도 로그인한 사용자로 제한하고 있는 걸 확인했습니다.

그런데 로그인하지 않은 사용자가 그룹 멤버의 데이터에 접근할 수 없다는 점을 보여주고 계시네요. 저로서는 그건 당연해 보입니다. 두 설정 모두 "모두"를 선택했다면 그렇게 작동할 것이라고 기대했을 겁니다.

"관리자 그룹에 누가 포함되어 있는지 방문자에게 숨기고 싶다"고 말씀하시는 것 같은데, 동시에 사용자 디렉토리를 필터링하는 데 데이터가 사용되지 않는다고 불평하고 계십니다.

그룹의 구성원이 누구인지 알 권한이 없다면, 그 그룹의 멤버를 제외할 수 없습니다.

여기서 @Moin 님이 말씀하신 내용을 다시 한번 강조합니다. exclude_groups=admins가 작동하게 되면, 관리 그룹에 대한 접근 권한이 없는 사람들도 관리 그룹의 구성원을 추측할 수 있게 됩니다.

따라서 이는 의도된 동작이며 변경될 가능성이 낮습니다. 관리 그룹의 구성원을 누구나 알아볼 수 있기를 원하신다면, 해당 그룹을 모든 사용자에게 공개해야 합니다.

같은 논리는 단순히 가입만 한 사용자에게도 적용됩니다. 완전히 새로운 사용자가 가입한 후 exclude_groups=admins를 사용하면 관리자 그룹이 목록에서 숨겨지므로, 필터링된 목록과 필터링되지 않은 목록을 비교하여 이미 멤버십을 추론할 수 있습니다.

“추론해 내는” 데 필요한 조건은 무료 계정을 만드는 것뿐이며, 누구나 몇 초 만에 할 수 있습니다. 그렇다면 여기서 로그아웃된 방문자와 1분 전에 만든 계정 사이의 실질적인 차이는 무엇일까요?

배경 설명을 드리자면, 제가 실제로 달성하려는 것은 사이드바 플러그인의 랭킹에서 관리자 그룹이 "가장 많은 좋아요를 받은 사용자"나 상위 기여자 목록에 포함되지 않는 것입니다.

사이트 설정에 따라 다릅니다. 많은 사이트에서는 공개 가입이 비활성화되어 있습니다.

그렇다면 그룹의 가시성을 조정하는 것이 좋은 대안이 될까요? 아니면 그 방식에 문제가 있는 건가요?

:slight_smile: 그중 많은 곳이 그렇습니다. 제가 방문하는 곳 대부분이 그렇죠.

네, 분명히 그렇습니다. 하지만 보안 기능의 경우, 설명된 대로 정확히 작동하도록 설계해야 합니다. 누군가 그룹 멤버십을 숨기기로 결정했다면, 그것은 100% 신뢰할 수 있게 작동해야 합니다.

그렇게 하려면 관리자 그룹과 그 멤버들의 가시성을 "모두"로 변경해 보세요. 그러면 방문자에게도 데이터가 제공되고 필터가 작동해야 합니다. 특히 누구나 로그인하여 /g/admins를 방문할 수 있다고 하셨으니, 로그아웃된 사용자도 방문할 수 있는지는 중요하지 않을 것입니다.

사실, 회원 자격을 숨기는 것만으로는 여기서는 신뢰할 수 있는 방법이 아닙니다. 많은 포럼, 제 포럼을 포함해서, 관리자 중 일부가 가장 활발한 사용자들입니다. 그래서 디렉토리를 활동량 순으로 정렬하면 보통 바로 관리자 한두 명을 찾아볼 수 있습니다.

관리자 그룹의 회원 자격은 노출된 활동량에서 쉽게 추론할 수 있습니다. 특히 https://meta.discourse.org/u는 기본적으로 활동량 기준으로 정렬되어 있기 때문입니다:

물론 모든 프로필을 숨기는 것도 가능합니다. 하지만 제 주장은, 현재 /u?exclude_groups=admins에서 무시되고 있는 부분에 대해 주장되는 보안상의 이점이 거의 없거나, 있더라도 표면적인 수준에 불과하다는 것입니다.

따라서 이 경우 가입이 실제로 보안을 강화하는 것은 아닙니다. 로그아웃 상태이든 계정을 새로 만들든, 활동량 순으로 정렬하면 관리자를 알아낼 수 있습니다. /u?exclude_groups=admins를 통해 목록에서 관리자를 제외시키려 해도, 그들의 활동 수준은 여전히 공개되어 있기 때문입니다.

사실 이것이 제가 처음에 이를 보고한 이유입니다. 관리자를 숨기는 것이 의도된 보안 기능이라면, 비사용자가 이를 알아내는 것을 우선적으로 차단하는 것이 기대됩니다. 하지만 현재 상황은 그 반대입니다: 로그아웃된 사용자는 기본값인 /u 페이지를 방문하기만 하면 더 쉽게 이를 알아낼 수 있습니다.

이런 역전된 상황이 의도된 것이 아닐지도 모른다고 생각하게 만든 것입니다.

수정:
제게는 다시 말하지만, 이 문제는 보안에 관한 것이 아닙니다. 그것은 여러분 쪽에서 제기한 논점입니다. 저는 단지 사이드바 플러그인의 순위와 /u 페이지에서 관리자의 활동량이 순위 목록에 포함되지 않기를 원할 뿐입니다.

말씀하신 점은 이해하지만, 그룹 보안 시스템이 @admins 그룹에만 적용되는 것은 아니라는 점을 고려하는 것이 중요합니다. 포럼에 @super-secret-lurkers 그룹이 있다면 동일한 보안 모델이 해당 그룹에서도 작동해야 합니다 :wink:

'그룹에 속하지 않음’을 판별할 수 있는 것은 궁극적으로 '그룹에 속함’을 볼 수 있는 것과 동일한 개념입니다.

네, 이해가 됩니다. 관리자 그룹의 가시성을 '모두’로 업데이트하면 괜찮으신가요?

아니요, 게시물을 열기 전에 이미 그 방법을 시도해 보았습니다. 비회원이 그룹을 볼 수 있어야 제외 기능이 작동하는가 생각했지만, 아닙니다. /u?exclude_groups=admins는 비회원 방문자에게는 완전히 무시됩니다. :confused:

사용자를 숨기는 것이 아니라, 특정 그룹의 구성원이 누구인지에 대한 정보를 숨기는 것입니다. 그래서 숨겨진 그룹의 멤버는 디렉터리에서 볼 수 있지만, 그룹의 페이지는 볼 수 없습니다. 사용자가 존재한다는 것은 알지만, 그 사용자가 비밀 그룹에 속해 있는지 알 수 없습니다.

예를 들어, 고객 A를 위한 그룹이 있지만 포럼의 다른 사용자에게 이 그룹의 존재를 알리고 싶지 않다면, 그룹의 가시성을 제한할 수 있습니다. 물론 멤버들은 다른 모든 곳에서 볼 수 있습니다. 게시물을 작성하는 모습이나 사용자 디렉터리에서 그들을 볼 수 있지만, 그들이 고객 A 그룹에 속해 있다는 사실은 알 수 없습니다.

관리자 그룹의 가시성도 동일한 방식으로 제한합니다. 방문자에게는 누가 해당 그룹에 속해 있는지 알 수 없도록 하지만, 해당 사용자들이 포럼을 사용한다는 사실은 알 수 있도록 합니다.

아, 알겠습니다! 그렇다면 버그일 수도 있겠네요.

확인차 묻습니다: 그룹 표시 설정 그리고 그룹 멤버 표시 설정을 모두 '모두’로 설정해 두셨나요?

로그아웃 상태에서도 @Moin이 어떤 관리자인지 이미 확인할 수 있습니다. 모두 한꺼번에 보이는 것은 아닙니다.

로그인하지 않은 상태:

하지만 제가 여기서 언급한 문제는 기밀성이나 보안에 관한 것이 아니었습니다:

아니요, 저는 “이 그룹의 구성원을 누가 볼 수 있습니까?” 옵션만 전환했습니다.

“이 그룹을 누가 볼 수 있습니까?” 옵션은 활성화하지 않았습니다. 그 옵션을 켜면 /g/admins 명령어가 공개적으로 접근 가능해지기 때문입니다.

하지만 /u?exclude_groups=admins가 제대로 적용되는지 테스트해볼 수는 있습니다.

잠깐 있겠습니다.