Skip to content

feat: 자산 자동 등록을 설정 가능하게 (auto/manual 모드) #82

@e7217

Description

@e7217

배경

현재 EDG Core는 어댑터가 publish한 데이터에서 모르는 asset_id를 발견하면 무조건 Asset 레코드를 자동 생성합니다 (internal/core/handler.go:73-94). 이 동작은 "Plug & Play" 가치 제안의 핵심이지만 끄거나 제한할 방법이 없습니다.

internal/core/config.goCoreConfig 어디에도 자동 등록 관련 토글이 없고, cmd/core/main.go:121은 store를 항상 주입하므로 handler.go:74if h.store != nil 가드는 운영 환경에서 항상 true입니다.

문제

  • 보안·거버넌스가 중요한 환경(미승인 디바이스 차단, 자산 인벤토리 변동 통제)에서 자동 등록을 끄지 못함
  • 테스트·스테이징에서 의도치 않은 자산이 자동 등록되어 누적
  • 운영자가 자산 카탈로그를 사전에 정의하고 그 외 트래픽은 관측만 하고 싶은 시나리오 미지원

제안

asset_registration.mode 설정 키 도입 (default auto):

  • auto: 현재 동작 — 모르는 asset_id 메시지가 들어오면 자동 등록 + EventCreated 발행
  • manual: 모르는 asset_id라도 데이터는 validated subject로 통과시키되 Asset 레코드는 생성하지 않음

향후 strict 모드(미등록 자산 reject + dead-letter)는 별도 이슈로 분리.

수용 기준

  • config.yamlasset_registration.modeauto/manual 전환 가능
  • auto 모드 기본값으로 기존 동작과 100% 일치 (후방 호환)
  • manual 모드에서 미등록 자산 메시지가 들어와도 store에 Asset이 생기지 않음
  • manual 모드에서도 데이터는 validated subject로 정상 통과 (다운스트림 영향 없음)
  • 각 모드별 단위 테스트 추가
  • USER_GUIDE에 설정 문서화

참고

  • 자동 등록 발생 지점: internal/core/handler.go:73-94
  • 설정 스키마: internal/core/config.go:17-65
  • 메인 와이어링: cmd/core/main.go:120-148
  • 사용자 가이드: docs/USER_GUIDE.md:120-138

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions