DEV Community

Cover image for BizOps 워크스페이스로 채팅 및 사용자를 안전하게 조정하는 방법

BizOps 워크스페이스로 채팅 및 사용자를 안전하게 조정하는 방법

이 사용법 문서는 BizOps Workspace로 통칭되는 PubNub의 데이터 관리 기능에 대해 설명하는 일련의 문서 중 일부입니다:

BizOps Workspace는 애플리케이션을 관리하는 데 도움이 되는 일련의 도구입니다. 이 문서에서는 이전의 "BizOps Workspace로 대화를 모니터링하고 중재하는 방법" 문서를 확장하여 수동 중재 기능, 즉 대화를 실시간으로 모니터링하고 사용자를 음소거하거나 금지하는 기능을 갖춘 엔드투엔드 보안 채팅 애플리케이션을 보여 줍니다.

이 문서는 단독으로 읽을 수도 있지만, 여기서 설명하는 개념의 배경을 더 잘 이해하려면 이전의 "BizOps Workspace로 대화를 모니터링하고 중재하는 방법" 문서를 읽어보시는 것이 좋습니다.

채널 모니터란 무엇인가요?

채널 모니터를 통해 채팅 중재자는 여러 채널에서 실시간으로 진행되는 대화의 실시간 미리보기를 볼 수 있습니다. 운영자는 잘못된 행동을 하는 사용자나 불쾌한 메시지 등 불쾌한 내용을 발견하면 즉시 조치를 취하여 문제를 완화할 수 있습니다.

운영자는 취할 수 있는 조치에 대해 많은 유연성을 가지고 있습니다:

  • 액세스 권한을 제한하지 않고 사용자를 관찰하기
  • 불쾌감을 주는 메시지 수정 또는 삭제
  • 사용자의 메시지 게시 기능 제한(뮤트)
  • 사용자의 메시지 읽기 또는 게시 기능 제한(금지)

'모니터링' 기능의 모든 기능은 수동으로 할 수 있습니다. 메시지를 수동으로 검토하고, 사용자를 수동으로 뮤트하는 등의 기능을 수동으로 할 수 있습니다. 이 도움말에서는 자동 모더레이션에 대해서는 설명하지 않습니다.

채널 모니터를 사용하려면 최소한 앱 컨텍스트와 메시지 지속성 등 몇 가지 기능이 PubNub 키세트에서 활성화되어 있어야 합니다. 자세한 내용은 이전 글의'채널 모니터를 위한 키설정 요구 사항' 섹션을 참조하세요.

PubNub 액세스 관리자란 무엇인가요?

개발자는 사용자가 모더레이션 시스템을 우회하려는 시도를 방지해야 하며, 이를 위해 PubNub 액세스 관리자를 사용해야 합니다.

액세스 관리 자를 사용하면 지정된 사용자(또는 사용자)의 권한과 지정된 리소스에 대해 수행할 수 있는 작업을 설명하는 일련의 규칙을 정의할 수 있습니다. 예를 들어

  • ID가 123인 사용자에게는 채널 456에 대한 읽기 및 쓰기 권한이 있습니다.
  • ID가 정규식 user-*역주: ID가 글로벌-*역주: 정규식과 일치하는 모든 채널에서 읽을 수 있음-와 일치하는 모든 사용자에게 읽기 권한이 있습니다.
  • ID가 123인 사용자는 채널 메타데이터(즉, 앱 컨텍스트)를 업데이트할 수 있는 권한이 있습니다.

전체 권한 목록은 https://www.pubnub.com/docs/general/security/access-control#permissions 에서 설명서를 참조하세요.

PubNub 액세스 관리자는 토큰 기반이며, 이를 설명하는 가장 쉬운 방법은 문서에 표시된 대로 권한 부여 흐름을 살펴보고 해당 흐름이 모더레이션과 어떻게 관련되는지에 대한 몇 가지 추가 컨텍스트를 제공하는 것입니다:

