הגדרת רשת של אשכול Managed Service for Apache Spark

תיאור: הסבר על הגדרת הרשת של אשכול Dataproc. הטמעת נתיבי VPC, כללי חומת אש, גישה פרטית ל-Google ו-VPC משותף לפריסות מאובטחות עם כתובות IP פנימיות בלבד.

בדף הזה מוסבר על האפשרויות והדרישות להגדרת הרשת של אשכולות Managed Service for Apache Spark.

דרישות הקישוריות של Managed Service for Apache Spark

כדי לגשת בצורה מאובטחת לממשקי Google API ולמשאבים אחרים, אשכול Managed Service for Apache Spark צריך להיות ברשת VPC שעומדת בדרישות של המסלול וחומת האש.

דרישות לגבי המסלול

כדי ליצור תקשורת בין הסוכן של 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) ברשת המשנה של האשכול, כדי לאפשר למכונות הווירטואליות של האשכול עם כתובות IP פנימיות להגיע לממשקי ה-API ולשירותים של Google באמצעות נתיב ברירת מחדל שנוצר על ידי המערכת לשער ברירת המחדל לאינטרנט.

כלל סוג טווח כתובות ה-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 אל ממשק ה-API לבקרה של Dataproc ואל מכונות וירטואליות אחרות של אשכול Managed Service for Apache Spark. התנועה הזו מותרת כברירת מחדל על ידי הכלל המשתמע allow-all של תעבורת הנתונים היוצאת ברשת ה-VPC. אם הוספתם כללים של חומת אש שדוחים תעבורת נתונים יוצאת (egress) וגוברים על כללים אחרים, צרו כלל של חומת אש שמאפשר תעבורת נתונים יוצאת.

  • תנועת התגובה מ-Dataproc control API למכונות הווירטואליות של אשכול Managed Service for Apache Spark מותרת כברירת מחדל, בגלל שמירת המצב של חומת האש של רשת ה-VPC.

  • תנועה שהתקבלה במכונות וירטואליות של אשכול Managed Service for Apache Spark ממכונות וירטואליות אחרות של אשכול Managed Service for Apache Spark. כברירת מחדל, התנועה הזו תידחה על ידי כלל חומת האש המשתמע "דחיית כל תעבורת הנתונים הנכנסת" של רשת ה-VPC. צריך ליצור כלל חומת אש שמאפשר תעבורת נתונים נכנסת (ingress).

שיטות מומלצות:

  • משתמשים בתגי רשת למכונות הווירטואליות של אשכול Managed Service for Apache Spark, כדי להגביל את תחולת כללי חומת האש הנדרשים למכונות הווירטואליות של אשכול Managed Service for Apache Spark בלבד. אם אתם לא משתמשים בתגי רשת, אתם יכולים לציין יעדים לפי חשבון השירות שמשמש את המכונות הווירטואליות של האשכול. אחרת, אפשר להגדיר כללי חומת אש שיחולו על כל המכונות הווירטואליות ברשת ה-VPC.
  • כדי לשפר את האבטחה של הגישה לרשת והקישוריות, השתמשו בתגים מאובטחים במקום בתגי רשת כדי להגדיר את המקורות והיעדים של כללי חומת האש.

יצירת כלל חומת אש לאישור תעבורת נתונים נכנסת (ingress)

