고급 권한: 백엔드 인프라#

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

deployment-img 클라우드자체 호스팅 배포

이 문서는 Mattermost의 권한에 대한 백엔드 서버 인프라를 설명하며, 설치를 수정하려는 기술 관리자나 개발자에게만 권장됩니다.

엔티티 정의#

권한#

권한 은 객체에 대해 수행될 수 있는 허용된 작업을 설명합니다. 이는 사용자가 권한을 부여하는 역할이 할당된 컨텍스트에서 수행할 수 있는 작업을 설명합니다.

역할#

역할 은 권한이 부여되는 것으로, 해당 컨텍스트에서 할당된 권한을 부여하기 위해 컨텍스트에서 사용자에게 할당됩니다. 한 사용자는 서로 다른 컨텍스트에서 서로 다른 역할에 의해 부여된 다양한 권한 세트를 가질 수 있습니다.

범위#

권한은 주어진 범위 내에 존재합니다. Mattermost 시스템에는 세 가지 범위가 있습니다: 시스템, 팀 및 채널. 권한은 적용된 컨텍스트에서 범위를 따라 계단식으로 내려갑니다. 예를 들어, “채널” 범위의 권한이 “팀” 컨텍스트에 적용되면, 해당 권한은 해당 팀 내의 모든 채널에 적용됩니다. 권한은 다음과 같이 간주됩니다:

  • 시스템 수준에서만 의미가 있는 경우 시스템 범위 입니다. 예: 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 권한을 부여받았다면, 해당 사용자는 자신이 멤버인 모든 팀의 모든 채널에서 공개 채널 속성을 관리할 수 있는 권한을 가집니다.

스키마#

스키마는 컨텍스트와 모든 자식 컨텍스트에서 사용자에게 적용되는 기본 역할을 설명합니다. 스키마는 특정 컨텍스트에 대해 정의되거나, 지정되지 않은 경우 부모 컨텍스트의 스키마의 관련 부분이 적용되며, 궁극적으로 시스템 전체 기본값을 제공하는 목적을 수행하는 시스템 스키마까지 계층 구조를 따라 올라갑니다. 예를 들어, 팀 A에 팀 범위 스키마가 정의되어 있지 않다면, 시스템 스키마가 팀 A의 모든 컨텍스트에 대한 기본값을 제공합니다.

또한, 가장 낮은 범위의 스키마가 항상 컨텍스트에서 우선순위를 가집니다. 예를 들어, 팀 B에 팀 범위 스키마가 있다면, 해당 스키마가 팀 B의 모든 컨텍스트에 대해 시스템 스키마 기본값보다 우선순위를 가집니다.

데이터 구조#

권한#

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

시스템

Promote guests to member users.

demote_to_guest

시스템

멤버 사용자를 게스트로 강등하기

manage_remote_clusters

시스템

공유 채널을 위한 원격 클러스터 추가, 제거 및 보기

manage_post_bleve_indexes_job

시스템

Bleve 게시물 인덱싱 작업의 상태 관리하기

manage_data_retention_job

시스템

데이터 보존 작업의 상태 관리하기

manage_compliance_export_job

시스템

규정 준수 내보내기 작업의 상태 관리하기

manage_elasticsearch_post_indexing_job

시스템

Elasticsearch 게시물 인덱싱 작업의 상태 관리하기

manage_elasticsearch_post_aggregation_job

시스템

Elasticsearch 게시물 집계 작업의 상태 관리하기

manage_ldap_sync_job

시스템

LDAP 동기화 작업의 상태 관리하기

add_bookmark_public_channel

채널

공개 채널에 북마크 추가하기

add_bookmark_private_channel

채널

비공개 채널에 북마크 추가하기

edit_bookmark_public_channel

채널

공개 채널의 북마크 변경하기

edit_bookmark_private_channel

채널

비공개 채널의 북마크 변경하기

delete_bookmark_public_channel

채널

공개 채널의 북마크 삭제하기

delete_bookmark_private_channel

채널

비공개 채널의 북마크 삭제하기

order_bookmark_public_channel

채널

