Files
Q-A_test/docs/architecture_secretary_sso_role_access.md
T
SDI 12e4f17b62
CI / typecheck (push) Successful in 1m8s
CI / format (push) Failing after 1m6s
CI / lint (push) Failing after 49s
CI / test (push) Failing after 1m8s
first commit
2026-07-15 18:05:12 +09:00

11 KiB

BARON-SSO 권한 및 접근 제어 설계

1. 문서 목적

본 문서는 BARON-SSO 연동 시점에 필요한 역할 분리, 테넌트 전략, 로그인 후 페이지 분기, 프로젝트/채널 접근 제어 규칙을 별도로 정리한 문서임.

핵심 목적은 다음과 같음.

  • 개발자, 담당자, 사용자의 권한 범위를 명확히 구분함.
  • BARON-SSO tenant_id 와 우리 시스템의 페이지 분기 기준을 연결함.
  • Q&A 관리자 전용 테넌트와 일반 사용자 테넌트의 진입 흐름을 분리 정의함.
  • 프로젝트, 채널, 문의 구분, 관리자 콘솔 처리 구조를 현재 구현 방향 기준으로 문서화함.
  • 이후 실제 SSO 구현, 테넌트 생성, 라우팅, 권한 테이블 설계의 기준 문서로 사용함.

2. 적용 대상 범위

  • 인증 원본: BARON-SSO
  • 사용자 화면: /support/[workspaceCode]/new, /support/[workspaceCode]/list, /support/[workspaceCode]/[ticketId]
  • 관리자 콘솔: /main/project/[projectId]/feedback?channelId=[channelId]
  • 운영 보조 화면: /ops, /admin/issues
  • 제어 백엔드: apps/secretary-api
  • 관리자 API: apps/api

3. 역할 정의

역할 영문 역할명 주요 권한 접근 범위 로그인 후 기본 진입 화면
개발자 SYSTEM_ADMIN, SUPER_ADMIN 시스템 전체 설정, SSO 연동 관리, 테넌트 관리, 프로젝트/채널 생성 및 삭제, 권한 정책 변경 모든 프로젝트, 모든 채널, 모든 관리자 기능 관리자 콘솔 또는 시스템 설정 화면
담당자 CHANNEL_MANAGER, PROJECT_MANAGER 배정된 프로젝트/채널의 피드백 조회, 댓글 처리, 이슈 연동, 채널 운영, 담당자 간 업무 분배 본인이 속한 관리자 테넌트 내부의 프로젝트/채널 관리자 콘솔
사용자 END_USER, FEEDBACK_PROVIDER 피드백 작성, 본인 글 조회, 본인 글 상태 확인, 공개된 Q&A 확인 본인이 진입한 프로젝트/채널과 본인 작성 데이터 사용자 피드백 작성 페이지

4. 권한 모델 핵심 원칙

4.1 1차 판정 기준

  • 로그인 자체는 모두 BARON-SSO에서 처리함.
  • 우리 시스템은 BARON-SSO 세션 또는 userinfo 기준으로 user_id, tenant_id, role_keys 를 받음.
  • 1차 분기는 Q&A 관리자 전용 tenant 포함 여부로 처리함.

4.2 2차 판정 기준

  • 관리자 테넌트에 속한 사용자는 관리자 콘솔 진입 대상으로 처리함.
  • 그 외 사용자는 일반 사용자로 처리함.
  • 추가 세부 권한은 tenant_id + project + channel + role 조합으로 제한함.

4.3 3차 판정 기준

  • 관리자 콘솔에 진입한 이후에는 프로젝트/채널별 접근 권한을 다시 확인함.
  • 동일 관리자 테넌트 소속이라도 모든 프로젝트를 다 보는 구조로 고정하지 않고, 이후 프로젝트/채널별 세분화가 가능하도록 설계함.

5. 테넌트 전략

5.1 신규 테넌트 구성

  • BARON-SSO에 Q&A 관리자 테넌트를 신규 생성함.
  • 이 테넌트에 속한 인원은 Q&A 관리 권한 후보군으로 사용함.
  • 이외 나머지 일반 테넌트 사용자는 사용자 피드백 작성 화면으로 이동시킴.

5.2 테넌트 기반 분기 규칙

BARON-SSO 테넌트 기본 사용자 분류 기본 이동 경로 추가 분기
Q&A 관리자 테넌트 관리자/담당자 관리자 콘솔 프로젝트/채널별 접근 제한 적용
일반 사용자 테넌트 사용자 프로젝트별 피드백 작성 페이지 본인 글 목록/상세 접근 허용

