ศูนย์คู่มือ Ruk-Com PaaS

คู่มือการพัฒนา Deploy และดูแล Application บน Platform

RUK-COM PAAS / DATABASE

เชื่อมต่อ PostgreSQL ผ่าน SSL

คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี

ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง

วัตถุประสงค์

บทความนี้อธิบายการใช้งาน เชื่อมต่อ PostgreSQL ผ่าน SSL บน Ruk-Com Cloud PaaS โดยจัดลำดับขั้นตอนและจุดตรวจสอบสำหรับการนำไปใช้งานจริง

ก่อนเริ่มดำเนินการ

  • เข้าสู่ระบบด้วยบัญชีที่มีสิทธิ์จัดการ Environment ที่เกี่ยวข้อง
  • ตรวจสอบชื่อ Environment, Region และ Resource เป้าหมายก่อนบันทึกการเปลี่ยนแปลง
  • สำรองข้อมูลหรือกำหนดแผนย้อนกลับก่อนแก้ไขระบบ Production

เมื่อพยายามรักษาข้อมูลใน Database PostgreSQL ให้ปลอดภัยสิ่งแรกที่ต้องทำคือเข้ารหัสการเชื่อมต่อทั้งหมดเพื่อปกป้องข้อมูลรับรองการพิสูจน์ตัวตน (ชื่อผู้ใช้ / รหัสผ่าน) คู่มือนี้จัดทำขึ้นเพื่อช่วยในการสร้างการเชื่อมต่อ SSL ที่ปลอดภัยกับ Container PostgreSQL ซึ่ง Host อยู่ที่ Ruk-Com Cloud

ด้านล่างนี้เราจะสำรวจการปรับแต่ง PostgreSQL Serverที่เหมาะสมซึ่งจำเป็นสำหรับการเปิดใช้ SSL และการสร้างใบรับรอง จากนั้นเราจะสร้างและเพิ่มใบรับรองสำหรับเครื่อง link #ลูกค้าและสุดท้ายจะสร้างการเชื่อมต่อที่ปลอดภัยกับ Server ของเราผ่านเครื่องมือ pgAdmin ไปดูกันต่อเลย

การกำหนดค่า PostgreSQL Server

เห็นได้ชัดว่าสำหรับบทนี้เราจะใช้ Environment ที่มี Database PostgreSQL อยู่ภายในซึ่งคุณสามารถ link #สร้างได้อย่างง่ายดายหากคุณยังไม่ได้ทำมาก่อน

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

เคล็ดลับ:ในกรณีที่คุณไม่เคยดำเนินการที่คล้ายกันมาก่อนคุณจำเป็นต้องรู้เรืองเหล่านี้

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

2. ตอนนี้เพื่อให้สามารถทำงานกับ SSL ได้ คุณต้องเพิ่มไฟล์ 3 ไฟล์ต่อไปนี้ใน Directory Server/var/lib/pgsql/data

  • server.key - ไพรเวทคีย์
  • server.crt - ใบรับรอง Server
  • root.crt – ใบรับรองหลักที่เชื่อถือได้

เคล็ดลับ :

  • เราจะไม่อธิบายรายละเอียดเกี่ยวกับ Parameter คำสั่งในตัวอย่างนี้ แต่หากคุณต้องการทราบข้อมูลเพิ่มเติม เพียงแค่ดูหน้า link # Self-Signed Custom SSL ในเอกสารของเราหรือตรวจสอบเว็บไซต์ official link # OpenSSL เพื่อดูลิสการดำเนินการทั้งหมดที่มีอยู่
  • คุณยังสามารถใช้ใบรับรอง link #SSL แบบกำหนดเองได้เช่นเดียวกับที่อธิบายไว้ด้านล่าง (ทำตามส่วนสร้างใบรับรอง Custom SSL ของคำแนะนำที่เชื่อมโยงกันเพื่อรับข้อมูลดังกล่าว) ในกรณีหลังนี้คุณสามารถข้ามขั้นตอนการสร้างและข้ามไปยัง link #ขั้นตอนที่ 6ของคำสั่งนี้ได้โดยตรง

ไปที่โฟลเดอร์ที่กล่าวถึงและดำเนินการตามขั้นตอนด้านล่าง

3. ก่อนอื่นมาสร้างไฟล์แรก - ไพรเวทคีย์:

- ดำเนินการคำสั่งต่อไปนี้:

cd /var/lib/pgsql/data
openssl genrsa -des3 -out server.key 1024
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

ในระหว่างการสร้าง server.key คุณจะถูกขอ pass phrase – ระบุและยืนยันเพื่อเสร็จสิ้นการสร้าง

- ตอนนี้เพื่อที่จะทำงานกับคีย์นี้ต่อไปจำเป็นต้องลบรหัสผ่านที่คุณได้เพิ่มไว้ก่อนหน้านี้ ให้ดำเนินการคำสั่งต่อไปนี้:

openssl rsa -in server.key -out server.key
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

ป้อนรหัส passphase อีกครั้ง เพื่อยืนยันอีกครั้ง

- ตั้งค่า การอนุญาต และสิทธิ์การเป็นเจ้าของที่เหมาะสมสำหรับไฟล์ไพรเวทคีย์ของคุณด้วยคำสั่งถัดไป:

chmod 400 server.key
chown postgres.postgres server.key
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

4. ตอนนี้ต้องสร้างใบรับรอง Server ตามไฟล์ server.key ของคุณเช่น:

openssl req -new -key server.key -days 3650 -out server.crt -x509 -subj '/C=US/ST=Nontaburi/L=Nontaburi/O=RukCom/CN=mysite.com/[email protected]'
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

หมายเหตุ:นี่คือข้อมูลที่ต้องใส่สำหรับ Parameter -วิชาถ้าใบรับรองนี้ ใช้กับ Production:

5. เนื่องจากเรากำลังจะลงนามใบรับรองด้วยตัวเอง ใบรับรอง Server ที่สร้างขึ้นจึงสามารถใช้เป็นใบรับรองหลักที่เชื่อถือได้เช่นกัน ดังนั้นเพียงแค่ทำสำเนาด้วยชื่อที่เหมาะสม:

cp server.crt root.crt
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

ตอนนี้คุณมีไฟล์ใบรับรองทั้ง 3 ไฟล์ คุณสามารถดำเนินการต่อในการกำหนดค่า Database PostgreSQL ซึ่งจำเป็นสำหรับการเปิดใช้งานและใช้งาน SSL

6. เปิดไฟล์pg_hba.confซึ่งอยู่ในโฟลเดอร์เดียวกันเพื่อแก้ไขด้วย terminal editor ที่ต้องการ (ตัวอย่างเช่น vim) หรือโดยตรงผ่าน Dashboard

แทนที่เนื้อหาเริ่มต้นด้วยบรรทัดต่อไปนี้:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
# "local" is for Unix domain socket connections only
local   all         all                               trust
# IPv4 local connections:
host    all         all         127.0.0.1/32          trust
# IPv4 remote connections for authenticated users
hostssl all         webadmin    0.0.0.0/0             md5 clientcert=1
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

เคล็ดลับ: ในกรณีที่คุณกำลังจะทำงานกับ Database ที่ไม่ใช่ผู้ใช้ webadmin เริ่มต้นให้เปลี่ยนค่าที่เหมาะสมภายในบรรทัดสุดท้ายของไฟล์เป็นชื่อที่ต้องการ โปรดทราบว่าในกรณีนี้คุณจะต้องใช้ชื่อผู้ใช้เดียวกันสำหรับคำสั่งเพิ่มเติมทั้งหมด (เราจะระบุตำแหน่งที่จำเป็นไว้)

7. เพื่อเสร็จสิ้นการกำหนดค่าคุณต้องใช้การเปลี่ยนแปลงเพิ่มเติมกับไฟล์postgresql.confไปที่ส่วน ecurity และ Authentication (ประมาณบรรทัดที่ 80) และเปิดใช้งานการใช้งาน SSL โดยการนำคอมเมนต์ออกและเปลี่ยนค่าเป็น “on” นอกจากนี้ให้เพิ่ม Parameterssl_ca_fileใหม่ด้านล่าง:

ssl = on
ssl_ca_file = 'root.crt'
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

อย่าลืมบันทึกการแก้ไข

8. สุดท้าย Restart Container PostgreSQL ของคุณเพื่อใช้การตั้งค่าใหม่:

sudo service postgresql restart
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

ใบรับรองลูกค้า

ตอนนี้เรามาสร้างไฟล์ใบรับรอง SSL สำหรับ client instance เพิ่มอีกหนึ่งชุดเพื่อรองรับการเชื่อมต่อที่ปลอดภัยทั้งสองด้าน

