역할과 권한

옷가게 쇼핑몰 Space에 동료 minji.kim@example.com을 배정했다고 생각해 보세요. 동료에게 상품을 등록하고 수정하는 일은 맡기고 싶지만, 상품을 지우거나 외부에 공개하는 일까지 맡기기는 조심스럽습니다. 이렇게 "한 Space 안에서 멤버가 무엇을 할 수 있고 무엇은 못 하는지"를 정해 둔 권한 묶음이 SpaceRole입니다.

SpaceRole은 멤버 한 명 한 명에게 권한을 따로 매기는 대신, 권한 묶음을 미리 만들어 두고 그것을 멤버에게 붙여 주는 방식입니다. 예를 들어 "상품을 읽고 수정만 할 수 있는" 역할을 한 번 만들어 두면, 상품 등록을 맡길 동료들에게 그 역할 하나만 붙이면 됩니다. 멤버가 늘어나도 권한을 매번 처음부터 정할 필요가 없습니다.

이 페이지에서는 SpaceRole이 무엇이고 어떤 권한을 담는지 먼저 살펴본 뒤, 옷가게 Space에 "상품 등록 담당" 역할을 직접 만들어 봅니다.

Space 역할은 Organization 역할과 다릅니다

WEEGLOO에는 권한을 정하는 자리가 두 군데 있습니다. 헷갈리기 쉬우니 먼저 경계를 그어 둡니다.

  • Organization 역할(Owner, Admin, Member)은 회사 전체에서의 등급입니다. 멤버를 초대하거나 Space를 새로 만드는 것처럼 Organization 전체에 걸친 일을 누가 할 수 있는지를 정합니다.
  • SpaceRole은 특정 한 Space 안에서의 권한입니다. 그 작업 공간에 들어와 상품을 만들고, 수정하고, 발행하는 것처럼 콘텐츠를 다루는 일을 멤버가 어디까지 할 수 있는지를 정합니다.

같은 동료라도 Space마다 다른 SpaceRole을 줄 수 있습니다. 쇼핑몰 Space에서는 상품을 수정까지 할 수 있게 하고, 사내 공지용 Space에서는 읽기만 할 수 있게 하는 식입니다. 이 페이지는 SpaceRole만 다룹니다. Organization 역할과 멤버 초대·배정은 조직과 스페이스에서 다룹니다.

역할에 담기는 것: 무엇에, 어떤 동작을

SpaceRole 하나에는 "어떤 대상에 대해, 어떤 동작을, 허용할지 거부할지"가 담깁니다.

먼저 권한을 정하는 대상은 네 가지입니다. 이 중 다음 세 대상은 같은 동작 묶음을 공유하고, 네 번째인 Script는 동작이 달라 뒤에서 따로 다룹니다.

  • Content Type: 상품·공지 같은 양식
  • Content: 그 양식으로 만든 상품 하나하나
  • Media: 업로드한 사진·영상 같은 파일

대상마다 허용하거나 거부할 수 있는 동작은 다음과 같습니다.

동작은 화면에 영문으로 표시됩니다. 각 동작의 뜻은 다음과 같습니다.

동작(화면 표기)무엇을 하는가
Read목록과 내용을 봅니다
Create새로 만듭니다
Edit이미 있는 것을 고쳐 저장합니다
Delete지웁니다
Publish외부에 공개(전달)되도록 발행합니다
Unpublish발행을 내려 외부 공개를 멈춥니다
Archive보관 상태로 옮깁니다
Unarchive보관에서 되돌립니다
All actions위의 모든 동작을 한 번에 허용합니다

옷가게 예로 풀면, "상품 등록 담당" 역할에는 Content(상품)에 대해 Read·Create·Edit는 허용하고, Delete·Publish는 넣지 않는 식으로 동작을 골라 담습니다. 그러면 동료는 상품을 만들고 고칠 수는 있지만, 지우거나 외부에 공개하지는 못합니다.

Publish가 무엇이고 발행하면 외부에 어떻게 공개(전달)되는지는 상태와 발행에서 자세히 다룹니다.

허용과 거부

역할 화면에는 허용 목록과 거부 목록이 따로 있습니다. 할 수 있게 하려는 동작을 허용 목록에 한 줄씩 넣는 방식입니다. 중요한 점은, 허용 목록에 넣지 않은 동작은 자동으로 거부된다는 것입니다. 그래서 동료에게 주고 싶은 동작만 허용에 넣으면, 나머지는 따로 막지 않아도 막힙니다.

거부 목록은 "넓게 허용해 두되 특정 부분만 예외로 막고 싶을 때" 쓰는 안전장치입니다. 한 동작이 허용과 거부에 동시에 걸리면 거부가 항상 우선합니다.

특정 종류·특정 사람으로 범위 좁히기

동작을 허용할 때, 그 허용을 한 가지 종류나 특정 조건으로만 좁힐 수 있습니다. 예를 들어 다음과 같은 좁히기가 가능합니다.

  • 한 종류로만: "상품" Content Type에만 적용하고, 다른 Content Type에는 적용하지 않습니다.
  • 자기가 만든 것으로만: 그 멤버가 직접 만든 Content만 다룰 수 있게 하고, 남이 만든 것은 건드리지 못하게 합니다.
  • 특정 Tag가 붙은 것으로만: 정해진 Tag가 달린 ContentMedia에만 적용합니다.

