본문으로 건너뛰기

IAM 도메인 개요

1. 소개

IAM(Identity and Access Management) 도메인은 시스템 내 사용자 및 서비스의 정체성을 관리하고, 리소스에 대한 접근 권한을 제어하는 핵심 도메인입니다. 역할 기반 접근 제어(RBAC)를 중심으로 하며, 플랜(Plan)과 그룹(Group) 개념을 통해 사용자의 서비스 수준과 권한 패키지를 정의합니다. 이를 통해 안전하고, 확장 가능하며, 관리 효율성이 높은 접근 제어 메커니즘을 제공하는 것을 목표로 합니다.

2. 폴더 구조

  • technical-docs/ - 기술 문서 (구현 상세, 오류 처리, 할당 로직 등)
  • business-rules.md - 비즈니스 규칙
  • bounded-context.md - 바운디드 컨텍스트 정의 (예정)
  • domain-model.md - 도메인 모델 (ERD, 엔티티, 값 객체, 집계, 서비스, Prisma 스키마)
  • endpoints.md - API 엔드포인트 목록 (예정)
  • event-storming.md - 이벤트 스토밍 결과 (이벤트, 정책, 명령, 액터, 집계)
  • glossary.md - 용어 사전 (예정)
  • groups.md - 그룹 정의 및 유형
  • overview.md - 도메인 개요 (현재 문서)
  • permissions.md - 권한 목록 및 명명 규칙
  • plans.md - 플랜 정의 및 목록
  • requirements.md - 요구사항 명세서
  • role-permissions.md - 역할별 권한 할당 목록
  • roles.md - 역할 정의 및 목록
  • test-spec.md - 테스트 명세 (예정)

기술 문서: technical-docs/ 내 상세 문서는 구현 가이드(implementation-), 기술 명세(spec-), 오류 처리 등으로 구분됩니다.

3. 유비쿼터스 언어 (Ubiquitous Language)

  • Permission: 시스템 내 특정 작업 수행 권한 ({domain}:{resource}:{action})
  • Role: 권한(Permission)의 집합으로, 특정 책임 단위를 나타냄 (예: Patient, Healthcare Provider)
  • Plan: 역할(Role)의 집합으로, 서비스 이용 수준 정의 (예: Therapeutic Plan, Limited Access Plan)
  • Group: 사용자를 분류하는 단위, 반드시 하나의 Plan과 연결됨 (예: Patients_General, Administrators_System)
  • RBAC (Role-Based Access Control): 역할 기반 접근 제어 모델
  • Effective Permissions: 사용자에게 최종적으로 부여된 유효 권한 목록 (User -> Group -> Plan -> Role -> Permission 경로로 파생)
  • Authorization: 사용자의 특정 작업 수행 권한 확인 과정

상세 도메인 모델은 도메인 모델 문서를 참조하세요.

4. 주요 기능

  1. 권한(Permission) 관리: 시스템 권한 정의, 조회, 유효성 검증.
  2. 역할(Role) 관리: 역할 생성/수정/삭제, 역할-권한 매핑 관리.
  3. 플랜(Plan) 관리: 플랜 생성/수정/삭제, 플랜-역할 매핑 관리.
  4. 그룹(Group) 연동: 그룹과 플랜의 필수 연결 관리 (그룹 생성/관리는 Group 도메인 책임).
  5. 사용자 연동: 사용자와 그룹 멤버십 관리 (User/Group 도메인 협력).
  6. 접근 제어 결정: 사용자의 유효 권한 계산 및 특정 작업에 대한 접근 허용/거부 판단.
  7. 감사 로깅: 권한/역할/플랜/할당 변경 및 접근 제어 결정 로깅 (Audit 도메인 연동).

기능별 상세 요구사항은 요구사항 명세서 문서를 참조하세요.

5. 핵심 정책 및 규칙

  • 권한 파생 경로: 사용자의 최종 권한은 User -> Group -> Plan -> Role -> Permission 순서로 결정됩니다.
  • 최소 소속 보장: 모든 사용자는 하나 이상의 그룹에 속해야 하며, 이를 통해 플랜과 역할이 할당됩니다.
  • 그룹-플랜 연결: 모든 그룹은 반드시 하나의 플랜과 연결되어야 합니다.
  • 고유성: 권한 ID, 역할 이름, 플랜 이름, 그룹 이름은 시스템 내에서 고유해야 합니다.
  • 감사: 모든 중요 데이터 변경 및 접근 제어 관련 행위는 감사 로그로 기록됩니다.

