본문으로 건너뛰기

IAM 도메인 이벤트 스토밍

개요

본 문서는 IAM(Identity and Access Management) 도메인의 이벤트 스토밍 워크샵 결과를 정리한 것입니다. 도메인 요구사항 명세서(requirements.md)와 비즈니스 규칙 문서(business-rules.md)를 기반으로 도출된 도메인 이벤트, 명령, 액터, 정책 등을 포함합니다.

바운디드 컨텍스트 참조

IAM 도메인은 다른 도메인(User, Plan, Group, Audit, Auth 등)과 상호작용합니다. 특히 User 도메인의 사용자 정보, Plan 도메인의 플랜 정보, Group 도메인의 그룹 정보, Audit 도메인의 감사 로깅, Auth 도메인의 인증 정보에 의존합니다. Plan과 Group 도메인과는 이벤트 기반 연동을 통해 권한 관리를 수행합니다. 자세한 내용은 각 도메인 문서를 참조하십시오.

도메인 이벤트

도메인에서 발생하는 중요한 변화나 사실을 나타내는 이벤트들입니다.

1. 권한(Permission) 생명주기 이벤트

이벤트설명트리거
PermissionCreated새 권한이 생성되었음CreatePermission
PermissionRead권한 정보가 조회되었음GetPermission
PermissionUpdated권한 정보가 수정되었음UpdatePermission
PermissionDeleted권한이 삭제되었음DeletePermission
PermissionVerified사용자의 특정 권한 보유가 확인되었음VerifyPermission
PermissionVerificationFailed사용자의 특정 권한 보유 확인에 실패했음VerifyPermission
PermissionValidationFailed권한 생성/수정 시 유효성 검증 실패 (예: 이름 중복)CreatePermission, UpdatePermission

2. 역할(Role) 생명주기 이벤트

이벤트설명트리거
RoleCreated새 역할이 생성되었음CreateRole
RoleRead역할 정보가 조회되었음GetRole
RoleUpdated역할 정보가 수정되었음UpdateRole
RoleDeleted역할이 삭제되었음DeleteRole
RoleActivated역할이 활성화 상태로 변경됨UpdateRoleStatus
RoleDeactivated역할이 비활성화 상태로 변경됨UpdateRoleStatus
PermissionsAssignedToRole역할에 권한이 할당되었음AssignPermissionToRole
PermissionsRevokedFromRole역할에서 권한이 해제되었음RevokePermissionFromRole
RoleValidationFailed역할 생성/수정 시 유효성 검증 실패 (예: 이름 중복, 순환 참조)CreateRole, UpdateRole

3. 정책(Policy) 생명주기 이벤트 (참고: 현재 시스템은 명시적 정책 관리 대신 Plan/Role 기반으로 운영)

이벤트설명트리거
PolicyCreated새 정책이 생성되었음CreatePolicy
PolicyRead정책 정보가 조회되었음GetPolicy
PolicyUpdated정책 정보가 수정되었음UpdatePolicy
PolicyDeleted정책이 삭제되었음DeletePolicy
PolicyEvaluated정책 조건에 따라 접근 허용/거부 평가됨EvaluatePolicy
PolicyEvaluationResultCached정책 평가 결과가 캐싱됨정책 평가 성공

4. 플랜(Plan) 도메인 연동 이벤트

이벤트설명트리거
PlanRoleMappingUpdated플랜-역할 매핑 정보가 업데이트되었음Plan 도메인 연동
PlanBasedPermissionsCalculated플랜 기반 권한이 계산되었음CalculatePlanBasedPermissions
PlanPermissionCacheInvalidated플랜 권한 캐시가 무효화되었음Plan 변경 이벤트 수신
PlanRoleAssignmentValidated플랜-역할 할당이 검증되었음ValidatePlanRoleAssignment
PlanAuthorizationUpdated플랜 기반 인가 정보가 업데이트되었음Plan 도메인 이벤트 수신

5. 그룹(Group) 도메인 연동 이벤트

