확장 권한: 백엔드 인프라

plans-img 모든 플랜 에서 사용 가능

deployment-img Cloudself-hosted 배포판

이 문서는 Mattermost의 권한을 위한 백엔드 서버 인프라를 개요하며 기술 관리자 또는 개발자만이 설치를 수정하고자 하는 경우에 권장됩니다.

엔터티 정의

권한

권한 은 객체에 대해 수행 가능한 동작을 나타내며 해당 권한을 부여받은 역할을 사용자가 가지고 있는 컨텍스트에서 수행할 수 있는 작업을 설명합니다.

역할

역할 은 권한이 부여되는 대상으로, 그 후 사용자에게 해당 컨텍스트에서 할당되어 해당 컨텍스트에서 부여된 권한을 부여합니다. 한 사용자는 다른 컨텍스트에서 여러 역할에 의해 부여된 다른 권한 집합을 가질 수 있습니다.

범위

권한은 특정 범위 내에서 존재합니다. Mattermost 시스템에는 세 가지 범위가 있습니다: 시스템(System), 팀(Team) 및 채널(Channel). 권한은 적용된 컨텍스트에서 범위 아래로 공포됩니다. 예를 들어 “채널” 범위의 권한이 “팀” 컨텍스트에 적용되면 해당 권한은 해당 팀 내의 모든 채널에 적용됩니다. 권한은 아래와 같이 간주됩니다.

  • 시스템 범위 은 시스템 레벨에서만 의미가 있는 경우입니다. 예를 들어, ‘manage_oauth’.

  • 팀 범위 은 팀 레벨과 시스템 레벨에서 의미가 있는 경우입니다. 예를 들어, ‘create_public_channel’.

  • 채널 범위 은 채널, 팀 및 시스템 레벨에서 의미가 있는 경우입니다. 예를 들어, ‘manage_public_channel_properties’.

컨텍스트

컨텍스트 는 범위의 인스턴스입니다. 예를 들어, “Developers Hangout”이라는 채널은 채널 범위의 인스턴스입니다. 컨텍스트들은 상위-하위 관계를 가지며 이는 범위의 위계 구조를 반영합니다. 각 컨텍스트는 하나의 상위 항목을 가지며, 여러 개의 하위 항목을 가질 수 있습니다. 최상위 부모 컨텍스트는 시스템 컨텍스트입니다.

  • 채널 컨텍스트는 상위 팀 컨텍스트를 가지며, 그 상위 항목은 시스템 컨텍스트입니다. 예를 들어, “Developers Hangout” 채널은 채널 컨텍스트이며, 상위 팀 컨텍스트는 “Contributors Team”이고, 상위 시스템 컨텍스트를 가집니다.

  • 팀 컨텍스트는 상위 시스템 컨텍스트를 가지고 있으며, 다수의 하위 채널 컨텍스트를 가질 수 있습니다. 예를 들어, “Contributors Team”은 팀 컨텍스트이며, 상위 시스템 컨텍스트를 가지며, “Developers Hangout”, “Reception”, “Marketing”과 같은 하위 채널 컨텍스트를 가집니다.

특정 컨텍스트에서 사용자가 특정 동작을 수행할 수 있는지 여부를 결정할 때, 해당 사용자가 현재 컨텍스트 및 상위 컨텍스트에서 할당받은 모든 역할의 권한의 합집합이 계산됩니다. 이는 권한이 범위 계층 구조를 따라 내려가도록 허용합니다. 예를 들어, 사용자가 시스템 컨텍스트에서 권한이 부여된 역할을 통해 ‘manage_public_channel_properties’ 권한이 부여된 경우, 해당 사용자는 모든 팀과 채널에 대해 공개 채널 속성을 관리할 수 있는 권한을 갖게 됩니다.

스킴

스킴은 특정 컨텍스트에 적용된 사용자에 대한 기본 역할을 설명하며 해당 컨텍스트의 모든 하위 컨텍스트에 적용됩니다. 스킴은 해당 컨텍스트에 명시적으로 정의되거나, 지정되지 않은 경우 상위 컨텍스트의 해당 부분 스킴이 적용됩니다. 이는 궁극적으로 시스템 스킴에 이르는 계층 구조를 등반하는 시스템 전역 기본값을 제공하는 목적을 가집니다. 예를 들어, Team A에 팀 범위 스킴이 정의되지 않은 경우 System Scheme은 Team A의 모든 컨텍스트에 대한 기본값을 제공합니다.

