확장 권한: 백엔드 인프라
모든 플랜 에서 사용 가능
Cloud 와 self-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 |
채널 |
작성자가 자신의 게시물을 편집합니다. 게시물 편집 시간 제한은 |
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
, ChannelMember
및 Schemes
테이블의 Roles
필드에서 사용됩니다.
TeamMember
및ChannelMember
테이블에서 사용자 정의 역할과 멤버 개체가 관련된 팀에 할당된 기본 또는 사용자 지정 스키마에서 해당 역할을 상속해야 하는지를 나타내는SchemeAdmin
및SchemeUser
부울로 구성됩니다.
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
(문자열): 팀 또는 채널팀 관리자 역할
(문자열): 채널 범위의 경우 빈 값팀 사용자 역할
(문자열): 채널 범위의 경우 빈 값팀 게스트 역할
(문자열): 채널 범위의 경우 빈 값채널 관리자 역할
(문자열): 항상 제공채널 사용자 역할
(문자열): 항상 제공채널 게스트 역할
(문자열): 항상 제공