범위를 따로 좁히지 않으면, 그 동작은 해당 대상 전체에 적용됩니다. 예를 들어 Content 읽기를 좁히지 않고 허용하면 모든 Content를 읽을 수 있고, "상품" Content Type으로 좁히면 상품만 읽을 수 있습니다.

Tag가 무엇인지는 Tag에서 다룹니다.

Script 실행·관리 권한

SpaceRole은 앞의 세 대상 외에 Script에 대한 권한도 담습니다. Script는 프런트엔드가 호출하는, 서버 코드 없이 만드는 백엔드 엔드포인트입니다(Script 참조). Content·Media에는 없는 Execute(실행) 동작이 여기에 있습니다.

  • Execute: 그 Script를 실행(호출)할 수 있게 합니다. 프런트엔드나 가입 회원이 Script를 부르려면 이 권한이 필요합니다.
  • Read·Create·Edit·Delete: Script를 조회하고, 만들고, 고치고, 지우는 관리 권한입니다.

"자기가 만든 Script만" 다루도록 작성자 기준으로 좁힐 수 있습니다. 발행 동작은 없습니다. Script는 발행하는 자원이 아니기 때문입니다. 제품에 가입한 회원(ServiceUser)에게는 보통 Execute만 열어 둡니다. Script를 만들고 고치는 저작은 콘텐츠 스튜디오 사용자가 맡기 때문입니다.

Role 편집기의 Script 권한 탭. 허용 목록에 동작 Execute, 범위 모든 Script, 작성자 모든 사용자로 규칙 한 줄을 넣은 상태

권한 규칙의 정확한 형식은 SpaceRole·ServiceUserRole API 레퍼런스에서 다룹니다.

Space 설정을 바꿀 수 있는지도 역할이 정합니다

지금까지는 콘텐츠와 Script를 다루는 권한이었습니다. 역할에는 성격이 다른 목록이 하나 더 담깁니다. Space 설정을 바꿀 수 있는지 여부입니다.

옷가게 예로 돌아가 보면, 동료에게 상품 등록은 맡기고 싶지만 Locale을 새로 추가하거나 외부 사이트가 쓸 토큰을 발급하는 일까지 맡기고 싶지는 않을 것입니다. 이런 Space 설정 작업을 누가 할 수 있는지가 이 목록으로 정해집니다.

앞의 권한과 달리 이 목록에는 동작도 범위 좁히기도 없습니다. 항목을 켜면 그 설정을 다룰 수 있고, 켜지 않으면 다룰 수 없습니다. 역할을 만들거나 고치는 화면의 Permission 탭에서 켜고 끕니다. 맨 위의 모든 관리 Permission을 켜면 아래 항목이 한꺼번에 켜지고, 항목을 하나씩 다 켜도 이 토글이 켜진 것으로 보입니다. 켤 수 있는 항목은 다음과 같습니다.

항목켜면 할 수 있게 되는 일
Space 정보 관리Space의 이름과 설명을 고칩니다
Membership 관리Space에 멤버를 넣고 빼고, 멤버의 역할을 바꿉니다
Role 관리이 페이지에서 만든 것처럼 역할을 만들고 고칩니다
Delivery Access Token 관리읽기 전용 토큰을 발급하고 관리합니다
Space Access Token 관리읽고 쓰는 토큰을 발급하고 관리합니다
Locale 관리언어를 추가하거나 기본 언어를 바꿉니다
Email Account 관리메일을 보낼 때 쓰는 발신 계정을 등록합니다
App 관리마켓에서 앱을 가져와 설치합니다
Tag 관리Tag를 만들고 고치고 지웁니다
Web Hosting 관리사이트를 배포하고 도메인을 연결합니다
ServiceLogin 관리제품에 가입하는 회원의 로그인과 회원 권한을 설정합니다
Webhook 관리Webhook을 만들고 호출 기록을 봅니다
Scheduler 관리Scheduler를 만들고 실행 기록을 봅니다
모니터링 조회Space가 쓴 용량과 트래픽을 봅니다

토큰 두 종류가 따로 있는 것에 주의하세요. 읽기 전용인 Delivery Access Token만 발급할 수 있게 하고, 읽고 쓰는 Space Access Token은 발급하지 못하게 막을 수 있습니다. 공개 사이트에 넣을 읽기 토큰은 동료가 직접 발급하게 하면서, 쓰기까지 되는 토큰은 관리자만 만들게 하고 싶을 때 이렇게 나눠 줍니다.

Scheduler 관리는 이 항목만으로 끝나지 않습니다. Scheduler를 만들거나 고칠 때는 그것이 실행할 ScriptExecute 권한도 함께 있어야 합니다(누구의 권한으로 도는가 참조).

