보안 - 부권(방법은?)

(왜 나중에 설명했는지)

저희는 Create(생성)와 See(보기) 권한 등이 있습니다. 몇몇 영역을 제외한 사이트 전체에 대해 특정 그룹의 See 권한을 구현할 수 있는 쉬운 방법이 필요합니다. 기본적으로 더 높은 우선순위로 적용되는 음의 권한(negative right)이죠.

여기서 그냥 소리 내어 생각해보는 중입니다. 제가 생각할 수 있는 모든 가능성을 테스트하는 데 시간이 좀 걸릴 테니까요. 누군가가 "이렇게 해보는 건 어때?"라고 말해주길 은근히 기대하고 있습니다.

See 권한만 부여되는 그룹을 만들 수도 있을 것 같습니다. 만약 어떤 사용자가 See 권한을 가지고 다른 모든 사람이 Write 권한을 가진다면, 그 영역은 해당 그룹에 대해 See 전용이 될 만큼 Discourse가 충분히 지능적일 것이라고 추측합니다. 이것은 일종의 자동화된 음의 권한 구현(가장 저렴한 옵션)이 되겠지만, 논리적인 방법은 아닙니다. 문제는, 설령 작동하더라도 “불필요하지만 필요한” 사용자를 위해 모든 영역을 돌아다니며 그룹을 추가하는 데 시간이 꽤 걸린다는 점입니다.

사용자를 everyone(모두)에서 제거할 수는 없으니, 음.

문제 일으키는 사용자를 제외한 everyone을 새로운 유사-모두(pseudo-everyone) 그룹으로 만드는 것은 막대한 작업이 될 것입니다(스크립트를 사용하더라도 마찬가지).

말했듯이, 문제를 해결하려고 소리 내어 생각해보는 중입니다… 정말로 ‘아하!’ 하는 순간이 오길 바라며 :smiley: .


실제 문제는 한 사용자가 현재 읽고 있는 어떤 영역이든(자주 최신 게시물)에 자신의 게시물을 작성하는 것입니다. 큰 문제는 아니지만, 게시물이 너무 논리적으로 연결되지 않아 다른 사용자를 방해할 수밖에 없습니다. 문제는, 그는 한 영역(100%, 돈 관련 영역)에서 절대적으로 필요하지만, 저는 그가 다른 모든 곳에서 보기(seeing) 모드로만 제한되기를 바랍니다.

다행히 포럼의 대부분은 잠긴 영역으로 구성되어 있지만, 그가 몇 안 되는 공용 영역 중 하나로 침범할 때마다 사람들은 여전히 주간 메일 등을 받게 됩니다.

3개의 좋아요

Discourse에서 이 요구사항에 가장 가까운 기능은 사용자를 무음(silence) 처리하는 것입니다. 이렇게 하면 사용자는 게시글을 작성할 수는 없지만 읽기/보기는 가능합니다:

https://meta.discourse.org/t/discourse-moderation-guide/63116#silence-the-user-26

특정 카테고리에서만 게시글을 작성하도록 허용할 만큼 세밀하지는 않습니다.

하지만 관리자 가이드에 언급된 대로, 무음/차단 기능을 사용하기 전에 먼저 사용자에게 직접 연락해 보는 것도 하나의 옵션입니다:

https://meta.discourse.org/t/discourse-moderation-guide/63116#the-difficult-user-22

1개의 좋아요

아니요, 해당 권한은 항상 누적됩니다.

4개의 좋아요

아, 불행히도 이건 안 먹혀요. 이 사람이 포럼의 절반을 소유하고 있어서 결정에 95%의 시간이 필요하거든요 :slight_smile: . 뭐, 드문 일이니 괜찮고, 정리하는 일도 그다지 번거롭지 않아요 (그 사람 게시글이 어디로 갔는지에 대한 질문은 생략하고요). 좋은 기술적 해결책은 항상 "기술적 문제"라는 답변에 의존할 수 있죠 :slight_smile:

방금 대화를 해봤더니, apparently 최대 3개라는 게시글 수 제한에 도달하면 어디서든 스팸을 시작하는 것 같아요. 하지만 아마도 다음에 잊을 때까지 다시 메시지로 보내놨을지도 모르겠네요…

음, 신뢰 수준을 0으로 고정하는 것 같은 방법이 유용할 수도 있겠네요 :smiley: .

1개의 좋아요

거의 항상 말해왔지만, 부정적 권한(negative permissions)은 대개 나쁜 설계의 결과라고 봅니다. 실제로 유용한 상황을 발견하다니 놀랍네요.

결국 비트마스크와 비슷하죠. 먼저 모든 추가적(additive) 권한을 적용하고, 마지막에 모든 부정적 권한을 적용하는 방식입니다.

