
ที่มาภาพ: Unknown Source
วิธีตั้งค่า Cloudflare Workers‑KV เพื่อจัดเก็บข้อมูลแบบ Edge อย่างปลอดภัย
⚡ สรุป 30 วิ
Cloudflare Workers‑KV เป็นฐานข้อมูลแบบ key‑value ที่ทำงานบนเครือข่าย Edge ของ Cloudflare ทำให้ข้อมูลสามารถเข้าถึงได้จากจุดใกล้ผู้ใช้ที่สุด ลด latency อย่างมีประสิทธิภาพ การตั้งค่า KV ให้ปลอดภัยเป็นขั้…
บทนำ — Overview
Cloudflare Workers‑KV เป็นฐานข้อมูลแบบ key‑value ที่ทำงานบนเครือข่าย Edge ของ Cloudflare ทำให้ข้อมูลสามารถเข้าถึงได้จากจุดใกล้ผู้ใช้ที่สุด ลด latency อย่างมีประสิทธิภาพ การตั้งค่า KV ให้ปลอดภัยเป็นขั้นตอนสำคัญที่ช่วยป้องกันการรั่วไหลของข้อมูลและการโจมตีจากภายนอก
ต่อไปนี้จะอธิบายวิธีสร้าง Namespace, ผูกกับ Worker, เขียนโค้ดเบื้องต้น พร้อมแนวทางรักษาความปลอดภัยแบบ “defense‑in‑depth”
ทำความเข้าใจ Workers‑KV — What is Workers KV
Workers‑KV เป็นระบบจัดเก็บข้อมูลที่มีลักษณะ *eventually consistent* เหมาะกับข้อมูลคงที่หรือไม่เปลี่ยนบ่อย เช่น การตั้งค่าแอป, รายการสาธิต, หรือไฟล์ JSON ขนาดเล็ก
- Key – ชื่อระบุข้อมูล (string)
- Value – เนื้อหาเก็บเป็นข้อความหรือไบต์ (up to 25 MB per value)
- Namespace – กลุ่ม KV ที่แยกตามโปรเจค หรือสภาพแวดล้อม
**Tip: อย่าใช้ KV เก็บข้อมูลที่ต้องการความสอดคล้องแบบทันที เช่น session token; ควรเลือก Cloudflare Durable Objects หรือฐานข้อมูลอื่น
การตั้งค่าเบื้องต้น — Initial Setup
ก่อนเริ่มใช้งานให้แน่ใจว่ามีบัญชี Cloudflare และโดเมนที่ถูกเพิ่มในระบบแล้ว
- เข้าสู่ Dashboard เลือกโดเมนที่ต้องการ
- ไปที่เมนู Workers & Pages KV Create namespace
- ตั้งชื่อ Namespace ที่บ่งบอกสภาพแวดล้อม (เช่น `MYAPP_PROD_KV`)
**สำคัญ: ใช้ชื่อที่มีความหมายชัดเจนและไม่ซ้ำกับโปรเจคอื่น เพื่อหลีกเลี่ยงการอ้างอิงผิดพลาด
ขั้นตอนการสร้าง Namespace และ Bindings — Create Namespace & Bindings
1. สร้าง Namespace
- กด + Create namespace**
- ใส่ชื่อแล้วคลิก Confirm
2. ผูก (Binding) กับ Worker
- ไปที่ Workers เลือกหรือสร้าง Worker ใหม่
- ที่แท็บ Settings Variables KV Namespaces Add binding
- ตั้งค่า:
- **Variable name: ชื่อที่จะใช้ในโค้ด (เช่น `MY_KV`)
- **Namespace: เลือก Namespace ที่สร้างไว้
3. ตรวจสอบการผูก
- เปิด Quick Edit ของ Worker พิมพ์ `console.log(MY_KV)` แล้ว Deploy เพื่อดูว่าตัวแปรถูกเชื่อมหรือไม่
การเขียนโค้ดให้ใช้ KV — Code Example
```javascript addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)) })
async function handleRequest(request) { const url = new URL(request.url)
// ตัวอย่าง GET: ดึงค่าโดย key if (url.pathname === '/get') { const value = await MY_KV.get('welcome_message') return new Response(value || 'Not found', { status: 200 }) }
// ตัวอย่าง PUT: บันทึกค่า (ต้องมีการตรวจสอบสิทธิ์) if (url.pathname === '/set' && request.method === 'POST') { const auth = request.headers.get('Authorization') if (!isValidToken(auth)) return new Response('Forbidden', { status: 403 })
const body = await request.json() await MY_KV.put(body.key, body.value) return new Response('Saved', { status: 201 }) }
return new Response('Bad Request', { status: 400 }) }
// ตรวจสอบ JWT หรือ API key ของคุณ function isValidToken(token) { // ตรงนี้ให้เชื่อมกับระบบตรวจสอบของคุณเอง return token === 'Bearer my-secret-token' } ```
จุดสำคัญในโค้ด
- ใช้ `await` เพื่อรอผลจาก KV (เนื่องจากเป็น I/O แบบ async)
- ตรวจสอบ Authorization ก่อนทำการเขียน (`PUT`) เพื่อลดความเสี่ยงการแก้ไขโดยไม่ได้รับอนุญาต
- จำกัดขนาด value ไม่เกิน 25 MB ตามข้อกำหนดของ KV
ความปลอดภัยของ KV — Security
KV เองไม่มีระบบเข้ารหัสข้อมูลที่ระดับ field‑level; ข้อมูลจะถูกจัดเก็บในรูป plaintext บน Edge แต่การสื่อสารระหว่าง Client Worker จะต้องใช้ HTTPS เสมอ
| ด้าน | วิธีปฏิบัติ |
|---|---|
| การเข้าถึง | ใช้ API Token ที่จำกัด scope ให้เฉพาะ `Workers KV Storage` เท่านั้น |
| การเขียน/อ่านจาก Worker | ตรวจสอบ JWT, API Key หรือ Signed Cookies ก่อนให้บริการ |
| การจัดการคีย์ | ตั้งชื่อคีย์ด้วย prefix ระบุสภาพแวดล้อม (`prod:`, `dev:`) เพื่อป้องกัน accidental overwrite |
| **การบันทึก (Logging) | อย่า log ค่า value ที่เป็นข้อมูลสำคัญลงใน Workers logs |
**Tip: หากต้องเก็บข้อมูลที่เป็นความลับจริง ๆ ให้เข้ารหัสก่อน `put` ลง KV (เช่น AES‑GCM) แล้วถอดรหัสเมื่อ `get`
เคล็ดลับและข้อควรระวัง — Tips
- **แคชระดับ Edge: Workers สามารถตั้งค่า Cache API ควบคู่กับ KV เพื่อให้ข้อมูลที่อ่านบ่อยได้เร็วขึ้น แต่ต้องกำหนด TTL ให้สั้นเมื่อต้องการความสดใหม่
- **หลีกเลี่ยง Hot Key: อย่าใช้ key เดียวกันที่หลายพัน request เรียกพร้อมกัน เพราะอาจทำให้ latency สูง; แบ่งคีย์โดยเพิ่ม suffix หรือ hash เพื่อกระจายโหลด
- **Versioning ของค่า: เก็บเวอร์ชันของข้อมูลเป็นส่วนหนึ่งของ key (`config:v1`, `config:v2`) ช่วย rollback ได้ง่าย
- **การล้างข้อมูล (Purge): ใช้ `MY_KV.delete(key)` เมื่อต้องการลบข้อมูลที่ไม่ใช้แล้ว; ควรทำในขั้นตอน CI/CD เพื่อลดขนาด KV ที่ไม่ได้ใช้งาน
สรุป — Summary
- Cloudflare Workers‑KV ให้บริการ key‑value storage บน Edge ด้วย latency ต่ำและความง่ายในการผูกกับ Worker
- ตั้งค่า Namespace, Bindings, และตรวจสอบสิทธิ์ก่อนเขียน/อ่านข้อมูลเป็นขั้นตอนพื้นฐานที่ต้องทำตาม
- ความปลอดภัยควรพิจารณาในระดับ authentication, authorization, encryption (ถ้าจำเป็น) รวมถึงการจัดการคีย์และแคชอย่างเหมาะสม
สิ่งที่ควรจำ
- สร้าง Namespace ชัดเจน, ผูกกับ Worker ผ่าน Variable name
- ตรวจสอบ token หรือ JWT ก่อนทำ `PUT` / `DELETE`
- ใช้ prefix และ versioning ของ key เพื่อจัดการสภาพแวดล้อมและ rollback ได้ง่าย
- หากข้อมูลเป็นความลับ ให้เข้ารหัสก่อนบันทึกลง KV
- ป้องกัน Hot Key ด้วยการกระจายคีย์หรือใช้ Cache API ร่วมด้วย
ทำตามขั้นตอนเหล่านี้ คุณจะได้ระบบ Edge Storage ที่เร็ว, มีประสิทธิภาพ และปลอดภัยสำหรับแอปพลิเคชันของคุณบน Cloudflare Workers.
แชร์บทความนี้:
ชอบบทความแบบนี้?
สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม
แหล่งข่าวต้นฉบับ
- ชื่อต้นฉบับ
- วิธีตั้งค่า Cloudflare Workers‑KV เพื่อจัดเก็บข้อมูลแบบ Edge อย่างปลอดภัย
- ผู้เขียน
- กองบรรณาธิการ Thai Tech News
- แหล่ง
- บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
- วันที่เผยแพร่
- 9 สิงหาคม 2569 เวลา 10:50



