בדף הזה מוסבר על כללי חומת האש של VPC שמאפשרים תנועה נכנסת, וש-Google Kubernetes Engine (GKE) יוצר באופן אוטומטי כברירת מחדל ב- Cloud de Confiance by S3NS.
חומות אש רלוונטיות וחומות אש לתעבורת נתונים יוצאת
GKE משתמש בכללי חומת אש של ענן וירטואלי פרטי (VPC) כדי לשלוט בתעבורה הנכנסת והיוצאת אל הפודים והצמתים. כברירת מחדל, GKE יוצר ומנהל באופן אוטומטי כללים מסוימים של חומת אש כדי לאפשר תעבורה חיונית, כמו תקשורת בין צמתים ו-Pods, ותעבורה למישור הבקרה של Kubernetes. ב-GKE, כברירת מחדל, נוצרים אוטומטית כללים בחומת האש של VPC שמאפשרים כניסה לשירותי LoadBalancer, אבל אתם יכולים להשבית את ההתנהגות הזו כדי לנהל כללים או מדיניות בחומת האש באופן ידני, או כדי להשתמש בתכונות מתקדמות של חומת האש.
כללי חומת האש שמאפשרים תעבורת נתונים נכנסת שנוצרו על ידי GKE הם לא כללי חומת האש הרלוונטיים שחלים על צמתים באשכול. הקבוצה המלאה של כללי חומת האש הרלוונטיים לתעבורת נתונים נכנסת ויוצאת מוגדרת מכללים במדיניות חומת אש היררכית, מדיניות חומת אש גלובלית לרשת, מדיניות חומת אש אזורית לרשת וכללי חומת אש אחרים של VPC.
כדאי לתכנן ולעצב את ההגדרות של האשכול, עומסי העבודה והשירותים יחד עם מנהלי הרשת ומהנדסי האבטחה של הארגון, ולהבין את מדיניות חומת האש ואת סדר ההערכה של הכללים כדי לדעת אילו כללים של חומת האש מקבלים עדיפות.
GKE יוצר רק כללים של חומת אש של VPC לתעבורת נתונים נכנסת (ingress), כי הוא מסתמך על כלל חומת האש המשתמע לתעבורת נתונים יוצאת (egress) עם העדיפות הנמוכה ביותר.
אם הגדרתם כללי חומת אש שחוסמים תעבורת נתונים יוצאת ברשת ה-VPC של האשכול, יכול להיות שתצטרכו ליצור כללים שמאפשרים תעבורת נתונים יוצאת כדי לאפשר תקשורת בין הצמתים, ה-Pods ומישור הבקרה של האשכול.
לדוגמה, אם יצרתם כלל חומת אש שחוסם תעבורת נתונים יוצאת (egress) לכל הפרוטוקולים והיציאות ולכל כתובות ה-IP של היעד, אתם צריכים ליצור כללי חומת אש שמאפשרים תעבורת נתונים יוצאת (egress), בנוסף לכללי תעבורת הנתונים הנכנסת (ingress) ש-GKE יוצר באופן אוטומטי. הקישוריות לנקודות קצה של מישור הבקרה תמיד משתמשת ביציאת יעד TCP 443, אבל הקישוריות בין הצמתים וה-Pods של האשכול יכולה להשתמש בכל פרוטוקול ויציאת יעד.
הכלים הבאים יכולים לעזור לכם לקבוע אילו כללים של חומת האש מאפשרים או חוסמים תעבורה:
כללי חומת אש
כברירת מחדל, GKE יוצר כללים לחומת האש באופן אוטומטי כשיוצרים את המשאבים הבאים:
- אשכולות GKE
- GKE Services
- שערי GKE ו-HTTPRoutes
- GKE Ingresses
אלא אם צוין אחרת, העדיפות של כל כללי חומת האש שנוצרו באופן אוטומטי היא 1,000, שהוא ערך ברירת המחדל של כללי חומת האש. אם אתם רוצים יותר שליטה בהתנהגות של חומת האש, אתם יכולים ליצור כללים לחומת האש עם עדיפות גבוהה יותר. כללי חומת אש עם עדיפות גבוהה יותר מוחלים לפני כללי חומת אש שנוצרו אוטומטית.
כללים לחומת אש באשכול GKE
מערכת GKE יוצרת את הכללים הבאים של חומת האש לתעבורת נתונים נכנסת (ingress) כשיוצרים אשכול:
| שם | מטרה | מקור | יעד (מגדיר את היעד) | פרוטוקולים ויציאות | עדיפות |
|---|---|---|---|---|---|
gke-[cluster-name]-[cluster-hash]-master |
עבור אשכולות Autopilot ואשכולות רגילים שמסתמכים על קישור בין רשתות VPC שכנות לקישוריות של נקודת קצה פרטית של מישור הבקרה. מאפשר למישור הבקרה לגשת ל-kubelet ול-metrics-server בצמתי האשכול. | טווח כתובות ה-IP של מישור הבקרה (/28) | תג צומת | TCP: 443 (metrics-server) ו-TCP: 10250 (kubelet) | 1000 |
gke-[cluster-name]-[cluster-hash]-vms
|
משמש לתקשורת בתוך האשכול שנדרשת על ידי מודל הרישות של Kubernetes. מאפשר לתוכנה שפועלת בצמתים לשלוח מנות, עם מקורות שתואמים לכתובות ה-IP של הצמתים, לכתובות ה-IP של היעד של ה-Pod ושל הצומת באשכול. לדוגמה, התנועה שמותרת על ידי הכלל הזה כוללת:
|
טווח כתובות ה-IP של הצומת או קבוצת-על של טווח כתובות ה-IP של הצומת:
|
תג צומת | TCP: 1-65535, UDP: 1-65535, ICMP | 1000 |
gke-[cluster-name]-[cluster-hash]-all |
מאפשר תעבורה בין כל ה-Pods באשכול, כפי שנדרש על ידי מודל הרשת של Kubernetes. |
Pod CIDR באשכולות שמופעל בהם CIDR של כמה Pods לא רציפים, כל בלוקי ה-CIDR של ה-Pods שבהם נעשה שימוש באשכול. |
תג צומת | TCP, UDP, SCTP, ICMP, ESP, AH | 1000 |
gke-[cluster-hash]-ipv6-all |
רק עבור אשכולות של רשתות עם פרוטוקול כפול. מאפשרת תעבורת נתונים בין צמתים ו-Pods באשכול. |
אותו טווח כתובות IP שהוקצה ב- |
תג צומת | TCP, UDP, SCTP, ICMP ל-IPv6, ESP, AH | 1000 |
gke-[cluster-name]-[cluster-hash]-inkubelet |
מתן גישה ליציאה 10255 (יציאה לקריאה בלבד של Kubelet) מ-CIDR של Pod פנימיים ומ-CIDR של צמתים באשכולות GKE חדשים שמריצים גרסה 1.23.6 ואילך. באשכולות שפועלות בהם גרסאות מתקדמות יותר מ-1.26.4-gke.500, נעשה שימוש ביציאה מאומתת של Kubelet (10250) במקום זאת. אל תוסיפו כללים לחומת האש שחוסמים את היציאה 10250 באשכול. |
חסימות CIDR של Pod פנימיות וחסימות CIDR של צומת. |
תג צומת | TCP: 10255 | 999 |
gke-[cluster-name]-[cluster-hash]-exkubelet |
חסימת גישה ציבורית ליציאה 10255 באשכולות GKE חדשים שמריצים גרסה 1.23.6 ואילך. |
0.0.0.0/0 |
תג צומת | TCP: 10255 | 1000 |
כללי חומת אש של שירות GKE
GKE יוצר את הכללים הבאים של חומת האש לתעבורת Ingress כשיוצרים Service. אפשר למנוע יצירה של חלק מהכללים האלה של חומת האש על ידי ניהול יצירת כללים של חומת האש ב-VPC.
| שם | מטרה | מקור | יעד (מגדיר את היעד) | פרוטוקולים ויציאות |
|---|---|---|---|---|
k8s-fw-[loadbalancer-hash] |
|
המקור הוא spec.loadBalancerSourceRanges. אם לא מציינים ערך לפרמטר spec.loadBalancerSourceRanges, ברירת המחדל היא 0.0.0.0/0.
פרטים נוספים זמינים במאמר בנושא כללים של חומת אש ורשימת היתרים של כתובות IP של מקורות. |
כתובת IP וירטואלית של איזון עומסים | TCP ו-UDP ביציאות שצוינו במניפסט השירות. |
k8s-fw-[loadbalancer-hash]-deny |
k8s-fw-[loadbalancer-hash]. |
0.0.0.0/0 | כתובת IP וירטואלית של איזון עומסים | הכול |
k8s-[cluster-id]-node-http-hc |
מאפשר בדיקות תקינות של שירות מאזן עומסי רשת חיצוני להעברת סיגנל ללא שינוי כשערך המאפיין externalTrafficPolicy מוגדר ל-Cluster.
|
|
כתובת IP וירטואלית של איזון עומסים | TCP: 10256 |
k8s-[loadbalancer-hash]-http-hc |
מאפשר בדיקות תקינות של שירות מאזן עומסי רשת חיצוני להעברת סיגנל ללא שינוי כש-externalTrafficPolicy מוגדר ל-Local.
|
|
תג צומת | יציאת TCP שהוגדרה על ידי spec.healthCheckNodePort. אם לא מציינים יציאה, מישור הבקרה של Kubernetes מקצה יציאה לבדיקת תקינות מטווח היציאות של הצומת.
פרטים נוספים זמינים במאמר בנושא יציאה לבדיקת תקינות. |
k8s-[cluster-id]-node-hc |
מאפשרת בדיקות תקינות של שירות מאזן עומסי רשת פנימי להעברת סיגנל ללא שינוי, כש-externalTrafficPolicy מוגדר ל-Cluster.
|
|
תג צומת | TCP: 10256 |
[loadbalancer-hash]-hc |
מאפשרת בדיקות תקינות של שירות מאזן עומסי רשת פנימי להעברת סיגנל ללא שינוי, כש-externalTrafficPolicy מוגדר ל-Local.
|
|
תג צומת | יציאת TCP שהוגדרה על ידי spec.healthCheckNodePort. אם לא מציינים יציאה, מישור הבקרה של Kubernetes מקצה יציאה לבדיקת תקינות מטווח היציאות של הצומת.
פרטים נוספים זמינים במאמר בנושא יציאה לבדיקת תקינות. |
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash] |
מאפשרת לתעבורת נתונים נכנסת (ingress) של IPv4 להגיע לשירות כשאחת מהאפשרויות הבאות מופעלת:
|
המקור הוא spec.loadBalancerSourceRanges. אם לא מציינים ערך לפרמטר spec.loadBalancerSourceRanges, ברירת המחדל היא 0.0.0.0/0.
פרטים נוספים זמינים במאמר בנושא כללים של חומת אש ורשימת היתרים של כתובות IP של מקורות. |
כתובת IP וירטואלית של איזון עומסים | TCP ו-UDP ביציאות שצוינו במניפסט השירות. |
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]-ipv6 |
מאפשרת לתנועת נתונים נכנסת ב-IPv6 להגיע לשירות כשאחת מהאפשרויות הבאות מופעלת:
|
מקור התוצאה: spec.loadBalancerSourceRanges אם לא מציינים ערך לפרמטר spec.loadBalancerSourceRanges, ברירת המחדל היא ::/0.
פרטים נוספים זמינים במאמר בנושא כללים של חומת אש ורשימת היתרים של כתובות IP של מקורות. |
כתובת IP וירטואלית של איזון עומסים | TCP ו-UDP ביציאות שצוינו במניפסט השירות. |
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]-deny |
דחייה של כל התנועה ב-IPv4 שלא אושרה במפורש על ידי הכלל k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash].
|
0.0.0.0/0 | כתובת IP וירטואלית של איזון עומסים | הכול |
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]-deny-ipv6 |
דחייה של כל תנועת ה-IPv6 שלא אושרה במפורש על ידי הכלל k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]-ipv6.
|
::/0 | כתובת IP וירטואלית של LoadBalancer או טווח של 96 כתובות | הכול |
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]-fw |
מאפשר בדיקות תקינות של השירות כשהערך של externalTrafficPolicy הוא Local ואחד מהשירותים הבאים מופעל:
|
|
כתובת IP וירטואלית של איזון עומסים | יציאת TCP שהוגדרה על ידי spec.healthCheckNodePort. אם לא מציינים יציאה, מישור הבקרה של Kubernetes מקצה יציאה לבדיקת תקינות מטווח היציאות של הצומת.
פרטים נוספים זמינים במאמר בנושא יציאה לבדיקת תקינות. |
k8s2-[cluster-id]-l4-shared-hc-fw |
מאפשר בדיקות תקינות של השירות כשהערך של externalTrafficPolicy הוא Cluster ואחד מהשירותים הבאים מופעל:
|
|
תג צומת | TCP: 10256 |
gke-[cluster-name]-[cluster-hash]-mcsd |
מאפשר למישור הבקרה לגשת אל kubelet ואל שרת המדדים בצמתי האשכול עבור שירותים מרובי-אשכולות. העדיפות של הכלל הזה היא 900. | כתובות IP של בדיקות תקינות | תג צומת | TCP, UDP, SCTP, ICMP, ESP, AH |
כללי חומת אש של GKE Gateway
כשיוצרים משאבי Gateway ו-HTTPRoute, GKE יוצר את הכללים הבאים של חומת האש של שער:
| שם | מטרה | מקור | יעד (מגדיר את היעד) | פרוטוקולים ויציאות |
|---|---|---|---|---|
|
מאפשר בדיקות תקינות של קבוצת נקודות קצה ברשת (NEG). הכלל הזה נוצר על ידי בקר השער כשיוצרים את משאב השער הראשון. בקר השער יכול לעדכן את הכלל הזה אם נוצרים עוד משאבי שער. |
|
תג צומת | TCP: כל יציאות היעד של מאגר התגים (ל-NEGs) |
כללי חומת אש של GKE Ingress
מערכת GKE יוצרת את הכללים הבאים של חומת האש לתעבורת נתונים נכנסת (ingress) כשיוצרים משאב Ingress:
| שם | מטרה | מקור | יעד (מגדיר את היעד) | פרוטוקולים ויציאות |
|---|---|---|---|---|
k8s-fw-l7-[random-hash] |
מאפשרת בדיקות תקינות של שירות הכלל הזה נוצר על ידי בקר Ingress כשנוצר משאב Ingress הראשון. בקר Ingress יכול לעדכן את הכלל הזה אם נוצרים עוד משאבי Ingress. |
|
תג צומת | TCP: 30000-32767, TCP:80 (למאזני עומסים פנימיים של אפליקציות), TCP: כל יציאות היעד של הקונטיינר (ל-NEG) |
ניהול יצירת כללים לחומת אש ב-VPC
כברירת מחדל, GKE יוצר באופן אוטומטי כללי חומת אש של VPC להרשאות כניסה לכל שירותי LoadBalancer. אם אתם רוצים לנהל בעצמכם את כללי חומת האש של שירותי LoadBalancer, אתם צריכים להשבית את היצירה האוטומטית של כללי חומת אש של VPC.
השבתת היצירה האוטומטית של כללי חומת אש ב-VPC עבור LoadBalancerServices חלה רק על המקרים הבאים:
- שירותים של מאזן עומסים פנימי באמצעות חלוקת משנה ב-GKE
- שירותי LoadBalancer חיצוניים שמבוססים על שירות לקצה העורפי
מידע על השבתת כללים של חומת אש שמנוהלים על ידי המשתמשים בשירותי LoadBalancer של GKE
VPC משותף
אם אתם משתמשים בשירותי Ingress או LoadBalancer, ויש לכם אשכול שנמצא ב-VPC משותף באמצעות רשת VPC משותפת, חשבון השירות של GKE בפרויקט השירות לא יכול ליצור ולעדכן כללי חומת אש של Ingress בפרויקט המארח. אתם יכולים להעניק לחשבון השירות של GKE בפרויקט שירות הרשאות ליצור ולנהל את משאבי חומת האש. מידע נוסף זמין במאמר בנושא שיתוף VPC.
כלל חומת האש שנדרש לתת-רשת מורחבת
אם מרחיבים את טווח ה-IPv4 הראשי של רשת המשנה של האשכול, GKE לא מעדכן אוטומטית את טווח המקור של כלל חומת האש gke-[cluster-name]-[cluster-hash]-vms. מכיוון שהצמתים באשכול יכולים לקבל כתובות IPv4 מהחלק המורחב של טווח ה-IPv4 הראשי של רשת המשנה, צריך ליצור כלל חומת אש באופן ידני כדי לאפשר תקשורת בין הצמתים באשכול.
כלל חומת האש לתעבורת נתונים נכנסת שצריך ליצור חייב לאפשר חבילות TCP ו-ICMP מטווח כתובות ה-IPv4 המורחב של רשת המשנה הראשית, והוא חייב לחול לפחות על כל הצמתים באשכול.
כדי ליצור כלל לחומת אש של תעבורת נכנסת שחל רק על הצמתים של האשכול, צריך להגדיר את יעד כלל חומת האש לאותו תג יעד שבו נעשה שימוש בgke-[cluster-name]-[cluster-hash]-vmsכלל חומת האש שנוצר אוטומטית של האשכול.
המאמרים הבאים
- סקירה כללית על רישות ב-GKE
- מידע נוסף על הגדרת מדיניות רשת לאפליקציות
- מידע נוסף על כללים מאוכלסים מראש של חומת אש ב- Cloud de Confiance
- מידע נוסף על יצירת כללים של חומת אש בפרויקטים שמשתמשים ב-VPC משותף.