Skip to main content

การพิสูจน์ตัวตน (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 ได้อย่างปลอดภัยและเหมาะสมตามความต้องการขององค์กรหรือโปรเจ็กต์.