오프테이블 Wiki

결정 기록 · 결정 기록

ADR-0027: 최소 관리자 사용자 관리와 환경 분리

별도 관리자 앱에서 사용자 조회·검색·정지·해제만 제공하고 개발·운영 도메인과 Supabase를 격리한다. 개발 로그인은 ADR-0034가 대체한다.

상태
확정
신뢰도
높음
근거
10개
업데이트
목차
문서 정보

맥락#

사용자 운영을 시작하려면 제품 화면과 분리된 내부 관리 표면이 필요하다. 첫 단계에서는 운영 기능을 넓히지 않고 사용자 상태 확인과 이용정지만 다룬다. [1]

결정#

  • 관리자 앱은 apps/admin/의 별도 Next.js 앱과 Vercel offtable-admin 프로젝트로 운영한다.
  • 개발은 admin-dev.offtable.kr과 offtable-dev, 운영은 admin.offtable.kr과 offtable-prod만 연결한다.
  • 로그인은 기존 Supabase 사용자에게 보내는 6자리 이메일 OTP이며 새 사용자를 만들지 않는다.
  • 관리자 권한은 비공개 DB grant로 판정한다. 앱에는 service role key를 두지 않는다.
  • 최소 기능은 사용자 목록, 이메일·표시 이름 검색, 상세 조회, 이용정지와 재활성화다.
  • 삭제, 대리 로그인, 비밀번호 조작, 관리자 역할 편집, 일괄 작업, 메시지 열람, 서류 검토, 인증 승인과 운영 지표는 제외한다.
  • 이용정지 상태는 비공개 테이블에 두고 일반 사용자에게 노출하지 않는다. 제품 DB의 RLS와 보호 화면은 정지 사용자를 함께 차단한다. [2]
  • 관리자 페이지는 공개 URL에서 접근할 수 있지만 noindex와 제품 로그인을 적용한다. Vercel Deployment Protection은 사용하지 않는다.

현재 상태#

개발 관리자 로그인은 2026-08-19 ADR-0034가 이메일+비밀번호로 대체한다. 운영 관리자 OTP, 앱 분리, 환경 주소, grant는 이 문서가 유지한다. 서류 거절 뒤 재요청은 ADR-0049, 회원 신고 분리는 ADR-0050, 사용자별 푸시 운영은 ADR-0052가 소유한다. 큰 제재는 기존 이용정지다. 2026-08-24 기준 사용자 검색·페이지네이션, 회사 인증 사후 검수와 푸시 운영 허브는 개발 후보에 반영됐다. [3]

이용정지의 예정된 만남 처리와 자동 복원 금지는 만남 예외 흐름을 따른다. 관리자 홈은 오래 미정인 테이블의 최소 정보만 보여 주며 회원 메시지·비공개 가입 정보를 열지 않는다. 신고·문의 확인은 운영 검토 기준을 따른다. [4]

관리자는 상단에서 연결 환경과 현재 계정을 확인한다. 계정 상태 변경·단어 삭제는 대상과 영향을 확인하고 진행한다. 저장 중 연타를 막고, 실패하면 입력을 남긴다. 다른 처리와 충돌하면 최신 내용을 다시 확인하기 전까지 재제출하지 않는다. 저장 성공 뒤 조회 실패는 저장 실패로 바꾸지 않으며 완료 안내는 확인 창과 갱신된 목록에서도 확인할 수 있다. 제품 구현

환경과 주소#

표는 좌우로 이동할 수 있습니다.
환경 관리자 주소 Supabase 브랜치
Development https://admin-dev.offtable.kr offtable-dev develop
Production https://admin.offtable.kr offtable-prod main

두 환경의 Auth 사용자, 관리자 grant, DB, 키와 쿠키는 공유하지 않는다. [5]

권한과 데이터 경계#

  • 일반 사용자는 관리자 grant와 이용정지 원본 테이블을 읽거나 수정할 수 없다.
  • 사용자 이메일과 최근 로그인 시각은 관리자 RPC가 권한을 확인한 뒤 필요한 필드만 반환한다.
  • 이용정지·해제는 관리자 RPC만 수행하고 자기 계정 정지는 거부한다.
  • 최초 관리자 부여는 저장소 밖의 일회성 운영 절차로 실행하며 이메일·UUID를 코드와 Wiki에 남기지 않는다.
  • 정지는 Supabase Auth 사용자를 삭제하거나 auth.users를 직접 수정하지 않는 애플리케이션 접근 차단이다.

재검토 조건#

  • 신고·제재 사유, 관리자 감사 로그와 복수 관리자 역할이 필요해진다.
  • 고객 지원에서 계정 삭제·복구 또는 법적 보존 절차가 필요해진다.
  • 관리자 수가 늘어 MFA, SSO, IP 제한 또는 별도 접근 게이트가 필요해진다.
  • 운영 데이터 접근 범위가 사용자 기본 정보보다 넓어진다.

관련 문서: 개발 관리자 비밀번호 로그인, 첫 생성·참여 직전 회사 인증, Supabase 환경 격리, 보안 전환 게이트, 관리자 요구 원본

제목, 요약, 태그, 본문을 검색합니다.