התכונה Apigee mTLS מוסיפה אבטחה לתקשורת בין רכיבים ב-Edge של אשכול הענן הפרטי.
סקירה אדריכלית
כדי לספק תקשורת מאובטחת בין רכיבים, ב-Apigee mTLS נעשה שימוש ב-Service mesh שיוצרת חיבורי TLS מאובטחים ומאומתים באופן הדדי בין רכיבים.
בתמונה הבאה מוצגים חיבורים בין רכיבי Apigee שמאבטחים את Apigee mTLS (in red). היציאות שמופיעות בתמונה הן דוגמאות. ניתן לעיין בשימוש ביציאה כדי לראות רשימה של טווחים שבהם כל רכיב יכול להשתמש.
(חשוב לשים לב שיציאות שמצוינות ב-M משמשות לניהול הרכיב וצריכות להיות פתוחות ברכיב כדי ששרת הניהול יוכל לגשת אליהן).
כפי שניתן לראות בתרשים שלמעלה, השימוש ב-Apigee mTLS מוסיף אבטחה לחיבורים בין רוב הרכיבים באשכול, כולל:
מקור | יעד | |
---|---|---|
שרת ניהול | נתב, MP, QPid, LDAP, Postgres, zokeeper וצומתי Cassandra | |
נתב | לופבק; צמתים של Qpid, Zookeeper ו-Cassandra | |
מעבד בקשות | לופבק; צמתים של Qpid, Zookeeper ו-Cassandra | |
גן החיות (ZooKeeper) ו-קסנדרה | צמתים נוספים של גן חיות ו-Cassandra | |
ממשק המשתמש של Edge | SMTP (ל-IdP חיצוני בלבד) | |
Postgres | צמתים אחרים בגן החיות, גן חיות וקסנדרה |
הצפנה/פענוח של הודעות
רשת השירות של Apigee mTLS מורכבת משרתים של Consul שפועלים בכל צומת שלzoKeeper באשכול, ואת שירותי Consul הבאים בכל צומת באשכול:
- שרת proxy לתעבורת נתונים יוצאת המיירט הודעות יוצאות בצומת המארח. השירות הזה מצפין הודעות יוצאות לפני שליחתן ליעדן.
- שרת proxy של תעבורת נתונים נכנסת המיירט הודעות נכנסות בצומת המארח. השירות הזה מפענח הודעות נכנסות לפני שהן נשלחות ליעד הסופי.
לדוגמה, כששרת הניהול שולח הודעה לנתב, שירות שרת ה-proxy לתעבורת נתונים יוצאת מיירט את ההודעה היוצאת, מצפין אותה ואז שולח אותה לנתב. כשהצומת של הנתב מקבל את ההודעה, שירות ה-proxy של תעבורת הנתונים הנכנסת מפענח את ההודעה ואז מעביר אותה לרכיב הנתב לצורך עיבוד.
כל זה מתרחש בשקיפות לרכיבי Edge: הם לא מודעים לתהליך ההצפנה והפענוח שמתבצע על ידי שירותי ה-proxy של Consul.
בנוסף, ב-Apigee mTLS נעשה שימוש בכלי השירות iptables
, שירות של חומת אש של Linux שמנהל את ההפניה האוטומטית של תעבורת הנתונים.
דרישות
Apigee mTLS מספק דרך סטנדרטית בתחום להגדרה ולהתקנה של רשת השירות (Service mesh). הוא תומך בניהול חבילות ובאוטומציה של הגדרות אישיות.
מאחר ששירותי ה-proxy של Consul מקושרים היטב כהקצאות יציאות לתהליכים נפרדים, שינוי לצומת אחד משפיע על כל צומת אחר. כתוצאה מכך, אם הטופולוגיה משתנה, צריך להגדיר מחדש ולאתחל מחדש את השירותים בכל צומת באשכול.
כדי להתקין את Apigee mTLS, הסביבה שלכם צריכה לעמוד בדרישות הבאות שמתוארות בקטע הזה.
הדרישות האלה כוללות:
- Edge לגרסת הענן הפרטי
- קבוצת כלים שמותקנים ומופעלים
- חשבון משתמש עם רמת ההרשאות המתאימה
- מחשב ניהול (מומלץ)
Edge לדרישות של הענן הפרטי
ב-Apigee mTLS יש תמיכה בגרסה הבאה של Edge לענן הפרטי (אבל לא בכל הפלטפורמות הנתמכות, כפי שמתואר בדרישות של מערכת ההפעלה):
- 4.19.06
- 4.19.01
כדי להשתמש ב-Apigee mTLS, אשכול של ענן פרטי צריך להשתמש בטופולוגיה שכוללת לפחות שלושה צמתים של Zookeeper. לכן אפשר להתקין את Apigee mTLS רק בטופולוגיות שמשתמשות בצמתים 5, 9, 12 (מרכז נתונים מרובה) או 13 צמתים. למידע נוסף, ראו טופולוגיות של התקנה.
דרישות מערכת ההפעלה
ב-Apigee mTLS יש תמיכה בפלטפורמות הבאות לאשכול הענן הפרטי שלכם (מערכת ההפעלה הנתמכת ל-mTLS תלויה בגרסה של הענן הפרטי):
מערכת הפעלה | גרסה נתמכת של ענן פרטי | ||
---|---|---|---|
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, כולל שרתי ה-proxy של תעבורת נתונים נכנסת (ingress) ותעבורת נתונים יוצאת (egress) בצמתים שלzoKeeper באשכול.
הרשאות בחשבון משתמש
החשבון שמפעיל את התקנת mTLS של Apigee בכל צומת באשכול צריך להיות מסוגל:
- הפעלה, עצירה, הפעלה מחדש ואתחול של רכיבי Apigee
- הגדרת כללים של חומת אש
- יצירת חשבון משתמש חדש במערכת ההפעלה/מערכת
- הפעלה, השבתה, הפעלה, הפסקה וביצוע אנונימיזציה של שירותים באמצעות
systemctl
מחשב ניהול (מומלץ)
ההמלצה של Apigee היא להוסיף צומת באשכול שבו אפשר להשתמש כדי לבצע משימות שונות שמתוארות במסמך הזה, כולל:
- מתקינים את HashiCorp Consul 1.6.2.
- ליצור ולהפיץ זוג מפתחות/אישורים ומפתח להצפנת רכילות.
- מעדכנים ומפיצים את קובץ התצורה.
דרישות הקוד של מכונת הניהול:
- הורדת והתקנת את כלי השירות
apigee-service
ו-apigee-setup
כפי שמתואר בכלי ההתקנה של Edge APIgee-setup. - יש גישת
scp/ssh
לכל הצמתים באשכול. כדי להפיץ את קובץ התצורה ואת פרטי הכניסה, צריכה להיות לך גישתscp/ssh
לכל המארחים באשכול. - יש לכם גישת בסיס למכונה הניהול.
שימוש ביציאות והקצאה שלהן
בקטע הזה מתוארים השימוש ביציאות והקצאות של יציאות כדי לתמוך בתקשורת באמצעות Consul באמצעות mTLS של Apigee.
שימוש ביציאה: כל הצמתים שמריצים apigee-mtls
כל הצמתים באשכול שמשתמשים בשירות apigee-mtls
חייבים לאפשר חיבורים משירותים ב-localhost (127.0.0.1). כך, שרתי ה-proxy של Consul יכולים לתקשר עם השירותים האחרים בזמן שהם מעבדים הודעות נכנסות ויוצאות.
שימוש ביציאות: צמתים של שרת Consul (צמתים שמפעילים אתzoKeeper)
כדי לאשר בקשות מכל הצמתים באשכול, צריך לפתוח את רוב היציאות הבאות בצומתי שרת ה-Consul (הצמתים שמפעילים את ZooKeeper):
צומת | יציאת שרת קונסול | התיאור | פרוטוקול | אפשר להשתמש ב-mtls-agents חיצוניים * |
---|---|---|---|---|
Consul Server (צומתי ZooKeeper) | 8300 |
חיבור כל שרתי Consul באשכול. | הכנסה לקליק | |
8301 |
טיפול בהודעות חברוּת ובהודעות שידור בתוך האשכול. | UDP/TCP | ||
8302 |
יציאת WAN שמטפלת בהודעות חברות ושידורים של הגדרות מרובות של מרכזי נתונים. | UDP/TCP | ||
8500 |
מטפל בחיבורי HTTP לממשקי ה-API של שרת Consul מתהליכים באותו צומת.
היציאה הזו לא משמשת לתקשורת או לתיאום מרחוק. היא מאזינה רק ל-localhost. |
HTTP | ||
8502 |
מטפל בחיבורי gRPC+HTTPS לממשקי ה-API של שרת ה-Consul מצמתים אחרים באשכול. | gRPC+HTTPS | ||
8503 |
מטפל בחיבורי HTTPS לממשקי ה-API של שרת Consul מצמתים אחרים באשכול. | HTTPS | ||
8600 |
מטפל ב-DNS של שרת הקונסול. | UDP/TCP | ||
* לפי המלצת Apigee, יש להגביל בקשות נכנסות רק לחברי אשכולות
(כולל מאגר נתונים צולב). אפשר לעשות זאת באמצעות iptables .
|
כפי שמוצג בטבלה הזו, הצמתים שמריצים את הרכיב consul-server
(צומתי ZooKeeper) חייבים לפתוח את היציאות 8301, 8302, 8502 ו-8503 לכל חברי האשכול שמריצים את השירות apigee-mtls
, אפילו במרכזי הנתונים השונים. צמתים שלא פועלים בהם גן החיות לא צריכים לפתוח את היציאות האלה.
הקצאות יציאות לכל צומתי Consul (כולל צמתים המפעילים אתzoKeeper)
כדי לתמוך בתקשורת עם Consul, צמתים שמריצים את רכיבי Apigee הבאים חייבים לאפשר חיבורים חיצוניים ליציאות בטווחים הבאים:
רכיב Apigee | טווח | מספר היציאות הנדרשות לכל צומת |
---|---|---|
Apigee mTLS | 10700 עד 10799 | 1 |
קסנדרה | 10100 עד 10199 | 2 |
מעבד בקשות | 10500 עד 10599 | 2 |
OpenLDAP | 10200 עד 10299 | 1 |
Postgres | 10300 עד 10399 | 3 |
QPID | 10400 עד 10499 | 2 |
נתב | 10600 עד 10699 | 2 |
ZooKeeper | 10001 עד 10099 | 3 |
ה-Consul מקצה יציאות בדרך ליניארית פשוטה. לדוגמה, אם לאשכול יש שני צומתי Postgres, הצומת הראשון משתמש בשתי יציאות ולכן Consul מקצה להן את היציאות 10300 ו-10301. הצומת השני משתמש גם בשתי יציאות, ולכן Consol מקצה את 10302 ואת 10303 לצומת הזה. כלל זה חל על כל סוגי הרכיבים.
כמו שאפשר לראות, מספר היציאות בפועל תלוי בטופולוגיה: אם לאשכול יש שני צומתי Postgres, צריך לפתוח ארבע יציאות (שני צמתים כפול שתי יציאות כל אחת).
שימו לב לנקודות הבאות:
- שרתי proxy של הקונסול לא יכולים להאזין באותן יציאות כמו שירותי Apigee.
- ל-Consul יש רק מרחב כתובות יציאות אחד. ההקצאות של יציאות שרת proxy בקונסולה צריכות להיות ייחודיות בכל האשכול, כולל מרכזי נתונים. המשמעות היא שאם שרת proxy א' במארח א' מאזין ביציאה 15,000, שרת B במארח ב' לא יכול להאזין ביציאה 15,000.
- מספר היציאות שנעשה בהן שימוש משתנה בהתאם לטופולוגיה, כפי שתואר קודם.
בהגדרה של מרכז נתונים מרובה, כל המארחים שמריצים mTLS צריכים לפתוח גם את יציאה 8302.
אפשר להתאים אישית את יציאות ברירת המחדל שבהן נעשה שימוש ב-Apigee mTLS. למידע נוסף על כך, תוכלו לקרוא את המאמר התאמה אישית של טווח יציאות proxy.
מגבלות
המגבלות הבאות חלות על Apigee mTLS:
- לא מצפין את התקשורת בין הצמתים של Cassandra (יציאה 7000)
- ההגדרה וההגדרה לא אידמפוטנטים. כלומר, אם מבצעים שינוי אחד בצומת אחד, צריך לבצע את אותו שינוי בכל הצמתים. המערכת לא אוספת את השינוי הזה ומחילה אותו על צמתים אחרים עבורכם. מידע נוסף זמין במאמר שינוי הגדרה קיימת של apigee-mtls.
טרמינולוגיה
בקטע הזה נעשה שימוש במונחים הבאים:
מונח | הגדרה |
---|---|
cluster | קבוצת המכונות שמהן מורכב Edge להתקנה של הענן הפרטי. |
קונסול | Service mesh שבו נעשה שימוש ב-Apigee mTLS. במודל האבטחה של Console מוסבר איך מאבטחים את התקשורת בענן הפרטי ב-Consul. |
mTLS | TLS שאומת בו-זמנית. |
Service mesh | רשת שכבת-על (או רשת בתוך רשת). |
TLS | אבטחת שכבת הטרנזקציות. פרוטוקול אימות מקובל בתחום לתקשורת מאובטחת. |