3.1 KiB
3.1 KiB
가족사 테넌트 가입 및 관리 정책 (인증 기반 수정안)
이 문서는 보안 강화를 위해 이메일 인증 성공 시에만 가족사 소속을 선택할 수 있도록 변경된 가입 흐름을 설명합니다.
회원가입 및 권한 관리 흐름도
graph TD
%% 시작점
A([사용자 회원가입 시작]) --> B[이메일 입력 및 인증 코드 발송]
B --> C{이메일 인증 성공?}
C -- No --> B
C -- Yes --> D{인증된 이메일이<br>내부/가족사 도메인인가?}
%% 일반 도메인 (gmail, naver 등)
D -- No<br>(External) --> E[개인 테넌트 자동 할당<br>Type: PERSONAL]
E --> J
%% 내부 도메인 (hanmaceng.co.kr 등)
D -- Yes<br>(Internal) --> F[가족사 목록 노출 및 선택<br>Select Company Code]
F --> G{선택한 코드가<br>ACTIVE 상태인가?}
G -- No --> F
G -- Yes --> J[Ory Kratos 계정 생성]
%% 유저 생성 및 권한 할당
J --> K[(Local DB 유저 레코드 생성)]
K --> N[기본 권한 할당: user<br>Keto: members 부여]
N --> O([회원가입 완료])
%% 관리자 수동 개입 (별도 흐름)
P((최고 관리자<br>Super Admin)) -.-> Q[사용자 역할 변경<br>user -> tenant_admin]
Q -.-> R[(Keto 권한 수동 할당<br>owners, admins 부여)]
%% 스타일링
classDef process fill:#e1f5fe,stroke:#01579b,stroke-width:2px;
classDef decision fill:#fff3e0,stroke:#e65100,stroke-width:2px;
classDef db fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px;
classDef startend fill:#f3e5f5,stroke:#4a148c,stroke-width:2px;
classDef admin fill:#f5f5f5,stroke:#616161,stroke-width:2px,stroke-dasharray: 5 5;
class A,O startend;
class B,F,J,N,Q process;
class C,D,G decision;
class E,K,R db;
class P admin;
핵심 정책 변경 사항
- 선(先)인증 후(後)선택: 사용자는 이메일 소유권 인증(OTP 또는 인증 링크)을 완료하기 전까지는 어떠한 가족사 소속도 선택할 수 없습니다.
- 도메인 기반 노출 제어:
- 인증된 이메일 도메인이 시스템에 등록된 가족사 도메인(
hanmaceng.co.kr등)일 경우에만 소속 선택 UI가 활성화됩니다. - 일반 외부 도메인(gmail, naver 등)은
PERSONAL테넌트로 강제 배정되어 가족사 리스트 자체가 노출되지 않습니다.
- 인증된 이메일 도메인이 시스템에 등록된 가족사 도메인(
- 이메일 도메인 중복 방지: 같은 도메인을 쓰더라도 다른 소속일 수 있는 경우(예: 협력사 등)를 대비하여, 인증 성공 후에도 사용자가 직접 본인의 정확한 소속(
Company Code)을 선택하게 하여 데이터 무결성을 확보합니다. - 수동 권한 위임 유지: 모든 가입자는 기본적으로
user권한을 부여받으며, 테넌트 관리자(tenant_admin)나 오너(owner) 권한은 지주사 관리자가 사용자의 신원을 최종 확인한 후 수동으로 부여합니다. - 실시간 상태 검증: 가입 시점에 선택한 테넌트가
ACTIVE상태가 아닐 경우 가입 진행을 차단합니다.