Access Manager workflow

  1. 로그인 시도. 클라이언트는 사용자를 애플리케이션에 로그인하기 위해 서버를 인증합니다. 이 단계가 끝나면 서버는 등록된 앱 사용자와 대화하고 있으며 해당 사용자가 누구인지 확신하게 됩니다. 클라이언트는 초기화의 일부로 PubNub 액세스 관리자 인증 토큰을 요청합니다.
  2. 권한 부여 요청. 서버는 SDK 'grantToken()' API를 호출하여 클라이언트의 토큰 요청을 처리합니다. 이 API에 대해 몇 가지 주의할 점이 있습니다: PubNub 비밀 키로만 호출할 수 있으므로 서버에서만 호출할 수 있고, 모든 서버 측 SDK에서 사용할 수 있으며, 이 API는 사용자 액세스를 정의하는 리소스 및 권한을 정의하기 위해 JSON 객체를 허용합니다.
  3. 토큰 반환. PubNub는 요청된 사용자에게 요청된 권한을 부여하고 서버에 인증 토큰을 반환합니다.
  4. 토큰이 전달되었습니다. 그러면 서버가 원래 호출한 클라이언트에 인증 토큰을 반환합니다.
  5. 토큰 세트. 클라이언트는 초기화 중 또는 애플리케이션의 수명 주기 중 언제든지 setToken() 메서드를 통해 이 인증 토큰을 지정할 수 있습니다. 토큰은 만료되므로 언제든지 토큰을 업데이트할 수 있어야 하지만, 채널 모니터가 권한을 업데이트하는 경우(예: 뮤트되거나 금지된 경우) 클라이언트는 새 토큰을 요청해야 합니다.
  6. 승인된 API 요청. 이제 PubNub에 대한 모든 후속 호출은 승인된 것으로 간주됩니다. PubNub은 2단계에서 부여된 권한과 클라이언트의 토큰 유효성에 따라 모든 API 요청을 허용하거나 거부합니다.

보안 모더레이션 솔루션은 어떤 모습인가요?

이전 글의 마지막 부분에서 클라이언트 측에서 뮤트하거나 금지하는 것이 어떻게 보이는지 데모를 보여드렸습니다. Chat SDK에는 뮤트 또는 차단 여부를 클라이언트에게 알려주는 중재 이벤트가 포함되어 있지만, UI를 업데이트하는 것 외에는 뮤트/차단된 후에도 클라이언트가 메시지를 계속 보내는 것을 막지는 못합니다. 클라이언트를 안전하게 뮤트하거나 차단하려면 기존 액세스 관리자 권한을 해지하고 새로운 뮤트 또는 차단 상태를 반영하도록 새 권한을 부여해야 합니다.

사용자가 '뮤지컬' 채널에서 뮤트된 다음 시나리오를 예로 들어 보겠습니다:

Secure chat sequence diagram

  1. 사용자가 '영화'와 '뮤지컬' 두 개의 채널에 액세스할 수 있지만 관리자가 '뮤지컬' 채널에서만 해당 사용자를 뮤트하려고 합니다.
  2. 관리자는 채널 모니터를 사용하여 해당 사용자를 뮤트합니다. 내부적으로 이것은 'setRestrictions()' API를 호출하는 것입니다.
  3. 서버 애플리케이션은 모더레이션 이벤트를 통해 '뮤트' 알림을 수신하고 사용자의 기존 액세스 토큰을 취소합니다.
  4. 클라이언트 애플리케이션은 검토 이벤트를 통해 '뮤지컬' 채널과 관련된 '뮤트' 알림을 수신합니다.
  5. 애플리케이션은 더 이상의 메시지 전송을 방지하기 위해 UI를 업데이트합니다. 사용자는 페이지의 JavaScript를 수정하여 이 UI 변경을 해결할 수 있지만 인증 토큰이 해지되었으므로 메시지를 보내려는 시도는 실패합니다.
  6. 애플리케이션은 위의 액세스 관리자 섹션에 설명된 대로 서버에 새 인증 토큰을 요청합니다. 새로 부여된 토큰에는 '뮤지컬' 채널에 대한 '읽기' 액세스 권한만 있는 등 사용자의 새로운 권한이 반영됩니다.

