ฟีเจอร์ Apigee mTLS จะเพิ่มความปลอดภัยให้กับการสื่อสารระหว่างคอมโพเนนต์ใน 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 อื่นๆ | |
UI ของ Edge | SMTP (สำหรับ IdP ภายนอกเท่านั้น) | |
Postgres | โหนด Postgres, ผู้ดูแลสวนสัตว์ และโหนด Cassandra อื่นๆ |
การเข้ารหัส/ถอดรหัสข้อความ
โครงข่ายบริการ Apigee mTLS ประกอบด้วยเซิร์ฟเวอร์ Consul ที่ทำงานบนโหนด ZooKeeper แต่ละโหนดในคลัสเตอร์และบริการ Consul ต่อไปนี้ในทุกโหนดในคลัสเตอร์
- พร็อกซีขาออกที่สกัดกั้นข้อความขาออกบนโหนดโฮสต์ ซึ่งบริการนี้จะเข้ารหัสข้อความขาออกก่อนที่จะส่งไปยังปลายทาง
- พร็อกซีขาเข้าที่สกัดกั้นข้อความขาเข้าในโหนดของโฮสต์ โดยบริการนี้จะถอดรหัสข้อความขาเข้าก่อนที่จะส่งไปยังปลายทางสุดท้าย
ตัวอย่างเช่น เมื่อเซิร์ฟเวอร์การจัดการส่งข้อความไปยังเราเตอร์ บริการพร็อกซีข้อมูลขาออกจะสกัดกั้นข้อความขาออก เข้ารหัส แล้วส่งไปยังเราเตอร์ เมื่อโหนดของเราเตอร์ได้รับข้อความ บริการพร็อกซีข้อมูลขาเข้าจะถอดรหัสข้อความแล้วส่งไปยังคอมโพเนนต์ของเราเตอร์เพื่อประมวลผล
ทั้งหมดนี้จะเกิดขึ้นอย่างโปร่งใสกับคอมโพเนนต์ Edge กล่าวคือ คอมโพเนนต์ดังกล่าวไม่ทราบถึงขั้นตอนการเข้ารหัสและการถอดรหัสที่ดำเนินการโดยบริการพร็อกซีของ Consul
นอกจากนี้ Apigee mTLS จะใช้ยูทิลิตี iptables
ซึ่งเป็นบริการไฟร์วอลล์ของ Linux ที่จัดการการเปลี่ยนเส้นทางการรับส่งข้อมูลด้วย
ข้อกำหนด
Apigee mTLS เป็นวิธีที่เป็นไปตามมาตรฐานอุตสาหกรรมสำหรับการกำหนดค่าและติดตั้งโครงข่ายบริการ โดยรองรับการจัดการแพ็กเกจและการกำหนดค่าอัตโนมัติ
เนื่องจากบริการพร็อกซี Consul มีการจับคู่อย่างใกล้ชิดเป็นการกำหนดพอร์ตสำหรับแต่ละกระบวนการ การเปลี่ยนแปลงไปยังโหนดหนึ่งจะมีผลต่อโหนดอื่นๆ ทั้งหมด ดังนั้น หากโทโพโลยีมีการเปลี่ยนแปลง คุณต้องกำหนดค่าและเริ่มบริการอีกครั้งในทุกโหนดในคลัสเตอร์
ก่อนที่จะติดตั้ง Apigee mTLS ได้ สภาพแวดล้อมของคุณต้องเป็นไปตามข้อกำหนดต่อไปนี้ตามที่อธิบายไว้ในส่วนนี้
ข้อกำหนดเหล่านี้ ได้แก่
- Edge สำหรับเวอร์ชัน Private Cloud
- ชุดยูทิลิตีที่ติดตั้งและเปิดใช้งาน
- บัญชีผู้ใช้ที่มีระดับสิทธิ์ที่เหมาะสม
- เครื่องดูแลระบบ (แนะนำ)
ข้อกำหนดของ Edge สำหรับ Private Cloud
Apigee mTLS รองรับ Edge เวอร์ชันต่อไปนี้สำหรับ Private Cloud (แต่ไม่ใช่ในแพลตฟอร์มที่รองรับทั้งหมดตามที่อธิบายไว้ในข้อกำหนดของระบบปฏิบัติการ)
- 4.19.06
- 4.19.01
Apigee mTLS กำหนดให้คลัสเตอร์ Private Cloud ต้องใช้โทโพโลยีที่มีโหนด Zookeeper อย่างน้อย 3 รายการ ด้วยเหตุนี้ คุณจึงติดตั้ง Apigee mTLS ได้เฉพาะบนโทโพโลยีที่ใช้ 5, 9, 12 (ศูนย์ข้อมูลหลายแหล่ง) หรือ 13 โหนดเท่านั้น ดูข้อมูลเพิ่มเติมได้ที่โทโพโลยีการติดตั้ง
ข้อกำหนดของระบบปฏิบัติการ
Apigee mTLS รองรับแพลตฟอร์มต่อไปนี้สำหรับคลัสเตอร์ Private Cloud ของคุณ (ระบบปฏิบัติการที่รองรับสำหรับ mTLS จะขึ้นอยู่กับเวอร์ชันของ Private Cloud)
ระบบปฏิบัติการ | เวอร์ชัน 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 |
สาธารณูปโภค/แพ็กเกจ
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 ขอแนะนำให้คุณมีโหนดภายในคลัสเตอร์ที่คุณสามารถใช้ทำงานต่างๆ ที่อธิบายไว้ในเอกสารนี้ได้
- ติดตั้ง HashiCorp Consul 1.6.2
- สร้างและเผยแพร่ใบรับรอง/คู่คีย์และคีย์การเข้ารหัส Gossip
- อัปเดตและเผยแพร่ไฟล์การกำหนดค่า
เครื่องการดูแลระบบต้องการสิ่งต่อไปนี้
- คุณได้ดาวน์โหลดและติดตั้งยูทิลิตี
apigee-service
และapigee-setup
แล้ว ตามที่อธิบายไว้ในติดตั้งยูทิลิตี Edge Apigee-setup - มีสิทธิ์เข้าถึง
scp/ssh
ในโหนดทั้งหมดในคลัสเตอร์ หากต้องการแจกจ่ายไฟล์การกำหนดค่าและข้อมูลเข้าสู่ระบบ คุณต้องมีสิทธิ์เข้าถึงscp/ssh
ในโฮสต์ทั้งหมดภายในคลัสเตอร์ - คุณมีสิทธิ์เข้าถึงรูทเครื่องดูแลระบบ
การใช้งานและการกำหนดพอร์ต
ส่วนนี้จะอธิบายการใช้งานพอร์ตและการกำหนดพอร์ตเพื่อรองรับการสื่อสารของ Consul ด้วย Apigee mTLS
การใช้งานพอร์ต: โหนดทั้งหมดที่ใช้ apigee-mtls
โหนดทั้งหมดในคลัสเตอร์ที่ใช้บริการ apigee-mtls
ต้องอนุญาตการเชื่อมต่อจากบริการบน localhost (127.0.0.1) วิธีนี้ช่วยให้พร็อกซีจากกงสุลสื่อสารกับบริการอื่นๆ ได้ในขณะที่ประมวลผลข้อความขาเข้าและขาออก
การใช้พอร์ต: โหนดเซิร์ฟเวอร์ Consul (โหนดที่ใช้งาน ZooKeeper)
คุณต้องเปิดพอร์ตส่วนใหญ่ต่อไปนี้บนโหนดเซิร์ฟเวอร์ Consul (โหนดที่ใช้งาน ZooKeeper) เพื่อยอมรับคำขอจากโหนดทั้งหมดในคลัสเตอร์
โหนด | พอร์ตเซิร์ฟเวอร์ Consul | คำอธิบาย | โปรโตคอล | อนุญาต mtls-agent ภายนอก * |
---|---|---|---|---|
Consul Server (โหนด ZoKeeper) | 8300 |
เชื่อมต่อเซิร์ฟเวอร์ Consul ทั้งหมดในคลัสเตอร์ | RPC | |
8301 |
จัดการการเป็นสมาชิกและข้อความประกาศภายในคลัสเตอร์ | UDP/TCP | ||
8302 |
พอร์ต WAN ที่จัดการข้อความการเป็นสมาชิกและประกาศในการกำหนดค่าศูนย์ข้อมูลหลายแห่ง | UDP/TCP | ||
8500 |
จัดการการเชื่อมต่อ HTTP กับ Consul Server API จากกระบวนการในโหนดเดียวกัน
พอร์ตนี้ไม่ได้ใช้สำหรับการสื่อสารหรือการทำงานร่วมกันระยะไกล แต่จะรับเฉพาะโลคัลโฮสต์เท่านั้น |
HTTP | ||
8502 |
จัดการการเชื่อมต่อ gRPC+HTTPS กับ Consul Server API จากโหนดอื่นๆ ในคลัสเตอร์ | gRPC+HTTPS | ||
8503 |
จัดการการเชื่อมต่อ HTTPS กับ Consul Server API จากโหนดอื่นๆ ในคลัสเตอร์ | HTTPS | ||
8600 |
จัดการ DNS ของเซิร์ฟเวอร์ Consul | UDP/TCP | ||
* Apigee ขอแนะนำให้คุณจำกัดคำขอขาเข้าเฉพาะสมาชิกคลัสเตอร์เท่านั้น (รวมถึงข้ามพื้นที่เก็บข้อมูล) ซึ่งทำได้โดยใช้ iptables
|
ตามที่เห็นในตารางนี้ โหนดที่เรียกใช้คอมโพเนนต์ consul-server
(โหนด ZoKeeper) ต้องเปิดพอร์ต 8301, 8302, 8502 และ 8503 ให้กับสมาชิกทั้งหมดของคลัสเตอร์ที่เรียกใช้บริการ apigee-mtls
แม้ทั่วทั้งศูนย์ข้อมูลก็ตาม โหนดที่ไม่ได้เรียกใช้ ZooKeeper
ไม่จำเป็นต้องเปิดพอร์ตเหล่านี้
การกำหนดพอร์ตสำหรับโหนด Consul ทั้งหมด (รวมถึงโหนดที่ใช้งาน ZooKeeper)
โหนดที่ใช้งานคอมโพเนนต์ Apigee ดังต่อไปนี้ต้องอนุญาตการเชื่อมต่อภายนอกกับพอร์ตที่อยู่ในช่วงต่อไปนี้เพื่อรองรับการสื่อสารของ Consul
คอมโพเนนต์ Apigee | ช่วง | จำนวนพอร์ตที่ต้องการต่อโหนด |
---|---|---|
mTLS ของ Apigee | 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 | 10001 ถึง 10099 | 3 |
Consul กำหนดพอร์ตในรูปแบบเชิงเส้นง่ายๆ ตัวอย่างเช่น หากคลัสเตอร์มีโหนด Postgres 2 โหนด โหนดแรกจะใช้ 2 พอร์ต ดังนั้น Consul จะกำหนดพอร์ต 10300 และ 10301 ให้ นอกจากนี้โหนดที่ 2 ใช้พอร์ต 2 พอร์ต ดังนั้น Consol จะกำหนด 10302 และ 10303 ให้กับโหนดดังกล่าว การตั้งค่านี้มีผลกับคอมโพเนนต์ทุกประเภท
คุณจะเห็นว่าจำนวนพอร์ตจริงขึ้นอยู่กับโทโพโลยี เช่น หากคลัสเตอร์มีโหนด Postgres 2 โหนด คุณจะต้องเปิดพอร์ต 4 พอร์ต (แต่ละโหนดคูณ 2 พอร์ต)
โปรดทราบดังต่อไปนี้
- พร็อกซี Consul รับข้อมูลบนพอร์ตเดียวกันกับบริการ Apigee ไม่ได้
- Consul มีพื้นที่ของที่อยู่พอร์ตเพียง 1 รายการเท่านั้น การกำหนดพอร์ตพร็อกซีของ Consul ต้องไม่ซ้ำกันในคลัสเตอร์ รวมถึงศูนย์ข้อมูลด้วย หมายความว่าหากพร็อกซี A บนโฮสต์ A ฟังบนพอร์ต 15000 พร็อกซี B บนโฮสต์ B จะไม่สามารถฟังในพอร์ต 15000
- จำนวนพอร์ตที่ใช้จะแตกต่างกันไปตามโทโพโลยีดังที่ได้อธิบายไปก่อนหน้านี้
ในการกำหนดค่าศูนย์ข้อมูลหลายแห่ง โฮสต์ทั้งหมดที่ใช้ mTLS จะต้องเปิดพอร์ต 8302 ด้วย
คุณปรับแต่งพอร์ตเริ่มต้นที่ Apigee mTLS ใช้ได้ โปรดดูวิธีดำเนินการที่หัวข้อการปรับแต่งช่วงพอร์ตพร็อกซี
ข้อจำกัด
Apigee mTLS มีข้อจำกัดต่อไปนี้
- ไม่เข้ารหัสการสื่อสารระหว่างโหนด Cassandra (พอร์ต 7000)
- การกำหนดค่าและการตั้งค่าจะไม่ใช่ค่าเดิม ซึ่งหมายความว่าหากคุณทำการเปลี่ยนแปลง 1 รายการในโหนดหนึ่ง คุณต้องทำการเปลี่ยนแปลงเดียวกันในโหนดทั้งหมด โดยระบบจะไม่เลือกการเปลี่ยนแปลงนั้นแล้วนำไปใช้กับโหนดอื่นๆ ให้คุณ ดูข้อมูลเพิ่มเติมได้ที่เปลี่ยนการกำหนดค่า apigee-mtls ที่มีอยู่
คำศัพท์
ส่วนนี้ใช้คำศัพท์ต่อไปนี้
คำศัพท์ | คำจำกัดความ |
---|---|
คลัสเตอร์ | กลุ่มของเครื่องที่รวมกันเป็น Edge สำหรับการติดตั้ง Private Cloud |
กงสุล | โครงข่ายบริการที่ Apigee mTLS ใช้งาน ดูข้อมูลเกี่ยวกับวิธีที่ Consul รักษาความปลอดภัยให้กับการสื่อสารของ Private Cloud ได้ที่โมเดลการรักษาความปลอดภัยของ Consul |
mTLS | TLS ที่มีการตรวจสอบสิทธิ์ร่วมกัน |
โครงข่ายบริการ | เครือข่ายซ้อนทับ (หรือเครือข่ายภายในเครือข่าย) |
TLS | Transaction Layer Security (ความปลอดภัยของเลเยอร์ธุรกรรม) โปรโตคอลการตรวจสอบสิทธิ์มาตรฐานอุตสาหกรรมสำหรับการสื่อสารที่ปลอดภัย |