|
2 | 2 |
|
3 | 3 | ## 개요 |
4 | 4 |
|
5 | | -Fieldstack는 기본적으로 외부 인증 제공자(OAuth 기반)를 사용하는 웹 서비스 환경을 전제로 설계된다. |
6 | | -이는 사용자 편의성과 보안, 그리고 운영 부담을 최소화하기 위한 선택이다. |
| 5 | +Fieldstack는 현재 **이메일 + 비밀번호 기반 로컬 로그인**을 기본 인증 방식으로 사용한다. |
| 6 | +이 문서는 과거 외부 OAuth(구글 로그인) 중심 초안을 정리하고, |
| 7 | +현행 정책 기준에서 인증 모드 확장 방향을 다시 기록하기 위한 초안이다. |
7 | 8 |
|
8 | | -그러나 특정 환경(관공서, 세무 관련 기관, 폐쇄망, 내부망 등)에서는 |
9 | | -외부 인증 제공자의 사용이 제한되거나 금지될 수 있다. |
10 | | - |
11 | | -본 문서는 이러한 상황을 대비하여, |
12 | | -Fieldstack가 **인증 방식의 확장 또는 분리된 운영 모드**를 어떻게 다룰 것인지에 대한 |
13 | | -초안 수준의 정책과 설계 방향을 기록한다. |
14 | | - |
15 | | -이 문서는 현재 구현을 전제로 하지 않으며, |
16 | | -향후 필요 시 참고 및 확장 목적으로 유지된다. |
| 9 | +본 문서는 현재 구현 완료 상태를 의미하지 않으며, |
| 10 | +향후 요구사항 변경 시 참고할 설계 기준을 보존하는 목적을 가진다. |
17 | 11 |
|
18 | 12 | --- |
19 | 13 |
|
20 | 14 | ## 기본 인증 정책 |
21 | 15 |
|
22 | 16 | Fieldstack의 기본 공개 버전은 다음 인증 정책을 따른다. |
23 | 17 |
|
24 | | -- 외부 인증 제공자(OAuth 기반) 사용 |
25 | | -- 별도의 자체 계정 관리 기능 제공하지 않음 |
26 | | -- 비밀번호 저장, 관리 책임을 시스템이 직접 지지 않음 |
| 18 | +- 이메일 + 비밀번호 로그인 기본/필수 |
| 19 | +- 비밀번호는 안전한 해시(예: Argon2id)로 저장 |
| 20 | +- Whitelist 기반 접근 제어 적용 |
| 21 | +- 필요 시 TOTP/Passkey/OAuth는 선택 기능으로 확장 가능 |
27 | 22 |
|
28 | | -이 정책은 프로젝트의 기본 보안 모델이며, |
29 | | -일반 사용자 환경에서는 변경되지 않는다. |
| 23 | +즉, 기본 모델은 "외부 계정 의존"이 아니라 |
| 24 | +"로컬 계정 기반 + 선택 확장"이다. |
30 | 25 |
|
31 | 26 | --- |
32 | 27 |
|
33 | 28 | ## 제한 환경에서의 사용 시나리오 |
34 | 29 |
|
35 | | -다음과 같은 환경에서는 기본 인증 정책을 적용하기 어렵다. |
| 30 | +다음과 같은 환경에서는 인증 정책이 더 엄격하게 요구될 수 있다. |
36 | 31 |
|
37 | 32 | - 관공서, 세무소, 공공기관 |
38 | 33 | - 외부 인터넷 접근이 제한된 내부망 |
39 | 34 | - 외부 계정 연동이 정책적으로 금지된 조직 |
40 | 35 | - 감사 및 책임 주체가 명확히 요구되는 환경 |
41 | 36 |
|
42 | | -이러한 경우, 단순한 로그인 방식 추가가 아닌 |
43 | | -**운영 환경 자체가 다른 배포 형태**로 간주한다. |
| 37 | +이 경우 핵심은 OAuth 제거 자체가 아니라, |
| 38 | +기본 로컬 인증에 추가 보안/운영 통제를 적용하는 방식이다. |
44 | 39 |
|
45 | 40 | --- |
46 | 41 |
|
47 | 42 | ## 운영 모드 분리 원칙 |
48 | 43 |
|
49 | | -Fieldstack는 인증 방식의 차이를 |
50 | | -단일 서비스 내 옵션으로 흡수하지 않는다. |
| 44 | +Fieldstack는 인증 요구 차이를 |
| 45 | +단일 설정 토글 하나로 단순화하지 않는다. |
51 | 46 |
|
52 | | -대신, 다음과 같은 원칙을 따른다. |
| 47 | +대신 다음 원칙을 따른다. |
53 | 48 |
|
54 | | -- 인증 정책이 다른 경우, 별도의 운영 모드로 분리 |
55 | | -- 기존 공개 버전과 코드, 배포, 설정을 논리적으로 분리 |
56 | | -- 기본 버전의 보안 모델을 훼손하지 않음 |
| 49 | +- 기본 모드: 로컬 계정(이메일/비밀번호) 중심 운영 |
| 50 | +- 제한 모드: 정책 요구에 맞춘 보안 통제(2FA 강제, 감사 강화, 계정 프로비저닝 제약) 추가 |
| 51 | +- 모드별 설정, 운영 가이드, 감사 기준을 명확히 분리 |
57 | 52 |
|
58 | | -이로 인해, 제한 환경 대응은 |
59 | | -"기능 추가"가 아닌 "별도 버전 제공"으로 취급된다. |
| 53 | +따라서 인증 변화는 단순 UI 옵션이 아니라 |
| 54 | +운영 정책 단위에서 관리한다. |
60 | 55 |
|
61 | 56 | --- |
62 | 57 |
|
63 | | -## 인증 제공자 추상화 |
| 58 | +## 인증 모드 추상화 |
64 | 59 |
|
65 | 60 | 향후 확장을 대비하여, |
66 | | -Fieldstack Core는 인증 방식의 구현 세부를 직접 다루지 않는다. |
| 61 | +Fieldstack Core는 특정 로그인 공급자 구현에 직접 결합되지 않는다. |
67 | 62 |
|
68 | | -Core는 다음과 같은 추상 인터페이스만을 전제로 한다. |
| 63 | +Core는 다음 공통 인터페이스를 전제로 한다. |
69 | 64 |
|
70 | 65 | - 사용자 인증 요청 |
71 | 66 | - 인증 결과 검증 |
72 | | -- 세션 또는 토큰 처리 |
| 67 | +- 세션 또는 토큰 발급/검증 |
| 68 | +- 권한/역할 컨텍스트 전달 |
73 | 69 |
|
74 | | -구체적인 인증 방식은 |
75 | | -외부 인증 제공자 또는 내부 인증 시스템에 의해 구현된다. |
| 70 | +구체 구현은 로컬 인증, 선택 OAuth, Passkey 등 |
| 71 | +개별 어댑터에서 담당한다. |
76 | 72 |
|
77 | | -이 추상화는: |
78 | | -- 기본 버전의 단순성 유지 |
79 | | -- 별도 운영 모드 개발 시 영향 최소화 |
80 | | -를 목적으로 한다. |
| 73 | +이 추상화의 목적은 다음과 같다. |
| 74 | +- 기본 인증 정책의 안정성 유지 |
| 75 | +- 인증 수단 추가 시 기존 모듈 영향 최소화 |
81 | 76 |
|
82 | 77 | --- |
83 | 78 |
|
84 | 79 | ## 별도 운영 모드 (예: Gov / Enterprise) |
85 | 80 |
|
86 | | -제한 환경을 위한 운영 모드는 다음과 같은 특성을 가질 수 있다. |
| 81 | +제한 환경을 위한 운영 모드는 다음 특성을 가질 수 있다. |
87 | 82 |
|
88 | | -- 외부 OAuth 사용하지 않음 |
89 | | -- 내부 계정 또는 조직 계정 기반 인증 |
90 | | -- 관리자 주도 계정 생성 및 관리 |
| 83 | +- 로컬 계정 기반 인증만 허용 (선택 OAuth 비활성) |
| 84 | +- 관리자 주도 계정 생성/비활성/복구 절차 적용 |
| 85 | +- TOTP 2FA 강제 정책 적용 |
91 | 86 | - 감사 로그 및 접근 기록 강화 |
92 | 87 | - 네트워크 격리 환경 전제 |
93 | 88 |
|
94 | | -이 모드는 기본 공개 버전과는 |
95 | | -배포, 설정, 운영 측면에서 독립적으로 관리된다. |
| 89 | +이 모드는 기본 공개 버전과 |
| 90 | +설정, 운영 절차, 컴플라이언스 기준에서 독립적으로 관리한다. |
96 | 91 |
|
97 | 92 | --- |
98 | 93 |
|
99 | 94 | ## 문서 상태 |
100 | 95 |
|
101 | 96 | 본 문서는 **초안(Draft)** 상태이다. |
102 | 97 |
|
103 | | -- 현재 구현 계획에는 포함되지 않는다. |
104 | | -- 즉시 개발을 의미하지 않는다. |
| 98 | +- 현재 구현 계획의 확정 사양이 아니다. |
| 99 | +- 즉시 개발 항목을 의미하지 않는다. |
105 | 100 | - 향후 요청 또는 필요 발생 시 참고 자료로 활용된다. |
106 | 101 |
|
107 | | -설계 방향과 판단 근거를 보존하는 것을 |
108 | | -유일한 목적으로 한다. |
| 102 | +설계 방향과 의사결정 근거를 보존하는 것이 |
| 103 | +유일한 목적이다. |
109 | 104 |
|
110 | 105 | --- |
111 | 106 |
|
112 | 107 | ## 요약 |
113 | 108 |
|
114 | | -- Fieldstack는 기본적으로 외부 인증 제공자를 사용한다. |
115 | | -- 인증 방식이 다른 요구는 별도 운영 모드로 분리한다. |
116 | | -- 로그인 방식 추가는 기능 요청이 아닌 제품 분기다. |
117 | | -- 본 문서는 미래 확장을 대비한 설계 기록이다. |
118 | | - |
| 109 | +- Fieldstack의 기본 인증은 이메일 + 비밀번호 기반 로컬 로그인이다. |
| 110 | +- OAuth(구글 로그인)는 기본이 아닌 선택 확장 옵션이다. |
| 111 | +- 인증 정책 차이는 운영 모드 단위로 분리해 관리한다. |
| 112 | +- 본 문서는 미래 확장을 대비한 설계 기록 초안이다. |
0 commit comments