이벤트설명트리거
GroupBasedPermissionsCalculated그룹 기반 권한이 계산되었음CalculateGroupBasedPermissions
GroupRoleMappingUpdated그룹-역할 매핑 정보가 업데이트되었음Group 도메인 연동
GroupPermissionCacheInvalidated그룹 권한 캐시가 무효화되었음Group 변경 이벤트 수신
UserGroupPermissionUpdated사용자-그룹 기반 권한이 업데이트되었음Group 도메인 이벤트 수신
GroupAuthorizationUpdated그룹 기반 인가 정보가 업데이트되었음Group 도메인 이벤트 수신

6. 접근 제어 및 사용자 관련 이벤트

이벤트설명트리거
UserEffectivePermissionsCalculated사용자의 최종 유효 권한 목록이 계산되었음CalculateEffectivePermissions
UserEffectivePermissionsRead사용자의 유효 권한 목록이 조회되었음GetUserEffectivePermissions
UserPlanIdentified사용자가 속한 플랜이 식별되었음 (그룹을 통해)GetUserPlan
AccessControlDecisionMade접근 제어 결정이 내려짐 (허용/거부)권한 검증 또는 정책 평가 시
IdentityLevelEvaluated토큰의 identityLevel이 평가되었음EvaluateIdentityLevelPolicy
IdentityLevelPolicyAppliedidentityLevel 조건이 적용되었음EvaluateIdentityLevelPolicy
IdentityLevelCacheInvalidatedidentityLevel 기반 권한 캐시가 무효화되었음auth.identity-level.changed, CacheInvalidation
AuditLogRecordedIAM 관련 중요 작업이 감사 로그에 기록되었음모든 CRUD 및 할당/해제/검증 작업

7. 사용자 유형 관련 이벤트

이벤트설명트리거
UserTypeAssigned사용자에게 특정 유형이 할당됨AssignUserType
UserTypeChanged사용자 유형이 변경됨ChangeUserType
OperationUserPermissionsCalculated내부 운영자 사용자의 유효 권한이 계산됨CalculateOperationUserPermissions
PatientUserPermissionsCalculated환자 사용자의 유효 권한이 계산됨CalculatePatientUserPermissions
UserSchemaChanged사용자 데이터 저장 스키마가 변경됨 (유형 변경에 따라)ChangeUserType
UserDataMigrated사용자 유형 변경에 따라 데이터가 마이그레이션됨MigrateUserData

8. 서비스 간 인증 관련 이벤트

이벤트설명트리거
ServiceAccountTokenIssuedService Account용 JWT 토큰이 발급되었음IssueServiceAccountToken
ServiceAccountTokenVerifiedService Account JWT 토큰이 검증되었음VerifyServiceAccountToken
ServiceAccountTokenVerificationFailedService Account JWT 토큰 검증에 실패했음VerifyServiceAccountToken
ServiceAccountTokenReissuedService Account JWT 토큰이 재발급되었음 (refresh token 미지원)ReissueServiceAccountToken
ServiceAccountTokenRevokedService Account JWT 토큰이 무효화되었음RevokeServiceAccountToken
ServiceAccountApiKeyGeneratedService Account API 키가 생성되었음GenerateServiceAccountApiKey
ServiceAccountApiKeyRegeneratedService Account API 키가 재생성되었음RegenerateServiceAccountApiKey
ServiceAccountPermissionsEvaluatedService Account 권한이 평가되었음EvaluateServiceAccountPermissions
ServiceAccountAnomalousActivityDetectedService Account의 이상 활동이 감지되었음자동 모니터링 시스템
ServiceAccountRateLimitExceededService Account의 Rate Limit이 초과되었음Rate Limiting 시스템

정책(Policies)

시스템의 자동화된 비즈니스 규칙입니다. (business-rules.mdrequirements.md 기반)

