# 멤버와 접근 권한

Mocco의 권한은 두 종류입니다. 사람의 **워크스페이스 역할**(소유자, 관리자, 멤버)은 누가 워크스페이스를 관리하는지 정합니다. **Access** 페이지에서 직접 정의하는 **역할**(예: `deployer`, `mobile-release`)은 누가 승인할 수 있는지 정합니다. 게이트, 보호된 플래그 환경이나 OTA 채널, 올린 최소 앱 버전은 역할을 지정하고, 그 역할에 속한 사람만 승인할 수 있습니다.

승인을 이렇게 나누는 것은 GitHub 쓰기 권한과 프로덕션 변경 승인을 분리하기 위해서입니다. 코드를 푸시할 수 있어도 그 릴리스를 승인할 수는 없을 수 있고, 승인자가 저장소 관리자일 필요도 없습니다.

## 멤버

워크스페이스의 **Members** 페이지에는 워크스페이스의 모든 사람이 이름, 이메일, 워크스페이스 역할과 함께 나열됩니다.

![Members 페이지: 소유자 한 명과 멤버 한 명](https://fi-workers-mocco-storage.s3.ap-northeast-2.amazonaws.com/pub/w/93e11fe8-0494-4e3d-b1cb-fe4dffd3ee7e/p/d64785b8-9a23-4fa1-a81d-550af30e203a/helpcenter/1df63601-6c45-4d1d-b4cf-feaad32292c2/members.png)

워크스페이스를 만든 사람이 소유자입니다. Mocco는 아직 초대장을 보내지 않으며, 콘솔에서 멤버의 워크스페이스 역할을 바꿀 수도 없습니다. Members 페이지는 이미 워크스페이스에 있는 사람들을 나열하고, 초대 기능은 여기에 추가될 예정입니다.

## 소유자, 관리자, 멤버가 할 수 있는 일

모든 멤버는 워크스페이스의 모든 것을 볼 수 있고 프로젝트 안에서 일할 수 있습니다. 프로젝트 생성, 앱 추가, 제품 켜기, 플래그와 OTA 설정 변경, 인박스 답장, 파이프라인 실행 시작이 가능합니다. 보호된 항목의 변경은 누가 하든 승인을 기다립니다.

소유자와 관리자는 누가 무엇에 대한 권한을 갖는지 정하는 변경도 할 수 있습니다.

- **Access** 페이지에서 역할을 만들고 삭제하며, 역할에 사람을 추가하고 뺍니다.
- 어떤 파이프라인이 프로덕션 자격 증명을 받을 수 있는지 정하는 **Credential releases**를 추가하고 삭제합니다.
- 프로젝트의 **API keys**를 만들고 폐기합니다.
- 알림 채널과 규칙, 웹훅 소스를 추가하고 삭제합니다.
- OTA 호스팅 신뢰 정책과 서명 인증서를 추가합니다.
- 플래그 환경의 킬 스위치를 쓸 수 있는 사람을 정합니다.

멤버에게는 이 설정이 읽기 전용으로 보이며, 페이지에 "You have read-only access; owners and admins manage …"라고 표시됩니다. Mocco는 모든 변경에서 워크스페이스 역할을 확인하므로, 버튼을 숨기는 것만이 유일한 보호는 아닙니다.

워크스페이스 삭제는 **Settings** 페이지에서 하며, 소유자만 할 수 있습니다.

## Access 페이지의 역할

워크스페이스의 사이드 내비게이션에서 **Access**를 엽니다. 역할 이름(예: `deployer`)을 입력하고 **Create role**을 선택합니다. 역할 카드에서 **Select a member…**로 멤버를 고르고 **Add**를 선택합니다. **Remove**는 사람을 역할에서 빼고, **Delete role**은 역할을 삭제합니다.

![Access 페이지: 멤버가 두 명인 mobile-release 역할과 그 아래의 credential releases](https://fi-workers-mocco-storage.s3.ap-northeast-2.amazonaws.com/pub/w/93e11fe8-0494-4e3d-b1cb-fe4dffd3ee7e/p/d64785b8-9a23-4fa1-a81d-550af30e203a/helpcenter/ccd8b1d1-20d8-49d3-9884-458d83548644/access.png)

역할은 그 자체로는 아무 의미가 없습니다. 무언가가 그 역할을 지정하는 곳에서 효력이 생깁니다.

- `.mocco.yml` 파이프라인의 게이트. 예를 들어 `resume: [{ role: deployer, count: 2 }]`이면 `deployer`의 두 사람이 승인해야 합니다. [배포 거버넌스](https://www.mocco.club/docs/ko/articles/f48fys-overview)를 참고하세요.
- 플래그 환경이나 OTA 채널의 보호, 버전 정책의 승인. [기능 플래그 빠른 시작](https://www.mocco.club/docs/ko/articles/f3cruw-quickstart#4-protect-an-environment)과 [강제 업데이트](https://www.mocco.club/docs/ko/articles/kdpur2-force-update#require-approval)를 참고하세요.

게이트에 여러 역할이 필요할 때는 한 사람이 여러 역할을 가지고 있어도 한 번만 셉니다. 자기 승인을 막아 두면(게이트의 `prevent_self: true`, 보호의 **Not the requester**) 실행을 시작했거나 변경을 제안한 사람은 그것을 승인할 수 없습니다.

역할은 소유자와 관리자만 바꿀 수 있으므로, 멤버가 스스로를 승인자 역할에 넣고 자기 변경을 승인할 수 없습니다.

## Credential releases

Access 페이지의 **Credential releases** 섹션에는 어떤 파이프라인 게이트가 어떤 자격 증명을 받을 수 있는지 나열됩니다. 저장소, 파이프라인, 먼저 승인되어야 하는 게이트, 자격 증명의 프로바이더와 이름, 유효한 최대 시간입니다. 단계는 실행이 그 게이트를 통과한 뒤에야 자격 증명을 받습니다. [배포 거버넌스](https://www.mocco.club/docs/ko/articles/f48fys-overview#credentials-behind-a-gate)와 [파이프라인에 토큰 발급하기](https://www.mocco.club/docs/ko/articles/yjbg5q-pipeline)를 참고하세요.

재개되거나 거부된 모든 게이트, 결정된 모든 승인 요청, Mocco가 내주거나 거부한 모든 자격 증명은 [감사 로그](https://www.mocco.club/docs/ko/articles/2yiscf-audit-log)에 기록됩니다.
