ข้อมูลเบื้องต้นเกี่ยวกับ Apigee mTLS

ฟีเจอร์ mTLS ของ Apigee จะเพิ่มความปลอดภัยให้กับการสื่อสารระหว่างคอมโพเนนต์ใน Edge สำหรับคลัสเตอร์ Private Cloud ซึ่งเป็นวิธีมาตรฐานอุตสาหกรรมในการกำหนดค่าและติดตั้งโครงข่ายบริการ ซึ่งรองรับการจัดการแพ็กเกจและการกำหนดค่าอัตโนมัติ

ภาพรวมสถาปัตยกรรม

Apigee mTLS ใช้โครงข่ายบริการที่สร้างการเชื่อมต่อ TLS ที่ปลอดภัยและตรวจสอบสิทธิ์ร่วมกันระหว่างคอมโพเนนต์ต่างๆ เพื่อให้การสื่อสารระหว่างคอมโพเนนต์มีความปลอดภัย

รูปภาพต่อไปนี้แสดงการเชื่อมต่อระหว่างคอมโพเนนต์ Apigee ที่ Apigee mTLS รักษาความปลอดภัย (in red) พอร์ตที่แสดงในรูปภาพเป็นตัวอย่าง โปรดดูรายการช่วงที่แต่ละคอมโพเนนต์ใช้ได้ที่การใช้พอร์ต

(โปรดทราบว่าพอร์ตที่มีตัวอักษร "M" กำกับอยู่จะใช้เพื่อจัดการคอมโพเนนต์ และต้องเปิดไว้ในคอมโพเนนต์เพื่อให้เซิร์ฟเวอร์การจัดการเข้าถึงได้)

ดังที่เห็นในแผนภาพด้านบน Apigee mTLS จะเพิ่มความปลอดภัยให้กับการเชื่อมต่อระหว่างคอมโพเนนต์ส่วนใหญ่ในคลัสเตอร์ ซึ่งรวมถึงรายการต่อไปนี้

แหล่งที่มา ปลายทาง
เซิร์ฟเวอร์การจัดการ โหนดเราเตอร์, MP, QPid, LDAP, Postgres, Zookeeper และ Cassandra
เราเตอร์ Loopback; โหนด Qpid, Zookeeper และ Cassandra
Message Processor Loopback; โหนด Qpid, Zookeeper และ Cassandra
ZooKeeper และ Cassandra โหนด Zookeeper และ Cassandra อื่นๆ
Edge UI SMTP (สำหรับ IDP ภายนอกเท่านั้น)
Postgres โหนด Postgres, Zookeeper และ Cassandra อื่นๆ

การเข้ารหัส/ถอดรหัสข้อความ

โครงข่ายบริการ mTLS ของ Apigee ประกอบด้วยเซิร์ฟเวอร์ Consul ที่ทำงานบนโหนด ZooKeeper แต่ละโหนดในคลัสเตอร์และบริการ Consul ต่อไปนี้ในทุกโหนดในคลัสเตอร์

  • พร็อกซีขาออกที่สกัดกั้นข้อความขาออกในโหนดโฮสต์ บริการนี้จะเข้ารหัสข้อความขาออกก่อนส่งไปยังปลายทาง
  • พร็อกซีขาเข้าที่สกัดกั้นข้อความขาเข้าในโหนดโฮสต์ บริการนี้จะถอดรหัสข้อความขาเข้าก่อนส่งไปยังปลายทางสุดท้าย

ตัวอย่างเช่น เมื่อเซิร์ฟเวอร์การจัดการส่งข้อความไปยังเราเตอร์ บริการพร็อกซีขาออกจะสกัดกั้นข้อความขาออก เข้ารหัส แล้วส่งไปยังเราเตอร์ เมื่อโหนดของเราเตอร์ได้รับข้อความ บริการพร็อกซีขาเข้าจะถอดรหัสข้อความแล้วส่งไปยังคอมโพเนนต์เราเตอร์เพื่อประมวลผล

การดำเนินการทั้งหมดนี้เกิดขึ้นอย่างโปร่งใสสำหรับคอมโพเนนต์ Edge โดยคอมโพเนนต์จะไม่ทราบถึงกระบวนการเข้ารหัสและถอดรหัสที่ดำเนินการโดยบริการพร็อกซี Consul

นอกจากนี้ Apigee mTLS ยังใช้ยูทิลิตี iptables ซึ่งเป็นบริการไฟร์วอลล์ Linux ที่จัดการการเปลี่ยนเส้นทางการรับส่งข้อมูล

ข้อกำหนด

ก่อนที่จะติดตั้ง Apigee mTLS สภาพแวดล้อมของคุณต้องเป็นไปตามข้อกำหนดต่อไปนี้

