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