1. กลับไปที่หน้าต่างเทอร์มินัลพร้อมการเชื่อมต่อ SSH ไปยัง Server PostgreSQL เมื่อเข้าไปข้างในแล้วให้สร้างไพรเวทคีย์สำหรับ Client ตัวอย่างเช่นใน Directory /tmp:

openssl genrsa -des3 -out /tmp/postgresql.key 1024
openssl rsa -in /tmp/postgresql.key -out /tmp/postgresql.key
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

2. จากนั้นสร้างใบรับรอง SSL สำหรับผู้ใช้ Database PostgreSQL (โดยค่าเริ่มต้นเป็น webadmin) และลงนามด้วยไฟล์root.crtที่เชื่อถือได้ของเราบน Server

openssl genrsa -des3 -out /tmp/postgresql.key 1024
openssl rsa -in /tmp/postgresql.key -out /tmp/postgresql.key

หมายเหตุ :

  • ในขณะที่ข้อมูลทั่วไปสำหรับ Parameter subj สามารถเปลี่ยนเป็นข้อมูลส่วนบุคคลของคุณได้ที่นี่ Common Name (/ CN =) ต้องเท่ากับชื่อผู้ใช้ Database ที่คุณตั้งไว้ในระหว่างการสร้างใบรับรองครั้งแรกในไฟล์การกำหนดค่า Server (ในกรณีของเราคือ webadmin)
  • ไฟล์ root.crt และ server.key ควรอยู่ในโฟลเดอร์เดียวกันคำสั่งที่ 2 ที่ถูกเรียกใช้ มิฉะนั้นควรระบุพาธแบบเต็ม
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

3. หลังจากสร้างไฟล์ - postgresql.key, postgresql.crt, root.crt เสร็จแล้ว ต้องย้ายไฟล์เหล่านี้ไปยังโฟลเดอร์.postgresql ที่เครื่อง Client ของคุณ (คุณสามารถใช้โปรแกรมเสริม FTP หรือเพียงแค่คัดลอกและวางไฟล์เนื้อหาลงไป)

เคล็ดลับ: หากยังไม่มี Directory ดังกล่าวให้สร้างด้วย mkdir ~/.postgresql หรือคำสั่งที่คล้ายกันตามระบบปฏิบัติการของคุณ

นอกจากนี้หากจำเป็นคุณสามารถตั้งค่าสิทธิ์ในการอ่านคีย์สำหรับเจ้าของเท่านั้นด้วยคำสั่ง chmod 0400 ~/.postgresql/postgresql.key เพื่อให้เกิดความปลอดภัยมากขึ้น

เคล็ดลับ: อย่าลืมลบคีย์ออกจาก Directory tmp บน ServerDatabase ของคุณในภายหลัง

สร้างการเชื่อมต่อผ่าน PgAdmin

ในที่สุดหลังจากการกำหนดค่า Server และ Client เสร็จสิ้นคุ ณก็พร้อมที่จะสร้างการเชื่อมต่อ ในกรณีของเราจะใช้เครื่องมือ pgAdmin 4 เป็นตัวอย่างดังนั้นจึงควรติดตั้ง Application นี้ (หรือ Application อื่น ๆ ที่ต้องการ) ไว้ล่วงหน้า

1. ในการเชื่อมต่อกับ ServerDatabase ผ่าน SSL คุณต้องเชื่อมต่อ link # public IP หรือ link # endpoint สำหรับ ContainerDatabase PostgreSQL

เราจะพิจารณากรณีส่วนหลัง – เข้าถึงการตั้งค่า Environment เปลี่ยนไปที่ส่วน Endpoints และ Add จุด endpoint ใหม่ด้วยปุ่มชื่อเดียวกันที่หน้าต่างด้านบน

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

2. ตอนนี้เมื่อคุณมีจุดเชื่อมต่อแล้วให้เรียกใช้ Client pgAdmin 4 และเลือก Create Server

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

3. เลือกที่ tab Connection ป้อนข้อมูล hostname และ port

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

4. เลือกที่แถบ SSL และ ที่ SSL Mode ให้เลือกเป็น Require เสร็จแล้วใหักด Save

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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

หากคุณประสบปัญหาใด ๆ ขณะกำหนดค่าการเชื่อมต่อ SSL โปรดอย่าลังเลที่จะขอความช่วยเหลือจากผู้เชี่ยวชาญด้านเทคนิคของเราที่ Stackoverflow