跳到主要内容
返回文章列表

OpenBao: ย้าย Secret ออกจากไฟล์ .env ด้วย KV และ Policy

ทดลอง OpenBao สำหรับเก็บ secret แบบรวมศูนย์ ตั้ง KV v2 และ policy แบบสิทธิ์ต่ำสุด พร้อมแยก dev mode ออกจาก production

OpenBao: ย้าย Secret ออกจากไฟล์ .env ด้วย KV และ Policy

รหัสผ่านฐานข้อมูลและ API key ที่กระจายอยู่ใน .env, CI variable หรือไฟล์บนเซิร์ฟเวอร์มักหมุนค่าและตรวจผู้เข้าถึงได้ยาก OpenBao เป็นระบบจัดการ secrets แบบอิงตัวตน ผู้ใช้หรือแอปต้องยืนยันตัวตนก่อนจึงจะอ่านค่าได้ และ policy จะกำหนดว่ามอง path ไหน บทความนี้ทดลองกับ KV v2 หนึ่ง path เพื่อเข้าใจ flow ก่อนออกแบบ production

ทดลองในเครื่องแยก

เอกสาร OpenBao มี developer quick start ที่ใช้ bao server -dev -dev-root-token-id="dev-only-token" โหมดนี้เก็บข้อมูลในหน่วยความจำ ใช้ HTTP และ token ที่กำหนดเองได้ จึงเหมาะเฉพาะเครื่องทดลองและห้ามเปิดสู่เครือข่าย production ตั้ง BAO_ADDR ให้ชี้ server ทดสอบ และใช้ CLI เขียนค่าตัวอย่างที่ไม่ใช่ credential จริง:

export BAO_ADDR=http://127.0.0.1:8200
export BAO_TOKEN=dev-only-token
bao kv put secret/app-demo username=demo password=replace-me
bao kv get secret/app-demo

ตัวอย่างนี้สมมติว่ามี KV v2 mount ที่ secret/ ตามการตั้งค่า dev quick start หากสภาพแวดล้อมของคุณไม่มี mount นี้ ให้ตรวจ bao secrets list และสร้าง mount ตามคู่มือก่อน อย่าใส่ secret จริงใน command line เพราะอาจอยู่ใน shell history หรือ process list

แยกสิทธิ์ของแอป

ออกแบบ path ตามขอบเขต เช่น secret/data/payments/* แล้วให้ token ของแอปอ่านได้เฉพาะ path นี้ ใน KV v2 คำสั่ง CLI ที่ดูเหมือน secret/payments/api จะใช้ API path ที่มี /data/ อยู่ด้านหลัง; policy ต้องอิง API path ไม่เช่นนั้นจะเจอ permission denied ให้ทดสอบด้วย token สิทธิ์ต่ำจริง: อ่าน path ของตัวเองต้องสำเร็จ อ่าน path ของบริการอื่นต้องล้มเหลว อย่าแจก root token ให้แอป แม้จะทำให้ตัวอย่างผ่านง่ายก็ตาม

สิ่งที่ production ต้องมี

เปลี่ยนจาก dev mode ไปใช้ storage ที่ทนทาน, TLS, การตั้งค่า unseal และ backup ที่ทดสอบกู้คืนแล้ว เลือก auth method ให้ตรงกับ runtime ของแอป กำหนดอายุ token สั้นและหมุนได้ เปิด audit device แล้วตรวจว่า log ถูกเก็บปลอดภัยและไม่มีค่า secret รั่วใน pipeline เฝ้าดูอัตราอ่านล้มเหลวและอายุ credential ก่อนย้ายแอปจริงทีละตัว

OpenBao ช่วยคุมสิทธิ์และบันทึกการเข้าถึง แต่ไม่ได้ลบภาระเรื่อง high availability กับ recovery ถ้า vault หยุด แอปที่ต้องอ่านค่าใหม่อาจเริ่มงานไม่ได้ จึงควรออกแบบ cache และ fail behavior ที่สอดคล้องกับความเสี่ยงของบริการ

อ่านเพิ่มเติม: OpenBao คืออะไร, Developer quick start, เอกสารหลัก