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

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

RUK-COM PAAS / DATABASES

คู่มือ Encryption in Transit Add-On สำหรับ ฐานข้อมูล

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

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

คู่มือภาษาไทย

คำสั่ง ชื่อเมนู พารามิเตอร์ และค่าตัวอย่างในกรอบ Code คงรูปแบบตามระบบเพื่อให้คัดลอกและตรวจสอบได้ถูกต้อง

โซลูชันฐานข้อมูล MySQL/MariaDB/Percona มาพร้อมกับส่วนเสริมในตัวที่ใช้ “การเข้ารหัสระหว่างทาง” ฟังก์ชั่นนี้รับประกันการปกป้องข้อมูลด้วยการเชื่อมต่อที่เข้ารหัส SSL/TLS ในขณะที่เคลื่อนย้ายระหว่างเซิร์ฟเวอร์หลังจากการติดตั้ง Add-on การดำเนินการที่เกี่ยวข้องทั้งหมดจะได้รับการจัดการโดยอัตโนมัติ - การเข้ารหัสข้อมูลก่อนการส่งข้อมูลการตรวจสอบปลายทางการถอดรหัสเนื้อหาและการตรวจสอบเมื่อมาถึง

การติดตั้งส่วนเสริม

สามารถติดตั้งส่วนเสริมที่ด้านบนของMySQL/MariaDB/เพอร์โคนาและพร็อกซี SQL(สำหรับคลัสเตอร์ฐานข้อมูล) Node เท่านั้น

  1. ในแดชบอร์ดแพลตฟอร์มให้ไปที่ส่วนเสริมส่วนของเลเยอร์ฐานข้อมูลที่เหมาะสมแล้วคลิกติดตั้งสำหรับการเชื่อมต่อที่เข้ารหัส SSL/TLSสารละลาย.

เคล็ดลับ:ส่วนเสริมยังมีให้จากตลาดและสามารถนำเข้าจากที่เก็บ GitHub ที่เหมาะสม

Image 41: MySQL SSL add-on2. ภายในหน้าต่างการติดตั้งที่เปิดอยู่ให้เลือกเป้าหมายEnvironmentและกลุ่ม Nodeตำแหน่งที่จะติดตั้งส่วนเสริม

Image 42: install MySQL SSL add-on

บันทึก:ทั้งคู่MySQL/MariaDB/เพอร์โคนาและพร็อกซี SQL(หากเพิ่ม) ควรเลือกเลเยอร์สำหรับโซลูชันแบบคลัสเตอร์

คลิกติดตั้งเพื่อดำเนินการต่อ

  1. ภายในไม่กี่นาทีฐานข้อมูลของคุณจะได้รับการกำหนดค่าใหม่ให้ทำงานผ่านการเชื่อมต่อที่เข้ารหัส

Image 43: SSL add-on installed

ข้อมูลจำเพาะของส่วนเสริม

ด้านล่างคุณสามารถเรียนรู้เกี่ยวกับกระบวนการสร้างใบรับรองและข้อมูลเฉพาะ:

  • ใบรับรองถูกสร้างขึ้นด้วย/usr/local/sbin/selfcertgenคุณประโยชน์.
  • ใบรับรองจะลงนามด้วยตนเองและออกให้สำหรับชื่อโฮสต์ของ Node นั้นๆหมายความว่าแต่ละ Node มีชุดใบรับรองของตัวเองและคุณต้องใช้ใบรับรองที่สอดคล้องกับ Node ที่เข้าถึงเพื่อตรวจสอบความถูกต้อง
  • ใบรับรองจะถูกเก็บไว้ภายใน/var/lib/Ruk-Com PaaS/keys/SSL-TLSโฟลเดอร์ (เข้าถึงได้ผ่านทางกุญแจทางลัดในตัวจัดการไฟล์) มีโฟลเดอร์ย่อยสองโฟลเดอร์:
    • เซิร์ฟเวอร์– ใบรับรองเซิร์ฟเวอร์ใช้เพื่อจัดเตรียมการเข้ารหัส TLS ของการเชื่อมต่อกับฐานข้อมูล
    • ลูกค้า– สามารถใช้ใบรับรองไคลเอนต์ที่ดาวน์โหลดได้เพื่อตรวจสอบการเชื่อมต่อไคลเอนต์กับเซิร์ฟเวอร์ฐานข้อมูล

