สมอง SML

คลังความรู้ / การตัดสินใจ (ADR)

#backend#adr#tenant#security

ADR-0002 รหัสผ่าน DB ของผู้เช่าเป็น base64 ไม่ใช่การเข้ารหัส

สถานะ: accepted (ตรงกับโค้ด). รหัสผ่านฐานข้อมูลของผู้เช่าในไฟล์ SMLConfig<CODE>.json ถูกแปลงด้วย base64 ผ่าน port CredentialCodec — ไม่ใช่การเข้ารหัส ใครเข้าถึงไฟล์ได้ก็ถอดรหัสได้ทันที (backend/docs/adr/0002-provider-credentials-base64-not-encrypted.md:7).

ทำงานอย่างไร

  1. ตอนสร้าง/แก้ Provider ผ่าน API admin, service เรียก CredentialCodec.Encode(plaintext) แล้วเขียนผลลง JSON.
  2. ตอนต่อ DB ของผู้เช่า Decode(encoded) คืนค่าเดิม — ใช้ base64.StdEncoding (base64_codec.go:20-26).
  3. เพราะเป็น port จึงสลับเป็น AES ภายหลังได้โดยไม่แก้ผู้เรียก (...0002...md:11).

ตัวเลือกที่ไม่เลือก

AES ผ่าน platform/security ตามแผน PLAN.md เดิม — ยังไม่ทำ เพื่อให้ API ออกเร็ว (...0002...md:11).

ผลที่ตามมา / ข้อควรระวัง

ที่มาในโค้ด

  • backend/internal/adapter/outbound/crypto/base64_codec.go:7 — Base64Codec implements CredentialCodec (คอมเมนต์ชี้มาที่ ADR นี้).
  • backend/internal/adapter/outbound/crypto/base64_codec.go:20 — Encode/Decode ด้วย base64.StdEncoding.
  • backend/docs/adr/0002-provider-credentials-base64-not-encrypted.md:15 — ผลที่ตามมา.

ดูเพิ่ม

ทะเบียน Provider แบบไฟล์ JSON (Provider registry) · ADR-0001 เก็บ config ของผู้เช่า (Provider) เป็นไฟล์ JSON ไม่ใช่ตาราง DB · สารบัญ ADR ของ backend (Architecture Decision Records)