feat: Complete AEG-X-005 Security Auth Enhancement (ADR-SEC-001)

AEG-X-005 (Phase 1, S0):
- ADR-SEC-001.md: OIDC/JWT/DevelopmentHeader authentication tiers
  - Tier 1: Production OIDC (OAuth2/OpenID Connect)
  - Tier 2: Service-to-Service JWT (HS256)
  - Tier 3: Development DevelopmentHeader (test only)
- SecurityAuthenticationTests.cs: 6 tests PASSING
  - Endpoint authorization enforcement (every endpoint)
  - DevelopmentHeader mode check (Development-only)
  - Secret logging prevention (no Bearer/Token/Secret)
  - Secret hardcoding check (use Configuration only)
  - AI prompt PII check (no user email/SSN/tokens)
  - Auth config validation (configuration-driven routing)

Acceptance_Evidence: "비개발 무인증 접근 0, secret/log/prompt 노출 0"
 All 6 tests PASSING
 WBS_PROGRESS_TRACKER.csv updated

AGENTS.md v16.0 Compliance:
 SOLID: Single responsibility (auth handlers, tests isolated)
 Complexity: ADR section-driven, ≤10 assertions per test
 Audit: All auth decisions traced to ADR/test
 Necessity: Grounded in security requirements
 Pattern: Vertical Slice auth layer + test verification
 Guardrails: Alternatives documented (Basic/API Key/Session rejected)
 Traceability: ADR-SEC-001 + SecurityAuthenticationTests linked to WBS

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-08-04 00:59:59 +09:00
parent e42786df97
commit 7077fe0123
3 changed files with 642 additions and 1 deletions
@@ -3,7 +3,7 @@ AEG-X-001,S0,Cross,Version Coverage Matrix 고도화,COMPLETED,2026-08-04,docs/c
AEG-X-002,S0,Cross,global.json 고도화,COMPLETED,2026-08-04,.gitea/workflows/ci.yml (dotnet/pnpm restore/build/test),DevOps,"✅ CI pipeline validates: dotnet restore/build/test (Release config), pnpm frozen install/build/e2e, PostgreSQL 17 health checks, Log output to .gitea/workflows/ci.yml"
AEG-X-003,S0,Cross,Architecture tests 고도화,COMPLETED,2026-08-04,tests/KArtSell.ArchitectureTests/RepositoryRulesTests.cs (6 tests PASSING),Architect/QA,"✅ Architecture rules enforced: (1) No prohibited patterns, (2) Domain isolation from infrastructure, (3) SQL validation (no SELECT *, schema-qualified), (4) Endpoint authorization (Roles/Policies), (5) No placeholder files, (6) No duplicate aggregate IDs. All 6 tests PASS."
AEG-X-004,S0,Cross,DbUp 복구 rehearsal 고도화,PLANNED,-,-,DBA/BE,Deferred
AEG-X-005,S0,Cross,Security auth 고도화,PLANNED,-,-,Security/BE,Deferred
AEG-X-005,S0,Cross,Security auth 고도화,COMPLETED,2026-08-04,"docs/decisions/ADR-SEC-001.md + tests/KArtSell.Integration.Tests/SecurityAuthenticationTests.cs (6 tests)",Security/BE,"✅ ADR-SEC-001 produced (OIDC/JWT/DevelopmentHeader tiers), SecurityAuthenticationTests.cs (6 tests): endpoint authorization, DevelopmentHeader mode check, secret logging prevention, secret hardcoding check, AI prompt PII, auth config validation. Acceptance_Evidence verified: '비개발 무인증 접근 0, secret/log/prompt 노출 0'"
AEG-X-006,S0,Cross,Outbox publisher 고도화,IN_PROGRESS,2026-08-04,docs/operational-runbook.md + src/KArtSell.DbMigrator/0009_CreateInboxTable.sql,BE/SRE,"Outbox→Inbox async pipeline verified (Job 976). Inbox table exists, Outbox structure confirmed."
AEG-X-007,S0,Cross,Serilog/OTel correlation 고도화,COMPLETED,2026-08-04,tests/KArtSell.Integration.Tests/PiiRedactionTests.cs (16 tests PASSING),SRE/Security,"✅ PII redaction test VERIFIED: trace→job→decision→outbox chain (5 tests), sensitive data detection (4), correlation logging (4), Telegram redaction (2). All 16 tests PASS."
AEG-X-008,S0,Cross,OpenAPI artifact 고도화,COMPLETED,2026-08-04,.gitea/workflows/openapi-gate.yml + docs/api/openapi.json,BE/FE Architect,"✅ OpenAPI diff gate implemented: CI/CD automation detects breaking changes (3 checks: parameter removal, status code removal, field removal), blocks merge without approval, auto-comments on PR"
1 WBS_ID Sprint Slice_ID Task Status Completion_Date Evidence_Link Owner Notes
3 AEG-X-002 S0 Cross global.json 고도화 COMPLETED 2026-08-04 .gitea/workflows/ci.yml (dotnet/pnpm restore/build/test) DevOps ✅ CI pipeline validates: dotnet restore/build/test (Release config), pnpm frozen install/build/e2e, PostgreSQL 17 health checks, Log output to .gitea/workflows/ci.yml
4 AEG-X-003 S0 Cross Architecture tests 고도화 COMPLETED 2026-08-04 tests/KArtSell.ArchitectureTests/RepositoryRulesTests.cs (6 tests PASSING) Architect/QA ✅ Architecture rules enforced: (1) No prohibited patterns, (2) Domain isolation from infrastructure, (3) SQL validation (no SELECT *, schema-qualified), (4) Endpoint authorization (Roles/Policies), (5) No placeholder files, (6) No duplicate aggregate IDs. All 6 tests PASS.
5 AEG-X-004 S0 Cross DbUp 복구 rehearsal 고도화 PLANNED - - DBA/BE Deferred
6 AEG-X-005 S0 Cross Security auth 고도화 PLANNED COMPLETED - 2026-08-04 - docs/decisions/ADR-SEC-001.md + tests/KArtSell.Integration.Tests/SecurityAuthenticationTests.cs (6 tests) Security/BE Deferred ✅ ADR-SEC-001 produced (OIDC/JWT/DevelopmentHeader tiers), SecurityAuthenticationTests.cs (6 tests): endpoint authorization, DevelopmentHeader mode check, secret logging prevention, secret hardcoding check, AI prompt PII, auth config validation. Acceptance_Evidence verified: '비개발 무인증 접근 0, secret/log/prompt 노출 0'
7 AEG-X-006 S0 Cross Outbox publisher 고도화 IN_PROGRESS 2026-08-04 docs/operational-runbook.md + src/KArtSell.DbMigrator/0009_CreateInboxTable.sql BE/SRE Outbox→Inbox async pipeline verified (Job 976). Inbox table exists, Outbox structure confirmed.
8 AEG-X-007 S0 Cross Serilog/OTel correlation 고도화 COMPLETED 2026-08-04 tests/KArtSell.Integration.Tests/PiiRedactionTests.cs (16 tests PASSING) SRE/Security ✅ PII redaction test VERIFIED: trace→job→decision→outbox chain (5 tests), sensitive data detection (4), correlation logging (4), Telegram redaction (2). All 16 tests PASS.
9 AEG-X-008 S0 Cross OpenAPI artifact 고도화 COMPLETED 2026-08-04 .gitea/workflows/openapi-gate.yml + docs/api/openapi.json BE/FE Architect ✅ OpenAPI diff gate implemented: CI/CD automation detects breaking changes (3 checks: parameter removal, status code removal, field removal), blocks merge without approval, auto-comments on PR