מבוא ל-mTLS ב-Apigee

Edge for Private Cloud גרסה 4.19.01

התכונה Apigee mTLS מוסיפה אבטחה לתקשורת בין רכיבים באשכול של Edge for Private Cloud.

סקירה כללית של הארכיטקטורה

כדי לספק תקשורת מאובטחת בין רכיבים, Apigee mTLS משתמש ב-Service mesh שיוצר חיבורי TLS מאובטחים ומאומתים הדדית בין רכיבים.

בתמונה הבאה מוצגים החיבורים בין רכיבי Apigee שמאובטחים באמצעות Apigee mTLS (in red). היציאות שמוצגות בתמונה הן דוגמאות. בשימוש ביציאות מופיעה רשימה של טווחים שכל רכיב יכול להשתמש בהם.

(שימו לב שהיציאות שמסומנות באות M משמשות לניהול הרכיב, והן צריכות להיות פתוחות ברכיב כדי ששרת הניהול יוכל לגשת אליהן).

כפי שניתן לראות בתרשים שלמעלה, Apigee mTLS מוסיף אבטחה לחיבורים בין רוב הרכיבים באשכול, כולל:

מקור יעד
שרת ניהול צומתי Router,‏ MP,‏ QPid,‏ LDAP,‏ Postgres,‏ Zookeeper ו-Cassandra
נתב Loopback; צמתים של Qpid,‏ Zookeeper ו-Cassandra
מעבד בקשות Loopback; צמתים של Qpid,‏ Zookeeper ו-Cassandra
‫ZooKeeper ו-Cassandra צמתים אחרים של Zookeeper ו-Cassandra
ממשק המשתמש של Edge ‫SMTP (ל-IDP חיצוני בלבד)
Postgres צמתים אחרים של Postgres,‏ Zookeeper ו-Cassandra

הצפנה ופענוח של הודעות

רשת השירות mTLS של Apigee מורכבת משרתי Consul שפועלים בכל צומת ZooKeeper באשכול, ומשירותי Consul הבאים בכל צומת באשכול:

  • שרת proxy יוצא שמיירט הודעות יוצאות בצומת המארח. השירות הזה מצפין הודעות יוצאות לפני שהן נשלחות ליעד שלהן.
  • שרת proxy נכנס שמיירט הודעות נכנסות בצומת המארח. השירות הזה מפענח הודעות נכנסות לפני שהוא שולח אותן ליעד הסופי שלהן.

לדוגמה, כששרת הניהול שולח הודעה לנתב, שירות שרת ה-proxy לתעבורת נתונים יוצאת מיירט את ההודעה היוצאת, מצפין אותה ואז שולח אותה לנתב. כשהצומת של הנתב מקבל את ההודעה, שירות ה-proxy של ה-ingress מפענח את ההודעה ומעביר אותה לרכיב הנתב לעיבוד.

כל התהליך הזה מתבצע באופן שקוף לרכיבי Edge: הם לא מודעים לתהליך ההצפנה והפענוח שמבוצע על ידי שירותי ה-proxy של Consul.

בנוסף, ב-Apigee mTLS נעשה שימוש בכלי iptables, שירות חומת אש של Linux שמנהל את ההפניה האוטומטית של התנועה.

דרישות

‫Apigee mTLS מספק דרך סטנדרטית בתחום להגדיר ולהתקין את Service mesh. הוא תומך בניהול חבילות ובאוטומציה של הגדרות אישיות.

מכיוון ששירותי ה-proxy של Consul קשורים באופן הדוק כהקצאות של יציאות לתהליכים נפרדים, שינוי בצומת אחד משפיע על כל צומת אחר. לכן, אם הטופולוגיה משתנה, צריך להגדיר מחדש ולהפעיל מחדש את השירותים בכל צומת באשכול.

כדי להתקין את Apigee mTLS, הסביבה שלכם צריכה לעמוד בדרישות הבאות שמתוארות בקטע הזה.

הדרישות האלה כוללות:

  • גרסת Edge for Private Cloud
  • קבוצה של כלי עזר שמותקנים ומופעלים
  • חשבון משתמש עם רמת ההרשאות המתאימה
  • מכונה לניהול (מומלץ)

הדרישות של Edge for Private Cloud

‫Apigee mTLS תומך בגרסה הבאה של Edge for Private Cloud (אבל לא בכל הפלטפורמות הנתמכות, כפי שמתואר בדרישות של מערכת ההפעלה):

  • 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 של תעבורת הנתונים הנכנסת והיוצאת בצומתי ZooKeeper באשכול.

הרשאות בחשבון המשתמש

