תיאור: הבנת הגדרות הרשת של אשכול Dataproc. הטמעת מסלולי VPC, כללי חומת אש, גישה פרטית ל-Google ו-VPC משותף לפריסות מאובטחות עם כתובות IP פנימיות בלבד.
בדף הזה מוסבר על הדרישות והאפשרויות להגדרת רשת של אשכול Managed Service for Apache Spark.
הדרישות לקישוריות של Managed Service for Apache Spark
האשכול שלכם ב-Managed Service for Apache Spark צריך להיות ברשת של ענן וירטואלי פרטי (VPC) שעומדת בדרישות של נתיב וחומת אש כדי לגשת בצורה מאובטחת ל-Google APIs ולמשאבים אחרים.
דרישות לגבי מסלולים
כדי ליצור תקשורת בין הסוכן של Managed Service for Apache Spark שפועל במכונות וירטואליות של אשכול לבין Dataproc control API, ברשת ה-VPC של האשכול צריך להיות נתיב לשער האינטרנט. הדרישה הזו תקפה גם לאשכולות עם כתובות IP פנימיות בלבד.
כברירת מחדל, אשכולות של Managed Service for Apache Spark בגרסה 2.2 ואילך של תמונת המערכת מקצים מכונות וירטואליות עם כתובות IP פנימיות בלבד. ב-Managed Service for Apache Spark, הגישה הפרטית ל-Google (PGA) מופעלת באופן אוטומטי ברשת המשנה של האשכול, כדי לאפשר למכונות וירטואליות (VM) באשכול עם כתובות IP פנימיות להגיע לשירותים ול-Google APIs באמצעות נתיב ברירת מחדל שנוצר על ידי המערכת לשער האינטרנט שמוגדר כברירת מחדל.
| כלל | סוג | טווח כתובות ה-IP של היעד | עדיפות | מגבלות על היקף | הצעד הבא |
|---|---|---|---|---|---|
default-route-[id] |
סטטי | 0.0.0.0/0 |
1000 |
- | שער ברירת המחדל באינטרנט |
השימוש ב-PGA מבטיח שהתנועה בין האשכולות לא תעבור דרך האינטרנט הציבורי ולא תצא ממרכזי הנתונים של Google (ראו תרשים לדוגמה של PGA).
לא מומלץ למחוק את נתיב ברירת המחדל לשער האינטרנט. אם רוצים לשלוט בגישה לרשת לאינטרנט, כדאי להשתמש בכללים או במדיניות של חומת אש.
אם מחקתם את נתיב ברירת המחדל לשער האינטרנט, אתם צריכים להוסיף נתיב ברירת מחדל. טווח כתובות ה-IP של היעד צריך להיות 0.0.0.0/0 כי טווחי כתובות ה-IP של Dataproc control API לא קבועים.
דרישות לגבי חומת האש
ברשת ה-VPC של אשכול Managed Service for Apache Spark צריך לאפשר באופן מפורש את התעבורה הבאה:
תעבורה שנוצרת ממכונות וירטואליות באשכול Managed Service for Apache Spark אל Dataproc Control API וממכונות וירטואליות אחרות באשכול Managed Service for Apache Spark. התנועה הזו מותרת כברירת מחדל על ידי הכלל המשתמע allow-all של יציאה (egress) ברשת ה-VPC. אם הוספתם כללים של חומת אש שדוחים תעבורת נתונים יוצאת (egress), צריך ליצור כלל של חומת אש שמאפשר תעבורת נתונים יוצאת.
תנועת התגובה מ-Dataproc Control API למכונות הווירטואליות של אשכול Managed Service for Apache Spark מותרת כברירת מחדל, בגלל מצב ה-VPC network firewall.
תעבורה שמתקבלת במכונות וירטואליות של אשכול Managed Service for Apache Spark ממכונות וירטואליות אחרות של אשכול Managed Service for Apache Spark. התנועה הזו תידחה כברירת מחדל על ידי כלל חומת האש המרומזת של VPC network. צריך ליצור כלל חומת אש שמאפשר תעבורת נתונים נכנסת.
- כדי להגביל את תחולת הכללים הנדרשים של חומת האש רק למכונות וירטואליות של אשכולות Managed Service for Apache Spark, צריך להשתמש בתגי רשת למכונות הווירטואליות של אשכולות Managed Service for Apache Spark. אם לא משתמשים בתגי רשת, אפשר לציין יעדים לפי חשבון השירות שמשמש את המכונות הווירטואליות של האשכול. אפשרות אחרת היא להגדיר כללי חומת אש שיחולו על כל המכונות הווירטואליות ברשת ה-VPC.
- כדי לשפר את האבטחה של הגישה לרשת והקישוריות שלה, כדאי להשתמש בתגי אבטחה במקום בתגי רשת כדי להגדיר את המקורות והיעדים של כללי חומת האש.
יצירת כלל חומת אש להרשאת תעבורת נתונים נכנסת (ingress)
אם אתם או מנהל הרשת או האבטחה שלכם יוצרים כלל חומת אש לכניסה כדי להחיל אותו על רשת VPC של אשכול Managed Service for Apache Spark, הכלל צריך לכלול את המאפיינים הבאים:
הפרמטר sources מציין את המקורות של החבילות. כל מכונות ה-VM באשכול Managed Service for Apache Spark צריכות להיות מסוגלות לתקשר זו עם זו. אפשר לזהות את המכונות הווירטואליות באשכול לפי טווח כתובות ה-IP (הטווח הראשי של רשת המשנה של אשכול Managed Service for Apache Spark), תגי רשת או חשבונות שירות שמשויכים למכונות הווירטואליות.
ביעדים של הכלל צריך לזהות את המכונות הווירטואליות של האשכול. יעדי הטירגוט יכולים להיות כל המכונות הווירטואליות ברשת ה-VPC, או שאתם יכולים לזהות מכונות וירטואליות לפי תג רשת יעד או חשבון שירות יעד.
הכלל חייב לכלול את הפרוטוקולים והיציאות הבאים:
- TCP (כל היציאות, 0 עד 65535)
- UDP (כל היציאות, 0 עד 65535)
- ICMP
Managed Service for Apache Spark משתמש בשירותים שפועלים בכמה יציאות. ציון של כל היציאות עוזר להפעיל את השירותים בהצלחה.
העדיפות של הכלל צריכה להיות גבוהה יותר מהעדיפות של כל כלל אחר לחומת אש שחוסם תנועה נכנסת, שחל על אותם מקורות ויעדים.
יצירת כלל בחומת האש שמאפשר תעבורת נתונים יוצאת
אם אתם או מנהל הרשת או האבטחה שלכם יוצרים כלל חומת אש ליציאה כדי להחיל אותו על רשת VPC של אשכול Managed Service for Apache Spark, הכלל צריך לכלול את המאפיינים הבאים:
הפרמטר destinations מציין את היעדים של החבילות. כל מכונות ה-VM באשכול Managed Service for Apache Spark צריכות להיות מסוגלות ליזום תנועה אחת לשנייה ול-Dataproc control API. כתובות ה-IP של API הבקרה הן לא סטטיות, ולכן צריך לציין את היעד לפי טווח כתובות IP
0.0.0.0/0.ביעדים של הכלל צריך לזהות את המכונות הווירטואליות של האשכול. יעדי הטירגוט יכולים להיות כל המכונות הווירטואליות ברשת ה-VPC, או שאתם יכולים לזהות מכונות וירטואליות לפי תג רשת יעד או חשבון שירות יעד.
הכלל חייב לכלול את הפרוטוקולים והיציאות הבאים:
- TCP (כל היציאות, 0 עד 65535)
- UDP (כל היציאות, 0 עד 65535)
- ICMP
Managed Service for Apache Spark משתמש בשירותים שפועלים בכמה יציאות. ציון של כל היציאות עוזר להפעיל את השירותים בהצלחה.
העדיפות של הכלל צריכה להיות גבוהה יותר מהעדיפות של כל כללי חומת האש של תעבורת נתונים יוצאת (egress) שחלים על אותם יעדים ומטרות.
אבחון של כללי חומת אש ברשת VPC
כדי לבדוק מנות שלא עברו עיבוד על ידי כללי חומת אש עם עדיפות גבוהה יותר, אפשר ליצור את שני כללי חומת האש הבאים עם עדיפות נמוכה (65534). בניגוד לכללי חומת האש המשתמעים, אתם יכולים להפעיל רישום ביומן של כללי חומת האש בכל אחד מהכללים האלה בעדיפות נמוכה:
כלל לדחיית תעבורת נתונים נכנסת (מקורות
0.0.0.0/0, כל הפרוטוקולים, כל יעדי התעבורה ברשת ה-VPC)כלל לדחיית תעבורת נתונים יוצאת (יעדים
0.0.0.0/0, כל הפרוטוקולים, כל היעדים ברשת ה-VPC)
בעזרת הכללים האלה בעדיפות נמוכה וניהול היומנים של כללי חומת האש, אתם יכולים לרשום ביומן מנות שלא עברו עיבוד על ידי כללי חומת אש בעדיפות גבוהה יותר, ואולי ספציפיים יותר. שני הכללים האלה בעדיפות נמוכה גם תואמים לשיטות המומלצות לאבטחה, כי הם מיישמים אסטרטגיה של 'השלכת מנות סופיות'.
כדאי לבדוק את היומנים של כללי חומת האש כדי להחליט אם רוצים ליצור או לשנות כללים בעדיפות גבוהה יותר כדי לאפשר חבילות. לדוגמה, אם מנות שנשלחות בין מכונות וירטואליות של אשכול Managed Service for Apache Spark מושמטות, זה יכול להיות סימן לכך שצריך לשנות את כללי חומת האש.
יצירת רשת VPC
במקום להשתמש ברשת ה-VPC default, אפשר ליצור רשת VPC משלכם במצב אוטומטי או מותאם אישית. כשיוצרים את האשכול, משייכים את הרשת לאשכול.
סביבת Assured Workloads: כשמשתמשים בסביבת Assured Workloads לצורך עמידה בתקנות, האשכול, רשת ה-VPC שלו והקטגוריות שלו ב-Cloud Storage צריכים להיכלל בסביבת Assured Workloads.
יצירת אשכול שמשתמש ברשת ה-VPC
מסוףGoogle Cloud
כדי להגדיר את הרשת:
- פותחים את הדף Create cluster.
- לוחצים על הגדרה נוספת כדי להרחיב את הקטע.
- עורכים את הגדרות הרשת.
- בחלונית שנפתחת, בוחרים את הרשת ואת רשת המשנה. תיבת הסימון כתובת IP פנימית בלבד מופעלת כברירת מחדל.
CLI של gcloud
משתמשים ב-gcloud dataproc clusters create עם הדגל ‑‑network או ‑‑subnet כדי ליצור אשכול ברשת משנה ברשת שלכם.
אם משתמשים בדגל ‑‑network, האשכול ישתמש ברשת משנה עם אותו שם כמו הרשת שצוינה באזור שבו האשכול נוצר.
--network example. רשתות במצב אוטומטי נוצרות עם רשתות משנה בכל אזור, ולכל רשת משנה ניתן שם הרשת. לכן, אפשר להעביר את שם רשת ה-VPC במצב אוטומטי אל הדגל ‑‑network.
האשכול ישתמש בתת-הרשת של ה-VPC במצב אוטומטי באזור שצוין באמצעות הדגל ‑‑region.
gcloud dataproc clusters create CLUSTER_NAME \ --network NETWORK_NAME \ --region=REGION \ ... other args ...
--subnet example. אפשר להשתמש בדגל ‑‑subnet
כדי ליצור אשכול שמשתמש בתת-רשת של רשת VPC במצב אוטומטי או בהתאמה אישית באזור האשכול. מציינים את הנתיב המלא של משאב רשת המשנה.
gcloud dataproc clusters create CLUSTER_NAMEW \ --subnet projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \ --region=REGION \ ... other args ...
API בארכיטקטורת REST
אפשר לציין את השדה networkUri או subnetworkUri
GceClusterConfig כחלק מבקשת clusters.create.
דוגמה
POST /v1/projects/my-project-id/regions/us-central1/clusters/
{
"projectId": "PROJECT_ID",
"clusterName": CLUSTER_NAME,
"config": {
"configBucket": "",
"gceClusterConfig": {
"subnetworkUri": SUBNET_NAME,
},
...
יצירת אשכול שמשתמש ברשת VPC בפרויקט אחר
אפשר להשתמש באשכול Managed Service for Apache Spark ברשת VPC משותפת שמוגדרת בפרויקט מארח. הפרויקט שבו נוצר אשכול Managed Service for Apache Spark נקרא פרויקט השירות.
מאתרים את מספר הפרויקט של אשכול Managed Service for Apache Spark:
- פותחים את הדף IAM & Admin Settings במסוףGoogle Cloud . בוחרים את הפרויקט שבו רוצים ליצור את אשכול Managed Service for Apache Spark. מעתיקים את מזהה הפרויקט.
חשבון משתמש עם התפקיד 'אדמין של VPC משותף' צריך לבצע את השלבים הבאים. מידע רקע זמין במאמר הוראות להגדרת VPC משותף.
מוודאים שהפרויקט המארח של ה-VPC המשותף מופעל.
מצרפים את הפרויקט עם אשכול Managed Service for Apache Spark לפרויקט המארח.
מגדירים את חשבון השירות של סוכן השירות Managed Service for Apache Spark (
service-[project-number]@dataproc-accounts.iam.gserviceaccount.com) כך שיהיה לו התפקיד Network User בפרויקט המארח:פותחים את הדף IAM & Admin במסוף Google Cloud .
משתמשים בבורר הפרויקטים כדי לבחור את פרויקט המארח החדש.
לוחצים על הענקת גישה.
ממלאים את טופס הענקת הגישה:
הוספת חשבונות משתמשים: מזינים את חשבון השירות.
הקצאת תפקידים: מזינים Compute Network בתיבת המסנן, ואז בוחרים בתפקיד Compute Network User.
לוחצים על Save.
אחרי שחשבון השירות מקבל את התפקיד
Network Userבפרויקט המארח, יוצרים אשכול שמשתמש ברשת ה-VPC המשותפת.
יצירת אשכול שמשתמש בתת-רשת VPC בפרויקט אחר
אפשר להשתמש באשכול Managed Service for Apache Spark בתת-רשת של VPC משותף שמוגדרת בפרויקט מארח. הפרויקט שבו נוצר אשכול Managed Service for Apache Spark נקרא פרויקט השירות.
מאתרים את מספר הפרויקט של אשכול Managed Service for Apache Spark:
- פותחים את הדף IAM & Admin Settings במסוףGoogle Cloud . בוחרים את הפרויקט שבו רוצים ליצור את אשכול Managed Service for Apache Spark. מעתיקים את מזהה הפרויקט.
חשבון משתמש עם התפקיד 'אדמין של VPC משותף' צריך לבצע את השלבים הבאים. מידע רקע זמין במאמר הוראות להגדרת VPC משותף.
מוודאים שהפרויקט המארח של ה-VPC המשותף מופעל.
מצרפים את הפרויקט עם אשכול Managed Service for Apache Spark לפרויקט המארח.
מגדירים את חשבון השירות של סוכן השירות Managed Service for Apache Spark (
service-[project-number]@dataproc-accounts.iam.gserviceaccount.com) כך שיהיה לו התפקיד Network User בפרויקט המארח:פותחים את הדף VPC networks במסוף Google Cloud .
משתמשים ברשימת הפרויקטים כדי לבחור את פרויקט המארח.
לוחצים על הרשת שמכילה את רשת המשנה שבה ישתמש אשכול Managed Service for Apache Spark.
בדף VPC Network Details (פרטי רשת ה-VPC), לוחצים על תיבת הסימון לצד השם של תת-הרשת שבה ישתמש האשכול.
אם חלונית המידע לא פתוחה, לוחצים על Show Info Panel.
מבצעים את השלבים הבאים לכל חשבון שירות:
בחלונית הפרטים, לוחצים על הוספת גורם ראשי.
ממלאים את הטופס 'הענקת גישה':
הוספת חשבונות משתמשים: מזינים את חשבון השירות.
הקצאת תפקידים: מזינים Compute Network בתיבת המסנן, ואז בוחרים בתפקיד Compute Network User.
לוחצים על Save.
אחרי שחשבון השירות מקבל את התפקיד
Network Userבפרויקט המארח, יוצרים אשכול שמשתמש בתת-הרשת של ה-VPC המשותף.
יצירת אשכול עם כתובות IP פנימיות בלבד
הקטע הזה רלוונטי לקלאסטרים של גרסאות תמונות שנוצרו לפני 2.2. האפשרות 'מכונות וירטואליות באשכול עם כתובות IP פנימיות בלבד' מופעלת כברירת מחדל כשיוצרים אשכולות של Managed Service for Apache Spark עם גרסאות תמונה 2.2 ומעלה.
אתם יכולים להשתמש במסוף Google Cloud , ב-CLI של gcloud או ב-Dataproc API כדי ליצור אשכול עם כתובות IP פנימיות בלבד. שימו לב: כשמפעילים את האפשרות 'כתובות IP פנימיות בלבד' ב-Managed Service for Apache Spark, מופעלת אוטומטית גישה פרטית ל-Google ברשת המשנה האזורית של האשכול, כדי לאפשר חיבורים לשירותים ולממשקי Google API.
מסוףGoogle Cloud
כדי להגדיר רק כתובות IP פנימיות:
- פותחים את הדף Create cluster.
- לוחצים על הגדרה נוספת כדי להרחיב את הקטע.
- עורכים את הגדרות הרשת.
- בחלונית שנפתחת, בוחרים את הרשת ואת רשת המשנה. מסמנים את תיבת הסימון Internal IP only (כתובת IP פנימית בלבד).
CLI של gcloud
אפשר ליצור אשכול עם כתובות IP פנימיות בלבד באמצעות הפקודה gcloud dataproc clusters create עם הדגל ‑‑no-address.
gcloud dataproc clusters create CLUSTER_NAME \ --no-address \ --network NETWORK_NAME \ --region=REGION \ ... other args ...
מכיוון שרשתות במצב אוטומטי נוצרות עם רשתות משנה בכל אזור עם אותו שם כמו הרשת במצב אוטומטי, אפשר להעביר את השם של הרשת במצב אוטומטי אל ‑‑network flag כדי ליצור אשכול שישתמש ברשת המשנה במצב אוטומטי באזור של האשכול.
לחלופין, אפשר להשתמש בדגל ‑‑subnet כדי ליצור אשכול שישתמש בתת-רשת אוטומטית או מותאמת אישית באזור שבו האשכול ייווצר. מעבירים את הדגל ‑‑subnet את הנתיב המלא של המשאב של תת-הרשת.
gcloud dataproc clusters create cluster-name \ --no-address \ --subnet projects/project-id/regions/region/subnetworks/subnetwork-name \ --region=region \ ... other args ...
API בארכיטקטורת REST
אפשר להשתמש בשדה GceClusterConfig.internalIpOnly כחלק מבקשת clusters.create כדי ליצור אשכול עם כתובות IP פנימיות בלבד.
לדוגמה:
POST /v1/projects/my-project-id/regions/us-central1/clusters/
{
"projectId": "my-project-id",
"clusterName": "example-cluster",
"config": {
"configBucket": "",
"gceClusterConfig": {
"subnetworkUri": "custom-subnet-1",
"zoneUri": "us-central1-b",
"internalIpOnly": true
},
...
הורדת יחסי תלות באמצעות אשכולות עם כתובות IP פנימיות בלבד
כברירת מחדל, לאשכולות עם כתובות IP פנימיות בלבד אין גישה לאינטרנט. לכן, משימות שמורידות תלות מהאינטרנט, כמו משימות שמורידות חבילות תלות של Spark מ-Maven Central, ייכשלו. יש כמה דרכים לעקוף את הבעיה:
משתמשים ב-Cloud NAT כדי לאפשר גישה של האשכול לאינטרנט.
יוצרים קובץ אימג' בהתאמה אישית שכולל את יחסי התלות (לדוגמה, חבילות של יחסי תלות ב-Spark ב-
/usr/lib/spark/jars/).מעלים את התלות לקטגוריה של Cloud Storage, ואז משתמשים בפעולת אתחול כדי להוריד את התלות מהקטגוריה במהלך יצירת האשכול.
Managed Service for Apache Spark ורשתות VPC Service Controls
בעזרת VPC Service Controls, אדמינים יכולים להגדיר מתחם אבטחה היקפית מסביב למשאבים של שירותים שמנוהלים על ידי Google, וכך לשלוט בתקשורת אל השירותים האלה וביניהם.
כשמשתמשים ברשתות של VPC Service Controls עם אשכולות של Managed Service for Apache Spark, חשוב לשים לב למגבלות ולשיטות הבאות:
כדי להתקין רכיבים מחוץ ל-service perimeter של VPC Service Controls, צריך ליצור קובץ אימג' בהתאמה אישית של Managed Service for Apache Spark שכולל התקנה מראש של הרכיבים, ואז ליצור את האשכול באמצעות קובץ האימג' בהתאמה אישית.
מידע נוסף זמין במאמר שלבים מיוחדים להגנה באמצעות VPC Service Controls ב-Managed Service for Apache Spark.
המאמרים הבאים
- כדי לפתור בעיות שקשורות ליצירת אשכול של Managed Service for Apache Spark, אפשר לעיין במאמר פתרון בעיות שקשורות ליצירת אשכול.