전체 정책 및 규칙은 비즈니스 규칙 문서를 참조하세요.

6. 권한 검증 흐름

참고: 캐싱 적용 시 DB 조회 단계는 생략될 수 있습니다.

7. 기술 스택

  • NestJS 프레임워크
  • TypeScript
  • PostgreSQL (데이터베이스, iam 스키마 사용)
  • Prisma (ORM)
  • CQRS 패턴 (적용 가능성 높음)
  • Redis 또는 유사 캐싱 솔루션 (성능 최적화)

8. 도메인 모델 개요

IAM 도메인은 Permission, Role, Plan 엔티티와 이들 간의 관계(예: PlanRole, RolePermission)를 중심으로 구성됩니다. UserGroup 엔티티는 외부 도메인에서 관리되지만, IAM은 이들과 관계를 맺고 권한 파생에 활용합니다.

상세 도메인 모델 및 Prisma 스키마는 도메인 모델 문서를 참조하세요.

9. 컨텍스트 경계

IAM 도메인은 시스템의 핵심 보안 계층으로, 여러 다른 도메인과 상호작용합니다.

  • Upstream: User, Group, Auth (IAM이 의존)
  • Downstream: 모든 리소스 접근이 필요한 도메인 (IAM에 의존), Audit (IAM이 의존)

바운디드 컨텍스트에 대한 상세 내용은 향후 bounded-context.md에서 정의될 예정입니다.

10. 도메인 이벤트

  • PermissionCreated/Updated/Deleted: 권한 변경 시 발생
  • RoleCreated/Updated/Deleted: 역할 변경 시 발생
  • PlanCreated/Updated/Deleted: 플랜 변경 시 발생
  • PermissionsAssignedToRole/RevokedFromRole: 역할-권한 매핑 변경 시 발생
  • RolesAssignedToPlan/RevokedFromPlan: 플랜-역할 매핑 변경 시 발생
  • PlanAssignedToGroup/ChangedForGroup: 그룹-플랜 매핑 변경 시 발생
  • UserEffectivePermissionsCalculated: 사용자 유효 권한 계산 완료 시 발생
  • AccessControlDecisionMade: 접근 제어 결정(허용/거부) 시 발생
  • AuditLogRecorded: IAM 관련 중요 작업 감사 로그 기록 시 발생

상세 이벤트 목록은 이벤트 스토밍 문서를 참조하세요.

11. 사용자 유형 및 권한 (액터)

11.1 주요 역할

  • System Admin: IAM 포함 시스템 전체 관리 (모든 권한)
  • IAM Admin: IAM 리소스 관리 (권한, 역할, 플랜 등), 사용자 역할 할당
  • Service Account: 시스템 간 API 통신 시 권한 검증/조회
  • Regular User: 자신의 권한 조회, 특정 기능 사용

역할별 상세 권한은 역할-권한 할당 문서를 참조하세요.

11.2 API 사용 제한

  • 사용자 유형별 Rate Limiting 적용 (예: Service Account > IAM Admin > Regular User)
  • 요구사항에 명시된 구체적인 제한값 적용

상세 제한은 요구사항 명세서 2.5 및 3.2절을 참조하세요.

12. 모니터링 및 감사

  • 주요 측정 지표: 권한 검증 API 응답 시간 및 성공/실패율, 역할/플랜 변경 빈도, API 호출량(사용자 유형별).
  • 보안 감사: 모든 IAM 리소스 변경 이력, 역할/플랜 할당/해제 기록, 권한 검증 시도 및 결과는 필수적으로 감사 로그로 기록되어야 합니다. (Audit 도메인 연동)

13. 핵심 요구사항

  • 성능: 권한 검증 API 평균 응답 시간 < 50ms (P99).
  • 보안: RBAC 및 최소 권한 원칙 준수, 안전한 데이터 관리.
  • 확장성: 새로운 권한, 역할, 플랜 추가 용이성. 사용자 수 증가에 따른 수평 확장성.
  • 가용성: 핵심 기능 99.99% 이상 가용성 보장.

기술적 세부 사항 및 전체 요구사항은 요구사항 명세서technical-docs/ 디렉토리의 문서들을 참조하세요.

14. 관련 문서

TBD

15. 변경 이력

버전날짜작성자변경 내용
0.1.02025-04-21bok@weltcorp.com최초 문서 생성