1. 데이터 및 스키마 정책

  • IAM 관련 모든 데이터는 iam PostgreSQL 스키마에 저장되어야 함 (규칙 1.1)
  • User 정보는 사용자 유형에 따라 다른 스키마를 참조함: (규칙 1.1)
    • 고객(환자) 사용자: User 도메인(private 스키마)
    • 내부 운영자, 의료진 등: User 도메인(operation 스키마)
  • 권한 ID, 역할 이름, 플랜 이름, 그룹 이름은 시스템 내 고유해야 함 (규칙 1.2, 10.1)
  • 권한 ID는 생성 후 변경 불가 (규칙 2.2, 10.1)
  • 그룹은 반드시 하나의 플랜과 연결되어야 함 (규칙 5.3, 10.2)
  • 역할 계층 구조 내 순환 참조 금지 (규칙 3.2, 10.2)
  • Prisma 스키마의 onDelete: Cascade 규칙 적용 (규칙 10.2)

2. 감사 로깅 정책

  • 모든 권한, 역할, 플랜, 그룹 데이터 접근 및 변경은 감사 로그 기록 (규칙 1.3)
  • 권한 검증 시도 및 결과는 감사 로그 기록 (규칙 1.3)
  • 역할 할당 및 해제는 감사 로그 기록 (규칙 1.3)
  • API 호출 상세 감사 로그 기록 (규칙 8.3)

3. 권한 관리 정책

  • 권한 이름(ID)은 {domain}:{resource}:{action} 형식 준수 (규칙 2.1)
  • 권한 계층 구조는 현재 미사용 (최대 3단계 제한 가능성 언급) (규칙 2.2, 요구사항 3.1)

4. 역할 관리 정책

  • 역할은 활성/비활성 상태 관리 (규칙 3.2)
  • 역할 변경 이력 관리 필요 (규칙 3.2)
  • 한 사용자/그룹에 할당 가능한 역할 최대 개수 제한 (예: 100개) (요구사항 3.1)

5. 플랜 관리 정책

  • 플랜은 활성/비활성 상태 관리 (규칙 4.2)
  • 주로 환자(Patient) 역할의 서비스 이용 수준 정의에 사용 (요구사항 1.5.1)

6. 그룹 관리 정책

  • 그룹은 역할 할당 및 정책 적용 단위로 사용 가능 (규칙 5.1)
  • 모든 사용자는 최소 하나 이상의 그룹에 속해야 함 (User 도메인 요구사항 연계) (규칙 6.2)

7. 접근 제어 결정 정책

  • 사용자의 최종 권한은 User -> Group -> Plan -> Role -> Permission 경로로 파생 (규칙 7.1)
  • 정책 충돌 시 정의된 규칙(예: Deny-overrides)에 따라 해결 (요구사항 1.4 - 현재 Plan/Role 기반)
  • Access Token의 identityLevel을 평가하여 게스트 토큰에는 게스트 허용 목록만 적용 (규칙 7.1, 7.2)
  • identityLevel 변경 이벤트(auth.identity-level.changed) 수신 시 권한/캐시를 즉시 무효화 (규칙 7.2)

8. 보안 정책

  • 모든 API 요청은 인증 및 인가 필수 (규칙 8.1)
  • RBAC 지원 및 최소 권한 원칙 적용 (규칙 8.1)
  • 민감 정보 암호화 저장 (필요시) (규칙 8.2)
  • 데이터 무결성 보장 (규칙 8.2)
  • API 입력값 검증 (규칙 8.3)
  • Rate Limiting 적용 (규칙 8.3, 11.1)
  • 특정 IP 주소 접근 제어 가능 (요구사항 2.1)

9. 성능 및 캐싱 정책

  • 권한 검증 API 평균 응답 시간 목표 (< 50ms) (규칙 9.1)
  • 할당/관리 API 평균 응답 시간 목표 (< 500ms) (규칙 9.1)
  • 권한 검증 결과 캐싱 (규칙 9.3)
  • 역할-권한, 플랜-역할, 사용자-그룹 매핑 정보 캐싱 (규칙 9.3)
  • 캐시 무효화 전략 필요 (규칙 9.3)
  • 캐시 TTL은 사용자 유형별로 차등 적용 (Service Account: 5분, Regular User: 15분) (규칙 11.1)

