Skip to content

[BE][FIX] App/Workflow 권한 enforcement와 모듈 생성 버그 수정 #57

Description

@yoonki1207

목표

  • 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 실행이 깨지지 않도록 보장한다.

구현 방법

  1. apps/gateway/services/app_service.py에서 organization_id 기본값을 user_id로 보지 않는다.
  2. apps/gateway/services/workflow_service.pyorganization_id=user_id를 active organization 기준으로 바꾼다.
  3. app 생성 시 생성되는 primary workflow도 같은 organization scope를 가진다.
  4. workflow endpoint의 created_by == current_user.id 체크를 permission helper로 교체한다.
  5. get_workflow_runs, get_workflow_run_detail, get_workflow_stats에도 read check를 넣는다.
  6. execute_workflow, stream_workflow에는 execute check를 넣는다.
  7. sync_draft_workflow에는 write check를 넣는다.
  8. 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-기반 문서

Metadata

Metadata

Assignees

Labels

FeaturebugSomething isn't working

Type

No type

Fields

Priority

None yet

Projects

Status
Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions