PlusMagi's Blog By Pitt Phunsanit Cybersecurity,Database พื้นฐานเครือข่ายและการรักษาความปลอดภัย (Network Security, Encryption, SSL/TLS, VPN, Firewall)

พื้นฐานเครือข่ายและการรักษาความปลอดภัย (Network Security, Encryption, SSL/TLS, VPN, Firewall)

ในฐานะ Senior Architect ที่ดูแลระบบข้อมูล การรักษาความปลอดภัยของข้อมูล (Data Security) คือภารกิจหลักที่ไม่อาจประนีประนอมได้ ไม่ว่าจะเป็นการส่งข้อมูลผ่านเครือข่าย (In Transit) หรือการจัดเก็บในฐานข้อมูล (At Rest) ระบบ PostgreSQL ไม่ได้มีเพียงแค่ความเสถียร แต่ยังมาพร้อมกลไกการป้องกันหลายชั้น (Defense in Depth) เพื่อให้มั่นใจว่าข้อมูลของเราจะปลอดภัยจากภัยคุกคามทางไซเบอร์

การเข้ารหัสข้อมูล (Encryption) สำหรับข้อมูลที่จัดเก็บ

แนวคิดหลักของการเข้ารหัสคือการแปลงข้อมูลที่อ่านได้ (Plaintext) ให้เป็นรูปแบบที่อ่านไม่ออก (Ciphertext) โดยใช้กุญแจ (Key) ในการเข้ารหัสและถอดรหัส ใน PostgreSQL เราใช้ส่วนขยาย (Extension) อย่าง pgcrypto เพื่อจัดการเรื่องนี้ ทำให้เราสามารถเข้ารหัสข้อมูลที่ละเอียดอ่อน เช่น รหัสผ่าน หรือข้อมูลส่วนบุคคล ก่อนที่จะจัดเก็บลงในตาราง

ตัวอย่างการเข้ารหัสข้อมูลด้วย SHA-256:

SQL

SELECT encode(digest('password123', 'sha256'), 'hex');

การรักษาความปลอดภัยการเชื่อมต่อ (SSL/TLS) และการควบคุมการเข้าถึง (Firewall/RBAC)

เมื่อพูดถึงการสื่อสารระหว่างแอปพลิเคชันกับฐานข้อมูล การใช้ SSL/TLS คือสิ่งจำเป็นอย่างยิ่ง เพราะมันทำหน้าที่เหมือนอุโมงค์ที่เข้ารหัสข้อมูลทั้งหมดที่เดินทางผ่านเครือข่าย ทำให้ข้อมูลไม่ถูกดักฟัง (Man-in-the-Middle Attack) ในระดับ PostgreSQL เราต้องมั่นใจว่าการเชื่อมต่อทั้งหมดถูกบังคับใช้ SSL

ส่วนการควบคุมการเข้าถึง (Access Control) ของ PostgreSQL ทำหน้าที่คล้าย Firewall ในระดับแอปพลิเคชัน โดยใช้ระบบ Role-Based Access Control (RBAC) เราต้องกำหนดสิทธิ์ให้ผู้ใช้แต่ละกลุ่มทำได้เฉพาะสิ่งที่จำเป็นเท่านั้น (Principle of Least Privilege)

ตัวอย่างการสร้าง Role และการจำกัดสิทธิ์การเข้าถึง (เทียบเท่าการตั้งกฎ Firewall):

SQL

-- 1. สร้าง Role สำหรับผู้ใช้งานที่จำกัดสิทธิ์ (เช่น Read-Only User)
CREATE ROLE readonly_user LOGIN PASSWORD 'securepass';

-- 2. ให้สิทธิ์เฉพาะการ SELECT บนตารางที่จำเป็นเท่านั้น
GRANT SELECT ON accounts TO readonly_user;

บทสรุป: การป้องกันแบบหลายชั้น (Defense in Depth)

การรักษาความปลอดภัยของระบบ PostgreSQL ที่สมบูรณ์แบบต้องอาศัยการทำงานร่วมกันของหลายองค์ประกอบ ตั้งแต่การเข้ารหัสข้อมูลที่จัดเก็บ (Encryption) การบังคับใช้การเชื่อมต่อที่เข้ารหัส (SSL/TLS) ไปจนถึงการควบคุมสิทธิ์การเข้าถึงที่เข้มงวด (RBAC) การทำความเข้าใจหลักการเหล่านี้ทำให้เราสามารถออกแบบสถาปัตยกรรมที่ทนทานต่อการโจมตีได้อย่างแท้จริง