10. API 호출 제한 정책

  • 사용자 유형별 Rate Limit, 동시 요청 수, 배치 처리 제한 적용 (규칙 11.1)
    • Service Account: 분당 1000 요청, 동시 100, 배치 1000
    • Regular User: 분당 100 요청, 동시 10, 배치 100

11. 사용자 유형 분리 정책

  • 고객(환자)와 내부 운영자는 다른 스키마에 저장되지만 IAM 도메인에서는 동일한 권한 모델 적용
  • 사용자 유형이 변경될 경우 적절한 데이터 마이그레이션 프로세스 필요
  • 내부 운영자 유형(ADMIN, OPERATOR, CLINICIAN, SERVICE_ACCOUNT)에 따라 기본 역할 자동 할당
  • 내부 운영자는 환자에게 접근할 수 있으나, 환자는 내부 운영자에게 접근 불가
  • 사용자 유형 변경은 SYSTEM_ADMIN 권한을 가진 사용자만 가능
  • 사용자 유형에 따라 역할-권한 계산 방식 동일하게 적용

12. 서비스 간 인증 정책

  • Service Account는 API 키 기반 인증을 사용하며 비밀번호는 사용하지 않음 (규칙 1.9)
  • Service Account는 refresh token을 지원하지 않음 - 토큰 만료 시 API Key로 새로운 JWT 토큰 발급 (규칙 1.9)
  • JWT 토큰은 SHA-256 해시와 RS256/ES256 서명 알고리즘 사용 (규칙 1.9)
  • Service Account 토큰 검증은 30ms 이내 완료되어야 함 (규칙 1.9)
  • 초당 2000건의 Service Account 토큰 검증 처리 가능해야 함 (규칙 1.9)
  • Service Account별 Rate Limiting 적용 (분당 1000 요청) (규칙 1.9)
  • Service Account 토큰 및 권한 정보는 5분간 캐싱 (규칙 1.9)
  • 최소 권한 원칙에 따라 Service Account 권한 관리 (규칙 1.9)
  • Service Account 이상 패턴 감지 및 자동 차단 (규칙 1.9)
  • Service Account 생명주기 관리 (생성, 활성화, 비활성화, 삭제) (규칙 1.9)
  • 서비스별 격리 및 네임스페이스 적용 (규칙 1.9)
  • JWT 토큰 전파 및 체이닝 지원 (규칙 1.9)

명령(Commands)

도메인 이벤트를 발생시키는 사용자 의도나 시스템 동작입니다.

1. 권한(Permission) 명령

명령설명영향
CreatePermission새 권한 생성PermissionCreated 또는 PermissionValidationFailed 이벤트 발생
GetPermission권한 정보 조회PermissionRead 이벤트 발생
UpdatePermission권한 정보 수정PermissionUpdated 또는 PermissionValidationFailed 이벤트 발생
DeletePermission권한 삭제PermissionDeleted 이벤트 발생
VerifyPermission사용자 권한 검증PermissionVerified 또는 PermissionVerificationFailed 이벤트 발생

2. 역할(Role) 명령

명령설명영향
CreateRole새 역할 생성RoleCreated 또는 RoleValidationFailed 이벤트 발생
GetRole역할 정보 조회RoleRead 이벤트 발생
UpdateRole역할 정보 수정RoleUpdated 또는 RoleValidationFailed 이벤트 발생
DeleteRole역할 삭제RoleDeleted 이벤트 발생
UpdateRoleStatus역할 상태(활성/비활성) 변경RoleActivated 또는 RoleDeactivated 이벤트 발생
AssignPermissionToRole역할에 권한 할당PermissionsAssignedToRole 이벤트 발생
RevokePermissionFromRole역할에서 권한 해제PermissionsRevokedFromRole 이벤트 발생

3. 정책(Policy) 명령 (참고: 현재 시스템은 명시적 정책 관리 대신 Plan/Role 기반)

