참고/보안 모델 요약
보안 모델 요약
| 레이어 | 방식 |
|---|---|
| 워크로드 격리 | Kata Containers (GPU EC2는 runc로 fallback) |
| EC2 간 네트워크 | 기본 deny + NetworkPolicy 화이트리스트 (SSH는 LAN만, 나머지는 명시적으로 열어야 함) |
| SSH 접근 | EC2별 개별 키, 서버에 개인키 미저장, bastion은 경유만(키 미보유) |
| 회원가입 | 가입 즉시 승인 안 됨(pending) — 관리자가 직접 승인해야 실제 접근 가능. 관리자 → 사용자에서 승인/거부(가입 신청이 오면 관리자 폰으로 알림), 아래 사용자 목록은 전체 / 승인됨 / 거절됨 필터(기본 전체) |
| 앱 전용 계정 | 개발하지 않는 사람(가족 등)용. 승인할 때 앱 전용으로 승인을 누르거나, 사용자 목록의 포털 사용 버튼으로 끄면 됨. 할 수 있는 것: "YWS로 로그인"(SSO), 알림(폰 등록, 앱별 허용), 메일. 못 하는 것: EC2·저장소·Lambda·DB·네트워크·키·도메인·Pages·OAuth 앱 등록·API 토큰 등 콘솔 기능 전부(메뉴에서도 안 보이고, 주소로 들어가면 홈으로, API는 403). 관리자는 항상 포털 사용. 끄더라도 이미 있던 리소스는 그대로 둠 — 코드: User.portal_access, deps.require_user(portal=True 기본) |
| 숨김 리소스 | 파일탐색용 EC2는 hidden 플래그로 모든 사용자 화면에서 제외 |
| 내 컴퓨터 등록 | WireGuard 개인키는 서버에 절대 전송/저장 안 됨, 공개키만 제출 |
| OAuth 클라이언트 | client_secret은 bcrypt 해시로만 저장, authorization code는 1회용 5분 TTL |
내부 주소 (auth, alarm) |
모든 EC2·Lambda가 이름으로 접근 가능(토큰·클라이언트 인증이 필요한 공개 API라서), 그 밖의 포털·알림 서버 내부 API는 공유 토큰으로 보호. DB 서버는 캔버스 연결한 EC2와 Lambda만 |
| Pages 사이트 | 포털과 다른 등록 도메인 + 사이트별 서브도메인으로 오리진 격리, Markdown 속 HTML은 escape, 로그인 쿠키는 사이트 호스트 전용 |
| 이 문서 | Pages 루트 사이트, 로그인 없이 공개 (2026-10-21부터 — 비밀값은 적지 않고 이름만, 예: DB_CREDENTIAL_KEY) |
| Lambda 내장 함수 | Lambda별 전용 토큰으로 인증, 항상 Lambda 주인 권한으로 실행, 포털이 붙이는 라벨이 있는 Lambda 파드만 API 접근 가능 |
| 메일 | 없는 주소는 SMTP 단계에서 거절, 외부 중계 안 함, IMAP은 포털만 접근, HTML 메일은 스크립트·외부 로딩 차단된 격리 iframe. 발송은 포털이 로그인한 본인 주소로만 SES를 통해 보내고, 사용자별 하루 100명 한도 |