또한, 가장 낮은 범위의 스킴이 해당 컨텍스트에서 우선합니다. 예를 들어, Team B에 팀 범위 스킴이 있는 경우 해당 스킴은 Team B의 모든 컨텍스트에서 System Scheme의 기본값을 우선합니다.

데이터 구조

권한

Mattermost의 권한은 서버 코드 기반의 속성이며 동적으로 생성되거나 수정되지 않습니다. 현재의 권한 집합은 아래 표에 설명된 대로입니다.

Mattermost 권한

여기 테이블의 내용을 번역하겠습니다:

이름 (i18n)

범위

설명

invite_user

이메일 초대 보내기 또는 팀 초대 링크 가져와서 사용자를 팀으로 초대합니다.

add_user_to_team

기존 서버 사용자를 현재 팀에 추가합니다.

manage_slash_commands

시스템

자체 슬래시 명령어를 만들고 편집하고 삭제합니다.

manage_others_slash_commands

시스템

다른 사용자의 슬래시 명령어를 편집하거나 삭제합니다.

create_public_channel

공개 채널을 만듭니다.

create_private_channel

비공개 채널을 만듭니다.

manage_public_channel_members

채널

공개 채널 구성원을 관리합니다.

manage_private_channel_members

채널

비공개 채널 구성원을 관리합니다.

assign_system_admin_role

시스템

다른 사용자에게 시스템 관리자 역할을 부여합니다.

manage_roles

시스템

다른 사용자의 시스템 전역 역할을 관리합니다.

manage_team_roles

팀 멤버를 추가하거나 제거합니다.

manage_channel_roles

채널

채널 멤버를 추가하거나 제거합니다.

manage_system

시스템

시스템 콘솔에 액세스합니다.

sysconsole_read_usermanagement_system_roles

시스템

시스템 역할을 볼 수 있습니다.

sysconsole_write_usermanagement_system_roles

시스템

시스템 역할을 추가, 제거 및 할당할 수 있습니다.

create_direct_channel

시스템

다이렉트 메시지 채널 열기

create_group_channel

시스템

그룹 메시지 채널 열기

manage_public_channel_properties

채널

공개 채널 이름, 헤더 및 목적 편집

manage_private_channel_properties

채널

비공개 채널 이름, 헤더 및 목적 편집

list_public_teams

시스템

메인 메뉴에서 접근하는 “다른 팀 참여” 메뉴에 나열된 공개 팀 보기

join_public_teams

시스템

메인 메뉴에서 접근하는 “다른 팀 참여” 메뉴에 나열된 공개 팀 가입

list_private_teams

시스템

메인 메뉴에서 접근하는 “다른 팀 참여” 메뉴에 나열된 비공개 팀 보기

join_private_teams

시스템

메인 메뉴에서 접근하는 “다른 팀 참여” 메뉴에 나열된 비공개 팀 가입

list_team_channels

팀 내 공개 채널 목록 보기

join_public_channels

공개 채널 가입

delete_public_channel

채널

공개 채널 보관

delete_private_channel

채널

비공개 채널 보관

edit_other_users

시스템

다른 사용자의 user 오브젝트 값 편집

read_channel

채널

채널 내 게시물 보기

read_channel_contents

채널

채널 내용 읽기

read_public_channel

팀의 공개 채널 보기 및 접근

add_reaction

채널

게시물에 이모지 반응 추가

remove_reaction

채널

게시물에서 이모지 반응 제거

remove_others_reactions

채널

다른 사용자의 게시물에서 이모지 반응 제거

permanent_delete_user (deprecated)

시스템

다른 사용자 영구 삭제

upload_file

채널

게시물에 파일 첨부

get_public_link

시스템

게시물의 퍼머링크 가져오기

manage_incoming_webhooks

자신의 들어오는 웹훅 만들기, 편집 및 삭제

manage_outgoing_webhooks