명령설명영향
CreatePolicy새 정책 생성PolicyCreated 이벤트 발생
GetPolicy정책 정보 조회PolicyRead 이벤트 발생
UpdatePolicy정책 정보 수정PolicyUpdated 이벤트 발생
DeletePolicy정책 삭제PolicyDeleted 이벤트 발생
EvaluatePolicy정책 평가PolicyEvaluated 이벤트 발생

4. 플랜(Plan) 도메인 연동 명령

명령설명영향
CalculatePlanBasedPermissions플랜 기반 권한 계산PlanBasedPermissionsCalculated 이벤트 발생
ValidatePlanRoleAssignment플랜-역할 할당 검증PlanRoleAssignmentValidated 이벤트 발생
InvalidatePlanPermissionCache플랜 권한 캐시 무효화PlanPermissionCacheInvalidated 이벤트 발생
UpdatePlanRoleMapping플랜-역할 매핑 업데이트PlanRoleMappingUpdated 이벤트 발생
SyncPlanAuthorization플랜 기반 인가 정보 동기화PlanAuthorizationUpdated 이벤트 발생

5. 그룹(Group) 도메인 연동 명령

명령설명영향
CalculateGroupBasedPermissions그룹 기반 권한 계산GroupBasedPermissionsCalculated 이벤트 발생
InvalidateGroupPermissionCache그룹 권한 캐시 무효화GroupPermissionCacheInvalidated 이벤트 발생
UpdateGroupRoleMapping그룹-역할 매핑 업데이트GroupRoleMappingUpdated 이벤트 발생
SyncGroupAuthorization그룹 기반 인가 정보 동기화GroupAuthorizationUpdated 이벤트 발생
UpdateUserGroupPermissions사용자-그룹 기반 권한 업데이트UserGroupPermissionUpdated 이벤트 발생

6. 접근 제어 및 사용자 관련 명령

명령설명영향
CalculateEffectivePermissions사용자의 유효 권한 계산UserEffectivePermissionsCalculated 이벤트 발생
GetUserEffectivePermissions사용자의 유효 권한 목록 조회UserEffectivePermissionsRead 이벤트 발생
GetUserPlan사용자가 속한 플랜 조회UserPlanIdentified 이벤트 발생
EvaluateIdentityLevelPolicyidentityLevel 조건 기반 정책 평가IdentityLevelEvaluated 또는 IdentityLevelPolicyApplied 이벤트 발생
InvalidateIdentityLevelCacheidentityLevel 관련 캐시 무효화IdentityLevelCacheInvalidated 이벤트 발생
RecordAuditLog감사 로그 기록 (내부 명령)AuditLogRecorded 이벤트 발생

7. 사용자 유형 관련 명령

명령설명영향
AssignUserType사용자에게 유형 할당UserTypeAssigned 이벤트 발생
ChangeUserType사용자 유형 변경UserTypeChanged, UserSchemaChanged 이벤트 발생
MigrateUserData사용자 데이터 마이그레이션UserDataMigrated 이벤트 발생
CalculateOperationUserPermissions내부 운영자 권한 계산OperationUserPermissionsCalculated 이벤트 발생
CalculatePatientUserPermissions환자 사용자 권한 계산PatientUserPermissionsCalculated 이벤트 발생

8. 서비스 간 인증 명령

