Security Uplift — ตัวขวาง deploy ไม่ใช่โค้ด แต่เป็น IaC PR ที่ค้างมาตั้งแต่ 25/08
รัน check-config-parity.py กับ IaC บน development จริงแล้วได้ exit=1 ทั้ง dev/sit/uat เพราะขาด 2 key ของ FieldEncryption — ตัวแก้เปิดเป็น PR #2528 ค้างอยู่ พร้อมลำดับ 4 ขั้นที่ต้องเกิดก่อน deploy และกับดัก lib 3 version ที่ยังไม่ merge
อัปเดต: 2026-08-31
← กลับหน้าภาพรวม · หน้านี้สำหรับคนที่ดูแล deploy — ไม่เกี่ยวกับการ review โค้ด
🔴 parity gate ตกทั้ง 3 env
รัน check-config-parity.py เทียบ appsettings.{Env}.json ของ UserService กับ IaC config ที่ origin/development จริง ได้ exit=1 ทั้ง dev, sit, uat
[config-parity] IaC overlay would STRIP keys the service config defines:
- FieldEncryption.AtRest.StepData.Enabled
- FieldEncryption.Payload.CreateUser.Enabled
⇒ deploy ตอนนี้ = build FAIL ที่ config-parity gate ทุก env ไม่ว่าโค้ดจะผ่าน review ดีแค่ไหน
ตัวแก้มีอยู่แล้ว แต่ค้าง
Backend_Iac PR #2528 เปิดค้างตั้งแต่ 25/08 ยังไม่ merge — https://dev.azure.com/eximth/SuperApp/_git/Backend_Iac/pullrequest/2528
หมายเหตุ: ClientSignature ไม่ติด parity เพราะอยู่ใน base appsettings.json ซึ่ง overlay ของ CI ไม่ทับ (overlay แทนที่เฉพาะ appsettings.{ENV}.json)
กับดัก lib 3 version ที่ยังไม่ merge
SupApp_util_lib publish ขึ้น feed ไปแล้ว 3 version แต่ยังไม่เข้า development
| version | PR | สถานะ |
|---|---|---|
| 10.14.0 | #2726 | ยังไม่ merge |
| 10.15.0 | #2728 | ยังไม่ merge |
| 10.16.0 | — | ยังไม่เปิด PR |
🔴 feed นำหน้า
developmentอยู่ 3 version — ถ้ามีใคร bump แล้ว publish จากdevelopmentตอนนี้ security type ทั้งชุดจะหายเงียบ ๆ
ลำดับที่ต้องเกิดก่อน deploy
- merge IaC PR #2528 — ไม่งั้นตกตั้งแต่ parity gate
- merge lib PR #2726 → #2728 → เปิด PR 10.16.0
- push + เปิด PR UserService (90 commit บน
poc/security-uplift) - Sentinel — un-park spike
78cae0dแล้วให้ดึง lib 10.16.0
เรื่อง Sentinel
spike 78cae0d ที่พักไว้มี ClientKeysController + handler พร้อมแล้ว (5 ไฟล์ +95/−3) รอ sign-off ของ UserService ว่าเป็นต้นแบบได้
ข้อควรระวังตอน un-park: ClientSignature:KeyRegistryPrefix ของ Sentinel ต้องเป็น SuperAppPlatform ให้ตรงกับ UserService ไม่งั้น key ที่ register ผ่าน Sentinel จะมองไม่เห็นจาก UserService และทุก signed request จะได้ 401 SIG_KEY_NOT_FOUND
ค่านี้ตั้งไว้ล่วงหน้าใน UserService แล้ว รอฝั่ง Sentinel มาตรงกัน