אם אתם או האדמין של הרשת או האבטחה יוצרים כלל חומת אש לתעבורת נתונים נכנסת כדי להחיל אותו על רשת VPC של אשכול Managed Service for Apache Spark, הכלל צריך לעמוד בתנאים הבאים:

  • הפרמטר sources מציין את מקורות החבילות. כל המכונות הווירטואליות באשכול של 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 מציין את יעדי החבילות. כל המכונות הווירטואליות באשכול של 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). בניגוד לכללי חומת האש המשתמעים, אתם יכולים להפעיל רישום ביומן של כללי חומת האש בכל אחד מהכללים הבאים בעלי העדיפות הנמוכה:

  1. כלל דחייה של תעבורת נתונים נכנסת (מקורות 0.0.0.0/0, כל הפרוטוקולים, כל היעדים ברשת ה-VPC)

  2. כלל דחייה של תעבורת נתונים יוצאת (יעדים 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

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

  1. פותחים את הדף Create cluster.
  2. לוחצים על הגדרות נוספות כדי להרחיב את הקטע.
  3. עורכים את הגדרות הרשת.
  4. בחלונית שנפתחת, בוחרים את הרשת ואת רשת המשנה. תיבת הסימון Internal IP only מסומנת כברירת מחדל.

‫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 נקרא פרויקט השירות.

  1. מאתרים את מספר הפרויקט של אשכול Managed Service for Apache Spark:

    1. פותחים את הדף Settings בקטע IAM & Admin במסוףGoogle Cloud . בוחרים את הפרויקט שבו רוצים ליצור את האשכול של Managed Service for Apache Spark. מעתיקים את מזהה הפרויקט.
  2. חשבון משתמש עם התפקיד "אדמין של VPC משותף" צריך לבצע את השלבים הבאים. למידע רקע, קראו את ההוראות להגדרת VPC משותף.

    1. מוודאים שהפרויקט המארח של ה-VPC המשותף מופעל.

    2. מקשרים את הפרויקט עם אשכול Managed Service for Apache Spark לפרויקט המארח.

    3. מגדירים את חשבון השירות של סוכן השירות של Managed Service for Apache Spark (service-[project-number]@dataproc-accounts.iam.gserviceaccount.com) כך שיהיה לו את התפקיד משתמש ברשת בפרויקט המארח:

      1. פותחים את הדף IAM & Admin במסוף Google Cloud .

      2. בוחרים את הפרויקט המארח החדש באמצעות בורר הפרויקטים.

      3. לוחצים על הענקת גישה.

      4. ממלאים את הטופס "הענקת גישה":

        1. Add principals: מזינים את חשבון השירות.

        2. הקצאת תפקידים: מזינים "Compute Network" בתיבת הסינון ובוחרים את התפקיד Compute Network User.

        3. לוחצים על Save.

  3. אחרי שחשבון השירות מקבל את התפקיד Network User בפרויקט המארח, יוצרים אשכול שמשתמש ברשת ה-VPC המשותפת.

יצירת אשכול שמשתמש ברשת משנה של VPC בפרויקט אחר

אשכול Managed Service for Apache Spark יכול להשתמש ברשת משנה של VPC משותף שמוגדרת בפרויקט מארח. הפרויקט שבו נוצר האשכול של Managed Service for Apache Spark נקרא פרויקט השירות.

  1. מאתרים את מספר הפרויקט של אשכול Managed Service for Apache Spark:

    1. פותחים את הדף Settings בקטע IAM & Admin במסוףGoogle Cloud . בוחרים את הפרויקט שבו רוצים ליצור את האשכול של Managed Service for Apache Spark. מעתיקים את מזהה הפרויקט.
  2. חשבון משתמש עם התפקיד "אדמין של VPC משותף" צריך לבצע את השלבים הבאים. למידע רקע, קראו את ההוראות להגדרת VPC משותף.

    1. מוודאים שהפרויקט המארח של ה-VPC המשותף מופעל.

    2. מצרפים את הפרויקט עם אשכול Managed Service for Apache Spark לפרויקט המארח.

    3. מגדירים את חשבון השירות של סוכן השירות של Managed Service for Apache Spark (service-[project-number]@dataproc-accounts.iam.gserviceaccount.com) כך שיהיה לו את התפקיד משתמש ברשת בפרויקט המארח:

      1. פותחים את הדף רשתות VPC במסוף Google Cloud .

      2. בוחרים את הפרויקט המארח באמצעות בורר הפרויקטים.

      3. לוחצים על הרשת שמכילה את רשת המשנה שבה ישתמש אשכול Managed Service for Apache Spark.

      4. בדף VPC Network Details, מסמנים את התיבה לצד השם של רשת המשנה שבה ישתמש האשכול.

      5. אם חלונית המידע לא פתוחה, לוחצים על Show Info Panel.

      6. מבצעים את השלבים הבאים לכל חשבון שירות:

        1. בחלונית המידע, לוחצים על Add Principal.

        2. ממלאים את הטופס "מתן גישה":

          1. Add principals: מזינים את חשבון השירות.

          2. הקצאת תפקידים: מזינים "Compute Network" בתיבת הסינון ובוחרים את התפקיד Compute Network User.

          3. לוחצים על Save.

  3. אחרי שחשבון השירות מקבל את התפקיד Network User בפרויקט המארח, יוצרים אשכול שמשתמש בתת-הרשת של ה-VPC המשותף.

יצירת אשכול עם כתובות IP פנימיות בלבד

הקטע הזה רלוונטי לאשכולות של גרסאות אימג'ים שנוצרו לפני 2.2. כשיוצרים אשכולות של Managed Service for Apache Spark עם גרסאות אימג' 2.2 ואילך, כברירת מחדל מופעלת האפשרות Cluster VMs with internal-IP-only addresses.

אפשר להשתמש במסוף Google Cloud , ב-CLI של gcloud או ב-Dataproc API כדי ליצור אשכול עם כתובות IP פנימיות בלבד. שימו לב: כשמפעילים את האפשרות internal-IP-only, השירות Managed Service for Apache Spark מפעיל באופן אוטומטי את הגישה הפרטית ל-Google ברשת המשנה האזורית של האשכול, כדי לאפשר חיבורים לממשקי ה-API ולשירותים של Google.

מסוףGoogle Cloud

כדי להגדיר כתובות IP פנימיות בלבד:

  1. פותחים את הדף Create cluster.
  2. לוחצים על הגדרות נוספות כדי להרחיב את הקטע.
  3. עורכים את הגדרות הרשת.
  4. בחלונית שנפתחת, בוחרים את הרשת ואת רשת המשנה. מסמנים את התיבה כתובת 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, ייכשלו. יש כמה דרכים לעקוף את הבעיה:

  1. משתמשים ב-Cloud NAT כדי לאפשר לאשכול גישה לאינטרנט.

  2. יוצרים תמונה בהתאמה אישית שכוללת את יחסי התלות (לדוגמה, חבילות של יחסי תלות של Spark ב-/usr/lib/spark/jars/).

  3. מעלים את יחסי התלות לקטגוריה של Cloud Storage, ואז משתמשים בפעולת אתחול כדי להוריד את יחסי התלות מהקטגוריה במהלך יצירת האשכול.

רשתות של Managed Service for Apache Spark ו-VPC Service Controls

בעזרת VPC Service Controls, אדמינים יכולים להגדיר מתחם אבטחה היקפית מסביב למשאבים של שירותים בניהול Google, כדי לשלוט בתקשורת אל השירותים האלה וביניהם.

חשוב לשים לב למגבלות ולאסטרטגיות הבאות כשמשתמשים ברשתות של VPC Service Controls עם אשכולות של Managed Service for Apache Spark:

המאמרים הבאים