아무 항목도 켜지 않으면 그 역할은 콘텐츠만 다루는 역할이 됩니다. 뒤에서 만들어 볼 "상품 등록 담당" 역할이 그런 경우입니다. 상품은 등록하고 고칠 수 있지만 Space 설정은 하나도 건드리지 못합니다.

Role 생성 화면의 Permission 탭. 맨 위 모든 관리 Permission 토글이 꺼져 있고, 그 아래 14개 항목이 모두 꺼진 상태입니다

Space를 만들면 따라오는 Administrator 역할

Space를 새로 만들면 Administrator라는 역할이 자동으로 하나 함께 생깁니다. 이 역할은 그 Space 안의 모든 것을 다룰 수 있는 최고 권한 역할입니다. Space를 만든 사람은 이 Administrator 역할을 가진 채로 시작합니다.

Administrator 역할은 시스템이 마련해 둔 역할이라 수정하거나 삭제할 수 없습니다. 권한을 좁혀서 동료에게 주고 싶다면, Administrator를 고치는 대신 아래처럼 새 역할을 따로 만들어서 주면 됩니다.

"상품 등록 담당" 역할 만들기

이제 옷가게 Space에 동료에게 줄 "상품 등록 담당" 역할을 직접 만들어 봅니다. 이 역할은 상품(Content)을 Read·Create·Edit할 수 있지만 삭제하거나 발행하지는 못하게 하겠습니다.

  1. 왼쪽 메뉴에서 Role & Permission을 누르세요.
  2. 목록 오른쪽 위의 생성 버튼을 누르세요.
  3. Role 상세 탭의 이름 칸에 상품 등록 담당을 입력하세요. 설명 칸은 비워 두어도 됩니다.

Role 생성 화면의 Role 상세 탭. 이름에 "상품 등록 담당"을 입력한 상태

다음으로 이 역할이 상품(Content)에 대해 할 수 있는 동작을 정합니다. 동작은 허용 목록에 한 줄씩 규칙으로 넣고, 같은 줄에서 적용할 범위(Content Type)도 함께 고릅니다.

  1. Content 탭으로 이동하세요.
  2. 허용 아래의 + 버튼을 눌러 규칙을 한 줄 추가하세요.
  3. 그 줄에서 동작을 Read로, 적용할 Content Type을 "상품"으로 고르세요. (작성자·Tag 칸은 "모든…" 그대로 두면 전체에 적용됩니다.)
  4. 같은 방식으로 Create, Edit 규칙도 한 줄씩 더하세요. 세 줄 모두 Content Type은 "상품"으로 둡니다.
  5. 삭제(Delete)와 발행(Publish)은 허용에 넣지 마세요. 허용에 넣지 않은 동작은 자동으로 거부되므로, 동료는 상품을 지우거나 외부에 공개하지 못합니다.

Content 권한 탭에 Read·Create·Edit 세 규칙을 "상품"으로 한정해 허용한 상태

  1. 오른쪽 위의 저장 버튼을 누르세요.

목록에 상품 등록 담당이 나타나면 역할이 만들어진 것입니다. 처음부터 있던 Administrator와 함께 보입니다.

Role & Permission 목록에 "상품 등록 담당"과 "Administrator"가 함께 보이는 화면

만든 역할을 동료에게 주기

역할을 만들었다고 해서 자동으로 누구에게 적용되지는 않습니다. 만든 역할은 멤버에게 붙여 주어야 효력이 생깁니다.

동료를 Space에 배정할 때 그 Space 안에서 가질 역할을 함께 고르는데, 이때 방금 만든 상품 등록 담당을 고르면 됩니다. 이미 Space에 들어와 있는 동료라면, 멤버 목록에서 그 동료의 역할을 바꿔서 적용할 수도 있습니다. 한 멤버에게 여러 역할을 함께 줄 수도 있습니다. 이때는 각 역할이 허용하는 동작이 모두 합쳐져, 어느 한 역할에서든 허용된 동작이면 그 멤버가 할 수 있습니다. (거부가 허용보다 우선하는 것은 같은 역할 안에서만입니다. 한 역할에서 거부했더라도 다른 역할이 허용하면 그 동작은 됩니다.)

멤버를 Space에 배정하고 역할을 고르는 구체적인 단계는 조직과 스페이스에서 다룹니다.

다음으로 할 일

  • 조직과 스페이스: 동료를 Space에 배정하고 방금 만든 역할을 붙여 줍니다.
  • 토큰: 사람이 아니라 외부 사이트나 프로그램이 콘텐츠를 읽거나 쓸 수 있게 하는 접근 토큰을 다룹니다. 여기서 만든 역할은 토큰에도 붙습니다. Delivery Access Token에 붙이면 역할이 그 토큰의 읽기 범위를, Space Access Token에 붙이면 읽고 쓰는 범위를 정합니다. 발급과 관리 권한은 두 토큰에 대해 따로 나뉘어 있어, 위 Space 설정 목록에서 한쪽만 켜 줄 수도 있습니다.
  • API 레퍼런스: 프로그램에서 역할을 직접 만들거나 권한 규칙을 다룰 때 필요한 요청 형식 같은 기술 명세를 다룹니다.