본문으로 건너뛰기

IAM Operation 도메인 이벤트 스토밍

본 문서는 IAM Operation 도메인 요구사항(requirements.md)을 기반으로 Event Storming 방식으로 분석한 결과입니다.

목적

IAM Operation 도메인은 운영자 계정의 인가를 담당하는 도메인 입니다. 권한, 역할 등을 처리합니다.


1. 도메인 이벤트

1.1 권한 생명주기 이벤트

EventDescription
PermissionCreated새 권한 생성
PermissionRead권한 정보가 조회됨
PermissionUpdated권한 정보가 수정됨
PermissionDeleted권한 정보가 삭제됨
PermissionVerified특정 권한 보유가 확인됨
PermissionVerificationFailed특정 권한 보유 확인 실패됨

1.2 역할 생명주기 이벤트

EventDescription
RoleCreated새 권한 생성
RoleRead권한 정보가 조회됨
RoleUpdated권한 정보가 수정됨
RoleDeleted권한 정보가 삭제됨
RolePermissionMappingUpdated역할-권한 매핑 수정됨

1.3 그룹 도메인 연동 이벤트

EventDescription
GroupRoleMappingUpdated그룹-역할 매핑 정보가 업데이트 됨
GroupPermissionCacheInvalidated그룹 권한 캐시가 무효화 됨

1.4 관리자(Operation) 계정 정보 관리 이벤트

1.4.1 비밀번호 변경

EventDescription
PasswordChangeRequested비밀번호 변경이 요청됨
CurrentPasswordVerificationFailed현재 비밀번호 검증이 실패함
PasswordChanged비밀번호가 변경됨
PasswordChangeRejectedDueToInvalidCurrentPassword현재 비밀번호가 일치하지 않아 변경이 거부됨

1.4.2 관리자에 의한 강제 비밀번호 초기화

EventDescription
PasswordForcedResetRequested강제 비밀번호 초기화가 요청됨
RandomPasswordGenerated무작위 비밀번호가 생성됨
PasswordForciblyReset비밀번호가 강제로 초기화됨
PasswordResetEmailSent비밀번호 초기화 이메일이 전송됨
PasswordResetEmailFailed비밀번호 초기화 이메일 전송이 실패함 (롤백됨)

1.4.3 보안 코드를 통한 비밀번호 재설정

EventDescription
PasswordResetSecurityCodeRequested비밀번호 재설정 보안 코드가 요청됨
SecurityCodeStoredInCache보안 코드가 캐시에 저장됨
SecurityCodeEmailSent보안 코드 이메일이 전송됨
SecurityCodeVerificationRequested보안 코드 검증이 요청됨
SecurityCodeValidated보안 코드가 검증됨
SecurityCodeValidationFailed보안 코드 검증이 실패함
TemporaryAccessTokenIssued임시 액세스 토큰이 발급됨 (30분 유효)
PasswordResetWithTemporaryToken임시 토큰으로 비밀번호가 재설정됨
PasswordResetRejectedDueToDuplicatePassword동일한 비밀번호로 재설정이 거부됨

1.4.4 계정 삭제

EventDescription
AccountDeletionRequested계정 삭제가 요청됨
AdminAccountDeletionEvaluated관리자 계정 삭제 가능 여부가 평가됨
AccountDeleted계정이 삭제됨
AccountDeletionRejectedDueToPasswordMismatch비밀번호 불일치로 삭제가 거부됨
AccountDeletionRejectedDueToUnauthorizedUser권한 없는 사용자의 삭제 시도가 거부됨
AccountDeletionRejectedDueToLastAdmin마지막 관리자여서 삭제가 거부됨
SiteDeletedWithLastAccount마지막 계정 삭제와 함께 사이트가 삭제됨

2. 액터와 명령

각 액터가 수행할 수 있는 명령과 결과 이벤트를 정의합니다.

2.1 권한 생명주기 명령

CommandActorEvent
CreatePermissionSystem AdminPermissionCreated
ReadPermissionSystem AdminPermissionRead
UpdatedPermissionSystem AdminPermissionUpdated
DeletePermissionSystem AdminPermissionDeleted
VerifyPermissionSystemPermissionVerified
FailureVerifyPermissionSystemPermissionVerificationFailed