자신의 나가는 웹훅 만들기, 편집 및 삭제

manage_others_webhooks(deprecated)

다른 사용자의 들어오는 또는 나가는 웹훅 편집 및 삭제

manage_others_incoming_webhooks

다른 사용자의 들어오는 웹훅 편집 및 삭제

manage_others_outgoing_webhooks

다른 사용자의 나가는 웹훅 편집 및 삭제

manage_oauth

시스템

자신의 OAuth 2.0 앱 만들기, 편집 및 삭제

manage_system_wide_oauth

시스템

다른 사용자의 OAuth 2.0 앱 편집 또는 삭제

create_post

채널

채널에 게시물 작성

create_post_public

채널

채널 내에서 시스템 메시지를 생성합니다.

create_post_ephermal

채널

채널 내에서 일시적인 메시지를 생성합니다.

edit_post

채널

작성자가 자신의 게시물을 편집합니다. 게시물 편집 시간 제한은 "PostEditTimeLimit" config 에 의해 제어됩니다.

edit_others_posts

채널

다른 사용자의 게시물을 편집합니다.

delete_post

채널

작성자가 자신의 게시물을 삭제합니다.

delete_others_posts

채널

다른 사용자의 게시물을 삭제합니다.

remove_user_from_team

팀에서 사용자를 제거합니다.

create_team

시스템

팀을 생성합니다.

manage_team

팀 설정에 액세스합니다.

import_team

시스템

팀 설정에서 팀을 가져옵니다.

view_team

팀 객체를 읽습니다.

create_bot

봇 계정을 생성합니다.

assign_bot

봇을 봇을 생성한 사용자 외의 사용자에게 할당합니다.

read_bot

자신이 생성한 봇을 볼 수 있습니다.

read_others_bots

다른 사용자가 생성한 봇을 볼 수 있습니다.

manage_bots

자신의 봇을 편집하고 삭제할 수 있습니다.

manage_others_bots

다른 사용자가 생성한 봇을 편집하고 삭제할 수 있습니다.

view_members

팀의 모든 멤버를 나열합니다.

list_users_without_team

시스템

팀이 없는 사용자를 나열합니다.

create_user_access_token

시스템

사용자 액세스 토큰을 생성합니다.

read_user_access_token

시스템

ID별 사용자 액세스 토큰을 읽습니다.

revoke_user_access_token

시스템

사용자 액세스 토큰을 취소합니다.

manage_jobs

시스템

작업을 생성하고 취소합니다.

create_emojis

사용자 정의 이모지를 생성합니다.

delete_emojis

자신의 사용자 정의 이모지를 삭제합니다.

delete_others_emojis

다른 사용자가 생성한 사용자 정의 이모지를 삭제합니다.

invite_guest

시스템

이메일 초대를 통해 게스트 사용자를 초대하거나 기존 게스트를 팀에 추가합니다.

promote_guest

시스템

게스트를 회원 사용자로 승격합니다.

demote_to_guest

시스템

회원 사용자를 게스트로 강등합니다.

manage_remote_clusters

시스템

공유 채널을 위한 원격 클러스터를 추가, 제거 및 보여줍니다.

Roles 필드


역할은 사용자의 컨텍스트에 대한 멤버십을 나타내는 개체에 적용됩니다. 이러한 역할은 User , TeamMember , ChannelMemberSchemes 테이블의 Roles 필드에서 사용됩니다.

TeamMemberChannelMember 테이블에서 사용자 정의 역할과 멤버 개체가 관련된 팀에 할당된 기본 또는 사용자 지정 스키마에서 해당 역할을 상속해야 하는지를 나타내는 SchemeAdminSchemeUser 부울로 구성됩니다.

Roles 테이블


역할은 동적이며 사용자 설정이 가능하며 다음과 같은 필드가 있는 데이터베이스 테이블을 필요로 합니다:

  • Id (자동증가, 기본 키)

  • Name (고유 문자열, 문자 제약 조건 포함, 예: “team_user”)

  • Display Name (문자열)

  • Description (문자열)

  • Permissions (문자열): 공백으로 구분된 권한 이름

  • Scheme Managed (부울): 이 역할이 체계의 일부로 관리되는지 여부를 나타냅니다.

  • BuiltIn (부울): 이 역할이 Mattermost 시스템에 기본 제공되어 사용자에 의해 제거할 수 없는지 여부를 나타냅니다.

