בדף הזה מוסבר על כללי חומת האש של VPC שמאפשרים תנועה נכנסת, וש-Google Kubernetes Engine (GKE) יוצר באופן אוטומטי כברירת מחדל ב- Google Cloud.
חומות אש רלוונטיות וחומות אש לתעבורת נתונים יוצאת
ב-GKE נעשה שימוש בכללי חומת אש של ענן וירטואלי פרטי (VPC) כדי לשלוט בתנועה הנכנסת והיוצאת לפודים ולצמתים. כברירת מחדל, GKE יוצר ומנהל באופן אוטומטי כללים מסוימים של חומת אש כדי לאפשר תעבורה חיונית, כמו תקשורת בין צמתים ו-Pods, ותעבורה למישור הבקרה של Kubernetes. כברירת מחדל, GKE יוצר באופן אוטומטי כללי חומת אש של VPC שמאפשרים תנועה נכנסת לשירותי LoadBalancer, אבל אתם יכולים להשבית את ההתנהגות הזו כדי לנהל באופן ידני את כללי חומת האש או המדיניות, או להשתמש בתכונות מתקדמות של חומת האש.
כללי חומת האש שמאפשרים תעבורת נתונים נכנסת (ingress) שנוצרו על ידי GKE הם לא כללי חומת האש הרלוונטיים היחידים שחלים על צמתים באשכול. הקבוצה המלאה של כללי חומת האש הרלוונטיים לתעבורת נתונים נכנסת ויוצאת מוגדרת מכללים במדיניות חומת אש היררכית, מדיניות חומת אש גלובלית לרשת, מדיניות חומת אש אזורית לרשת וכללי חומת אש אחרים של VPC.
כדאי לתכנן ולעצב את ההגדרות של האשכול, עומסי העבודה והשירותים יחד עם מנהלי הרשת ומהנדסי האבטחה בארגון. חשוב להבין את מדיניות חומת האש ואת סדר ההערכה של הכללים כדי לדעת אילו כללי חומת אש מקבלים עדיפות.
GKE יוצר רק כללים של חומת אש של VPC לתעבורת נתונים נכנסת (ingress), כי הוא מסתמך על כלל חומת האש המשתמע שמאפשר תעבורת נתונים יוצאת (egress) עם העדיפות הכי נמוכה.
אם הגדרתם כללי חומת אש לדחיית תעבורת נתונים יוצאת ברשת ה-VPC של האשכול, יכול להיות שתצטרכו ליצור כללים לאישור תעבורת נתונים יוצאת כדי לאפשר תקשורת בין צמתים, Pods ומישור הבקרה של האשכול.
לדוגמה, אם יצרתם כלל חומת אש לדחיית תעבורת נתונים יוצאת לכל הפרוטוקולים, היציאות וכתובות ה-IP של היעד, אתם צריכים ליצור כללי חומת אש לאישור תעבורת נתונים יוצאת בנוסף לכללי תעבורת הנתונים הנכנסת ש-GKE יוצר באופן אוטומטי. הקישוריות לנקודות הקצה של מישור הבקרה תמיד משתמשת ביציאת היעד TCP 443, אבל הקישוריות בין הצמתים וה-Pods של האשכול יכולה להשתמש בכל פרוטוקול ויציאת יעד.
הכלים הבאים יכולים לעזור לכם לקבוע אילו כללים של חומת האש מאפשרים או חוסמים תעבורה:
כללי חומת אש
כברירת מחדל, GKE יוצר כללי חומת אש באופן אוטומטי כשיוצרים את המשאבים הבאים:
- אשכולות GKE
- שירותי GKE
- GKE Gateways ו-HTTPRoutes
- GKE Ingresses
אלא אם צוין אחרת, העדיפות של כל כללי חומת האש שנוצרו באופן אוטומטי היא 1000, שהוא ערך ברירת המחדל של כללי חומת האש. אם אתם רוצים יותר שליטה בהתנהגות של חומת האש, אתם יכולים ליצור כללים לחומת האש עם עדיפות גבוהה יותר. כללי חומת אש עם עדיפות גבוהה יותר מוחלים לפני כללי חומת אש שנוצרו באופן אוטומטי.
כללי חומת אש של אשכולות GKE
כשיוצרים אשכול, GKE יוצר את הכללים הבאים של חומת האש לתעבורת נתונים נכנסת (ingress):
| שם | מטרה | מקור | יעד (מגדיר את היעד) | פרוטוקול ויציאות | עדיפות |
|---|---|---|---|---|---|
gke-[cluster-name]-[cluster-hash]-master |
למערכות Autopilot ולמערכות Standard שמסתמכות על קישור בין רשתות 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. |
CIDR של Pod באשכולות שמופעל בהם 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 יוצר את הכללים הבאים של חומת האש לתעבורת נכנסת כשיוצרים 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 |
מאפשרת לתעבורת נתונים נכנסת (ingress) ב-IPv6 להגיע לשירות כשאחת מהאפשרויות הבאות מופעלת:
|
מקור התוצאה: spec.loadBalancerSourceRanges אם לא מציינים את spec.loadBalancerSourceRanges, ברירת המחדל היא ::/0.
לפרטים נוספים, ראו כללי חומת אש ורשימת היתרים של כתובות IP של מקור. |
כתובת ה-IP הווירטואלית של LoadBalancer | 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 הווירטואלית של איזון העומסים או טווח של 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 ול-metrics-server בצמתי האשכול עבור שירותים מרובי-אשכולות. העדיפות של הכלל הזה היא 900. | כתובות IP של בדיקות תקינות | תג צומת | TCP, UDP, SCTP, ICMP, ESP, AH |
כללי חומת אש ב-GKE Gateway
כשיוצרים משאבי Gateway ו-HTTPRoute, GKE יוצר את כללי חומת האש הבאים של שערים:
| שם | מטרה | מקור | יעד (מגדיר את היעד) | פרוטוקול ויציאות |
|---|---|---|---|---|
|
מאפשר בדיקות תקינות של קבוצה של נקודות קצה ברשת (NEG). הכלל הזה נוצר על ידי בקר השער כשהמשאב הראשון של השער נוצר. הבקרה של השער יכולה לעדכן את הכלל הזה אם נוצרים עוד משאבים של השער. |
|
0.0.0.0/0 | TCP: 1-65535 |
כללי חומת אש של GKE Ingress
מערכת GKE יוצרת את הכללים הבאים של חומת האש של Ingress כשיוצרים משאב Ingress:
| שם | מטרה | מקור | יעד (מגדיר את היעד) | פרוטוקול ויציאות |
|---|---|---|---|---|
k8s-fw-l7-[random-hash] |
מאפשרת בדיקות תקינות של הכלל הזה נוצר על ידי בקר Ingress כשנוצר משאב Ingress ראשון. בקר Ingress יכול לעדכן את הכלל הזה אם נוצרים עוד משאבי Ingress. |
|
תג צומת | TCP: 30000-32767, TCP:80 (למאזני עומסים של אפליקציות פנימיים), TCP: כל יציאות היעד של הקונטיינר (ל-NEGs) |
ניהול יצירת כללים לחומת אש ב-VPC
כברירת מחדל, GKE יוצר באופן אוטומטי כללים של חומת אש ב-VPC שמאפשרים תעבורת נתונים נכנסת לכל שירות LoadBalancer. אם אתם רוצים לנהל בעצמכם את כללי חומת האש של שירותי LoadBalancer, אתם צריכים להשבית את היצירה האוטומטית של כללי חומת האש של VPC.
השבתת היצירה האוטומטית של כללי חומת אש של VPC עבור LoadBalancer Services חלה רק על:
- שירותים של מאזן עומסים פנימי באמצעות חלוקת משנה ב-GKE
- שירותי איזון עומסים חיצוניים שמבוססים על שירות לקצה העורפי
איך משביתים את הכללים של חומת האש שמנוהלים על ידי המשתמשים בשירותי LoadBalancer ב-GKE
VPC משותף
אם אתם משתמשים בשירותי Ingress או LoadBalancer, ויש לכם אשכול שנמצא ב-VPC משותף באמצעות רשת VPC משותפת, חשבון השירות של GKE בפרויקט השירות לא יכול ליצור ולעדכן כללי חומת אש שמאפשרים תעבורת נתונים נכנסת בפרויקט המארח. אתם יכולים לתת לחשבון השירות של GKE בפרויקט שירות הרשאות ליצור ולנהל את משאבי חומת האש. מידע נוסף זמין במאמר בנושא VPC משותף.
כלל חומת אש שנדרש עבור רשת משנה מורחבת
אם מרחיבים את טווח ה-IPv4 הראשי של רשת המשנה של האשכול, GKE לא מעדכן באופן אוטומטי את טווח המקור של כלל חומת האש gke-[cluster-name]-[cluster-hash]-vms. מכיוון שהצמתים באשכול יכולים לקבל כתובות IPv4 מהחלק המורחב של טווח ה-IPv4 הראשי של תת-הרשת, צריך ליצור כלל חומת אש באופן ידני כדי לאפשר תקשורת בין הצמתים באשכול.
כלל חומת האש לתעבורת נתונים נכנסת שצריך ליצור חייב לאפשר חבילות TCP ו-ICMP מטווח כתובות ה-IPv4 המורחב של רשת המשנה הראשית, והוא צריך לחול לפחות על כל הצמתים באשכול.
כדי ליצור כלל חומת אש לתעבורת נכנסת שחל רק על הצמתים של האשכול, צריך להגדיר את היעד של כלל חומת האש לאותה תגית יעד שבה נעשה שימוש בכלל חומת האש gke-[cluster-name]-[cluster-hash]-vms שנוצר אוטומטית באשכול.
המאמרים הבאים
- סקירה כללית על רשתות ב-GKE
- מידע על הגדרת מדיניות רשת לאפליקציות
- מידע נוסף על כללים אחרים של חומת אש שמולאו מראש ב- Google Cloud
- מידע נוסף על יצירת כללים של חומת אש בפרויקטים שמשתמשים ב-VPC משותף