6. 로그인 후 페이지 분기 정책

6.1 관리자 테넌트 사용자

  • 로그인 성공 후 관리자 콘솔로 이동함.
  • 기본 진입 후보 경로는 다음과 같음.
  • /main/project/[projectId]/feedback?channelId=[channelId]
  • 필요 시 운영 보조 화면 /ops, /admin/issues 로 이동 가능
  • 이후 프로젝트/채널별 권한에 따라 진입 가능한 콘솔 페이지를 다시 제한함.

6.2 일반 사용자

  • 로그인 성공 후 각 소프트웨어 또는 서비스가 지정한 피드백 작성 페이지로 이동함.
  • 진입 URL에는 프로젝트/채널에 대응되는 workspaceCode 또는 서비스 식별자가 함께 전달됨.
  • 예시
  • /support/EGBIM/new
  • /support/TOVA/new
  • /support/GAIA/new
  • /support/KNGIL/new
  • /support/INTRANET_QNA/new

7. 프로젝트 및 채널 초기 운영 구조

7.1 초기 프로젝트 생성 대상

프로젝트명 설명 최초 기본 채널
EGBIM EGBIM 전용 Q&A EGBIM
TOVA TOVA 전용 Q&A TOVA
GAIA GAIA 전용 Q&A GAIA
KNGIL KNGIL 전용 Q&A KNGIL
INTRANET_QNA 인트라넷 공통 Q&A INTRANET_QNA

7.2 채널 운영 확장 계획

  • 최초에는 프로젝트당 채널 1개로 시작함.
  • 이후 각 프로젝트 내부에서 채널을 별도로 확장하여 문의 유형별로 분리 관리함.
  • 예시
  • EGBIM > 일반 문의, EGBIM > 장애 문의, EGBIM > 기능 개선
  • INTRANET_QNA > 계정 문의, INTRANET_QNA > 권한 문의, INTRANET_QNA > 시스템 오류

8. 사용자 진입 구조

8.1 기본 시나리오

  1. 사용자는 각 소프트웨어에서 이미 BARON-SSO 로그인 상태임.
  2. 사용자가 Q&A 이동 버튼을 클릭함.
  3. 소프트웨어는 자기 프로젝트에 대응되는 Q&A 진입 URL로 이동시킴.
  4. 우리 시스템은 세션에서 user_id, tenant_id 를 읽음.
  5. 관리자 테넌트 여부를 판단함.
  6. 일반 사용자면 해당 프로젝트의 작성 페이지로 이동함.
  7. 관리자 테넌트면 관리자 콘솔로 이동함.

8.2 프로젝트별 사용자 진입 예시

진입 서비스 사용자 이동 경로 관리자 이동 경로
EGBIM /support/EGBIM/new /main/project/[egbimProjectId]/feedback?channelId=[egbimChannelId]
TOVA /support/TOVA/new /main/project/[tovaProjectId]/feedback?channelId=[tovaChannelId]
GAIA /support/GAIA/new /main/project/[gaiaProjectId]/feedback?channelId=[gaiaChannelId]
KNGIL /support/KNGIL/new /main/project/[kngilProjectId]/feedback?channelId=[kngilChannelId]
인트라넷 Q&A /support/INTRANET_QNA/new /main/project/[intranetProjectId]/feedback?channelId=[intranetChannelId]

9. 문의 작성과 관리자 콘솔 분기 구조

9.1 기본 원칙

  • 사용자는 프로젝트 안에서 글을 작성함.
  • 글 작성 시 문의 구분 값을 함께 선택함.
  • 문의 구분 은 장기적으로 채널 또는 내부 workspace 분기 기준으로 사용함.
  • 관리자 콘솔에서는 프로젝트/채널 단위로 유입 건을 구분하여 관리함.

9.2 현재 구조와 향후 확장 방향

항목 현재 기준 향후 확장 방향
프로젝트 서비스 단위 분리 유지
채널 프로젝트당 1개 기본 채널 프로젝트별 다중 채널 확장
문의 구분 사용자 작성 폼의 선택 값 채널 자동 라우팅 또는 하위 큐 분기
관리자 화면 프로젝트/채널별 피드백 목록 프로젝트/채널/문의구분 기반 다중 큐

10. 현재 구현 구조와의 연결 기준

10.1 사용자 화면

  • 현재 사용자용 지원 화면은 apps/web/src/pages/support/** 경로에 구성되어 있음.
  • 사용자 상세에서는 관리자 이슈 상태, 댓글, 본인 글 수정/삭제를 제공함.
  • 사용자 상세 상태 표시는 현재 ABC 원본 피드백의 연결 이슈 상태를 읽어 반영하도록 확장됨.

10.2 관리자 화면

  • 실제 관리자 콘솔은 apps/web/src/pages/main/project/[projectId]/feedback.tsx 경로를 중심으로 동작함.
  • 피드백 상세 시트에서 댓글 CRUD와 이슈 연결 상태를 확인할 수 있도록 연계됨.
  • 관리자 콘솔에서 이슈 연결 시 apps/apiapps/secretary-api 사이에서 내부 support_tickets.issue_link_status 를 함께 동기화하도록 보강됨.

10.3 제어 백엔드

  • apps/secretary-api 는 사용자 화면용 상태, 댓글, 내부 티켓 메타데이터를 관리함.
  • apps/api 는 ABC 관리자 콘솔의 피드백/이슈 기능을 제공함.
  • 장기적으로는 BARON-SSO 로그인 완료 후 tenant_id 기반으로 사용자 경로와 관리자 경로를 라우팅하는 정책 계층이 추가되어야 함.

11. 권한 처리 시퀀스

flowchart TD
    A[사용자 또는 관리자\nBARON-SSO 로그인 상태] --> B[Q&A 이동 버튼 클릭]
    B --> C[우리 시스템 진입]
    C --> D[세션에서 user_id, tenant_id, role_keys 확인]
    D --> E{Q&A 관리자 테넌트 소속인가?}
    E -- 예 --> F[관리자 콘솔 진입]
    E -- 아니오 --> G[사용자 작성 페이지 진입]
    F --> H{프로젝트/채널 접근 권한 존재?}
    H -- 예 --> I[프로젝트별 관리자 콘솔 페이지 진입]
    H -- 아니오 --> J[권한 없음 또는 다른 프로젝트로 재분기]
    G --> K[프로젝트별 사용자 작성 페이지 이동]
    K --> L[피드백 작성]
    L --> M[문의 구분 값 저장]
    M --> N[프로젝트/채널/문의구분 기준 관리자 콘솔 큐 반영]

12. 권한 매핑 테이블 초안

구분 BARON-SSO 값 우리 시스템 해석 화면 권한 데이터 권한
관리자 테넌트 + 최고 권한 관리자 테넌트 + SUPER_ADMIN 시스템 관리자 전체 관리자 콘솔, 설정, 프로젝트/채널 관리 전체 프로젝트/채널
관리자 테넌트 + 담당자 권한 관리자 테넌트 + PROJECT_MANAGER 또는 CHANNEL_MANAGER 운영 담당자 담당 프로젝트 콘솔, 채널 설정, 댓글/이슈 처리 배정 프로젝트/채널
일반 테넌트 일반 tenant 사용자 사용자 작성/목록/상세 본인 작성 글

13. 구현 시 체크리스트

  • BARON-SSO에 Q&A 관리자 테넌트 생성
  • 관리자 대상 계정들을 해당 테넌트에 배정
  • 프로젝트 EGBIM, TOVA, GAIA, KNGIL, INTRANET_QNA 생성
  • 각 프로젝트에 동일명 기본 채널 1개 생성
  • 프로젝트/채널별 관리자 접근 정책 정의
  • 사용자 Q&A 이동 버튼의 프로젝트별 URL 매핑 정의
  • 로그인 후 tenant_id 기준 관리자/사용자 라우팅 구현
  • 문의 구분 값과 채널 분기 규칙 설계
  • 프로젝트별 확장 채널 생성 전략 수립

14. 최종 정리

  • BARON-SSO는 인증과 1차 권한 분기의 기준 시스템임.
  • Q&A 관리자 테넌트는 관리자 콘솔 진입 여부를 결정하는 최우선 조건임.
  • 일반 사용자는 프로젝트별 피드백 작성 페이지로 이동함.
  • 관리자/담당자는 프로젝트/채널별 관리자 콘솔로 이동함.
  • 초기에는 프로젝트당 채널 1개로 시작하고, 이후 채널을 세분화하여 문의 구분과 운영 큐를 확장함.
  • 현재 구현된 사용자 화면, 관리자 콘솔, 내부 티켓/댓글/이슈 상태 동기화 구조는 이 권한 설계 문서를 기준으로 다음 단계 SSO 분기 구현으로 연결할 수 있음.