Image 45: SSL add-on certificates การกำหนดค่า MySQL/MariaDB/Percona:

  • การกำหนดค่าส่วนเสริมทั้งหมดมีให้ผ่านทางแยกต่างหาก/etc/mysql/conf.d/ssl-config.cnfไฟล์การกำหนดค่า:

สำเนา

[mysqld]
ssl_cert=/var/lib/jelastic/keys/SSL-TLS/server/server.crt
ssl_key=/var/lib/jelastic/keys/SSL-TLS/server/server.key
ssl-cipher=ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA
#require_secure_transport=ON

Image 46: SSL configuration file* การกำหนดค่าให้เส้นทางไปยังไฟล์ SSL ของเซิร์ฟเวอร์และแสดงรายการรหัสที่รองรับนอกจากนี้ยังมีตัวเลือก (แสดงความเห็นโดยค่าเริ่มต้น) เพื่อให้เซิร์ฟเวอร์ต้องการใช้การเชื่อมต่อที่ปลอดภัยหากไม่มีข้อคิดเห็นจะเป็นไปไม่ได้ที่ไคลเอนต์จะเชื่อมต่อเซิร์ฟเวอร์นี้โดยใช้การเชื่อมต่อธรรมดาที่ไม่ได้เข้ารหัส

การกำหนดค่า ProxySQL:

  • SSL บน Node ProxySQL ถูกเปิดใช้งานโดยการตั้งค่าตัวแปรต่อไปนี้บนเซิร์ฟเวอร์ทั้งหมด:

    • mysql-have_ssl(จริง) - เปิดใช้งาน SSL สำหรับการเชื่อมต่อส่วนหน้า
    • use_ssl(1) - ตั้งค่าคอลัมน์ที่เกี่ยวข้องในmysql_serversซึ่งจะบอก ProxySQL ว่า Node แบ็กเอนด์ของเราใช้ SSL
  • การเปลี่ยนแปลงเสร็จสิ้นด้วยแบบสอบถาม SQL ต่อไปนี้:

คัดลอก sql

UPDATE global_variables SET variable_value='true' WHERE variable_name='mysql-have_ssl';
LOAD MYSQL VARIABLES TO RUNTIME; SAVE MYSQL VARIABLES TO DISK;
UPDATE mysql_servers SET use_ssl=1 WHERE port=3306;
LOAD MYSQL VARIABLES TO RUNTIME; LOAD MYSQL SERVERS TO RUNTIME; SAVE MYSQL SERVERS TO DISK;

การกำหนดค่าส่วนเสริม

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

Image 48: configure MySQL SSL add-onหากต้องการลบส่วนเสริมออกจากเลเยอร์ (รวมถึงการกำหนดค่าที่กำหนดเองและใบรับรอง SSL ที่สร้างขึ้น) ให้ขยายเมนูที่มุมขวาบนของแผงแล้วคลิกถอนการติดตั้ง.

การเชื่อมต่อที่ปลอดภัยกับ MySQL/MariaDB/Percona

  1. การเข้ารหัสระหว่างทาง” (การเข้ารหัสฝั่งเซิร์ฟเวอร์) ฟังก์ชันการทำงานจะทำงานทันทีหลังจากการติดตั้งส่วนเสริมคุณสามารถตรวจสอบได้โดยเชื่อมต่อกับฐานข้อมูลโดยใช้ข้อมูลประจำตัวจากอีเมลสำหรับการเชื่อมต่อระยะไกลคุณสามารถเพิ่มได้จุดสิ้นสุดหรือไอพีสาธารณะ::

Image 50: database endpointใช้คำสั่งต่อไปนี้เพื่อเชื่อมต่อกับฐานข้อมูล:

สำเนา

mysql --ssl-mode=required -h {host} -P {port} -u {user} -p

บันทึก:หากคุณกำลังทำงานกับไคลเอนต์ MariaDB ให้แทนที่ “--ssl-mode=จำเป็น” ตัวเลือกที่มี “--ssl" หนึ่ง.

ที่นี่:

  • {ผู้ใช้}- ชื่อผู้ใช้ฐานข้อมูลสำหรับการเชื่อมต่อ
  • {เจ้าภาพ}- จุดเข้าฐานข้อมูล (จุดสิ้นสุดในกรณีของเรา)
  • {ท่าเรือ}- พอร์ตสำหรับการเชื่อมต่อ (จากจุดสิ้นสุดในกรณีของเรา)

เมื่อเชื่อมต่อแล้วให้เรียกใช้สถานะคำสั่งและตรวจสอบบรรทัด SSL ในเอาต์พุต

Image 51: MySQL remote connection with SSL2. ในขณะที่เชื่อมต่อกับเซิร์ฟเวอร์คุณสามารถกำหนดค่าการใช้ใบรับรองไคลเอ็นต์สำหรับการตรวจสอบสิทธิ์เพื่อรับได้การเข้ารหัสฝั่งเซิร์ฟเวอร์และไคลเอ็นต์. ดำเนินการคำสั่งด้านล่างเพื่อให้จำเป็นต้องมีการตรวจสอบสิทธิ์ SSL สำหรับผู้ใช้ที่ระบุตัวอย่างเช่นเราจะให้ “ผู้ใช้-2700607” (แทนที่{ผู้ใช้}ตัวยึดตำแหน่ง) จากอีเมลที่ได้รับหลังจากการสร้าง Environment:

คัดลอก sql

FLUSH PRIVILEGES;ALTER USER '{user}'@'%' REQUIRE X509;ALTER USER '{user}'@'localhost' REQUIRE X509;FLUSH PRIVILEGES;

Image 52: alter user command

บันทึก:ไม่ได้ตรวจสอบชื่อสามัญ (CN) ใบรับรองใดๆที่ลงนามกับผู้ออกใบรับรอง (CA) จะได้รับการพิจารณาตามความเหมาะสมหากคุณต้องการตรวจสอบ CN ของใบรับรองไคลเอ็นต์ (เช่นมีการออกใบรับรองสำหรับผู้ใช้ที่ระบุหรือไม่) ให้ดำเนินการคำสั่งด้านล่าง:

คัดลอก sql

FLUSH PRIVILEGES;ALTER USER '{user}'@'%' REQUIRE SUBJECT 'CN={user}';ALTER USER '{user}'@'localhost' REQUIRE SUBJECT 'CN={user}';FLUSH PRIVILEGES;

นอกจากนี้หากคุณต้องการใช้เพียงใบรับรองในการเข้าสู่ระบบคุณสามารถลบข้อกำหนดรหัสผ่านได้ด้วยเปลี่ยนผู้ใช้สั่งได้เช่นกัน

ตอนนี้ให้เซิร์ฟเวอร์ไคลเอนต์ (คอมพิวเตอร์/คอนเทนเนอร์/VM) พร้อมไฟล์ใบรับรอง SSL ที่เหมาะสมซึ่งสามารถดาวน์โหลดได้จาก/var/lib/Ruk-Com PaaS/keys/SSL-TLS/clientไดเร็กทอรีของ Node เป้าหมายที่ต้องการเมื่อเสร็จแล้วคุณสามารถเชื่อมต่อด้วยคำสั่งต่อไปนี้:

สำเนา

mysql –h {host} -P {port} -u {user} -p --ssl-mode=required --ssl-ca={path/to/root.crt} --ssl-cert={path/to/client.crt} --ssl-key={path/to/client.key}

Image 53: SSL connection with client certificates

เคล็ดลับ:เพื่อหลีกเลี่ยงการระบุใบรับรองเป็นอาร์กิวเมนต์คุณสามารถเพิ่มตัวเลือกดังกล่าวลงในmy.cnfไฟล์บนเซิร์ฟเวอร์ไคลเอนต์:

สำเนา

[client]
ssl-ca = {path/to/root.crt}
ssl-cert = {path/to/client.crt}
ssl-key = {path/to/client.key}