ส่วนต่อไปนี้จะอธิบายข้อกำหนดแต่ละข้อโดยละเอียด

เวอร์ชัน แพลตฟอร์ม และโทโพโลยี

ตารางต่อไปนี้แสดงข้อกำหนด mTLS

ข้อกำหนด คำอธิบาย
เวอร์ชัน
  • 4.51.00
  • 4.50.00
  • 4.19.06
โทโพโลยี ต้องมีโหนด Zookeeper อย่างน้อย 3 โหนด ด้วยเหตุนี้ คุณจึงติดตั้ง Apigee mTLS ได้เฉพาะในโทโพโลยีที่ใช้โหนด 5, 9, 12 (ศูนย์ข้อมูลหลายแห่ง) หรือ 13 โหนดเท่านั้น ดูข้อมูลเพิ่มเติมได้ที่โทโพโลยีการติดตั้ง
แพลตฟอร์ม/ระบบปฏิบัติการ

ใช้ค่าต่อไปนี้เพื่อพิจารณาว่าระบบปฏิบัติการหนึ่งๆ รองรับ Apigee mTLS หรือไม่

ระบบปฏิบัติการ เวอร์ชัน Private Cloud ที่รองรับ
v4.19.06 v4.50.00 v4.51.00
CentOS
RedHat Enterprise Linux (RHEL)
Oracle Linux
7.5, 7.6, 7.7 7.5, 7.6, 7.7, 7.8, 7.9 7.5, 7.6, 7.7, 7.8, 7.9, 8.0

โปรดทราบว่า mTLS ของ Apigee อาจไม่รองรับระบบปฏิบัติการทั้งหมดที่รองรับโดย Apigee Edge สำหรับ Private Cloud เวอร์ชันที่เกี่ยวข้องซึ่งกำลังทำงานอยู่

เช่น หาก v4.19.06 รองรับ CentOS x และ y ก็ไม่ได้หมายความว่า Apigee mTLS จะรองรับ CentOS x และ y สำหรับ v4.19.06

สาธารณูปโภค/แพ็กเกจ

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

ยูทิลิตี/แพ็กเกจ คำอธิบาย นำออกหลังการติดตั้งได้ไหม
base64 ยืนยันข้อมูลภายในสคริปต์การติดตั้ง
gnu-bash
gnu-sed
gnu-grep
ใช้โดยสคริปต์การติดตั้งและเครื่องมือทั่วไปอื่นๆ
iptables แทนที่ไฟร์วอลล์เริ่มต้น firewalld
iptables-services ให้ฟังก์ชันการทำงานแก่ยูทิลิตี iptables
lsof ใช้โดยสคริปต์การติดตั้ง
nc ยืนยันเส้นทาง iptables เส้นทาง
openssl ลงนามใบรับรองในเครื่องระหว่างกระบวนการเริ่มต้นระบบครั้งแรก

ในระหว่างการติดตั้ง คุณจะต้องติดตั้งแพ็กเกจ Consul ในเครื่องการดูแลระบบด้วยเพื่อให้สร้างข้อมูลเข้าสู่ระบบและคีย์การเข้ารหัสได้

แพ็กเกจ apigee-mtls จะติดตั้งและกำหนดค่าเซิร์ฟเวอร์ Consul รวมถึงพร็อกซีขาเข้าและขาออกในโหนด ZooKeeper ในคลัสเตอร์

สิทธิ์ในบัญชีผู้ใช้

ก่อนติดตั้ง ให้สร้างบัญชีผู้ใช้ใหม่หรือตรวจสอบว่าคุณมีสิทธิ์เข้าถึงบัญชีที่มีสิทธิ์ในระดับสูงขึ้น

บัญชีที่ดำเนินการติดตั้ง Apigee mTLS ในแต่ละโหนดในคลัสเตอร์ต้องทำสิ่งต่อไปนี้ได้

  • เริ่ม หยุด รีสตาร์ท และเริ่มต้นคอมโพเนนต์ Apigee
  • ตั้งกฎไฟร์วอลล์
  • สร้างบัญชีผู้ใช้ระบบปฏิบัติการ/ระบบใหม่
  • เปิดใช้ ปิดใช้ เริ่ม หยุด และมาสก์บริการด้วย systemctl

เครื่องสำหรับการดูแลระบบ (แนะนำ)

Apigee ขอแนะนำให้คุณมีโหนดภายในคลัสเตอร์ซึ่งคุณสามารถทำงานด้านการดูแลระบบต่างๆ ที่อธิบายไว้ในเอกสารนี้ได้ ซึ่งรวมถึงงานต่อไปนี้

  1. ติดตั้ง HashiCorp Consul 1.6.2
  2. สร้างและแจกจ่ายคู่คีย์/ใบรับรองและคีย์การเข้ารหัส Gossip
  3. อัปเดตและเผยแพร่ไฟล์การกำหนดค่า