이전 글에서 '모더레이션 솔루션의 구성 요소'에 대해 설명하고 아래 그래픽을 사용하여 클라이언트와 서버 모두에서 사용할 수 있는 API를 나열했습니다. 위 단계에서 설명한 API도 이 그래픽에 나와 있습니다.

Table showing components of a chat moderation solution

Chat SDK 샘플 앱

채널 모니터와 Chat SDK 개발을 담당하는 바쁜 엔지니어링 팀이 Chat SDK를 사용하는 React Native로 작성된 샘플 애플리케이션도 만들었습니다.

이 샘플은 PubNub을 사용하여 사실적이고 모든 기능을 갖춘 채팅 앱을 개발하기 위한 SDK의 기능과 모범 사례를 보여줍니다. 이 샘플은 오픈 소스이며 /샘플/react-native-group-chat에 있는 Chat SDK와 동일한 GitHub 리포지토리의 일부입니다.

Sample app running on iOS and Android

이 애플리케이션은 최근 Access Manager 서버에서 토큰을 요청하고 사용자의 권한이 변경될 때, 즉 채널에서 금지되거나 뮤트되는 경우 새 토큰을 요청하도록 업데이트되었습니다. 이 개선 사항은 이전 문서가 작성된 이후에 이루어진 것이므로 GitHub에서 최신 소스를 받아보세요. 이 글을 작성하는 시점에 가장 최근의 git 커밋 ID는 ae9dfa0입니다.

안전하게 사용자 뮤트 및 금지하기: 샘플 애플리케이션을 사용한 데모

이 섹션에서는 클라이언트 및 서버 관점에서 안전한 모더레이션을 보여주는 엔드투엔드 데모를 시작하고 실행하는 방법에 대해 설명합니다.

PubNub 키세트 만들기

이 데모를 실행하려면 다음과 같이 새 PubNub 키셋을 만드는 것이 좋습니다:

  1. 관리자 포털에 로그인하여 새 애플리케이션을 만들거나 기존 애플리케이션 내에서 새 키 집합을 만듭니다. 필요한 경우 관리자 포털 키를 만드는 방법에서 단계별 지침을 확인할 수 있습니다.
  2. 키설정 페이지에서 다음 구성 옵션을 사용 설정합니다. 별도로 지정하지 않는 한 기본값을 그대로 사용할 수 있습니다:
  • 앱 컨텍스트. 여기에는 채널과 사용자에 대한 메타데이터가 저장되며 이전 글'사용자 및 채널 관리'에 자세히 설명되어 있습니다. 또한 사용자 메타데이터 이벤트, 채널 메타데이터 이벤트멤버십 이벤트도 활성화합니다.
  • 메시지 지속성. 이렇게 하면 관리자가 대화를 검토하고 편집할 수 있도록 메시지 기록을 PubNub에 저장합니다.
  • 액세스 관리자. 데이터에 대한 무단 액세스를 방지하고 안전한 모더레이션 솔루션을 만드는 데 필요합니다.
  • 현재 상태. 사용자가 온라인 상태인지 오프라인 상태인지 추적하는 데 사용됩니다.

변경 사항을 저장합니다.

다음 단계에서는 게시 키, 구독 키비밀 키가 필요합니다.

샘플 애플리케이션 빌드하기

앞서 설명한 것처럼 Chat SDK 샘플 앱은 Expo 프레임워크를 사용하여 React Native로 작성된 크로스 플랫폼 클라이언트 앱입니다.

애플리케이션의 사용 설명서에 제공된 지침에 따라 샘플 애플리케이션을 복제하고 빌드하세요. 특히, yarn 및 Node.js를 포함한 필수 구성 요소가 설치되어 있는지 확인하세요. 리드미에서는 XCode와 iOS 사용에 대해 설명하지만, Android 에뮬레이터에서도 앱을 실행할 수 있습니다. 이 글을 쓰는 시점에 가장 최근의 git 커밋 ID는 ae9dfa0입니다.