공개 채널의 북마크 순서 변경하기

order_bookmark_private_channel

채널

비공개 채널의 북마크 순서 변경하기

Roles 필드#

역할은 사용자의 멤버십을 나타내는 객체에 적용됩니다. 이는 User, TeamMember, ChannelMemberSchemes 테이블의 Roles 필드에서 참조됩니다.

TeamMemberChannelMember 테이블에서 사용자 정의 역할을 포함하는 Roles 필드와 멤버 객체가 관련 팀에 할당된 기본 또는 사용자 정의 스키마에서 각각의 역할을 상속해야 함을 나타내는 SchemeAdminSchemeUser 불리언이 있습니다.

Roles 테이블#

역할은 동적이며 사용자가 구성할 수 있어 다음과 같은 필드가 있는 데이터베이스 테이블이 필요합니다:

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

  • Name (문자 제약 조건이 있는 고유 문자열, 예: “team_user”)

  • Display Name (문자열)

  • Description (문자열)

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

  • Scheme Managed (불리언): 이 역할이 스키마의 일부로 관리되는지 여부를 나타냅니다.

  • BuiltIn (불리언): 이 역할이 Mattermost 시스템에 내장되어 있고 사용자가 제거할 수 없는지 여부를 나타냅니다.

내장 역할#

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

다음 기본 권한이 있는 내장 역할을 사용할 수 있습니다:

channel_admin

  • manage_private_channel_members

  • read_public_channel_groups

  • use_channel_mentions

  • create_post

  • use_group_mentions

  • add_reaction

  • read_private_channel_groups

  • remove_reaction

  • manage_public_channel_members

  • manage_channel_roles

  • add_bookmark_public_channel

  • edit_bookmark_public_channel

  • delete_bookmark_public_channel

  • order_bookmark_public_channel

  • add_bookmark_private_channel

  • edit_bookmark_private_channel

  • delete_bookmark_private_channel

  • order_bookmark_private_channel

channel_guest

  • read_channel

  • read_channel_contents

  • add_reaction

  • remove_reaction

  • upload_file

  • edit_post

  • create_post

  • use_channel_mentions

channel_user

  • manage_public_channel_properties

  • use_group_mentions

  • add_reaction

  • delete_private_channel

  • manage_private_channel_members

  • read_private_channel_groups

  • delete_public_channel

  • read_public_channel_groups

  • use_channel_mentions

  • read_channel

  • read_channel_contents

  • delete_post

  • get_public_link

  • remove_reaction

  • manage_public_channel_members

  • upload_file

  • manage_private_channel_properties

  • create_post

  • edit_post

  • add_bookmark_public_channel

  • edit_bookmark_public_channel

  • delete_bookmark_public_channel

  • order_bookmark_public_channel

  • add_bookmark_private_channel

  • edit_bookmark_private_channel

  • delete_bookmark_private_channel

  • order_bookmark_private_channel

