התכונה Apigee mTLS מוסיפה אבטחה לתקשורת בין רכיבים באשכול Edge for the Private Cloud. הוא מספק דרך סטנדרטית בתעשייה להגדיר ולהתקין את רשת השירותים. הוא תומך בניהול חבילות ובאוטומציה של הגדרות.
סקירה כללית של הארכיטקטורה
כדי לספק תקשורת מאובטחת בין רכיבים, ב-Apigee mTLS נעשה שימוש ברשת שירותים שיוצרת חיבורי TLS מאובטחים ומאומתים הדדית בין רכיבים.
בתמונה הבאה מוצגים חיבורים בין רכיבי Apigee שמאובטחים באמצעות Apigee mTLS (in red). היציאות שמוצגות בתמונה הן דוגמאות. לרשימת טווחי היציאות שכל רכיב יכול להשתמש בהם, אפשר לעיין במאמר בנושא שימוש ביציאות.
(שימו לב שהיציאות שמסומנות באות M משמשות לניהול הרכיב וחייבות להיות פתוחות ברכיב כדי ששרת הניהול יוכל לגשת אליהן).
כפי שאפשר לראות בתרשים שלמעלה, Apigee mTLS מוסיף אבטחה לחיבורים בין רוב הרכיבים באשכול, כולל:
מקור | יעד | |
---|---|---|
שרת ניהול | נתבים, MP, QPid, LDAP, Postgres, Zookeeper וצמתים של Cassandra | |
נתב | Loopback; Qpid, Zookeeper, and Cassandra nodes | |
מעבד בקשות | Loopback; Qpid, Zookeeper, and Cassandra nodes | |
ZooKeeper ו-Cassandra | צמתים אחרים של Zookeeper ו-Cassandra | |
ממשק משתמש של Edge | SMTP (ל-IdP חיצוני בלבד) | |
Postgres | צמתים אחרים של Postgres, Zookeeper ו-Cassandra |
הצפנה או פענוח של הודעות
תשתית ה-Service mesh של Apigee mTLS מורכבת משרתי Consul שפועלים בכל צומת של ZooKeeper באשכול, ומשירותי Consul הבאים בכל צומת באשכול:
- שרת proxy ליציאה שמיירט הודעות יוצאות בצומת המארח. השירות הזה מצפין הודעות יוצאות לפני שהוא שולח אותן ליעד.
- פרוקסי לכניסת נתונים שמיירט הודעות נכנסות בצומת המארח. השירות הזה מפענח הודעות נכנסות לפני שהוא שולח אותן ליעד הסופי שלהן.
לדוגמה, כששרת הניהול שולח הודעה לנתב, שירות ה-proxy ליציאה מיירט את ההודעה היוצאת, מצפין אותה ואז שולח אותה לנתב. כשצומת הנתב מקבל את ההודעה, שירות ה-proxy של הכניסה מפענח את ההודעה ואז מעביר אותה לרכיב הנתב לעיבוד.
התהליך הזה מתבצע בצורה שקופה לרכיבי Edge: הם לא מודעים לתהליך ההצפנה והפענוח שמבצעים שירותי ה-proxy של Consul.
בנוסף, ב-Apigee mTLS נעשה שימוש בכלי iptables
, שירות חומת אש של Linux שמנהל את ההפניה מחדש של הטראפיק.
דרישות
כדי להתקין את Apigee mTLS, הסביבה שלכם צריכה לעמוד בדרישות הבאות:
- דרישות בנוגע לטופולוגיה
- התקנה והפעלה של כלי עזר
- חשבון משתמש עם רמת ההרשאות המתאימה
- מכונת ניהול (מומלץ)
- שימוש ביציאות
בקטעים הבאים מפורטת כל אחת מהדרישות האלה.
דרישות לגבי טופולוגיה
כדי להשתמש ב-mTLS ב-Apigee, הטופולוגיה של הסביבה צריכה לכלול לפחות שלושה צמתים של Zookeeper. לכן, אפשר להתקין את Apigee mTLS רק בטופולוגיות שמשתמשות ב-5, ב-9, ב-12 (multi-data center) או ב-13 צמתים. מידע נוסף זמין במאמר בנושא טופולוגיות של התקנות.
תוכניות שירות/חבילות
כדי להשתמש ב-mTLS ב-Apigee, צריך לוודא שהחבילות הבאות מותקנות ומופעלות בכל מכונה באשכול, כולל מכונת הניהול, לפני שמתחילים בתהליך ההתקנה:
שירות/חבילה | תיאור | האם אפשר להסיר אחרי ההתקנה? |
---|---|---|
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.
- מעדכנים ומפיצים את קובץ ההגדרות.
כשמגדירים את מכונת הניהול:
- מוודאים שיש לכם גישת root אליו.
- מורידים ומתקינים את כלי השירות
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 חיצוניים * |
---|---|---|---|---|
שרת Consul (צמתי ZooKeeper) | 8300 |
מחבר את כל שרתי Consul באשכול. | הכנסה לקליק | |
8301 |
מטפל בחברות ובשידורי הודעות בתוך האשכול. | UDP/TCP | ||
8302 |
יציאת WAN שמטפלת בהודעות על חברות ובהודעות שידור בהגדרה של כמה מרכזי נתונים. | UDP/TCP | ||
8500 |
מטפל בחיבורי HTTP ל-Consul Server APIs מתהליכים באותו צומת.
היציאה הזו לא משמשת לתקשורת או לתיאום מרחוקים, והיא מאזינה רק ל-localhost. |
HTTP | ||
8502 |
מטפל בחיבורי gRPC+HTTPS ל-Consul Server APIs מצמתים אחרים באשכול. | gRPC+HTTPS | ||
8503 |
מטפל בחיבורי HTTPS ל-Consul Server APIs מצמתים אחרים באשכול. | HTTPS | ||
8600 |
מטפל ב-DNS של שרת Consul. | UDP/TCP | ||
* מומלץ ב-Apigee להגביל את הבקשות הנכנסות לחברים באשכול בלבד
(כולל מאגרי נתונים שונים). אפשר לעשות את זה באמצעות 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 |
מעבד בקשות | 10,500 עד 10,599 | 2 |
SymasLDAP | 10200 עד 10299 | 1 |
Postgres | 10300 עד 10399 | 3 |
Qpid | 10400 עד 10499 | 2 |
נתב | 10600 עד 10699 | 2 |
ZooKeeper | 10,000 עד 10,099 | 3 |
Consul מקצה יציאות בצורה לינארית פשוטה. לדוגמה, אם באשכול יש שני צמתי Postgres, הצומת הראשון משתמש בשני פורטים, ולכן Consul מקצה לו את הפורטים 10300 ו-10301. גם הצומת השני משתמש בשתי יציאות, ולכן המסוף מקצה לצומת הזה את היציאות 10302 ו-10303. ההגדרה הזו חלה על כל סוגי הרכיבים.
כפי שאפשר לראות, מספר הפורטים בפועל תלוי בטופולוגיה: אם באשכול יש שני צמתי Postgres, תצטרכו לפתוח ארבעה פורטים (שני צמתים כפול שני פורטים כל אחד).
שימו לב לנקודות הבאות:
- פרוקסי של Consul לא יכולים להאזין באותן יציאות כמו שירותי Apigee.
- ל-Consul יש רק מרחב כתובות יציאה אחד. הקצאות הפורטים של Consul proxy צריכות להיות ייחודיות בכל האשכול, כולל מרכזי נתונים. המשמעות היא שאם שרת Proxy A במארח A מאזין ליציאה 15000, שרת Proxy B במארח B לא יכול להאזין ליציאה 15000.
- מספר היציאות שבשימוש משתנה בהתאם לטופולוגיה, כפי שמתואר למעלה.
בתצורה של כמה מרכזי נתונים, כל המארחים שמריצים mTLS צריכים גם לפתוח את יציאה 8302.
אפשר להתאים אישית את יציאות ברירת המחדל שמשמשות את Apigee mTLS. במאמר התאמה אישית של טווח יציאות ל-proxy מוסבר איך עושים את זה.
מגבלות
יש מגבלות מסוימות ל-mTLS ב-Apigee:
- לא מוצפןות תקשורות בין צמתים של Cassandra (יציאה 7000)
- קביעת התצורה וההגדרה לא אידמפוטנטיות. המשמעות היא שאם מבצעים שינוי בצומת אחד, צריך לבצע את אותו שינוי בכל הצמתים. המערכת לא תבצע את השינוי הזה בשבילכם בצומת אחר. מידע נוסף זמין במאמר בנושא שינוי הגדרת apigee-mtls קיימת.
הסברים על המונחים
הקטע הזה כולל את המונחים הבאים:
מונח | הגדרה |
---|---|
cluster | קבוצת המכונות שמרכיבות את Edge להתקנה בענן פרטי. |
Consul | רשת השירות שבה נעשה שימוש ב-mTLS של Apigee. למידע על האופן שבו Consul מאבטח את התקשורת בענן הפרטי, אפשר לעיין במודל האבטחה של Consul. |
mTLS | אימות TLS בו-זמני (mTLS). |
service mesh | רשת שכבת-על (או רשת בתוך רשת). |
TLS | אבטחת שכבת התעבורה. פרוטוקול אימות סטנדרטי בתעשייה לתקשורת מאובטחת. |