ฉันสามารถเปิดใช้งานการรับรองความถูกต้องทั้งแบบเพียร์และ md5 สำหรับผู้ใช้โลคอล PostgreSQL เดียวกันใน pg_hba.conf ได้หรือไม่?


14

ฉันต้องการให้ผู้ใช้ PostgreSQL (super) ได้รับการรับรองความถูกต้องด้วยวิธีการรับรองความถูกต้อง "เพียร์" หรือ "md5" โดยควรใช้ซ็อกเก็ตโดเมน Unix แบบโลคัลในทั้งสองกรณี ปัญหาคือลำดับของรายการใน pg_hba.conf มีความสำคัญและการจับคู่ครั้งแรกจะถูกนำไปใช้

สิ่งที่ฉันมี:

# TYPE    DATABASE   USER      ADDRESS   METHOD
  local   all        harold              peer
  local   all        all                 md5

สิ่งที่ฉันต้องการ (ไวยากรณ์ไม่ถูกต้อง):

# TYPE    DATABASE   USER      ADDRESS   METHOD
  local   all        harold              peer-or-md5
  local   all        all                 md5

นี่คือรายละเอียดเพิ่มเติมเกี่ยวกับสภาพแวดล้อมที่เราต้องการใช้ใน:

บนเซิร์ฟเวอร์นี้ฐานข้อมูลทั้งหมดมีขนาดค่อนข้างเล็ก (แต่ละข้อมูล <10MB) และอ่านอย่างเดียว พวกมันจะถูกดร็อปและสร้างขึ้นใหม่ทุกคืนโดย superuser แฮโรลด์ แฮโรลด์ยังเป็นบัญชีระบบดังนั้น "เพียร์" ก็ใช้งานได้ดีสำหรับรหัสผ่านแบบไร้รหัส cronjobs เป็นต้นจากนั้นก็มีเว็บอินเตอร์เฟสที่เข้าถึงฐานข้อมูล: ใช้การพิสูจน์ตัวตน md5 (ผู้ใช้ระบบคือเว็บเซิร์ฟเวอร์, ชื่อผู้ใช้ pg, รหัสผ่านและชื่อ db ผู้เยี่ยมชม) ตอนนี้ฉันต้องการให้ผู้ใช้แฮโรลด์เข้าสู่ระบบผ่านทางเว็บอินเตอร์เฟสเช่นกัน สิ่งนี้ล้มเหลวเนื่องจากการตั้งค่า "เพียร์" สำหรับแฮโรลด์

วิธีแก้ปัญหาปัจจุบันคือการอนุญาตให้เว็บอินเตอร์เฟสเชื่อมต่อผ่าน TCP โดยใช้

# TYPE    DATABASE   USER      ADDRESS        METHOD
  host    all        all       127.0.0.1/32   md5
  host    all        all       ::1/128        md5

นอกเหนือจากรายการโลคัลในตัวอย่างแรก ใช้งานได้ แต่ฉันควรใช้ซ็อกเก็ตท้องถิ่นที่นี่เช่นกันเพื่อการแสดงและเนื่องจากความรู้สึกที่ดูเหมือนว่าจะทำสิ่งที่ถูกต้อง

เป็นไปได้ไหม มีวิธีแก้ปัญหาที่ดีกว่าสำหรับเราหรือไม่?

คำตอบ:


10

ตามคำถาม StackOverflow ที่คล้ายกันคำตอบคือไม่คุณไม่สามารถเปิดใช้งานการตรวจสอบสิทธิ์สองประเภทสำหรับประเภทฐานข้อมูลผู้ใช้และที่อยู่เดียวกัน

คำถาม StackOverflow แนะนำให้ใช้.pgpassไฟล์ในโฮมไดเร็กตอรี่ของผู้ใช้และใช้การพิสูจน์ตัวตน md5, แต่ฉันไม่แน่ใจว่าจำเป็นต้องใช้กับงาน cron หรือไม่


มันจะทำงานถ้า cronjob มาจากผู้ใช้เดียวกันกับที่มี .pgpass ในโฮมไดเร็กตอรี่ของเขา
Andrei Mikhaltsov
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.