เมื่อตั้งค่าเครื่องสำหรับการดูแลระบบ ให้ทำดังนี้

  • ตรวจสอบว่าคุณมีสิทธิ์เข้าถึงระดับรูท
  • ดาวน์โหลดและติดตั้งยูทิลิตี apigee-service และ apigee-setup ในนั้นตามที่อธิบายไว้ในติดตั้งยูทิลิตี apigee-setup ของ Edge
  • ตรวจสอบว่าคุณสามารถใช้ scp/ssh เพื่อเข้าถึงโหนดทั้งหมดในคลัสเตอร์จากเครื่องการดูแลระบบได้ ขั้นตอนนี้จำเป็นเพื่อให้คุณสามารถเผยแพร่ไฟล์การกำหนดค่าและข้อมูลเข้าสู่ระบบได้

การใช้งานและการกำหนดพอร์ต

ส่วนนี้จะอธิบายการใช้พอร์ตและการกำหนดพอร์ตเพื่อรองรับการสื่อสารของ Consul กับ mTLS ของ Apigee

การใช้พอร์ต: โหนดทั้งหมดที่ใช้ apigee-mtls

โหนดทั้งหมดในคลัสเตอร์ที่ใช้บริการ apigee-mtls ต้องอนุญาตการเชื่อมต่อจากบริการใน Localhost (127.0.0.1) ซึ่งจะช่วยให้พร็อกซี Consul สื่อสารกับบริการอื่นๆ ได้ขณะประมวลผลข้อความขาเข้าและขาออก

การใช้พอร์ต: โหนดเซิร์ฟเวอร์ Consul (โหนดที่เรียกใช้ ZooKeeper)

คุณต้องเปิดพอร์ตต่อไปนี้ส่วนใหญ่ในโหนดเซิร์ฟเวอร์ Consul (โหนดที่เรียกใช้ ZooKeeper) เพื่อยอมรับคำขอจากโหนดทั้งหมดในคลัสเตอร์

โหนด พอร์ตเซิร์ฟเวอร์ Consul คำอธิบาย โปรโตคอล อนุญาต mtls-agent ภายนอก
*
เซิร์ฟเวอร์ Consul (โหนด ZooKeeper) 8300 เชื่อมต่อเซิร์ฟเวอร์ Consul ทั้งหมดในคลัสเตอร์ RPC
8301 จัดการการเป็นสมาชิกและข้อความประกาศภายในคลัสเตอร์ UDP/TCP
8302 พอร์ต WAN ที่จัดการการเป็นสมาชิกและข้อความประกาศในการกำหนดค่าศูนย์ข้อมูลหลายแห่ง UDP/TCP
8500 จัดการการเชื่อมต่อ HTTP กับ API ของเซิร์ฟเวอร์ Consul จากกระบวนการในโหนดเดียวกัน

พอร์ตนี้ไม่ได้ใช้สำหรับการสื่อสารหรือการประสานงานระยะไกล แต่จะฟังบน localhost เท่านั้น

HTTP
8502 จัดการการเชื่อมต่อ gRPC+HTTPS กับ API ของเซิร์ฟเวอร์ Consul จากโหนดอื่นๆ ในคลัสเตอร์ gRPC+HTTPS
8503 จัดการการเชื่อมต่อ HTTPS กับ Consul Server API จากโหนดอื่นๆ ในคลัสเตอร์ HTTPS
8600 จัดการ DNS ของเซิร์ฟเวอร์ Consul UDP/TCP
* Apigee ขอแนะนำให้คุณจำกัดคำขอขาเข้าเฉพาะสมาชิกคลัสเตอร์เท่านั้น (รวมถึงข้าม Datastore) คุณสามารถทำได้โดยใช้ iptables

ดังที่ตารางนี้แสดง โหนดที่เรียกใช้คอมโพเนนต์ consul-server (โหนด ZooKeeper) ต้องเปิดพอร์ต 8301, 8302, 8502 และ 8503 สำหรับสมาชิกทั้งหมดของคลัสเตอร์ที่เรียกใช้บริการ apigee-mtls แม้จะข้ามศูนย์ข้อมูลก็ตาม โหนดที่ไม่ได้เรียกใช้ ZooKeeper ไม่จำเป็นต้องเปิดพอร์ตเหล่านี้

การกำหนดพอร์ตสำหรับโหนด Consul ทั้งหมด (รวมถึงโหนดที่เรียกใช้ ZooKeeper)

