การพิสูจน์ตัวตน (Authentication) ใน PostgreSQL
บทนำ
การพิสูจน์ตัวตน (Authentication) เป็นกระบวนการที่ใช้เพื่อยืนยันตัวตนของผู้ใช้หรือโปรแกรมที่ต้องการเข้าถึงฐานข้อมูล PostgreSQL. PostgreSQL รองรับหลายวิธีในการพิสูจน์ตัวตนเพื่อเพิ่มความปลอดภัยในการเข้าถึงระบบฐานข้อมูล. การเลือกใช้วิธีการพิสูจน์ตัวตนที่เหมาะสมจะช่วยให้ฐานข้อมูลของคุณปลอดภัยจากการเข้าถึงโดยไม่ได้รับอนุญาต.
ใน PostgreSQL, วิธีการพิสูจน์ตัวตนที่ใช้ได้แก่ Trust, Password, MD5, GSSAPI, SSPI, Ident, Peer, และ LDAP. วิธีเหล่านี้สามารถกำหนดได้ในไฟล์การตั้งค่าของ PostgreSQL ที่ชื่อว่า pg_hba.conf.
1. ไฟล์ pg_hba.conf
ไฟล์ pg_hba.conf (pg_hba ย่อมาจาก PostgreSQL Host-Based Authentication) ใช้ในการกำหนดวิธีการพิสูจน์ตัวตนที่ PostgreSQL จะใช้ในการเข้าถึงฐานข้อมูลจากคลไคลเอนต์. ไฟล์นี้ตั้งอยู่ในไดเรกทอรีการตั้งค่าของ PostgreSQL และเป็นส่วนสำคัญในการกำหนดความปลอดภัยของระบบ.
1.1 รูปแบบไฟล์ pg_hba.conf
ไฟล์ pg_hba.conf ประกอบด้วยบรรทัดหลายๆ บรรทัด โดยแต่ละบรรทัดจะประกอบด้วยข้อมูลต่างๆ เช่น:
- ประเภทการเชื่อมต่อ (host, local, hostssl)
- ฐานข้อมูล ที่สามารถเข้าถึงได้
- ผู้ใช้ ที่สามารถเข้าถึงฐานข้อมูล
- ที่อยู่ IP ของเครื่องที่สามารถเข้าถึงได้
- วิธีการพิสูจน์ตัวตน (authentication method)
ตัวอย่างไฟล์ pg_hba.conf:
# TYPE DATABASE USER ADDRESS METHOD
host all all 192.168.0.0/24 md5
local all postgres peer
hostssl all all 127.0.0.1/32 trust
2. ประเภทของการพิสูจน์ตัวตนใน PostgreSQL
PostgreSQL รองรับหลายวิธีในการพิสูจน์ตัวตน. วิธีการพิสูจน์ตัวตนที่ใช้ได้ประกอบด้วย:
2.1 Trust Authentication
การพิสูจน์ตัวตนแบบ trust คือการไม่ใช้การตรวจสอบตัวตนเลย. เมื่อใช้วิธีนี้, ผู้ใช้ที่เชื่อมต่อจากเครื่องที่กำหนดสามารถเข้าถึงฐานข้อมูลได้โดยไม่มีการตรวจสอบใดๆ. วิธีนี้ไม่แนะนำให้ใช้ในสภาพแวดล้อมที่มีการเชื่อมต่อจากภายนอก.
host all all 127.0.0.1/32 trust
2.2 Password Authentication
การพิสูจน์ตัวตนแบบ password คือการใช้รหัสผ่านแบบธรรมดาในการยืนยันตัวตน. ระบบจะส่งรหัสผ่านไปยังฐานข้อมูลผ่านการเชื่อมต่อที่ไม่ได้เข้ารหัส.
host all all 127.0.0.1/32 password
2.3 MD5 Authentication
การพิสูจน์ตัวตนแบบ md5 จะใช้การเข้ารหัสรหัสผ่านในรูปแบบ MD5 ก่อนที่จะส่งไปยังฐานข้อมูล. วิธีนี้ปลอดภัยกว่าการใช้ password แบบธรรมดา.
host all all 192.168.0.0/24 md5
2.4 GSSAPI Authentication
การพิสูจน์ตัวตนแบบ GSSAPI ใช้สำหรับการพิสูจน์ตัวตนที่ใช้ระบบการพิสูจน์ตัวตนแบบ Kerberos, ซึ่งเป็นมาตรฐานในการจัดการการพิสูจน์ตัวตนในระบบเครือข่าย.
host all all 192.168.0.0/24 gss
2.5 SSPI Authentication
การพิสูจน์ตัวตนแบบ SSPI ใช้ในระบบปฏิบัติการ Windows โดยใช้ Windows Authentication.
host all all 192.168.0.0/24 sspi
2.6 Ident Authentication
การพิสูจน์ตัวตนแบบ ident ใช้ในการตรวจสอบชื่อผู้ใช้จากระบบปฏิบัติการ. วิธีนี้จะตรวจสอบว่าในระบบปฏิบัติการของเครื่องที่เชื่อมต่อมีผู้ใช้ที่ตรงกับชื่อผู้ใช้ในฐานข้อมูลหรือไม่.
host all all 192.168.0.0/24 ident
2.7 Peer Authentication
การพิสูจน์ตัวตนแบบ peer จะใช้ในการตรวจสอบตัวตนของผู้ใช้ที่เชื่อมต่อจากเครื่องที่ทำงานบนระบบ Unix. ผู้ใช้จะต้องมีชื่อผู้ใช้ตรงกับชื่อในฐานข้อมูล.
local all postgres peer
2.8 LDAP Authentication
การพิสูจน์ตัวตนแบบ ldap ใช้ระบบ LDAP (Lightweight Directory Access Protocol) สำหรับการตรวจสอบตัวตน. วิธีนี้มักใช้ในองค์กรที่ใช้ LDAP สำหรับการจัดการผู้ใช้.
host all all 192.168.0.0/24 ldap
3. การเปลี่ยนแปลงการตั้งค่าการพิสูจน์ตัวตน
หลังจากที่ทำการเปลี่ยนแปลงไฟล์ pg_hba.conf, จำเป็นต้องรีสตาร์ทบริการ PostgreSQL เพื่อให้การตั้งค่าใหม่มีผล.
การรีสตาร์ท PostgreSQL:
sudo systemctl restart postgresql
4. การตรวจสอบการเข้าสู่ระบบ
การเข้าสู่ระบบสามารถตรวจสอบได้จากไฟล์ pg_log ที่ PostgreSQL สร้างขึ้น. โดยสามารถดูข้อความการเข้าสู่ระบบได้จากไฟล์นี้ เพื่อดูรายละเอียดการเชื่อมต่อ, ข้อความการเข้าสู่ระบบที่สำเร็จหรือไม่สำเร็จ, และข้อมูลอื่นๆ ที่เกี่ยวข้อง.
ตัวอย่างการตรวจสอบจากไฟล์ pg_log:
tail -f /var/log/postgresql/postgresql-13-main.log
5. สรุป
การพิสูจน์ตัวตนใน PostgreSQL เป็นกระบวนการสำคัญในการควบคุมการเข้าถึงระบบฐานข้อมูล. PostgreSQL รองรับหลายวิธีในการพิสูจน์ตัวตน รวมทั้ง Trust, Password, MD5, GSSAPI, SSPI, Ident, Peer, และ LDAP. การกำหนดวิธีการพิสูจน์ตัวตนที่เหมาะสมในไฟล์ pg_hba.conf ช่วยให้สามารถรักษาความปลอดภัยของระบบฐานข้อมูลได้.
การเข้าใจวิธีการพิสูจน์ตัวตนและการตั้งค่าต่างๆ จะช่วยให้คุณสามารถตั้งค่าการเข้าถึง PostgreSQL ได้อย่างปลอดภัยและเหมาะสมตามความต้องการขององค์กรหรือโปรเจ็กต์.