내장 역할

시스템 스키마는 제품에 기본 제공되며 해당 역할은 Roles 테이블에서 BuiltIn: true 로 정의됩니다. Mattermost API를 사용하여 역할 이름별 권한 목록을 검색할 수 있습니다 .

다음과 같은 내장 역할 및 해당 권한을 사용할 수 있습니다:

채널 관리자

  • 프라이빗 채널 멤버 관리

  • 퍼블릭 채널 그룹 읽기

  • 채널 멘션 사용

  • 포스트 생성

  • 그룹 멘션 사용

  • 반응 추가

  • 프라이빗 채널 그룹 읽기

  • 반응 제거

  • 퍼블릭 채널 멤버 관리

  • 채널 역할 관리

채널 게스트

  • 채널 읽기

  • 채널 내용 읽기

  • 반응 추가

  • 반응 제거

  • 파일 업로드

  • 포스트 편집

  • 포스트 생성

  • 채널 멘션 사용

채널 사용자

  • 퍼블릭 채널 속성 관리

  • 그룹 멘션 사용

  • 반응 추가

  • 프라이빗 채널 삭제

  • 프라이빗 채널 멤버 관리

  • 프라이빗 채널 그룹 읽기

  • 퍼블릭 채널 삭제

  • 퍼블릭 채널 그룹 읽기

  • 채널 멘션 사용

  • 채널 읽기

  • 채널 내용 읽기

  • 포스트 삭제

  • 퍼블릭 링크 가져오기

  • 반응 제거

  • 퍼블릭 채널 멤버 관리

  • 파일 업로드

  • 프라이빗 채널 속성 관리

  • 포스트 생성

  • 포스트 편집

시스템 관리자

  • 정기 명령 관리

  • 사용자 권한 관리 작성

  • 브랜드 편집

  • 반응 제거

  • 수신 웹훅 관리

  • 사용자 그룹 관리 작성

  • 공개 채널 생성

  • 관리용 채널 멤버 관리

  • 인증 관리 작성

  • 비공개 팀 가입

  • 일회성 게시물 생성

  • 팀 없는 사용자 목록

  • 보고서 작성

  • 공개 채널 가입

  • 손님 초대

  • 비공개 팀 목록

  • 채널 관리 작성

  • 다른 봇 관리

  • 사용자 액세스 토큰 읽기

  • 팀에 사용자 추가

  • 멤버 보기

  • 게시물 편집

  • 손님으로 강등

  • 다른 게시물 삭제

  • 플러그인 작성

  • 비공개 채널 삭제

  • 시스템 역할 읽기

  • 사용자 관리 읽기

  • 사용자 액세스 토큰 취소

  • 다른 봇 읽기

  • 공개 채널 그룹 읽기

  • 팀 관리 작성

  • 결제 작성

  • 공개 채널을 비공개로 전환

  • 팀에서 사용자 제거

  • 팀 관리

  • 반응 추가

  • OAuth 관리

  • 팀 채널 목록

  • 팀 생성

  • 작업 읽기

  • 사용자 초대

  • 공유 채널 관리

  • 다른 사용자의 반응 제거

  • 원격 클러스터 관리

  • 실험 기능 작성

  • 플러그인 읽기

  • 그룹 채널 생성

  • 환경 읽기

  • 역할 관리

  • 사용자 언급

  • 공개 채널 속성 관리

  • 채널 역할 관리

  • 공유 링크 가져오기

  • 결제 읽기

  • 통합 작성

  • 준수 내보내기 결과 다운로드

  • 슬래시 명령어 관리

  • 시스템 관리자 역할 할당

  • 게시물 생성

  • 게시물 삭제

  • 다이렉트 채널 생성

  • 공개 팀 목록

  • 공개 게시물 생성

  • 비공개 채널 그룹 읽기

  • 통합 읽기

  • 다른 사용자의 팀 읽기

  • 작업 관리

  • 사이트 읽기

  • 나가는 웹훅 관리

  • 환경 작성

  • 시스템 관리

  • 사용자 권한 관리 읽기

  • 공개 채널 멤버 관리

  • 소개 작성

  • 팀 가져오기

  • 시스템 역할 작성

  • 보고서 읽기

  • 파일 업로드

  • 채널 읽기

  • 채널 내용 읽기

  • 팀 읽기

  • 이모지 삭제

  • 비공개 채널 속성 관리

  • 팀 보기

  • 사용자 그룹 읽기

  • 비공개 채널 생성

  • 봇 생성

  • 공개 팀 가입

  • 공개 채널 삭제

  • 공개 채널 읽기

  • 소개 읽기

  • 봇 읽기

  • 인증 관리 읽기

  • 다른 사용자 편집

  • 채널 관리 읽기

  • 비공개 채널을 공개로 전환

  • 그룹 사용자 언급

  • 사용자 액세스 토큰 생성

  • 사이트 작성

  • 팀 역할 관리

  • 준수 읽기

  • 이모지 생성