이 방식이 고령자에게 유용할 수 있다고 봅니다(정치적으로 올바른 예시는 아닙니다). 사용법을 안내하는 영역과 특정 그룹이 관심 있는 영역만 접근을 허용하는 식이죠.

아마 제가 거의 모든 영역을 격리(walled off)해서 만들었기 때문에 운이 좋았던 것 같습니다. 기본적으로 사람들은 자신에게 관심이 없는 것들로부터 방해를 받지 않거든요. 실제로 사용자가 특정 영역을 "시청하지 않음"으로 표시하거나 음소거(mute)하는 것은 99%의 사용자에게는 너무 어렵습니다. 또는 일일/주요 다이제스트를 끄는 것도 마찬가지고, 모든 것을 스팸으로 이동한 뒤 나중에 특정 알림을 받지 못했다고 불평하는 편이 더 쉽습니다 :D.

1개의 좋아요

다른 예로, Marketplace 채널에서 특정 사람들을 차단하고 싶은 경우가 있습니다.

저는 동적 그룹을 지원하는 플러그인을 개발하고 있습니다. 이를 통해 다음과 같은 부울 대수를 사용할 수 있습니다.

groupA = groupB AND NOT groupC

groupB 또는 groupC에 사용자가 가입하거나 탈퇴하면 groupA가 자동으로 업데이트됩니다. 계획은 약 한 달 안에 완성하는 것입니다.

4개의 좋아요

이 개념은 이전에 여기서도 논의된 적이 있습니다:

여전히 이 의견에 찬성합니다 :smiling_face:

1개의 좋아요

좋아요, 검색은 보통 비슷한 것을 찾긴 하지만 여기에서 정확한 단어를 찾는 건 좀 고역이었어요 :). 기본적으로 항상 최상위 우선순위를 갖는 제외(exclude) 권한 그룹을 만드는 것이 가장 쉬운 방법일 것 같아요 (여러 그룹이나 너무 복잡한 구조는 피하는 거죠).

아무튼, 이게 언제 나올지, 아니면 아예 나올지조차 모르겠네요.

제 인생에서 상속 + 제외 권한 시스템을 두 번 작성해 봤는데, 작성할 때는 꽤 어려웠지만 로직과 순서를 제대로 잡으면 아주 잘 작동했어요 (코드도 많지 않았고요). 다만 두 시스템 모두 어떻게 작동하는지 이해한 사람은 많지 않았어요 . 허용되는 상속 4단계와 제외를 요구하는 건 아마 Mensa 수준의 지능이 필요할 것 같아요. 모든 단계에 대한 사용 사례가 있다고 해도요.

1개의 좋아요

즉, 문제는 그가 원하는 곳에 게시물을 올릴 수 없어서 다른 곳에 게시물을 올리기 시작한다는 것입니다. [quote]
사용자가 주제에서 추가 답변을 추가하기 전에 연속으로 만들 수 있는 게시물 수입니다. 이 제한은 주제 소유자, 사이트 스태프 또는 카테고리 관리자에게는 적용되지 않습니다.
[/quote]

따라서 해결책은 그가 원하는 곳에 게시물을 올릴 수 있도록 하는 것입니다. max consecutive replies(연속 답변 최대 수) 설정이 문제를 일으키는 건가요?

그가 게시물을 수정하지 않고 대신 계속 스스로에게 답변을 남기기 때문에 이 한도에 도달하는 건가요? 설정을 변경하거나 수정하는 법을 가르치는 것이 좋을지도 모릅니다.

2개의 좋아요

음, 실제로는 다소 모호하게 암시되었던 진짜 문제는 포럼에 알코올 잠금 장치가 없다는 점입니다. 하지만 그는 결국 취업 지원 같은 건 하지 않을 테니, 굳이 그걸 명시할 필요는 없죠.

즉, 그가 마지막으로 읽은 글 뒤에 답글이 계속 올라오는 문제라고 볼 수 있습니다. 15번째 맥주 이후로는 훈련이 별로 도움이 되지 않죠 :D. 이 경우, 평일 9시부터 17시 외 시간에는 접근을 제한해도 소용이 없습니다. 사실 꽤나 깨달음을 주는 글들이긴 한데, 문제는 (어떤) 신을 언급하거나 그 존재 여부를 논하기 시작하면 지구의 절반을 모욕하게 된다는 점입니다…

그래서 이 대화가 중단되더라도(부분적으로 해결이 불가능하니까 :slight_smile: ), 일반 사용자들을 고려할 때 있으면 좋았을 기술적인 부분들은 여전히 유효합니다.

3개의 좋아요

그건 어려운 문제입니다.

결국, 이 분야에서 아무것도 하려면 권한에 대한 대대적인 코드 레벨의 개편이 필요합니다.

1개의 좋아요