Description 목표
owner-based workflow/app 접근 제어를 MVP1 RBAC로 교체한다.
organization_id=user_id 같은 과도기 scope 처리를 제거하고 active organization 기준으로 정렬한다.
Linear MBA-36의 모듈 생성 버그를 이 범위 안에서 해결한다.
관련 Linear
구현 범위:
작업
내용
Active organization 적용
App/Workflow 생성, 복제, 조회에서 active organization을 사용한다.
App as project boundary
app 전용 permission table을 만들지 않고 primary workflow permission으로 app 접근을 판단한다.
Workflow read
workflow 상세, draft 조회, runs, stats에 workflow read 권한을 적용한다.
Workflow write
draft 저장에 workflow write 권한을 적용한다.
Workflow execute
execute, stream에 workflow execute 권한을 적용한다.
Existing owner fallback
legacy resource처럼 organization scope가 없는 경우에만 created_by fallback을 제한적으로 허용한다.
Audit
권한 차단은 audit_logs.action='permission.denied' 또는 기존 AuditAction.AUTH_PERMISSION_DENIED 기준으로 기록한다.
Regression fix
module 생성, app 생성, workflow 생성, draft 저장, stream 실행이 깨지지 않도록 보장한다.
구현 방법
apps/gateway/services/app_service.py에서 organization_id 기본값을 user_id로 보지 않는다.
apps/gateway/services/workflow_service.py의 organization_id=user_id를 active organization 기준으로 바꾼다.
app 생성 시 생성되는 primary workflow도 같은 organization scope를 가진다.
workflow endpoint의 created_by == current_user.id 체크를 permission helper로 교체한다.
get_workflow_runs, get_workflow_run_detail, get_workflow_stats에도 read check를 넣는다.
execute_workflow, stream_workflow에는 execute check를 넣는다.
sync_draft_workflow에는 write check를 넣는다.
403은 공통 audit handler가 기록하도록 하되, 필요한 경우 permission helper에서 권한 출처 metadata를 추가한다.
Acceptance Criteria
viewer는 workflow 상세/draft/runs/stats를 볼 수 있지만 저장/실행할 수 없다.
operator는 실행할 수 있지만 draft 저장은 거부된다.
builder는 draft 저장과 실행이 가능하다.
권한 없는 user는 workflow 존재 여부를 과도하게 노출하지 않도록 403/404 정책이 일관된다.
app 생성 시 app과 primary workflow의 organization_id가 active organization과 일치한다.
workflow 생성/저장/실행 기존 happy path가 통과한다.
Linear MBA-36의 재현 조건이 있으면 같은 테스트로 회귀 방지한다.
Out of Scope
deployment 권한 강화
marketplace 공개 정책
app 전용 permission table
multi-organization switcher UI
참고 사항
MVP-01-기반 문서
Reactions are currently unavailable
You can’t perform that action at this time.
목표
organization_id=user_id같은 과도기 scope 처리를 제거하고 active organization 기준으로 정렬한다.MBA-36의 모듈 생성 버그를 이 범위 안에서 해결한다.관련 Linear
구현 범위:
read권한을 적용한다.write권한을 적용한다.execute권한을 적용한다.created_byfallback을 제한적으로 허용한다.audit_logs.action='permission.denied'또는 기존AuditAction.AUTH_PERMISSION_DENIED기준으로 기록한다.구현 방법
apps/gateway/services/app_service.py에서organization_id기본값을user_id로 보지 않는다.apps/gateway/services/workflow_service.py의organization_id=user_id를 active organization 기준으로 바꾼다.created_by == current_user.id체크를 permission helper로 교체한다.get_workflow_runs,get_workflow_run_detail,get_workflow_stats에도 read check를 넣는다.execute_workflow,stream_workflow에는 execute check를 넣는다.sync_draft_workflow에는 write check를 넣는다.Acceptance Criteria
viewer는 workflow 상세/draft/runs/stats를 볼 수 있지만 저장/실행할 수 없다.operator는 실행할 수 있지만 draft 저장은 거부된다.builder는 draft 저장과 실행이 가능하다.organization_id가 active organization과 일치한다.MBA-36의 재현 조건이 있으면 같은 테스트로 회귀 방지한다.Out of Scope
참고 사항
MVP-01-기반 문서