시스템 사용자 그룹 관리

  • 생성

  • 편집

  • 삭제

  • 멤버 관리

  • 복원

시스템 게스트

  • 그룹 채널 생성

  • 개인 채널 생성

시스템 관리자

  • 시스템콘솔 사용자 관리 권한 작성

  • 시스템콘솔 소개 읽기

  • 시스템콘솔 사용자 관리 채널 읽기

  • 비공개 팀 참여

  • 비공개 채널 삭제

  • 팀 보기

  • 작업 읽기

  • 시스템콘솔 사용자 관리 팀 읽기

  • 시스템콘솔 플러그인 읽기

  • 채널 역할 관리

  • 공개 채널 멤버 관리

  • 팀에서 사용자 제거

  • 시스템콘솔 환경 읽기

  • 비공개 팀 목록

  • 비공개 채널 멤버 관리

  • 비공개 채널 속성 관리

  • 브랜드 편집

  • 팀에 사용자 추가

  • 공개 채널 비공개로 변환

  • 비공개 채널 그룹 읽기

  • 시스템콘솔 환경 작성

  • 작업 관리

  • 시스템콘솔 보고서 읽기

  • 공개 채널 읽기

  • 팀 관리

  • 채널 읽기

  • 비공개 채널 공개로 변환

  • 시스템콘솔 통합 읽기

  • 공개 채널 그룹 읽기

  • 공개 팀 목록

  • 팀 역할 관리

  • 시스템콘솔 사용자 관리 그룹 읽기

  • 공개 채널 속성 관리

  • 시스템콘솔 사용자 관리 그룹 작성

  • 시스템콘솔 사용자 관리 권한 읽기

  • 시스템콘솔 사이트 작성

  • 시스템콘솔 사이트 읽기

  • 시스템콘솔 사용자 관리 채널 작성

  • 시스템콘솔 통합 작성

  • 공개 채널 삭제

  • 시스템콘솔 사용자 관리 팀 작성

  • 공개 팀 참여

시스템 모든 게시물

  • 게시물 작성

  • 채널 멘션 사용

  • 그룹 멘션 사용

시스템 모든 공개 게시물

  • 공개 게시물 작성

  • 그룹 멘션 사용

  • 채널 멘션 사용

시스템 읽기 전용 관리자

  • 시스템콘솔 준수사항 읽기

  • 다른 사용자 팀 목록 읽기

  • 시스템콘솔 보고서 읽기

  • 비공개 팀 목록

  • 시스템콘솔 실험 읽기

  • 작업 읽기

  • 공개 채널 읽기

  • 팀 보기

  • 시스템콘솔 플러그인 읽기

  • 시스템콘솔 사용자 관리 팀 읽기

  • 공개 채널 그룹 읽기

  • 시스템콘솔 사용자 관리 채널 읽기

  • 시스템콘솔 사용자 관리 권한 읽기

  • 시스템콘솔 소개 읽기

  • 준수 사항 내보내기 결과 다운로드

  • 채널 읽기

  • 시스템콘솔 인증 읽기

  • 시스템콘솔 사이트 읽기

  • 공개 팀 목록

  • 시스템콘솔 통합 읽기

  • 비공개 채널 그룹 읽기

  • 시스템콘솔 환경 읽기

  • 시스템콘솔 사용자 관리 그룹 읽기

