Skip to content

[BE][Infra] Organization-level LLM credential routing과 runtime use 권한 적용 #58

Description

@yoonki1207

목표

  • LLM credential을 organization-level resource로 다룬다.
  • LLM node 실행 시 credential use 권한과 credential-model relation을 함께 검증한다.
  • 기존 user-scoped LLM API를 MVP1 RBAC 기준으로 정렬한다.

관련 Linear

구현 범위:

작업 내용
Credential scope llm_credentials.organization_id를 active organization 기준으로 저장/조회한다.
Credential read credential list/preview는 credential read 권한 기준으로 제한한다.
Credential create 새 credential 생성은 organization owner/manager가 수행한다. 생성 직후 권한 row를 어떻게 만들지는 8.3의 결정에 따른다.
Credential write/manage 기존 credential 삭제/sync-models/권한 관리는 organization owner/manager 또는 해당 credential manager 권한 기준으로 제한한다.
Runtime use workflow engine LLM node가 credential use 권한을 확인한다.
Model relation model 사용 가능 여부는 llm_rel_credential_models.is_verified와 credential permission을 함께 평가한다.
Usage log llm_usage_logs.organization_id, workflow_id, workflow_run_id, node_id를 가능한 범위에서 채운다.
Cost query top model/cost query는 user-only가 아니라 organization/workflow 권한 scope를 고려한다.

구현 방법

  1. apps/gateway/services/llm_service.py의 user-only credential 조회를 organization-aware query로 바꾼다.
  2. credential 등록 시 active organization을 저장한다.
  3. credential 생성은 organization owner/manager를 기준으로 제한하고, 삭제/동기화는 owner-only가 아니라 permission helper를 거친다.
  4. LLM client 선택은 다음 순서를 따른다.
1. 요청 model_id 확인
2. active organization 확인
3. 해당 model을 지원하는 verified credential 후보 조회
4. 후보 credential 중 current user가 use 권한을 가진 credential만 남김
5. 우선순위가 있으면 llm_rel_credential_models.priority, 없으면 안정적인 기준으로 하나 선택
6. 없으면 fail-closed
  1. workflow engine으로 전달되는 execution context에 user_id, organization_id, workflow_id, workflow_run_id를 전달한다.
  2. LLM node 실행 시 gateway와 workflow_engine 양쪽 서비스가 같은 permission 판단을 재사용하도록 shared helper를 둔다.
  3. model 전용 permission table은 만들지 않는다.

Acceptance Criteria

  • credential viewer는 credential preview 조회만 가능하고 runtime use는 거부된다.
  • credential operator 또는 builder는 LLM node 실행에서 credential을 사용할 수 있다.
  • organization owner/manager는 새 credential을 생성할 수 있다.
  • credential manager는 기존 credential 삭제/동기화/권한 관리를 할 수 있다.
  • verified relation이 없는 model은 credential 권한이 있어도 사용할 수 없다.
  • 권한 없는 credential/model 조합으로 workflow를 실행하면 LLM node 실행 전 또는 실행 중 명확히 차단된다.
  • 차단 이벤트가 audit에 남는다.
  • 성공한 LLM call은 llm_usage_logs에 organization/run/node/model/credential/token/cost/latency를 남긴다.

Out of Scope

  • API key별 cost limit
  • model 전용 permission table
  • 외부 provider별 고급 routing 정책
  • retry/fallback/cache

참고 사항

MVP-01-기반 문서

Metadata

Metadata

Assignees

Labels

Type

No type

Fields

Priority

None yet

Projects

Status
Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions