Skip to content

adr dashboard rbac

minsoo edited this page Jun 10, 2026 · 1 revision

ADR - Dashboard RBAC 사용자 관리

메타데이터
상태 accepted
결정일 2026-06-04
현재 유효 여부 유효
관련 결정 Cognito 인증(adr-cognito-auth), RDS PostgreSQL(adr-rds-postgresql)
구현 근거 apps/dashboard-backend(auth/admin router, RDS app_user/user_factory_access/audit_log)
검증 근거 미인가 공장 직접 호출 403, System 권한 없는 사용자 Cloud Infra 403

결정

로그인 주체는 Cognito User Pool로 유지하고, 역할과 공장 접근 범위는 RDS PostgreSQL 앱 테이블에서 관리한다. PostgreSQL DB role을 사람별로 만들지 않고, DB 접속 계정은 ECS backend용 서비스 계정만 유지한다.

Cognito User Pool   로그인·MFA·세션·임시 비밀번호
RDS PostgreSQL      app_user / factory / user_factory_access / audit_log
FastAPI Backend     JWT sub → app_user 조회 → 공장별 인가 강제
Dashboard Web       백엔드가 허용한 사용자/공장만 표시

역할 모델

역할 의미
super_admin 모든 공장, 사용자 관리, System 화면 접근
factory_admin 부여된 공장만 조회/관리. 사용자 관리 접근 불가
org_admin / viewer legacy role. 신규 생성 UI/API에서는 선택 불가

공장 관리자의 System(Cloud Infra) 화면 접근은 app_user.can_view_system boolean으로 분리한다. super_admin은 항상 접근 가능하고, factory_admin은 해당 값이 true일 때만 /cloud-infra에 접근할 수 있다.

적용 지점

Endpoint 통제
/factories, /reports 접근 가능한 공장만 반환
/factories/{id}, /history, /reports/{date}/{id} 권한 없는 공장은 403
/ws/factories/{id} 구독 전 권한 검증
/cloud-infra, /cloud-infra/history super_admin 또는 can_view_system=true
/admin/users super_admin(또는 legacy org_admin)만. 공장 관리자는 sidebar에서도 숨김

이유

  • 관제 데이터는 공장 단위 민감도가 있어 사용자별 조회 범위 통제가 필요하다(FR-DASH-08/09, NFR-SEC-02).
  • 역할·공장 관계는 관계형 모델(RDS)이 자연스럽고, Cognito는 인증에만 집중한다.
  • 사용자 생성/삭제는 Cognito(AdminCreateUser/AdminDeleteUser)와 RDS row를 함께 처리해 상태를 일관되게 유지한다.

관련 문서

Aegis-Pi Wiki

· 대표 문서 목록은 홈의 문서 탐색 표 참조

시작하기

요구사항

핵심 개념

아키텍처

컴포넌트 (Edge → Cloud → Dashboard)

Dashboard & 운영

시나리오 · 사례 · 참조

Clone this wiki locally