시스템 유저

  • 공개 팀 목록

  • 공개 팀 참여

  • 개인 채널 생성

  • 그룹 채널 생성

  • 멤버 보기

  • 팀 생성

  • 이모지 생성

  • 이모지 삭제

시스템 유저 접근 토큰

  • 사용자 액세스 토큰 생성

  • 사용자 액세스 토큰 읽기

  • 사용자 액세스 토큰 취소

시스템 유저 관리자

  • 공개 채널 멤버 관리

  • 시스템콘솔 사용자 관리 그룹 작성

  • 비공개 채널 속성 관리

  • 채널 읽기

  • 시스템콘솔 인증 읽기

  • 비공개 채널 멤버 관리

  • 작업 읽기

  • 팀 보기

  • 시스템콘솔 사용자 관리 그룹 읽기

  • 비공개 팀 목록

  • 공개 팀 참여

  • 팀 관리

  • 공개 팀 목록

  • 팀에 사용자 추가

  • 시스템콘솔 사용자 관리 채널 읽기

  • 시스템콘솔 사용자 관리 팀 작성

  • 공개 채널 읽기

  • 시스템콘솔 사용자 관리 권한 읽기

  • 공개 채널 속성 관리

  • 비공개 팀 참여

  • 공개 채널 비공개로 변환

  • 채널 역할 관리

  • 시스템콘솔 사용자 관리 팀 읽기

  • 비공개 채널 공개로 변환

  • 공개 채널 그룹 읽기

  • 공개 채널 삭제

  • 팀에서 사용자 제거

  • 팀 역할 관리

  • 비공개 채널 삭제

  • 시스템콘솔 사용자 관리 채널 작성

  • 비공개 채널 그룹 읽기

팀 어드민

  • 팀에서 사용자 제거

  • 기타 슬래시 명령어 관리

  • 팀 역할 관리

  • 공개 채널 멤버 관리

  • 그룹 멘션 사용

  • 기타 발신 웹훅 관리

  • 슬래시 명령어 관리

  • 팀 관리

  • 기타 수신 웹훅 관리

  • 채널 역할 관리

  • 공개 채널 그룹 읽기

  • 비공개 채널 공개로 변환

  • 리액션 제거

  • 게시물 삭제

  • 발신 웹훅 관리

  • 채널 멘션 사용

  • 수신 웹훅 관리

  • 다른 사용자의 게시물 삭제

  • 비공개 채널 그룹 읽기

  • 게시물 작성

  • 비공개 채널 멤버 관리

  • 비공개 채널 비공개로 변환

  • 리액션 추가

  • 팀 가져오기

팀 게스트

  • 팀 보기

팀 모든 게시물

  • 게시물 작성

  • 그룹 멘션 사용

  • 채널 멘션 사용

팀의 모든 공개 게시물

  • 그룹 멘션 사용

  • 공개 게시물 작성

  • 채널 멘션 사용

팀 유저

  • 사용자 초대

  • 팀에 사용자 추가

  • 팀 채널 목록

  • 공개 채널 참여

  • 공개 채널 읽기

  • 팀 보기

  • 공개 채널 생성

  • 비공개 채널 생성

“Schemes” 표

스키마는 동적이고 사용자 구성 가능하며, 다음 필드가 있는 데이터베이스 테이블이 필요합니다:

  • Id (자동 증가, 기본 키)

  • Name (고유 문자열, 문자 제약 조건, 예: “corporate_scheme”)

  • Display Name

  • Description (문자열)

  • Scope (문자열): 팀 또는 채널

  • 관리자 역할 (문자열): 채널 범위의 경우 빈 값

  • 사용자 역할 (문자열): 채널 범위의 경우 빈 값

  • 게스트 역할 (문자열): 채널 범위의 경우 빈 값

  • 채널 관리자 역할 (문자열): 항상 제공

  • 채널 사용자 역할 (문자열): 항상 제공

  • 채널 게스트 역할 (문자열): 항상 제공