본문으로 건너뛰기
runlot
관리하기팀과 역할

팀과 역할

하나의 조직에서 여러 프로젝트를 관리하며, 각 멤버에게는 세 가지 역할 중 하나를 지정합니다.

프로젝트는 항상 조직(org)에 속합니다. 처음 로그인하면 개인 조직이 생성되며, 조직 slug 는 배포 주소의 두 번째 라벨로 쓰입니다.

runlot org create acme "Acme Inc."
runlot org list

name을 생략하면 slug를 조직 이름으로 사용합니다.

역할

역할권한
admin모든 작업: 멤버 관리, 삭제, 복원, 접근 제어 변경
member배포, 마이그레이션, 시크릿 관리, 로그 조회
viewer목록, 로그, 사용량 등 읽기 작업

복원, 데이터 삭제, 접근 제어 변경처럼 되돌릴 수 없거나 데이터에 영향을 주는 명령(pg restore, pg delete, storage delete, auth delete, access set)은 admin만 실행할 수 있습니다.

초대

이메일 주소 하나만 있으면 됩니다. 상대방이 runlot에 가입한 적이 없어도 초대할 수 있습니다.

runlot member invite [email protected] --role member --org acme
runlot member invites --org acme
runlot member uninvite [email protected] --org acme

대시보드에서는 조직의 멤버 탭에서 같은 일을 할 수 있습니다.

초대 메일에는 수락 링크가 하나 들어 있습니다.

  • 링크는 7일 뒤에 만료됩니다.
  • 한 번만 사용할 수 있습니다.
  • 관리자가 언제든 취소할 수 있으며, 아직 발송되지 않은 메일은 발송되지 않습니다.

같은 주소로 다시 초대하면 새 초대가 만들어지지 않고 기존 초대가 다시 발송됩니다. 이때 링크가 새로 발급되므로 이전 링크는 더 이상 동작하지 않습니다. 역할을 바꿔서 다시 보내면 새 역할이 적용됩니다.

메일 발송은 잠시 뒤에 이루어집니다. 목록에서 보내는 중으로 보이면 아직 발송 대기 중이라는 뜻입니다.

수락은 링크를 가진 사람이 합니다. 로그인한 계정의 이메일이 초대받은 주소와 달라도 수락할 수 있습니다. GitHub에서 이메일을 비공개로 설정한 계정도 조직에 참여할 수 있어야 하기 때문입니다. 수락 화면은 초대받은 주소와 지금 로그인한 계정을 함께 보여주고, 두 값 모두 감사 기록에 남습니다. 초대 링크는 다른 사람에게 전달하지 마세요.

이미 조직의 멤버인 사람이 초대 링크를 열면 역할은 바뀌지 않습니다. 역할을 바꾸려면 아래 member role을 사용하세요.

멤버 관리

runlot member ls --org acme
runlot member role [email protected] viewer --org acme
runlot member rm [email protected] --org acme
runlot member leave --org acme

member role과 member rm은 admin만 실행할 수 있습니다. member leave는 역할과 관계없이 누구나 실행할 수 있습니다. 스스로 조직에서 나가는 것은 다른 사람의 권한을 바꾸지 않기 때문입니다.

조직의 마지막 admin은 역할을 낮추거나 제거할 수 없고, 스스로 나갈 수도 없습니다. 조직을 관리할 사용자가 남지 않기 때문이며, 시도하면 last_admin 오류가 발생합니다. 나가려면 먼저 다른 사람을 admin으로 지정하세요.

멤버를 조직에서 제외해도 그 사람이 만든 프로젝트는 계속 실행되고 계속 과금됩니다. 프로젝트 소유자와 이관 기능은 아직 제공하지 않습니다.

runlot org add-member는 계속 사용할 수 있지만, 이미 로그인한 적이 있는 계정을 provider:subject로 지정해야 하는 자동화용 명령입니다. 사람을 초대할 때는 member invite 를 사용하세요.

2단계 인증

계정에 비밀번호나 소셜 로그인에 더해, 인증 앱의 6자리 숫자를 한 번 더 요구할 수 있습니다. 대시보드의 계정 화면에서 켭니다. 1Password, Google Authenticator, iOS 암호 등 TOTP 를 지원하는 앱으로 QR 코드를 스캔한 뒤, 앱에 표시된 코드를 한 번 입력하면 확정됩니다.

확정하면 복구 코드 10개를 한 번만 보여 줍니다. 기기를 잃었을 때 계정으로 돌아올 수 있는 유일한 방법이므로, 화면을 닫기 전에 저장하세요 — 서버에는 해시만 남아서 다시 보여 줄 수 없습니다. 각 코드는 한 번만 쓸 수 있고, 다시 등록하면 10개가 전부 새로 발급됩니다.

끌 때도 코드가 필요합니다. 로그인된 세션만으로는 끌 수 없게 한 것은 의도한 것입니다. 그렇지 않으면 세션을 훔친 사람이 2단계 인증부터 끄고 들어옵니다.

조직 전체에 필수로 두기

admin 은 조직의 설정 탭에서 조직 전체에 2단계 인증을 필수로 둘 수 있습니다.

필수인 동안, 아직 등록하지 않은 구성원도 보기는 그대로 됩니다 — 프로젝트 목록, 로그, 사용량 모두 볼 수 있고, 바꾸는 요청만 403 totp_required 로 거절됩니다. 이 구분은 의도한 것입니다. 등록하라고 알려 주는 안내 문구를 그리는 것이 바로 그 화면이라, 전부 막으면 오류 화면만 남고 무엇을 해야 하는지는 어디에도 안 남습니다.

필수로 바꿔도 누구도 로그아웃되지 않습니다. 기존 세션은 보기용으로 계속 쓸 수 있고, 다음에 무언가를 바꾸려 할 때 등록하라는 안내를 받습니다.

대상 조직 선택 순서

CLI는 다음 우선순위로 대상 조직을 선택합니다.

  1. --org 옵션
  2. runlot.json의 "org" 값
  3. 둘 다 없으면 오류

org, dns, domains처럼 조직 단위로 동작하는 명령은 프로젝트 디렉토리와 관계없이 실행하므로 --org 옵션을 지정해야 합니다.

이 페이지의 목차