เพื่อรองรับการสื่อสารของ Consul โหนดที่เรียกใช้คอมโพเนนต์ Apigee ต่อไปนี้ต้องอนุญาตการเชื่อมต่อภายนอกกับพอร์ตภายในช่วงต่อไปนี้

คอมโพเนนต์ Apigee ช่วง จำนวนพอร์ตที่ต้องใช้ต่อโหนด
Apigee mTLS 10700 ถึง 10799 1
Cassandra 10100 ถึง 10199 2
Message Processor 10500 ถึง 10599 2
OpenLDAP 10200 ถึง 10299 1
Postgres 10300 ถึง 10399 3
Qpid 10400 ถึง 10499 2
เราเตอร์ 10600 ถึง 10699 2
ZooKeeper 10000 ถึง 10099 3

Consul จะกำหนดพอร์ตในรูปแบบเชิงเส้นที่เรียบง่าย ตัวอย่างเช่น หากคลัสเตอร์มีโหนด Postgres 2 โหนด โหนดแรกจะใช้ 2 พอร์ต ดังนั้น Consul จะกำหนดพอร์ต 10300 และ 10301 ให้กับโหนดดังกล่าว โหนดที่ 2 ก็ใช้ 2 พอร์ตเช่นกัน ดังนั้น Consol จึงกำหนด 10302 และ 10303 ให้กับโหนดนั้น ซึ่งจะมีผลกับคอมโพเนนต์ทุกประเภท

ดังที่เห็น จำนวนพอร์ตจริงจะขึ้นอยู่กับโทโพโลยี หากคลัสเตอร์มีโหนด Postgres 2 โหนด คุณจะต้องเปิดพอร์ต 4 พอร์ต (2 โหนดคูณ 2 พอร์ตต่อโหนด)

ข้อควรทราบ

  • พร็อกซี Consul ไม่สามารถรอการเชื่อมต่อในพอร์ตเดียวกับบริการ Apigee
  • Consul มีพื้นที่ที่อยู่พอร์ตเพียงแห่งเดียว การกำหนดพอร์ตพร็อกซี Consul ต้องไม่ซ้ำกันในคลัสเตอร์ ซึ่งรวมถึงศูนย์ข้อมูล ซึ่งหมายความว่าหากพร็อกซี A ในโฮสต์ A ฟังพอร์ต 15000 พร็อกซี B ในโฮสต์ B จะฟังพอร์ต 15000 ไม่ได้
  • จำนวนพอร์ตที่ใช้จะแตกต่างกันไปตามโทโพโลยีตามที่อธิบายไว้ก่อนหน้านี้

ในการกำหนดค่าศูนย์ข้อมูลหลายแห่ง โฮสต์ทั้งหมดที่ใช้ mTLS ต้องเปิดพอร์ต 8302 ด้วย

คุณปรับแต่งพอร์ตเริ่มต้นที่ Apigee mTLS ใช้ได้ ดูข้อมูลเกี่ยวกับวิธีดำเนินการนี้ได้ที่หัวข้อการปรับแต่งช่วงพอร์ตพร็อกซี

ข้อจำกัด

mTLS ของ Apigee มีข้อจำกัดดังต่อไปนี้

  • ไม่เข้ารหัสการสื่อสาร Cassandra ระหว่างโหนด (พอร์ต 7000)
  • การกำหนดค่าและการตั้งค่าไม่เป็นแบบ Idempotent ซึ่งหมายความว่าหากคุณทำการเปลี่ยนแปลงในโหนดหนึ่ง คุณต้องทำการเปลี่ยนแปลงเดียวกันในโหนดทั้งหมด ระบบจะไม่ใช้การเปลี่ยนแปลงนั้นกับโหนดอื่นๆ ให้คุณ ดูข้อมูลเพิ่มเติมได้ที่หัวข้อเปลี่ยนการกำหนดค่า apigee-mtls ที่มีอยู่

คำศัพท์

ส่วนนี้จะใช้คำศัพท์ต่อไปนี้

คำศัพท์ คำจำกัดความ
cluster กลุ่มเครื่องที่ประกอบกันเป็น Edge สำหรับการติดตั้ง Private Cloud
Consul โครงข่ายบริการที่ Apigee mTLS ใช้ ดูข้อมูลเกี่ยวกับวิธีที่ Consul รักษาความปลอดภัยให้กับการสื่อสารใน Private Cloud ได้ที่โมเดลความปลอดภัยของ Consul
mTLS Mutually Authenticated TLS
โครงข่ายบริการ เครือข่ายโอเวอร์เลย์ (หรือเครือข่ายภายในเครือข่าย)
TLS Transaction Layer Security โปรโตคอลการตรวจสอบสิทธิ์ตามมาตรฐานอุตสาหกรรมสำหรับการสื่อสารที่ปลอดภัย