명령설명영향
IssueServiceAccountTokenService Account용 JWT 토큰 발급ServiceAccountTokenIssued 이벤트 발생
VerifyServiceAccountTokenService Account JWT 토큰 검증ServiceAccountTokenVerified 또는 ServiceAccountTokenVerificationFailed 이벤트 발생
ReissueServiceAccountTokenService Account JWT 토큰 재발급 (refresh token 미지원)ServiceAccountTokenReissued 이벤트 발생
RevokeServiceAccountTokenService Account JWT 토큰 무효화ServiceAccountTokenRevoked 이벤트 발생
GenerateServiceAccountApiKeyService Account API 키 생성ServiceAccountApiKeyGenerated 이벤트 발생
RegenerateServiceAccountApiKeyService Account API 키 재생성ServiceAccountApiKeyRegenerated 이벤트 발생
EvaluateServiceAccountPermissionsService Account 권한 평가ServiceAccountPermissionsEvaluated 이벤트 발생
CreateServiceAccountService Account 생성UserTypeAssigned 이벤트 발생 (SERVICE_ACCOUNT 유형)
UpdateServiceAccountService Account 정보 수정관련 사용자 정보 업데이트 이벤트 발생
DeactivateServiceAccountService Account 비활성화관련 토큰 무효화 및 상태 변경 이벤트 발생

액터(Actors)

시스템과 상호작용하는 주체들입니다. (요구사항 1.1, 2.5 기반)

내부 액터

액터설명주요 명령
System Admin시스템 전체 관리자모든 IAM 리소스 CRUD, 사용자 권한 할당/해제, 시스템 정책 관리, 사용자 유형 관리
IAM AdminIAM 기능 관리자권한/역할/정책 생성/수정 (삭제 제외), 범위 내 사용자 권한 관리, 감사 로그 조회
Regular User일반 사용자(환자)자신의 권한/역할 조회, 권한 검증 요청, 제한된 권한 위임
Operation User내부 운영자자신의 권한/역할 조회, 할당된 범위 내 시스템 관리
Clinician의료진환자 데이터 접근, 특화된 의료 권한 사용

외부 액터 (시스템)

액터설명주요 명령
Service Account다른 서비스/시스템API 통한 권한 검증, 권한 조회, 캐시 관리, 정책 평가, JWT 토큰 발급/검증/갱신, API 키 관리
Plan Service플랜 관리 시스템플랜 정보 제공, 플랜-역할 매핑 정보 연동, 플랜 변경 이벤트 발행
Group Service그룹 관리 시스템그룹 정보 제공, 사용자-그룹 매핑 정보 연동, 그룹 변경 이벤트 발행
User Service사용자 정보 제공 시스템사용자 정보 조회 (ID, 상태, 그룹 등)
Auth Service인증 정보 제공 시스템인증된 사용자 정보 확인
Audit Service감사 로그 기록 시스템RecordAuditLog (내부 호출)
Billing Service빌링 정보 연동 시스템플랜 결제 상태 정보 제공

집계(Aggregates)

연관된 엔티티와 값 객체들의 클러스터입니다. (domain-model.md 및 비즈니스 규칙 기반)

Permission 집계

  • 루트: Permission
  • 값 객체: PermissionId (string, {domain}:{resource}:{action}), Description
  • 불변식:
    • Permission ID는 고유하며 변경 불가 (규칙 1.2, 2.2)

Role 집계

  • 루트: Role
  • 엔티티: RolePermission (연관 테이블)
  • 값 객체: RoleName (string, unique), Description, IsActive (boolean)
  • 참조: Permission (다대다)
  • 불변식:
    • Role 이름은 고유해야 함 (규칙 1.2)
    • Role은 활성/비활성 상태를 가짐 (규칙 3.2)
    • Role에 할당된 Permission 목록 관리
    • 순환 참조 금지 (규칙 3.2, 10.2)

PlanIntegration 집계 (Plan 도메인 연동)

  • 루트: PlanIntegration
  • 엔티티: PlanRoleMapping, PlanPermissionCache
  • 값 객체: PlanId (Plan 도메인 참조), RoleMappingStatus, CacheStatus
  • 참조: Role (IAM 도메인), Plan (Plan 도메인)
  • 불변식:
    • Plan 정보는 Plan 도메인에서 관리됨
    • Plan-Role 매핑의 일관성 유지
    • Plan 기반 권한 계산의 정확성

