# Milestone: 조직 신원과 접근 제어 ## 위치 - Roadmap: [ROADMAP.md](../../../ROADMAP.md) - Phase: [PHASE.md](../PHASE.md) ## 목표 여러 조직 사용자가 검증된 외부 신원으로 Ariadne에 들어와 자신이 속한 조직만 선택하고 접근할 수 있게 한다. 최초 사용자·조직 생성과 구성원 관리가 마이그레이션 또는 전역 실행 역할의 권한 확대 없이 수행되도록 책임 경계를 확정한다. ## 상태 [스케치] ## 승격 조건 - [ ] 첫 인증 방식과 신원 검증 주체를 확정한다. - [ ] 최초 조직 생성과 이후 초대·가입 권한 정책을 확정한다. - [ ] SDD 사용자 리뷰를 해결하고 gate를 통과한다. - [ ] 인증·조직 관리 API와 감사 기록 기능 단위를 구현 가능한 수준으로 고정한다. ## 구현 잠금 - 상태: 잠금 - SDD: 필요 - SDD 문서: [SDD.md](../../../sdd/platform-foundation/tenant-access-control/SDD.md) - SDD 사유: 신원 기준, 조직 생성 권한, 구성원 lifecycle과 API·데이터베이스 권한 경계에 영향을 준다. - 잠금 해제 조건: - [ ] SDD 잠금이 해제되어 있다. - [ ] SDD 사용자 리뷰가 승인·해결되어 있다. - [ ] Acceptance Scenario가 Milestone 기능 Task와 연결되어 있다. - [ ] Evidence Map이 완료 시 검증 가능한 근거와 연결되어 있다. - 결정 필요: - [D01] 첫 인증·조직 진입 방식과 그에 따른 최초 조직 생성·초대 책임 ## 범위 - 검증된 `issuer + subject` 신원과 Ariadne 사용자 연결 - 최초 조직 생성 전용 관리 경계 - 활성 조직 멤버십 조회와 조직 선택 - 소유자, 관리자, 구성원, 조회자 역할별 인가 - 초대, 역할 변경, 탈퇴와 감사 기록 ## 기능 ### Epic: [identity] 신원과 조직 진입 인증된 주체만 조직 범위를 획득하도록 한다. - [ ] [verify-identity] 선택한 인증 방식으로 토큰 또는 세션을 검증하고 `issuer + subject`를 내부 사용자와 연결한다. - [ ] [bootstrap-org] 전용 관리 경계에서 최초 조직과 소유자 멤버십을 원자적으로 생성하고 감사 기록을 남긴다. - [ ] [select-org] 활성 멤버십에 포함된 조직만 선택할 수 있는 세션·요청 범위 규칙을 제공한다. ### Epic: [membership] 구성원 권한 조직 안에서 역할과 구성원 lifecycle을 관리한다. - [ ] [authorize-role] API 동작별 역할 권한을 중앙 규칙으로 강제한다. - [ ] [manage-member] 구성원 초대, 역할 변경과 탈퇴를 이력 보존 방식으로 처리한다. - [ ] [tenant-tests] 다른 조직 신원·식별자를 사용한 접근과 권한 상승을 차단한다. 검증: 인증·인가 및 실제 PostgreSQL 교차 조직 통합 검사가 통과한다. ## 완료 리뷰 - 상태: 없음 - 요청일: 없음 - 완료 근거: 없음 - 검토 항목: SDD gate, 인증·인가 통합 검사와 감사 기록 - agent-ui 상태 반영: 해당 없음 - 리뷰 코멘트: 없음 ## 범위 제외 - 소셜 로그인별 전용 사용자 경험 - 엔터프라이즈 단일 로그인 자동 프로비저닝 - 조직 간 데이터 공유 ## 작업 컨텍스트 - 관련 경로: `internal/platform/database/identity.go`, `internal/platform/httpserver/`, `internal/domain/organization/` - 표준선: 요청 본문의 조직 식별자를 신뢰하지 않고 검증된 신원과 활성 멤버십에서 범위를 결정한다. - 선행 작업: [기반 스캐폴드 안정화](foundation-hardening.md) - 후속 작업: [프로젝트와 분석 대상 등록](project-target-registry.md) - 확인 필요: [USER_REVIEW.md](../../../sdd/platform-foundation/tenant-access-control/USER_REVIEW.md)