החשבון שמפעיל את ההתקנה של Apigee mTLS בכל צומת באשכול צריך להיות מסוגל:

  • הפעלה, עצירה, הפעלה מחדש ואיניציאליזציה של רכיבי Apigee
  • הגדרת כללים לחומת האש
  • יצירת חשבון משתמש חדש במערכת ההפעלה
  • הפעלה, השבתה, התחלה, עצירה והסתרה של שירותים באמצעות systemctl

מכונת ניהול (מומלץ)

‫Apigee ממליצה שיהיה לכם צומת באשכול שתוכלו להשתמש בו כדי לבצע משימות שונות שמתוארות במסמך הזה, כולל:

  1. מתקינים את HashiCorp Consul 1.6.2.
  2. יוצרים ומפיצים זוג מפתחות/אישור ומפתח הצפנה של Gossip.
  3. מעדכנים ומפיצים את קובץ התצורה.

לפי דרישת המחשב של האדמין:

  • הורדתם והתקנתם את כלי השירות apigee-service ו-apigee-setup, כמו שמתואר במאמר התקנת כלי השירות apigee-setup של Edge.
  • יש לו גישה מסוג scp/ssh לכל הצמתים באשכול. כדי להפיץ את קובץ התצורה ופרטי הכניסה, צריך גישת scp/ssh לכל המארחים באשכול.
  • יש לכם גישת בסיס (root) למכונת הניהול.

שימוש ביציאות והקצאת יציאות

בקטע הזה מתוארים השימוש ביציאות וההקצאות של היציאות לתמיכה בתקשורת של Consul עם Apigee mTLS.

שימוש ביציאות: כל הצמתים שמריצים את apigee-mtls

כל הצמתים באשכול שמשתמשים בשירות apigee-mtls צריכים לאפשר חיבורים משירותים במארח המקומי (127.0.0.1). כך שרתי ה-proxy של Consul יכולים לתקשר עם השירותים האחרים בזמן שהם מעבדים הודעות נכנסות ויוצאות.

שימוש ביציאה: צומתי שרת Consul (צמתים שמריצים את ZooKeeper)

כדי לקבל בקשות מכל הצמתים באשכול, צריך לפתוח את רוב היציאות הבאות בצומתי השרת של Consul (הצמתים שבהם פועל ZooKeeper):

צומת יציאת שרת Consul תיאור פרוטוקול לאפשר סוכני mTLS חיצוניים
*
שרת Consul (צומתי 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 של שרת 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
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 של Consul לא יכולים להאזין לאותן יציאות כמו שירותי Apigee.
  • ל-Consul יש רק מרחב כתובות אחד של יציאות. הקצאות הפורטים של שרת ה-proxy של Consul צריכות להיות ייחודיות בכל האשכול, כולל מרכזי נתונים. כלומר, אם שרת proxy א' במארח א' מאזין ליציאה 15000, שרת proxy ב' במארח ב' לא יכול להאזין ליציאה 15000.
  • מספר היציאות שבשימוש משתנה בהתאם לטופולוגיה, כפי שמתואר למעלה.

בהגדרה של כמה מרכזי נתונים, כל המארחים שמריצים mTLS צריכים לפתוח גם את יציאה 8302.

אתם יכולים להתאים אישית את יציאות ברירת המחדל שבהן Apigee mTLS משתמש. במאמר התאמה אישית של טווח היציאות של שרת ה-proxy מוסבר איך עושים את זה.

מגבלות

ל-Apigee mTLS יש את המגבלות הבאות:

  • לא מצפין תקשורת בין צומתי Cassandra (יציאה 7000)
  • ההגדרה וההתקנה לא אידמפוטנטיות. כלומר, אם מבצעים שינוי בצומת אחד, צריך לבצע את אותו שינוי בכל הצמתים. המערכת לא מזהה את השינוי ומחילה אותו על צמתים אחרים. מידע נוסף זמין במאמר שינוי הגדרה קיימת של apigee-mtls.

הסברים על המונחים

בקטע הזה נעשה שימוש במונחים הבאים:

מונח הגדרה
cluster קבוצת המכונות שמרכיבות את ההתקנה של Edge for Private Cloud.
Consul Service mesh שמשמש את Apigee mTLS. במאמר מודל האבטחה של Consul מוסבר איך Consul מאבטח את התקשורת ב-Private Cloud.
mTLS ‫TLS עם אימות הדדי (mTLS).
Service mesh רשת שכבת-על (או רשת בתוך רשת).
TLS ‫Transaction Layer Security (אבטחה בשכבת התעבורה). פרוטוקול אימות סטנדרטי בתחום לתקשורת מאובטחת.