คู่มือ Encryption in Transit Add-On สำหรับ ฐานข้อมูล
คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี
ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง
คำสั่ง ชื่อเมนู พารามิเตอร์ และค่าตัวอย่างในกรอบ Code คงรูปแบบตามระบบเพื่อให้คัดลอกและตรวจสอบได้ถูกต้อง
โซลูชันฐานข้อมูล MySQL/MariaDB/Percona มาพร้อมกับส่วนเสริมในตัวที่ใช้ “การเข้ารหัสระหว่างทาง” ฟังก์ชั่นนี้รับประกันการปกป้องข้อมูลด้วยการเชื่อมต่อที่เข้ารหัส SSL/TLS ในขณะที่เคลื่อนย้ายระหว่างเซิร์ฟเวอร์หลังจากการติดตั้ง Add-on การดำเนินการที่เกี่ยวข้องทั้งหมดจะได้รับการจัดการโดยอัตโนมัติ - การเข้ารหัสข้อมูลก่อนการส่งข้อมูลการตรวจสอบปลายทางการถอดรหัสเนื้อหาและการตรวจสอบเมื่อมาถึง
การติดตั้งส่วนเสริม
สามารถติดตั้งส่วนเสริมที่ด้านบนของMySQL/MariaDB/เพอร์โคนาและพร็อกซี SQL(สำหรับคลัสเตอร์ฐานข้อมูล) Node เท่านั้น
- ในแดชบอร์ดแพลตฟอร์มให้ไปที่ส่วนเสริมส่วนของเลเยอร์ฐานข้อมูลที่เหมาะสมแล้วคลิกติดตั้งสำหรับการเชื่อมต่อที่เข้ารหัส SSL/TLSสารละลาย.
เคล็ดลับ:ส่วนเสริมยังมีให้จากตลาดและสามารถนำเข้าจากที่เก็บ GitHub ที่เหมาะสม
2. ภายในหน้าต่างการติดตั้งที่เปิดอยู่ให้เลือกเป้าหมายEnvironmentและกลุ่ม Nodeตำแหน่งที่จะติดตั้งส่วนเสริม
บันทึก:ทั้งคู่MySQL/MariaDB/เพอร์โคนาและพร็อกซี SQL(หากเพิ่ม) ควรเลือกเลเยอร์สำหรับโซลูชันแบบคลัสเตอร์
คลิกติดตั้งเพื่อดำเนินการต่อ
- ภายในไม่กี่นาทีฐานข้อมูลของคุณจะได้รับการกำหนดค่าใหม่ให้ทำงานผ่านการเชื่อมต่อที่เข้ารหัส
ข้อมูลจำเพาะของส่วนเสริม
ด้านล่างคุณสามารถเรียนรู้เกี่ยวกับกระบวนการสร้างใบรับรองและข้อมูลเฉพาะ:
- ใบรับรองถูกสร้างขึ้นด้วย/usr/local/sbin/selfcertgenคุณประโยชน์.
- ใบรับรองจะลงนามด้วยตนเองและออกให้สำหรับชื่อโฮสต์ของ Node นั้นๆหมายความว่าแต่ละ Node มีชุดใบรับรองของตัวเองและคุณต้องใช้ใบรับรองที่สอดคล้องกับ Node ที่เข้าถึงเพื่อตรวจสอบความถูกต้อง
- ใบรับรองจะถูกเก็บไว้ภายใน/var/lib/Ruk-Com PaaS/keys/SSL-TLSโฟลเดอร์ (เข้าถึงได้ผ่านทางกุญแจทางลัดในตัวจัดการไฟล์) มีโฟลเดอร์ย่อยสองโฟลเดอร์:
- เซิร์ฟเวอร์– ใบรับรองเซิร์ฟเวอร์ใช้เพื่อจัดเตรียมการเข้ารหัส TLS ของการเชื่อมต่อกับฐานข้อมูล
- ลูกค้า– สามารถใช้ใบรับรองไคลเอนต์ที่ดาวน์โหลดได้เพื่อตรวจสอบการเชื่อมต่อไคลเอนต์กับเซิร์ฟเวอร์ฐานข้อมูล
การกำหนดค่า 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
* การกำหนดค่าให้เส้นทางไปยังไฟล์ 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 ใหม่ได้โดยการคลิกที่ออกใบรับรองใหม่อีกครั้งปุ่ม (เช่นหากคุณคิดว่ามีช่องโหว่หรือถูกลบออกโดยไม่ตั้งใจ)
หากต้องการลบส่วนเสริมออกจากเลเยอร์ (รวมถึงการกำหนดค่าที่กำหนดเองและใบรับรอง SSL ที่สร้างขึ้น) ให้ขยายเมนูที่มุมขวาบนของแผงแล้วคลิกถอนการติดตั้ง.
การเชื่อมต่อที่ปลอดภัยกับ MySQL/MariaDB/Percona
- “การเข้ารหัสระหว่างทาง” (การเข้ารหัสฝั่งเซิร์ฟเวอร์) ฟังก์ชันการทำงานจะทำงานทันทีหลังจากการติดตั้งส่วนเสริมคุณสามารถตรวจสอบได้โดยเชื่อมต่อกับฐานข้อมูลโดยใช้ข้อมูลประจำตัวจากอีเมลสำหรับการเชื่อมต่อระยะไกลคุณสามารถเพิ่มได้จุดสิ้นสุดหรือไอพีสาธารณะ::
ใช้คำสั่งต่อไปนี้เพื่อเชื่อมต่อกับฐานข้อมูล:
สำเนา
mysql --ssl-mode=required -h {host} -P {port} -u {user} -p
บันทึก:หากคุณกำลังทำงานกับไคลเอนต์ MariaDB ให้แทนที่ “--ssl-mode=จำเป็น” ตัวเลือกที่มี “--ssl" หนึ่ง.
ที่นี่:
- {ผู้ใช้}- ชื่อผู้ใช้ฐานข้อมูลสำหรับการเชื่อมต่อ
- {เจ้าภาพ}- จุดเข้าฐานข้อมูล (จุดสิ้นสุดในกรณีของเรา)
- {ท่าเรือ}- พอร์ตสำหรับการเชื่อมต่อ (จากจุดสิ้นสุดในกรณีของเรา)
เมื่อเชื่อมต่อแล้วให้เรียกใช้สถานะคำสั่งและตรวจสอบบรรทัด SSL ในเอาต์พุต
2. ในขณะที่เชื่อมต่อกับเซิร์ฟเวอร์คุณสามารถกำหนดค่าการใช้ใบรับรองไคลเอ็นต์สำหรับการตรวจสอบสิทธิ์เพื่อรับได้การเข้ารหัสฝั่งเซิร์ฟเวอร์และไคลเอ็นต์. ดำเนินการคำสั่งด้านล่างเพื่อให้จำเป็นต้องมีการตรวจสอบสิทธิ์ SSL สำหรับผู้ใช้ที่ระบุตัวอย่างเช่นเราจะให้ “ผู้ใช้-2700607” (แทนที่{ผู้ใช้}ตัวยึดตำแหน่ง) จากอีเมลที่ได้รับหลังจากการสร้าง Environment:
คัดลอก sql
FLUSH PRIVILEGES;ALTER USER '{user}'@'%' REQUIRE X509;ALTER USER '{user}'@'localhost' REQUIRE X509;FLUSH PRIVILEGES;
บันทึก:ไม่ได้ตรวจสอบชื่อสามัญ (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}
เคล็ดลับ:เพื่อหลีกเลี่ยงการระบุใบรับรองเป็นอาร์กิวเมนต์คุณสามารถเพิ่มตัวเลือกดังกล่าวลงในmy.cnfไฟล์บนเซิร์ฟเวอร์ไคลเอนต์:
สำเนา
[client]
ssl-ca = {path/to/root.crt}
ssl-cert = {path/to/client.crt}
ssl-key = {path/to/client.key}