2.2 역할 생명주기 명령

CommandActorEvent
CreateRoleSystem AdminRoleCreated
ReadRoleSystem AdminRoleRead
UpdateRoleSystem AdminRoleUpdated
DeleteRoleSystem AdminRoleDeleted
UpdateRolePermissionMappingSystem AdminRolePermissionMappingUpdated

2.3 그룹 도메인 연동 명령

CommandActorEvent
UpdateGroupRoleMappingSystem AdminGroupRoleMappingUpdated
InvalidateGroupPermissionCacheSystem AdminGroupPermissionCacheInvalidated

2.4 관리자 계정정보 관리 명령

2.4.1 비밀번호 관리 명령

CommandActorEvent
ChangePasswordAccountPasswordChanged
ForceResetPasswordPlatformAdmin, SiteAdminPasswordForciblyReset
RequestPasswordResetSecurityCodeAccountSecurityCodeStoredInCache
VerifySecurityCodeAccountSecurityCodeValidated
IssueTemporaryAccessTokenSystemTemporaryAccessTokenIssued
ResetPasswordWithTemporaryTokenAccountPasswordResetWithTemporaryToken

2.4.2 계정 삭제 명령

CommandActorEvent
DeleteAccountAccountAccountDeleted

3. Aggregate 매핑

각 명령과 이벤트가 어느 Aggregate에서 처리되는지 정의합니다.

3.1 Permission

트랜잭션 경계: 퍼미션 값을 처리

담당 Command:

  • Create
  • Read
  • Update
  • Delete
  • Verify

발행 Event:

  • PermissionCreated
  • PermissionRead
  • PermissionUpdated
  • PermissionDeleted
  • PermissionVerified
  • PermissionVerificationFailed

3.2 Role

트랜잭션 경계: 롤을 관리하고 퍼미션과의 매핑을 관리

담당 Command:

  • Create
  • Read
  • Update
  • Delete
  • MapPermission

발행 Event:

  • RoleCreated
  • RoleRead
  • RoleUpdated
  • RoleDeleted

3.3 Group

트랜잭션 경계: 롤을 관리하고 퍼미션과의 매핑을 관리

담당 Command:

  • MapRole

발행 Event:

  • GroupRoleMappingUpdated
  • GroupPermissionCacheInvalidated

3.4 SecurityCode

트랜잭션 경계: 비밀번호 재설정 보안 코드의 생성, 저장, 검증을 관리

담당 Command:

  • RequestPasswordResetSecurityCode
  • VerifySecurityCode

발행 Event:

  • PasswordResetSecurityCodeRequested
  • SecurityCodeStoredInCache
  • SecurityCodeEmailSent
  • SecurityCodeVerificationRequested
  • SecurityCodeValidated
  • SecurityCodeValidationFailed

3.5 Account

트랜잭션 경계: 계정의 생명주기 전체(생성, 비밀번호 관리, 삭제)를 원자적으로 관리

담당 Command:

  • ChangePassword
  • ForceResetPassword
  • ResetPasswordWithTemporaryToken
  • DeleteAccount

발행 Event:

  • PasswordChangeRequested
  • PasswordChanged
  • PasswordChangeRejectedDueToInvalidCurrentPassword
  • PasswordForcedResetRequested
  • RandomPasswordGenerated
  • PasswordForciblyReset
  • PasswordResetEmailSent
  • PasswordResetEmailFailed
  • PasswordResetWithTemporaryToken
  • PasswordResetRejectedDueToDuplicatePassword
  • AccountDeletionRequested
  • AdminAccountDeletionEvaluated
  • AccountDeleted
  • AccountDeletionRejectedDueToPasswordMismatch
  • AccountDeletionRejectedDueToUnauthorizedUser
  • AccountDeletionRejectedDueToLastAdmin
  • SiteDeletedWithLastAccount

변경 이력

버전날짜작성자변경 내용
0.58.02025-12-16mook@weltcorp.comMedi, Crm 용 iam ops 작성
0.57.02025-12-15dalia@weltcorp.comEvent Storming 기반 도메인 모델 작성