Skip to content

Feature: 시크릿 자동 감지 로직 (Repository + UseCase) #63

Description

@doyeonk429

📝 기능 설명

사용자가 CreateSecret 화면에서 값을 입력하면, 서비스 후보와 파싱 메타데이터를 추정해 chip과 폼 자동 채움에 사용한다.

✅ 작업 목록

Phase A — 골격 + detector 3개

  • Detection/Model/ 5개 타입: DetectionResult · ServiceCandidate · DetectionConfidence · DetectedMetadata · SubDetection
  • Detection/Rule/ 4개 struct: PrefixRule · RegexRule · PEMHeaderRule · DatabaseSchemeRule
  • Detection/Security/: SensitiveString + SensitiveBox (deinit zero-fill)
  • Repository/Interface/SecretPatternRepository.swift protocol
  • Detection/Rule/BundledSecretPatternRepository.swift (stub, 빈 배열)
  • Detection/Detector/: SecretDetector · DetectorContext protocol
  • UseCase/Interface/Secret/DetectSecretUseCase.swift protocol
  • UseCase/Impl/Secret/DetectSecretUseCaseImpl.swift (파이프라인 골격 + DetectorContext 채택)
  • PrefixRegexDetector (최소 rule 3~5개만)
  • PEMDetector
  • DatabaseURLDetector
  • Detection/Support/: InputNormalizer (trim + 64KB truncate) · Base64URL(비어둠)
  • Unit test 각 detector + DetectSecretUseCaseImplGoldenTests 5 케이스
  • DetectionFixture.swift (테스트용 SensitiveString.testing(_:) 팩토리)
  • DVDomain 빌드 · 테스트 그린

Phase B — 나머지 detector + Rule 완비

  • EnvSetDetector (재귀 감지)
  • JSONCredentialDetector (GCP · Firebase · Google OAuth · AWS · Generic)
  • JWTDetector + Base64URL 유틸 완성
  • BuiltInPrefixRules 전량 (~60 rule) — AI/Payments/DevOps/Cloud/Communication/Monitoring/SaaS 서브네임스페이스
  • BuiltInRegexRules (Twilio · Mailchimp · Telegram · Discord · Sentry)
  • BuiltInPEMHeaders 8개
  • BuiltInDatabaseSchemes 12개 + Neon/Supabase host 후보 규칙
  • Azure 3종 (Storage · Service Bus · SQL) — DatabaseURLDetector에 fallback
  • 골든 테이블 3050 케이스 (스펙 §16 커버)

완료 기준

  • DetectSecretUseCase.execute(value: SensitiveString(...)) 로 스펙 문서 예시가 모두 감지됨
  • Raw 값이 DetectionResult 어디에도 담기지 않음 (타입으로 보장)
  • Detector 파일에서 os_log / Logger / print 사용 0건 (PR 리뷰 게이트)

🔗 참고 링크

SECRET_DETECTION_PATTERNS.md

Metadata

Metadata

Assignees

Labels

✨ Feature새로운 기능 개발

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions