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

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

RUK-COM PAAS / DATABASES

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

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

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

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

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

ฐานข้อมูล Redis ที่ได้รับการรับรองจาก Ruk-Com นั้นมาพร้อมกับส่วนเสริมในตัวที่ใช้ “การเข้ารหัสระหว่างทาง” ฟังก์ชั่นนี้รับประกันการปกป้องข้อมูลด้วยการเชื่อมต่อที่เข้ารหัส SSL/TLS ในขณะที่เคลื่อนย้ายระหว่างเซิร์ฟเวอร์หลังจากการติดตั้ง Add-on การสนับสนุนสำหรับการเชื่อมต่อที่ปลอดภัยจะได้รับการกำหนดค่าบนพอร์ตแยกต่างหาก6380ในขณะที่ยังคงรักษาพอร์ตเริ่มต้นไว้6379เพื่อยอมรับการเชื่อมต่อที่ไม่ได้เข้ารหัสสำหรับความเข้ากันได้แบบย้อนหลัง (หากจำเป็นสามารถปิดใช้งานได้ผ่านการตั้งค่า)

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

ส่วนเสริมสามารถติดตั้งได้ที่ด้านบนของ Node Redis เท่านั้น

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

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

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

Image 42: install Redis SSLคลิกติดตั้งเพื่อดำเนินการต่อ

  1. ภายในหนึ่งนาที Environment ของคุณจะได้รับการกำหนดค่า

Image 43: SSL add-on installed

บันทึก:ท่าเรือ6380ใช้สำหรับการเชื่อมต่อที่ปลอดภัยตามค่าเริ่มต้นและจะถูกเพิ่มลงในโดยอัตโนมัติกฎไฟร์วอลล์ระหว่างการติดตั้งส่วนเสริม

Image 44: Redis SSL firewall

คุณสามารถค้นหาใบรับรอง SSL ที่สร้างขึ้นภายใต้/var/lib/Ruk-Com PaaS/keys/SSL-TLSโฟลเดอร์

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

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

  • ส่วนเสริมก่อนการติดตั้งเรดลี– ทางเลือก Go-based ที่มีมนุษยธรรมสำหรับทางการredis-cliคุณประโยชน์.
  • ใบรับรองถูกสร้างขึ้นด้วย/usr/local/sbin/selfcertgenคุณประโยชน์.
  • ใบรับรองจะลงนามด้วยตนเองและออกให้สำหรับชื่อโฮสต์ของ Node นั้นๆหมายความว่าแต่ละ Node มีชุดใบรับรองของตัวเองและคุณต้องใช้ใบรับรองที่สอดคล้องกับ Node ที่เข้าถึงเพื่อตรวจสอบความถูกต้อง
  • เนื่องจากข้อกำหนดเฉพาะของ Redis ชื่อโฮสต์สำรองจะถูกเพิ่มเมื่อสร้างใบรับรองเซิร์ฟเวอร์:

สำเนา

echo "subjectAltName = @alt_names

[alt_names]
IP.1 = ${ALTNAME}" > /tmp/altname.ext
RANDFILE=/tmp/.random openssl x509 -req -in ${CERT_DIR}/server-req.pem -days 3650 -CA ${ROOT_CERT} -CAkey ${ROOT_KEY} -set_serial 01 -extfile /tmp/altname.ext > ${CERT_DIR}/server.crt
  • ใบรับรองจะถูกเก็บไว้ภายใน/var/lib/Ruk-Com PaaS/keys/SSL-TLSโฟลเดอร์ (เข้าถึงได้ผ่านทางกุญแจทางลัดในตัวจัดการไฟล์) มีโฟลเดอร์ย่อยสองโฟลเดอร์:
    • เซิร์ฟเวอร์– ใบรับรองเซิร์ฟเวอร์ใช้เพื่อจัดเตรียมการเข้ารหัส TLS ของการเชื่อมต่อกับฐานข้อมูล Redis
    • ลูกค้า– สามารถใช้ใบรับรองไคลเอนต์ที่ดาวน์โหลดได้เพื่อตรวจสอบการเชื่อมต่อไคลเอนต์กับเซิร์ฟเวอร์ฐานข้อมูล

Image 46: Redis SSL certificates การกำหนดค่า Redis:

การกำหนดค่าส่วนเสริมทั้งหมดมีให้ผ่านทางแยกต่างหาก/etc/redis.confไฟล์การกำหนดค่า (เพิ่มลงในไฟล์รายการโปรดรายการในตัวจัดการไฟล์)

Image 47: Redis configuration fileด้านล่างนี้คุณสามารถตรวจสอบรายการการตั้งค่าที่เกี่ยวข้องกับ SSL ที่พบบ่อยที่สุดได้:

  • tls-พอร์ต- ระบุพอร์ตที่ใช้สำหรับการเชื่อมต่อ SSL (6380).
  • ท่าเรือ– ตั้งค่าพอร์ตที่สามารถรับการเชื่อมต่อที่ไม่ได้เข้ารหัส (6379).

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

  • ไฟล์ tls-cert,ไฟล์ tls-key,tls-ca-cert-ไฟล์– คำสั่งระบุเส้นทางไปยังใบรับรอง SSL ฝั่งเซิร์ฟเวอร์
  • tls-auth-ลูกค้า– กำหนดค่าหากไคลเอ็นต์ (รวมถึงเซิร์ฟเวอร์จำลอง) บนพอร์ต TLS จำเป็นต้องตรวจสอบสิทธิ์โดยใช้ใบรับรองฝั่งไคลเอ็นต์ที่ถูกต้องตั้งค่าเป็น “ไม่จำเป็น” โดยค่าเริ่มต้น - หากระบุไว้ใบรับรองไคลเอ็นต์จะได้รับการยอมรับและจะต้องถูกต้อง (แต่ไม่จำเป็น)
  • การจำลองแบบ tlsและtls-คลัสเตอร์- สามารถเปิดใช้งานได้หากจำเป็นเพื่อรองรับการเชื่อมต่อโครงข่าย TLS ในคลัสเตอร์ Redis

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

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

Image 49: manage Redis SSL add-onที่นี่คุณสามารถคลิกออกใบรับรองใหม่อีกครั้งปุ่มเพื่อสร้างใบรับรอง SSL สำหรับการเชื่อมต่อที่ปลอดภัยอีกครั้ง

หากไม่ต้องการอีกต่อไปให้ลบส่วนเสริมออกจากเลเยอร์โดยเลือกถอนการติดตั้งตัวเลือกในเมนูเสริมที่มุมขวาบน

การเชื่อมต่อที่ปลอดภัยกับ Redis

สำหรับการเชื่อมต่อที่ปลอดภัย (เราจะใช้redis-cliยูทิลิตีเป็นตัวอย่าง) ให้ระบุคำสั่งด้วยตัวเลือกต่อไปนี้:

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

สำเนา

export REDISCLI_AUTH={password}

สำเนา

redis-cli -p 6380 --tls --cacert /var/lib/jelastic/keys/SSL-TLS/client/root.crt {command}

Image 51: Redis secure connectคุณสามารถดำเนินการตามต้องการได้{สั่งการ}หรือละไว้เพื่อเชื่อมต่อกับฐานข้อมูลในโหมดโต้ตอบ

หากเซิร์ฟเวอร์ต้องการการรับรองความถูกต้องโดยใช้ใบรับรองฝั่งไคลเอ็นต์คุณสามารถระบุใบรับรองและคีย์ส่วนตัวที่เกี่ยวข้องได้โดยใช้--ใบรับรองและ--สำคัญพารามิเตอร์

สำเนา

redis-cli -p 6380 --tls --cert /var/lib/jelastic/keys/SSL-TLS/client/client.crt --key /var/lib/jelastic/keys/SSL-TLS/client/client.key --cacert /var/lib/jelastic/keys/SSL-TLS/client/root.crt {command}

Image 52: Redis secure connect certificatesสำหรับการเชื่อมต่อภายนอกไคลเอ็นต์จำเป็นต้องอัปโหลดไฟล์ใบรับรอง (ลูกค้า.crt,ลูกค้า.คีย์,root.crt) ไปยังคอมพิวเตอร์/คอนเทนเนอร์/VM และใช้ไฟล์-ชมตัวเลือกเพื่อระบุชื่อโฮสต์ระยะไกลหรือที่อยู่ IP

ตัวอย่างการกำหนดค่า SSL

  • บังคับให้เชื่อมต่อ SSL (สำหรับ Node แบบสแตนด์อโลน)

บังคับใช้การเชื่อมต่อที่เข้ารหัส TLS และปิดใช้งานการเชื่อมต่อที่ไม่ปลอดภัยสำหรับไคลเอนต์โดยสมบูรณ์

  1. ไปที่/etc/redis.confไฟล์การกำหนดค่าและเปลี่ยน "ท่าเรือ” คำสั่งถึง0. มันจะปิดการใช้งานการเชื่อมต่อที่ไม่ได้เข้ารหัส

  2. ต่อไปให้เปลี่ยน “tls-พอร์ต” ไปยังพอร์ต Redis เริ่มต้น6379ในไฟล์เดียวกัน

  3. หากคุณต้องการบังคับใช้ใบรับรองไคลเอ็นต์ (สำหรับการตรวจสอบสิทธิ์และ TLS ร่วมกัน) ให้ตั้งค่า "tls-auth-ลูกค้า” คำสั่งถึง “ใช่".

  4. ไปที่การตั้งค่าไฟร์วอลล์และลบกฎสำหรับพอร์ต6380เพราะมันไม่จำเป็นอีกต่อไป

  5. สุดท้ายให้รีสตาร์ทคอนเทนเนอร์ Redis เพื่อใช้การเปลี่ยนแปลง

ขณะนี้บริการ Redis พร้อมใช้งานผ่านการเชื่อมต่อ SSL บนพอร์ตเท่านั้น6379.

  • การเชื่อมต่อระหว่างคลัสเตอร์ / Sentinel ผ่าน SSL

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

บันทึก:การปรับมาตราส่วนแบบอัตโนมัติและแบบแมนนวลอาจทำงานไม่ถูกต้องหลังจากการเปลี่ยนแปลงเนื่องจากได้รับการออกแบบสำหรับการเชื่อมต่อแบบธรรมดาที่ไม่ใช่ SSL

  1. หากคุณกำลังใช้โซลูชันแบบคลัสเตอร์ตรวจสอบให้แน่ใจว่า “tls-คลัสเตอร์” คำสั่งใน/etc/redis.confไฟล์ถูกตั้งค่าเป็น “ใช่” (ไม่ใส่เครื่องหมายข้อคิดเห็นตัวเลือก)

  2. หากคุณกำลังใช้การจำลองแบบ Sentinel ให้ยกเลิกหมายเหตุ "การจำลองแบบ tls” เช่นกัน (ควรเป็น “ใช่" ค่า).

  3. tls-auth-ลูกค้า” คำสั่งควรเก็บไว้เป็น “ไม่จำเป็น” (ค่าเริ่มต้น)

  4. การกำหนดค่าคลัสเตอร์เริ่มต้นใช้พอร์ต6379สำหรับการเชื่อมต่อโครงข่ายคลัสเตอร์ดังนั้นคุณควรเปลี่ยน "tls-พอร์ต” คำสั่งถึง6379หรือเปลี่ยนพอร์ตคลัสเตอร์/การจำลองเป็น6380.

  5. รีสตาร์ทคลัสเตอร์ Redis เพื่อใช้การเปลี่ยนแปลง

  • การเชื่อมต่อโครงข่าย SSL ของคลัสเตอร์หลายภูมิภาค

เมื่อทำงานกับคลัสเตอร์ Redis หลายภูมิภาคต้องใช้ใบรับรองหลักเดียวกันบนทุก Node ของ Environment ทั้งหมดเพื่อการเชื่อมต่อระหว่าง Node ผ่าน TLS ได้สำเร็จ

  1. ติดตั้งโปรแกรมเสริม SSL บน Environment แรกของคลัสเตอร์หลายภูมิภาค

  2. สำเนา/var/lib/Ruk-Com PaaS/keys/SSL-TLS/server/root.crtและ/var/lib/Ruk-Com PaaS/keys/SSL-TLS/server/root.crtไปที่/var/lib/Ruk-Com PaaS/keys/SSL-TLS/ไดเร็กทอรีบน Node ทั้งหมดของ Environment ที่สองและสาม

  3. ตอนนี้ให้ติดตั้งส่วนเสริม SSL ใน Environment เหล่านี้ตามปกติ - ใบรับรองหลักใหม่จะไม่ถูกสร้างขึ้นด้วยวิธีนี้