ฟีเจอร์ mTLS ของ Apigee จะเพิ่มความปลอดภัยให้กับการสื่อสารระหว่างคอมโพเนนต์ใน Edge สำหรับคลัสเตอร์ Private Cloud โดยจะช่วยให้คุณกำหนดค่าและติดตั้ง Service Mesh ได้ตามมาตรฐานอุตสาหกรรม รองรับการจัดการแพ็กเกจและการกำหนดค่าอัตโนมัติ
ภาพรวมสถาปัตยกรรม
Apigee mTLS ใช้ Service Mesh ที่สร้างการเชื่อมต่อ 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 อื่นๆ | |
UI ของ Edge | SMTP (สำหรับ IdP ภายนอกเท่านั้น) | |
Postgres | โหนดอื่นๆ ของ Postgres, Zookeeper และ Cassandra |
การเข้ารหัส/การถอดรหัสข้อความ
Apigee mTLS Service Mesh ประกอบด้วยเซิร์ฟเวอร์ Consul ที่ทำงานในแต่ละโหนด ZooKeeper ในคลัสเตอร์ และบริการ Consul ต่อไปนี้ในทุกโหนดในคลัสเตอร์
- พร็อกซีขาออกที่สกัดกั้นข้อความขาออกในโหนดโฮสต์ บริการนี้ จะเข้ารหัสข้อความขาออกก่อนส่งไปยังปลายทาง
- พร็อกซีขาเข้าที่สกัดกั้นข้อความขาเข้าในโหนดโฮสต์ บริการนี้ จะถอดรหัสข้อความที่เข้ามา ก่อนส่งไปยังปลายทางสุดท้าย
เช่น เมื่อเซิร์ฟเวอร์การจัดการส่งข้อความไปยังเราเตอร์ บริการพร็อกซีขาออกจะ สกัดกั้นข้อความขาออก เข้ารหัส แล้วส่งไปยังเราเตอร์ เมื่อโหนดของ เราเตอร์ได้รับข้อความ บริการพร็อกซีขาเข้าจะถอดรหัสข้อความ แล้วส่งไปยังคอมโพเนนต์เราเตอร์เพื่อประมวลผล
การดำเนินการทั้งหมดนี้จะเกิดขึ้นอย่างโปร่งใสต่อคอมโพเนนต์ Edge โดยคอมโพเนนต์จะไม่ทราบกระบวนการเข้ารหัสและ ถอดรหัสที่ดำเนินการโดยบริการพร็อกซีของ Consul
นอกจากนี้ Apigee mTLS ยังใช้ยูทิลิตี iptables
ซึ่งเป็นบริการไฟร์วอลล์ Linux ที่
จัดการการเปลี่ยนเส้นทางการรับส่งข้อมูล
ข้อกำหนด
ก่อนที่จะติดตั้ง Apigee mTLS ได้ สภาพแวดล้อมของคุณต้องเป็นไปตามข้อกำหนดต่อไปนี้
- ข้อกำหนดด้านโทโพโลยี
- ติดตั้งและเปิดใช้ยูทิลิตีแล้ว
- บัญชีผู้ใช้ที่มีสิทธิ์ในระดับที่เหมาะสม
- เครื่องที่ใช้ในการดูแลระบบ (แนะนำ)
- การใช้งานพอร์ต
ส่วนต่อไปนี้จะอธิบายข้อกำหนดแต่ละข้อโดยละเอียด
ข้อกำหนดด้านโทโพโลยี
Apigee mTLS กำหนดให้โทโพโลยีของสภาพแวดล้อมต้องมีโหนด Zookeeper อย่างน้อย 3 โหนด ด้วยเหตุนี้ คุณจึงติดตั้ง Apigee mTLS ได้เฉพาะในโทโพโลยีที่ใช้โหนด 5, 9, 12 (ศูนย์ข้อมูลหลายแห่ง) หรือ 13 เท่านั้น โปรดดูข้อมูลเพิ่มเติมที่โทโพโลยีการติดตั้ง
สาธารณูปโภค/แพ็กเกจ
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
- ตั้งค่ากฎไฟร์วอลล์
- สร้างบัญชีผู้ใช้ระบบ/OS ใหม่
- เปิดใช้ ปิดใช้ เริ่ม หยุด และมาสก์บริการด้วย
systemctl
เครื่องที่ใช้ในการดูแลระบบ (แนะนำ)
Apigee ขอแนะนำให้คุณมีโหนดภายในคลัสเตอร์ซึ่งคุณสามารถดำเนินการต่างๆ ในฐานะผู้ดูแลระบบตามที่อธิบายไว้ในเอกสารนี้ ซึ่งรวมถึง
- ติดตั้ง HashiCorp Consul 1.6.2
- สร้างและแจกจ่ายคู่ใบรับรอง/คีย์และคีย์การเข้ารหัสแบบกอสซิป
- อัปเดตและเผยแพร่ไฟล์การกำหนดค่า
เมื่อตั้งค่าเครื่องดูแลระบบ ให้ทำดังนี้
- ตรวจสอบว่าคุณมีสิทธิ์เข้าถึงระดับรูท
- ดาวน์โหลดและติดตั้งยูทิลิตี
apigee-service
และapigee-setup
ในเครื่องตามที่อธิบายไว้ใน ติดตั้งยูทิลิตี apigee-setup ของ Edge - ตรวจสอบว่าคุณใช้
scp/ssh
เพื่อเข้าถึงโหนดทั้งหมดในคลัสเตอร์จาก เครื่องการดูแลระบบได้ ขั้นตอนนี้จำเป็นเพื่อให้คุณสามารถเผยแพร่ไฟล์กำหนดค่าและ ข้อมูลเข้าสู่ระบบได้
การใช้งานและการกำหนดพอร์ต
ส่วนนี้อธิบายการใช้งานพอร์ตและการกำหนดพอร์ตเพื่อรองรับการสื่อสารของ Consul กับ Apigee mTLS
การใช้งานพอร์ต: โหนดทั้งหมดที่เรียกใช้ apigee-mtls
โหนดทั้งหมดในคลัสเตอร์ที่ใช้บริการ apigee-mtls
ต้องอนุญาตการเชื่อมต่อ
จากบริการใน localhost (127.0.0.1) ซึ่งจะช่วยให้พร็อกซี Consul สื่อสารกับ
บริการอื่นๆ ได้ขณะประมวลผลข้อความขาเข้าและขาออก
การใช้งานพอร์ต: โหนดเซิร์ฟเวอร์ Consul (โหนดที่เรียกใช้ ZooKeeper)
คุณต้องเปิดพอร์ตส่วนใหญ่ต่อไปนี้ในโหนดเซิร์ฟเวอร์ Consul (โหนดที่เรียกใช้ ZooKeeper) เพื่อยอมรับคำขอจากโหนดทั้งหมดในคลัสเตอร์
โหนด | พอร์ตเซิร์ฟเวอร์ Consul | คำอธิบาย | โปรโตคอล | อนุญาต mtls-agents ภายนอก * |
---|---|---|---|---|
เซิร์ฟเวอร์ Consul (โหนด ZooKeeper) | 8300 |
เชื่อมต่อเซิร์ฟเวอร์ Consul ทั้งหมดในคลัสเตอร์ | RPC | |
8301 |
จัดการการเป็นสมาชิกและข้อความออกอากาศภายในคลัสเตอร์ | UDP/TCP | ||
8302 |
พอร์ต WAN ที่จัดการข้อความการเป็นสมาชิกและการออกอากาศในการกำหนดค่าศูนย์ข้อมูลหลายแห่ง | UDP/TCP | ||
8500 |
จัดการการเชื่อมต่อ HTTP กับ Consul Server API จากกระบวนการในโหนดเดียวกัน
พอร์ตนี้ไม่ได้ใช้สำหรับการสื่อสารหรือการประสานงานระยะไกล แต่จะรับฟังเฉพาะ localhost เท่านั้น |
HTTP | ||
8502 |
จัดการการเชื่อมต่อ gRPC+HTTPS กับ Consul Server API จากโหนดอื่นๆ ในคลัสเตอร์ | 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 |
SymasLDAP | 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 ใช้ได้ ดูข้อมูลเกี่ยวกับวิธีดำเนินการนี้ได้ที่ การปรับแต่งช่วงพอร์ตพร็อกซี
ข้อจำกัด
Apigee mTLS มีข้อจำกัดต่อไปนี้
- ไม่ได้เข้ารหัสการสื่อสารระหว่างโหนด Cassandra (พอร์ต 7000)
- การกำหนดค่าและการตั้งค่านั้นไม่เป็นแบบ Idempotent ซึ่งหมายความว่าหากคุณทำการเปลี่ยนแปลงในโหนดหนึ่ง คุณจะต้องทำการเปลี่ยนแปลงเดียวกันในทุกโหนด ระบบจะไม่ใช้การเปลี่ยนแปลงนั้นกับโหนดอื่นๆ ให้คุณ ดูข้อมูลเพิ่มเติมได้ที่ เปลี่ยนการกำหนดค่า apigee-mtls ที่มีอยู่
คำศัพท์
ส่วนนี้ใช้คำศัพท์ต่อไปนี้
คำศัพท์ | คำจำกัดความ |
---|---|
คลัสเตอร์ | กลุ่มเครื่องที่ประกอบกันเป็น Edge สำหรับการติดตั้ง Private Cloud |
Consul | Service Mesh ที่ Apigee mTLS ใช้ ดูข้อมูลเกี่ยวกับวิธีที่ Consul รักษาความปลอดภัยให้การสื่อสารใน Private Cloud ได้ที่โมเดลความปลอดภัยของ Consul |
mTLS | TLS ที่มีการตรวจสอบสิทธิ์ร่วม |
โครงข่ายบริการ | เครือข่ายโอเวอร์เลย์ (หรือเครือข่ายภายในเครือข่าย) |
TLS | Transaction Layer Security โปรโตคอลการตรวจสอบสิทธิ์ตามมาตรฐานอุตสาหกรรมสำหรับการสื่อสารที่ปลอดภัย |