GroupIntegration 집계 (Group 도메인 연동)

  • 루트: GroupIntegration
  • 엔티티: GroupRoleMapping, GroupPermissionCache
  • 값 객체: GroupId (Group 도메인 참조), RoleMappingStatus, CacheStatus
  • 참조: Role (IAM 도메인), Group (Group 도메인)
  • 불변식:
    • Group 정보는 Group 도메인에서 관리됨
    • Group-Role 매핑의 일관성 유지
    • Group 기반 권한 계산의 정확성

UserAccess 집계 (가상 집계 - 사용자 권한 계산용)

  • 루트: User (ID 참조)
  • 참조: Group (다대다), Plan (직접 참조), Role (그룹 및 플랜 통해 참조), Permission (역할 통해 간접 참조)
  • 값 객체: EffectivePermissions (Set<PermissionId>), UserType
  • 불변식:
    • 사용자의 유효 권한은 두 경로로 계산됨:
      • 조직/기능적 권한: User -> Group -> Role -> Permission
      • 서비스 수준 권한: User -> Plan -> Role -> Permission
    • 최종 권한은 두 경로의 권한을 병합하여 결정됨
    • 모든 사용자는 최소 하나 이상의 그룹에 속해야 함 (규칙 6.2)
    • 사용자 유형(환자/내부 운영자)에 따라 서로 다른 스키마의 사용자 데이터 참조

UserType 집계

  • 루트: UserType
  • 값 객체: TypeEnum (PATIENT, ADMIN, OPERATOR, CLINICIAN, SERVICE_ACCOUNT)
  • 불변식:
    • 사용자는 하나의 유형만 가질 수 있음
    • 유형에 따라 접근 가능한 데이터와 기능이 결정됨
    • 유형 변경은 승인된 관리자만 수행 가능

핫스팟 및 해결책

1. 권한 검증 성능

  • 문제: 빈번한 권한 검증 요청으로 인한 성능 저하 가능성 (요구사항 2.2 처리량 목표 높음)
  • 해결책:
    • 캐싱: 권한 평가 결과, 역할-권한, 플랜-역할, 사용자-그룹 매핑 정보 캐싱 (규칙 9.3)
    • 최적화된 쿼리: 유효 권한 계산 로직 및 데이터베이스 쿼리 최적화
    • 비동기 처리: 대량 검증 요청 시 비동기 처리 고려

2. 복잡한 권한 파생 로직

  • 문제: User -> Group -> Plan -> Role -> Permission 경로의 복잡성으로 인한 유지보수 및 디버깅 어려움
  • 해결책:
    • 명확한 서비스 분리: 각 단계별(사용자-그룹 매핑, 그룹-플랜 매핑, 플랜-역할 매핑 등) 책임 분리 (domain-model.md 서비스 참조)
    • 테스트 강화: 권한 파생 로직에 대한 단위 테스트 및 통합 테스트 철저히 수행
    • 시각화 도구: (필요시) 사용자 권한 파생 과정을 시각화하는 도구 개발 고려

3. 캐시 일관성 유지

  • 문제: 역할, 플랜, 그룹 할당 변경 시 캐시된 데이터와의 불일치 발생 가능성
  • 해결책:
    • 적절한 캐시 무효화 전략: 관련 데이터 변경 시 연관된 캐시 명시적 무효화 (Event-driven 방식 고려)
    • TTL 설정: 캐시 TTL을 적절히 설정하여 데이터 최신성 보장 (규칙 11.1)

4. Plan 및 Group 도메인 연동 복잡성

  • 문제: Plan과 Group 도메인 분리로 인한 도메인 간 연동 복잡성 증가
  • 해결책:
    • 이벤트 기반 연동: Plan/Group 도메인 변경 이벤트를 구독하여 IAM 정보 동기화
    • 캐시 무효화 전략: 도메인 변경 시 관련 권한 캐시의 적절한 무효화
    • 일관성 보장: 분산 도메인 간 데이터 일관성 유지 메커니즘 구현