게시/서브 키를 제공할 때는 이전 단계에서 생성한 키를 사용하세요. .env 파일에 키를 포함하지 않으면 애플리케이션이 기본적으로 일부 데모 키를 사용하므로 혼동을 피하기 위해 https://github.com/pubnub/js-chat/blob/ae9dfa0/samples/react-native-group-chat/App.tsx#L60 에서 이 로직을 비활성화할 수 있습니다.

애플리케이션을 실행합니다. ReadMe에서 yarn ios를 실행하라고 안내하지만, yarn android 또는 yarn 실행 시작을 실행할 수도 있으며, 후자는 대화형 메뉴를 제공합니다.

로그인하면 콘솔에 다음과 같은 경고가 표시됩니다:

Failed log message

이는 클라이언트가 Access Manager 서버에 연결하지 못했기 때문이므로 서버를 빌드해 보겠습니다.

샘플 Access Manager 서버 빌드하기

샘플 Access Manager 서버는 https://github.com/pubnub/js-chat/tree/master/samples/access-manager-api 에서 찾을 수 있으며, 앞서 설명한 클라이언트 애플리케이션과 동일한 모노레포입니다.

원하는 편집기에서 src/chatsdk.service.ts 파일을 열고 게시키, 구독키비밀키를 입력합니다. 게시 키와 구독 키는 클라이언트 앱을 만들 때 사용한 것과 일치해야 하며, 비밀 키는 관리자 포털의 앱에 대한 키 설정 페이지에서 사용할 수 있습니다.

REPO/samples/access-manager-api 디렉터리에서 yarn 실행 시작을 실행하여 Access Manager 서버를 시작하면 아래와 같은 화면이 표시됩니다:

Sample Access Manager Server output

Access Manager 서버가 무엇을 하고 있는지 확인하려면 app.service.ts를 보세요. 요청하는 사용자에 대해 생성된 권한 구조와 이러한 권한을 적용하기 위해 chat.sdk.grantToken( )을 호출하여 생성된 authKey를 호출하는 클라이언트에 반환하는 것을 볼 수 있습니다.

이 권한은 데모 애플리케이션에 필요한 권한이지만 애플리케이션에는 다른 권한이 필요할 수 있습니다. 제공된 규칙 집합을 시작 템플릿으로 사용할 수 있지만 앱용 액세스 관리자 서버를 만들 때는 https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/permissions 을 참조하여 어떤 Chat SDK 기능에 어떤 권한이 필요한지 정확히 파악하세요.

클라이언트 데모 앱 애플리케이션을 다시 실행하면 이제 오류 없이 로그인할 수 있을 것입니다. '인증 키 새로 고침' 건배 메시지가 표시되면 모든 것이 성공했음을 알 수 있습니다.

AuthKey refreshed

두 클라이언트 간의 대화를 시작합니다.

Initiate a conversation between two clients

채널 모니터를 사용하여 사용자 음소거 및 차단하기

중요: 이전에 두 클라이언트 간의 대화를 시작하지 않았다면 지금 바로 시작하세요. 채널은 데모 앱에서 동적으로 생성되므로 채팅이 시작된 후에만 채널 모니터에 표시됩니다.

'인증 키 새로 고침' 배너 또는 '차단된 사용자' 모달과 같이 아래에 표시된 사용자 인터페이스 업데이트는 데모 애플리케이션의 일부이며, 애플리케이션은 자체 UI를 통해 이 정보를 사용자에게 표시합니다.

  • 관리자 포털에 로그인하고 Access Manager 샘플 및 클라이언트 애플리케이션에 사용한 키 집합을 선택하여 채널 모니터를 시작합니다.
  • 왼쪽 탐색 패널의 BizOps 작업 공간 섹션으로 이동하여 채널 모니터를 선택합니다. BizOps 워크스페이스 섹션이 표시되지 않으면 PubNub 요금제를 업그레이드해야 하는 경우가 대부분이지만 문제가 있는 경우 지원팀에 문의 하세요.
  • 모더레이션을 시작할 채널을 선택하라는 메시지가 표시됩니다. 채널 이름은 USER_ID를 가진 1:1 사용자로 표시되며, 여기서 USER_ID는 대화를 시작한 사람의 사용자 아이디입니다.
  • 키 설정에서 지속성을 사용 설정한 경우 이전 메시지를 포함하여 채널 메시지가 실시간으로 표시됩니다.