system_admin

  • manage_others_slash_commands

  • sysconsole_write_user_management_permissions

  • edit_brand

  • remove_reaction

  • manage_incoming_webhooks

  • sysconsole_write_user_management_groups

  • create_public_channel

  • manage_private_channel_members

  • sysconsole_write_authentication

  • join_private_teams

  • create_post_ephemeral

  • list_users_without_team

  • sysconsole_write_reporting

  • join_public_channels

  • invite_guest

  • list_private_teams

  • sysconsole_write_user_management_channels

  • manage_others_bots

  • read_user_access_token

  • add_user_to_team

  • view_members

  • edit_post

  • demote_to_guest

  • delete_others_posts

  • sysconsole_write_plugins

  • delete_private_channel

  • sysconsole_read_user_management_system_roles

  • sysconsole_read_user_management_users

  • revoke_user_access_token

  • read_others_bots

  • read_public_channel_groups

  • sysconsole_write_user_management_teams

  • sysconsole_write_billing

  • convert_public_channel_to_private

  • remove_user_from_team

  • manage_team

  • add_reaction

  • manage_oauth

  • list_team_channels

  • create_team

  • read_jobs

  • invite_user

  • manage_shared_channels

  • remove_others_reactions

  • manage_remote_clusters

  • sysconsole_write_user_management_users

  • sysconsole_read_experimental

  • sysconsole_write_compliance

  • edit_others_posts

  • assign_bot

  • manage_bots

  • manage_others_outgoing_webhooks

  • manage_system_wide_oauth

  • delete_others_emojis

  • manage_others_incoming_webhooks

  • promote_guest

  • sysconsole_write_experimental

  • sysconsole_read_plugins

  • create_group_channel

  • sysconsole_read_environment

  • manage_roles

  • use_channel_mentions

  • manage_public_channel_properties

  • manage_channel_roles

  • get_public_link

  • sysconsole_read_billing

  • sysconsole_write_integrations

  • download_compliance_export_result

  • manage_slash_commands

  • assign_system_admin_role

  • create_post

  • delete_post

  • create_direct_channel

  • list_public_teams

  • create_post_public

  • read_private_channel_groups

  • sysconsole_read_integrations

  • read_other_users_teams

  • manage_jobs

  • sysconsole_read_site

  • manage_outgoing_webhooks

  • sysconsole_write_environment

  • manage_system

  • sysconsole_read_user_management_permissions

  • manage_public_channel_members

  • sysconsole_write_about

  • import_team

  • sysconsole_write_user_management_system_roles

  • sysconsole_read_reporting

  • upload_file

  • read_channel

  • read_channel_contents

  • sysconsole_read_user_management_teams

  • delete_emojis

  • manage_private_channel_properties

  • view_team

  • sysconsole_read_user_management_groups

  • create_private_channel

  • create_bot

  • join_public_teams

  • delete_public_channel

  • read_public_channel

  • sysconsole_read_about

  • read_bots

  • sysconsole_read_authentication

  • edit_other_users

  • sysconsole_read_user_management_channels

  • convert_private_channel_to_public

  • use_group_mentions

  • create_user_access_token

  • sysconsole_write_site

  • manage_team_roles

  • sysconsole_read_compliance

  • create_emojis

  • manage_post_bleve_indexes_job

  • manage_data_retention_job

  • manage_compliance_export_job

  • manage_elasticsearch_post_indexing_job

  • manage_elasticsearch_post_aggregation_job

  • manage_ldap_sync_job

  • add_bookmark_public_channel

  • edit_bookmark_public_channel

  • delete_bookmark_public_channel

  • order_bookmark_public_channel

  • add_bookmark_private_channel

  • edit_bookmark_private_channel

  • delete_bookmark_private_channel

  • order_bookmark_private_channel

system_custom_group_admin

  • 생성하기

  • 편집하기

  • 삭제하기

  • 구성원 관리하기

  • 복원하기

system_guest

  • create_group_channel

  • create_direct_channel

system_manager

  • sysconsole_write_user_management_permissions

  • sysconsole_read_about

  • sysconsole_read_user_management_channels

  • join_private_teams

  • delete_private_channel

  • view_team

  • read_jobs

  • sysconsole_read_user_management_teams

  • sysconsole_read_plugins

  • manage_channel_roles

  • manage_public_channel_members

  • remove_user_from_team

  • sysconsole_read_environment

  • list_private_teams

  • manage_private_channel_members

  • manage_private_channel_properties

  • edit_brand

  • add_user_to_team

  • convert_public_channel_to_private

  • read_private_channel_groups

  • sysconsole_write_environment

  • manage_jobs

  • sysconsole_read_reporting

  • read_public_channel

  • manage_team

  • read_channel

  • sysconsole_read_integration

  • read_public_channel_groups

  • list_public_teams

  • manage_team_roles

  • sysconsole_read_user_management_groups

  • manage_public_channel_properties

  • sysconsole_write_user_management_groups

  • sysconsole_read_user_management_permissions

  • sysconsole_write_site

  • sysconsole_read_site

  • sysconsole_write_user_management_channels

  • sysconsole_write_integrations

  • delete_public_channel

  • sysconsole_write_user_management_teams

  • join_public_teams

system_post_all

  • create_post

  • use_channel_mentions

  • use_group_mentions