5. 외부 도메인 의존성 관리

  • 문제: User, Plan, Group, Auth, Audit 등 다수 도메인 의존성으로 인한 결합도 증가 및 장애 전파 위험
  • 해결책:
    • 비동기 통신: 도메인 간 통신 시 비동기 메시징(이벤트 발행/구독) 활용 고려
    • API 계약: 명확한 API 계약 정의 및 버전 관리
    • 회복성 설계: 외부 도메인 장애 시 대체 로직 또는 Graceful Degradation 구현

6. 사용자 유형 분리에 따른 권한 계산

  • 문제: 서로 다른 스키마에 저장된 사용자 데이터에 대한 일관된 권한 계산 어려움
  • 해결책:
    • 추상화된 사용자 조회 인터페이스: 유형에 관계없이 동일한 방식으로 사용자 정보 접근
    • 스키마 구분 처리 계층: 쿼리 생성 시 적절한 스키마 선택 로직 적용
    • 권한 계산 알고리즘 통일: 동일한 알고리즘으로 모든 유형의 사용자 권한 계산
    • 데이터 접근 캐싱 최적화: 유형별 데이터 접근 패턴 고려하여 캐시 설계

7. 서비스 간 인증 토큰 관리

  • 문제: JWT 토큰의 보안성과 성능 간의 균형, 토큰 무효화 및 재발급 메커니즘의 복잡성
  • 해결책:
    • 토큰 캐싱 전략: 검증된 토큰 정보를 적절한 TTL(5분)로 캐싱하여 성능 향상
    • 토큰 블랙리스트: 무효화된 토큰을 블랙리스트로 관리하여 보안 강화
    • 자동 재발급 메커니즘: refresh token 미지원으로 토큰 만료 전 API Key를 사용한 자동 재발급으로 서비스 중단 방지
    • 강력한 서명 알고리즘: RS256/ES256 사용으로 보안성 확보

8. Service Account 권한 관리

  • 문제: Service Account별 세밀한 권한 제어와 최소 권한 원칙 적용의 어려움
  • 해결책:
    • 네임스페이스 기반 격리: 서비스별 권한 범위 명확히 분리
    • 권한 템플릿: 서비스 유형별 표준 권한 템플릿 제공
    • 정기적 권한 검토: 자동화된 권한 사용 분석 및 불필요한 권한 제거
    • 권한 상속 체계: 서비스 계층에 따른 권한 상속 구조 설계

9. MAO 티어/동의/라우팅 이벤트

  • TierEvaluated: 토큰의 tier/allowed_domains/data_persistence가 정책 입력으로 평가됨
  • ConsentVersionMismatch: consent_version 불일치로 접근 거부 및 재동의 요구
  • GuestRoutingDenied: guest/anonymous가 민감 리소스 접근 시 Deny-overrides 처리
  • RequiredTierNotMet: 에이전트/툴 requiredTier 조건 불충족 이벤트
  • PolicyCacheInvalidatedByTierChange: guest→member 승격 또는 consent 업데이트로 정책 캐시 무효화

변경 이력

버전날짜작성자변경 내용
0.1.02025-04-20bok@weltcorp.com최초 문서 생성
0.2.02025-01-27bok@weltcorp.comGroup-Plan 독립성 반영: 권한 계산 경로 분리, GroupIntegration 집계 수정
0.2.02025-05-07bok@weltcorp.com사용자 유형 분리(환자/내부 운영자) 관련 내용 추가
0.3.02025-06-13bok@weltcorp.com서비스 간 인증 관련 이벤트, 명령, 정책, 핫스팟 추가
0.4.02025-07-16bok@weltcorp.comPlan 및 Group 관련 내용을 별도 도메인으로 분리, 도메인 연동 방식으로 수정 (4절, 5절 수정, 집계 및 핫스팟 업데이트)
0.5.02025-10-27assistantidentityLevel 평가 이벤트/명령 추가, 게스트 토큰 캐시 무효화 정책 반영
0.6.02025-11-26bok@weltcorp.comMAO 라우팅을 위한 tier/consent/allowed_domains/data_persistence 이벤트 및 requiredTier 미충족/guest 차단 이벤트 추가