Initial conversation with channel monitor

  • 해당 사용자가 보낸 메시지 옆의 마이크 버튼을 눌러 해당 사용자를 뮤트할 수 있습니다. 음소거된 사용자의 디바이스에 인증 키가 새로 고침되었음을 알리는 메시지가 표시됩니다. 뮤트한 사용자로 메시지를 보내려고 하면 금지됨을 알리는 메시지 대화 상자가 표시되지만, 뮤트하지 않은 사용자는 영향을 받지 않습니다.

Muted user

  • 마이크 버튼을 다시 눌러 사용자의 음소거를 해제합니다. 음소거 해제된 사용자의 디바이스에 인증 키가 새로 고쳐졌으며 이제 메시지 전송에 성공했음을 알리는 메시지가 표시됩니다.

User unmuted

  • 해당 사용자가 보낸 쪽지 옆에 있는 차단 버튼을 눌러 해당 사용자를 차단하고 차단 사유를 입력합니다. 사유는 자유 형식의 텍스트로 제공되므로 관련 정보를 입력할 수 있습니다. 인증 키가 새로고침되고 해당 사용자는 앱의 채팅 선택 화면으로 돌아갑니다.

User is banned

차단된 채널에 접근을 시도하면 사용자에게 오류가 표시됩니다:

Banned user error message

  • 채널 모니터에서 '차단 해제'를 선택하여 해당 사용자를 차단 해제합니다. 인증 키가 새로 고쳐집니다. 해당 사용자는 차단이 해제되어 다시 채팅에 참여할 수 있습니다.

User is unbanned

요약

채팅 애플리케이션 개발은 첫 단계에 불과합니다. 가장 어려운 과제는 증가하는 사용자 기반을 지원하기 위해 앱을 배포한 후에 발생합니다. 비즈옵스 워크스페이스는 채팅 애플리케이션의 모든 측면을 관리하도록 설계된 일련의 도구로, 출시 후의 어려움을 간소화해 줍니다.

이 문서에서는 사용자를 안전하게 음소거하고 금지하는 데 중점을 두었지만, BizOps Workspace의 기능은 계속 확장되고 있습니다. 또한 이 문서에서는 Chat SDK에만 초점을 맞추었지만 채널 모니터는 모든 SDK와 함께 작동하도록 구성할 수도 있습니다.

Channel monitor configuration

도움이나 지원이 필요하면 언제든지 전담 지원팀에 문의하거나 개발자 지원팀( devrel@pubnub.com)으로 이메일을 보내주세요.

펍넙이 어떤 도움을 드릴 수 있나요?

이 문서는 원래 PubNub.com에 게시되었습니다.

저희 플랫폼은 개발자가 웹 앱, 모바일 앱, IoT 디바이스를 위한 실시간 상호작용을 구축, 제공, 관리할 수 있도록 지원합니다.

저희 플랫폼의 기반은 업계에서 가장 크고 확장성이 뛰어난 실시간 에지 메시징 네트워크입니다. 전 세계 15개 이상의 PoP가 월간 8억 명의 활성 사용자를 지원하고 99.999%의 안정성을 제공하므로 중단, 동시 접속자 수 제한 또는 트래픽 폭증으로 인한 지연 문제를 걱정할 필요가 없습니다.

PubNub 체험하기

라이브 투어를 통해 5분 이내에 모든 PubNub 기반 앱의 필수 개념을 이해하세요.

설정하기

PubNub 계정에 가입하여 PubNub 키에 무료로 즉시 액세스하세요.

시작하기

사용 사례나 SDK에 관계없이 PubNub 문서를 통해 바로 시작하고 실행할 수 있습니다.

Top comments (0)