system_post_all_public

  • create_post_public

  • use_group_mentions

  • use_channel_mentions

system_read_only_admin

  • sysconsole_read_compliance

  • read_other_users_teams

  • sysconsole_read_reporting

  • list_private_teams

  • sysconsole_read_experimental

  • read_jobs

  • read_public_channel

  • view_team

  • sysconsole_read_user_management_users

  • sysconsole_read_plugins

  • sysconsole_read_user_management_teams

  • read_public_channel_groups

  • sysconsole_read_user_management_channels

  • sysconsole_read_user_management_permissions

  • sysconsole_read_about

  • download_compliance_export_result

  • read_channel

  • sysconsole_read_authentication

  • sysconsole_read_site

  • list_public_teams

  • sysconsole_read_integrations

  • read_private_channel_groups

  • sysconsole_read_environment

  • sysconsole_read_user_management_groups

system_user

  • list_public_teams

  • join_public_teams

  • create_direct_channel

  • create_group_channel

  • view_members

  • create_team

  • create_emojis

  • delete_emojis

system_user_access_token

  • create_user_access_token

  • read_user_access_token

  • revoke_user_access_token

system_user_manager

  • manage_public_channel_members

  • sysconsole_write_user_management_groups

  • manage_private_channel_properties

  • read_channel

  • sysconsole_read_authentication

  • manage_private_channel_members

  • read_jobs

  • view_team

  • sysconsole_read_user_management_groups

  • list_private_teams

  • join_public_teams

  • manage_team

  • list_public_teams

  • add_user_to_team

  • sysconsole_read_user_management_channels

  • sysconsole_write_user_management_teams

  • read_public_channel

  • sysconsole_read_user_management_permissions

  • manage_public_channel_properties

  • join_private_teams

  • convert_public_channel_to_private

  • manage_channel_roles

  • sysconsole_read_user_management_teams

  • read_public_channel_groups

  • delete_public_channel

  • remove_user_from_team

  • manage_team_roles

  • delete_private_channel

  • sysconsole_write_user_management_channels

  • read_private_channel_groups

team_admin

  • remove_user_from_team

  • manage_others_slash_commands

  • manage_team_roles

  • manage_public_channel_members

  • use_group_mentions

  • manage_others_outgoing_webhooks

  • manage_slash_commands

  • manage_team

  • manage_others_incoming_webhooks

  • manage_channel_roles

  • read_public_channel_groups

  • remove_reaction

  • delete_post

  • manage_outgoing_webhooks

  • use_channel_mentions

  • manage_incoming_webhooks

  • delete_others_posts

  • read_private_channel_groups

  • create_post

  • manage_private_channel_members

  • convert_public_channel_to_private

  • add_reaction

  • import_team

  • add_bookmark_public_channel

  • edit_bookmark_public_channel

  • delete_bookmark_public_channel

  • order_bookmark_public_channel

  • add_bookmark_private_channel

  • edit_bookmark_private_channel

  • delete_bookmark_private_channel

  • order_bookmark_private_channel

team_guest

  • view_team

team_post_all

  • create_post

  • use_group_mentions

  • use_channel_mentions

team_post_all_public

  • use_group_mentions

  • create_post_public

  • use_channel_mentions

team_user

  • invite_user

  • add_user_to_team

  • list_team_channels

  • join_public_channels

  • read_public_channel

  • view_team

  • create_public_channel

  • create_private_channel

Schemes 테이블#

Schemes는 동적이며 사용자가 구성할 수 있어, 다음과 같은 필드가 있는 데이터베이스 테이블이 필요합니다:

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

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

  • Display 이름

  • Description (문자열)

  • Scope (문자열): Team 또는 Channel

  • Team Admin Role (문자열): Channel Scope인 경우 비어있음

  • Team User Role (문자열): Channel Scope인 경우 비어있음

  • Team Guest Role (문자열): Channel Scope인 경우 비어있음

  • Channel Admin Role (문자열): 항상 제공됨

  • Channel User Role (문자열): 항상 제공됨

  • Channel Guest Role (문자열): 항상 제공됨