במאמר הזה מוסבר איך לבצע את הפעולות הבאות:
- הגדרת גישה לאינטרנט למכונות וירטואליות (VM) ב-Dataflow
- שימוש בתגים כדי לאבטח את הרשת של מכונות וירטואליות של עובדים.
- הגדרת כללי חומת אש לרשת שמשויכת למשימות Dataflow
כדי להבין את המסמך הזה, צריך ידע בסיסי ברשתות Google Cloud . כדי להגדיר רשת לעבודת Dataflow, קראו את המאמר בנושא הגדרת הרשת והרשת המשנית. מידע נוסף על פתרון בעיות ברשת זמין במאמר פתרון בעיות ברשת ב-Dataflow.
גישה ל Google Cloud ממשקי API ל-Dataflow
מכונות וירטואליות (VM) של עובדי Dataflow צריכות להגיע אלGoogle Cloud ממשקי API ושירותים. יכול להיות שקבוצת נקודות הקצה התלויות Google Cloud תשתנה לאורך זמן, אבל כולן תומכות ב-VPC Service Controls. כדי להגדיר גישה לממשקי API של Google Cloud , אפשר להשתמש באחת מהשיטות הבאות:
מגדירים גישה פרטית ל-Google. באמצעות התכונה 'גישה פרטית ל-Google', מכונות וירטואליות שיש להן רק כתובות IP פנימיות יכולות לגשת לכתובות IP של Google Cloud ולשירותים.
מגדירים כתובת IP של נקודת קצה (endpoint) של Private Service Connect כדי לגשת לממשקי API ולשירותים. Google Cloud
מגדירים מכונות וירטואליות של Worker עם כתובות IP חיצוניות.
כברירת מחדל, כללים של חומת אש והגדרות DNS מאפשרים גישה ל-Google Cloud API. עם זאת, יכול להיות שאתם מגבילים באופן פעיל את הגישה לקבוצת משנה של ממשקי API, למשל אם אתם משתמשים ב-VPC Service Controls. Google Cloud
במקרה כזה, צריך לספק גישה לפחות אל restricted.googleapis.com. אם אתם משתמשים ב-Private Service Connect, צריך לספק גישה לvpc-sc חבילה.
מתן גישה לדומיינים עם הרשאות רחבות יותר, כמו private.googleapis.com, מספק גם את הפונקציונליות הנדרשת.
כדי לאפשר גישה לממשקי ה-API Google Cloud הנדרשים דרך דומיין מסוים, הסביבה שלכם צריכה לעמוד בדרישות הבאות:
כללי חומת האש צריכים לאפשר יציאה לכל טווחי הכתובות בדומיין שנבחר.
רזולוציית ה-DNS של
*.googleapis.comצריכה להיות הדומיין שבחרתם.
לדוגמה, אם כללי חומת האש מגבילים את התעבורה היוצאת לטווח הכתובות restricted.googleapis.com, אז הכתובות של *.googleapis.com צריכות להיות בטווח הזה.
מידע נוסף זמין במאמר בנושא הגדרת DNS עבור googleapis.com.
באופן דומה, אם אתם משתמשים ב-Private Service Connect, אתם צריכים ליצור רשומות DNS עבור דומיין ברירת המחדל כדי להבטיח גישה לכל השירותים לפחות בvpc-sc
חבילה.googleapis.com
גישה לאינטרנט ל-Dataflow
בהתאם לתרחיש לדוגמה, יכול להיות שגם מכונות ה-VM יצטרכו גישה למשאבים מחוץ ל-Google Cloud. כדי להגדיר גישה לאינטרנט ל-Dataflow, אפשר להשתמש באחת מהשיטות הבאות:
מגדירים מכונות וירטואליות של Worker עם כתובת IP חיצונית כדי לעמוד בדרישות הגישה לאינטרנט.
מגדירים פתרון NAT, כמו Cloud NAT. האפשרות הזו מתאימה להרצת משימות שדורשות גישה לאינטרנט כדי לגשת לממשקי API ולשירותים מחוץ ל- Google Cloud . לדוגמה, יכול להיות שמשימות של Python SDK ידרשו גישה לאינדקס חבילות Python (PyPI) כדי להוריד יחסי תלות של צינורות. במקרה כזה, צריך להגדיר מכונות וירטואליות של Worker עם כתובות IP חיצוניות או להשתמש ב-Cloud NAT. אפשר גם לספק תלות בצינור עיבוד נתונים של Python במהלך שליחת העבודה. לדוגמה, אפשר להשתמש בקונטיינרים בהתאמה אישית כדי לספק יחסי תלות של צינור עיבוד נתונים ב-Python, וכך לא צריך לגשת ל-PyPI בזמן הריצה.
מידע נוסף זמין במאמר ניהול תלות בצינורות Python במאמרי העזרה של Apache Beam.
השבתה של כתובת IP חיצונית
כברירת מחדל, Dataflow מקצה לעובדים כתובות IP חיצוניות ופנימיות. כשמשביתים כתובות IP חיצוניות, עבודת Dataflow יכולה לגשת רק למשאבים במקומות הבאים:
- מכונה אחרת באותה רשת VPC
- רשת VPC משותפת
- רשת שמופעל בה קישור בין רשתות VPC שכנות (peering)
גם בלי כתובות IP חיצוניות, עדיין אפשר לבצע משימות ניהול ומעקב. אפשר לגשת לעובדים באמצעות SSH דרך האפשרויות שמופיעות ברשימה הקודמת. עם זאת, לצינור אין גישה לאינטרנט, ומארחים באינטרנט לא יכולים לגשת לעובדי Dataflow.
אם לא משתמשים בכתובות IP חיצוניות, אפשר לאבטח טוב יותר את התשתית לעיבוד הנתונים. אפשר גם להפחית את מספר כתובות ה-IP החיצוניות שאתם משתמשים בהן במסגרת מכסת הפרויקט ב-Google Cloud.
אם משביתים כתובות IP חיצוניות, לעבודות Dataflow אין גישה לממשקי API ולשירותים מחוץ ל- Google Cloud שדורשים גישה לאינטרנט.
כדי להשבית כתובות IP חיצוניות, מבצעים אחת מהפעולות הבאות:
Java
- מפעילים את הגישה הפרטית ל-Google ברשת או ברשת המשנה.
- בפרמטרים של עבודת Dataflow, מציינים
--usePublicIps=falseו---network=NETWORK-NAMEאו--subnetwork=SUBNETWORK-NAME.בהתאם לבחירה, מחליפים אחד מהערכים הבאים:
- NETWORK-NAME: השם של רשת Compute Engine
- SUBNETWORK-NAME: השם של רשת המשנה ב-Compute Engine
Python
- כדי להכין את כל יחסי התלות של חבילות Python, פועלים לפי ההוראות בנושא יחסי תלות של צינורות נתונים ב-Apache Beam.
- מפעילים את הגישה הפרטית ל-Google ברשת או ברשת המשנה.
-
בפרמטרים של עבודת Dataflow, מציינים
--no_use_public_ipsו---network=NETWORKאו--subnetwork=SUBNETWORK.בהתאם לבחירה, מחליפים אחד מהערכים הבאים:
- NETWORK-NAME: השם של רשת Compute Engine
- SUBNETWORK-NAME: השם של רשת המשנה ב-Compute Engine
המשך
- מפעילים את הגישה הפרטית ל-Google ברשת או ברשת המשנה.
-
בפרמטרים של עבודת Dataflow, מציינים
--no_use_public_ipsו---network=NETWORKאו--subnetwork=SUBNETWORK.בהתאם לבחירה, מחליפים אחד מהערכים הבאים:
- NETWORK-NAME: השם של רשת Compute Engine
- SUBNETWORK-NAME: השם של רשת המשנה ב-Compute Engine
שימוש בתגים כדי לאבטח את הרשת של worker VM
תגים מאפשרים להחיל כללי חומת אש ברשת על מכונות וירטואליות ספציפיות. כשמריצים משימת Dataflow, אפשר לציין תגים למכונות וירטואליות של עובדי Dataflow שמבצעות את המשימה. כל כללי חומת האש של התגים האלה יחולו על מכונות וירטואליות של עובדי Dataflow.
Dataflow תומך בשני סוגים של תגים לרשתות של מכונות וירטואליות:
שימוש בתגי אבטחה ב-Dataflow
תגים מאובטחים, שנקראים גם תגים שמנוהלים על ידי ניהול זהויות והרשאות גישה (IAM), הם צמדי מפתח/ערך שיוצרים ומנהלים ב-מנהל המשאבים. בניגוד לתגי רשת, תגים מאובטחים תומכים בבקרת גישה באמצעות IAM.
היתרונות של שימוש בתגים מאובטחים במקום בתגים של הרשת כוללים את היתרונות הבאים:
תגים מאובטחים מונעים שינוי לא מורשה של תגים ושינויים לא רצויים בכללי חומת האש.
במדיניות חומת האש בין רשתות גלובלית ואזורית יש תמיכה בתגי אבטחה. באמצעות תגי אבטחה, אתם יכולים לקבץ כמה כללי חומת אש ולעדכן אותם בו-זמנית, כשהעדכונים מנוהלים על ידי אמצעי בקרה לגישה של IAM.
תגים מאובטחים עוברים בירושה ממשאבי הורה ב Google Cloud היררכיה, כך שאפשר להגדיר תגים ברמות גבוהות יותר, כמו רמת הארגון. מידע נוסף מופיע במאמר בנושא ירושת תגים.
באמצעות תגים מאובטחים, כללי חומת אש של תעבורת נכנס יכולים לכלול מקורות ברשתות VPC שמחוברות באמצעות קישור בין רשתות שכנות (peering) של VPC. במקרה של משימות Dataflow, כלל חומת אש יכול לכלול מקורות גם ברשת של מכונות ה-worker VM וגם ברשתות VPC שמקושרות לרשתות שכנות.
מידע נוסף על ההבדלים בין תגים מאובטחים לתגים של רשתות זמין במאמר השוואה בין תגים לתגים של רשתות.
כדי להחיל תגים מאובטחים על משימת Dataflow, פועלים לפי השלבים הבאים:
מגדירים תגים מאובטחים לכללי המדיניות של חומת האש. מידע נוסף מופיע במאמר בנושא הגדרת תגים מאובטחים.
מקצים את התפקיד Tag User (
roles/resourcemanager.tagUser) לחשבון השירות של Dataflow במשאב (ערכי התגים). מידע נוסף על ההרשאות הנדרשות זמין במאמר בנושא ניהול תגים במשאבים.כשיוצרים את עבודת Dataflow, משתמשים ב
use_vm_tagsאפשרות השירות בפורמט הבא:
Java
--dataflowServiceOptions=use_vm_tags=tagKeys/KEY1:tagValues/VALUE1;tagKeys/KEY2:tagValues/VALUE2
Python
--dataflow_service_options=use_vm_tags=tagKeys/KEY1:tagValues/VALUE1;tagKeys/KEY2:tagValues/VALUE2
המשך
--dataflow_service_options=use_vm_tags=tagKeys/KEY1:tagValues/VALUE1;tagKeys/KEY2:tagValues/VALUE2
gcloud
משתמשים בפקודה gcloud dataflow jobs run עם האפשרות additional-experiments. אם משתמשים בתבניות Flex, משתמשים בפקודה gcloud dataflow flex-template run.
--additional-experiments=use_vm_tags=tagKeys/KEY1:tagValues/VALUE1;tagKeys/KEY2:tagValues/VALUE2
שימוש בתגי רשת ב-Dataflow
תגים לרשת הם מאפייני טקסט שאפשר להגדיר בכללי חומת אש ולצרף למכונות וירטואליות ב-Compute Engine. בניגוד לתגים מאובטחים, תגי רשת הם מחרוזות טקסט, ולא משאב שמנוהל על ידי מנהל המשאבים.
כדי להחיל תגי רשת על עבודת Dataflow, משתמשים בuse_network_tags
experiment, באופן הבא:
Java
--dataflowServiceOptions=use_network_tags=TAG_NAME
Python
--dataflow_service_options=use_network_tags=TAG_NAME
המשך
--dataflow_service_options=use_network_tags=TAG_NAME
gcloud
משתמשים בפקודה gcloud dataflow jobs run עם האפשרות additional-experiments. אם משתמשים בתבניות Flex, משתמשים בפקודה gcloud dataflow flex-template run.
--additional-experiments=use_network_tags=TAG_NAME
ציון תג הרשת מוסיף גם את תג הרשת שמוגדר כברירת מחדל Dataflow למכונות וירטואליות של מפעיל תבנית Flex.
מחליפים את TAG_NAME בשמות התגים. אם מוסיפים יותר מתג אחד, צריך להפריד בין התגים באמצעות נקודה ופסיק (;), כמו בדוגמה הבאה:
TAG_NAME_1;TAG_NAME_2;TAG_NAME_3;....
אחרי שהעבודה מתחילה, אי אפשר להוסיף לה עוד תגי רשת.
Dataflow תמיד מוסיף את תג הרשת שמוגדר כברירת מחדל, dataflow, לכל מכונת VM של Worker שהוא יוצר.
כאן מפורטות המגבלות שחלות על תגי רשת.
כללי חומת אש ל-Dataflow
כללי חומת אש מאפשרים תעבורה או מונעים אותה מהמכונות הווירטואליות ואליהן. אם עבודות Dataflow שלכם משתמשות ב-ארגון נתונים של Dataflow או ב-Streaming Engine, אז אתם רק צריכים לוודא שכללי חומת האש מאפשרים גישה לממשקי API של Google Cloud .
אחרת, צריך להגדיר כללים נוספים של חומת אש כדי שמכונות וירטואליות של Dataflow יוכלו לשלוח ולקבל תעבורת נתונים ברשת ביציאת TCP 12345 לעבודות סטרימינג וביציאת TCP 12346 לעבודות אצווה.
בעלי הפרויקט, עורכים או מנהלי אבטחה צריכים ליצור את כללי חומת האש הנדרשים ברשת ה-VPC שבה נעשה שימוש במכונות הווירטואליות של Dataflow.
לפני שמגדירים כללים לחומת אש עבור Dataflow, כדאי לקרוא את המסמכים הבאים:
סקירה כללית על כללי חומת אש ב-VPC ושימוש בכללי חומת אש ב-VPC
סקירה כללית של מדיניות חומת אש היררכית ושימוש במדיניות ובכללים של חומת אש היררכית
כשיוצרים כללים של חומת אש ל-Dataflow, צריך לציין את תגי הרשת של Dataflow. אחרת, כללי חומת האש חלים על כל המכונות הווירטואליות ברשת ה-VPC.
במקרים הרלוונטיים, מדיניות חומת אש היררכית נבדקת קודם, והכללים האלה קודמים לכללים של חומת האש ב-VPC. אם משימת Dataflow נמצאת בפרויקט שהוא חלק מתיקייה או מארגון שבהם נעשה שימוש במדיניות חומת אש היררכית, נדרש התפקיד compute.orgFirewallPolicyAdmin כדי לבצע שינויים במדיניות.
אם לא יוצרים תגי רשת מותאמים אישית כשמריצים את קוד צינור עיבוד הנתונים, מכונות ה-VM של Dataflow משתמשות בתג ברירת המחדל dataflow. אם אין תגי רשת בהתאמה אישית, צריך ליצור את כללי חומת האש עם התג dataflow שמוגדר כברירת מחדל.
אם יוצרים תגי רשת מותאמים אישית כשמריצים את קוד צינור עיבוד הנתונים, המכונות הווירטואליות של Dataflow משתמשות בתגים האלה. יוצרים את כללי חומת האש עם התגים המותאמים אישית.
חלק מרשתות ה-VPC, כמו הרשת default
שנוצרת באופן אוטומטי, כוללות כלל default-allow-internal שעומד בדרישה של חומת האש ל-Dataflow.
דוגמה לכלל חומת אש לתעבורת נתונים נכנסת
כלל חומת האש של התעבורה הנכנסת מאפשר למכונות וירטואליות של Dataflow לקבל חבילות זו מזו. תמיד צריך ליצור כללי חומת אש שמאפשרים תעבורת נתונים נכנסת (ingress), אחרת תעבורת הנתונים תמיד תיחסם, גם אם כללי תעבורת הנתונים היוצאת (egress) מאפשרים אותה.
בדוגמה הבאה, נוצר כלל של חומת אש לתעבורה נכנסת עבור Dataflow, שבו לכל מכונות ה-VM של העובדים יש את תג הרשת dataflow שמוגדר כברירת מחדל. בעלי פרויקט, עורכים או אדמינים של אבטחה יכולים להשתמש בפקודה gcloud הבאה כדי ליצור כלל הרשאת כניסה שמאפשר תנועה ביציאות TCP 12345 ו-12346 ממכונות וירטואליות עם תג הרשת dataflow למכונות וירטואליות אחרות עם אותו תג:
gcloud compute firewall-rules create FIREWALL_RULE_NAME_INGRESS \
--action=allow \
--direction=ingress \
--network=NETWORK \
--target-tags=CUSTOM_TAG \
--source-tags=CUSTOM_TAG \
--priority=PRIORITY_NUM \
--rules tcp:12345-12346
מחליפים את מה שכתוב בשדות הבאים:
FIREWALL_RULE_NAME_INGRESS: שם לכלל חומת האש
NETWORK: השם של הרשת שבה מכונות ה-VM של העובדים משתמשות
CUSTOM_TAG: רשימה מופרדת בפסיקים של תגי רשתהנה רשימת הנחיות לשימוש בתגי רשת:
אם לא מציינים את
--target-tags, הכלל חל על כל המכונות הווירטואליות ברשת ה-VPC.אם לא מציינים את
--source-tagsואת כל שאר המקורות, התנועה מכל מקור מותרת.אם לא ציינתם תגי רשת מותאמים אישית ואתם רוצים שהכלל יהיה ספציפי למכונות וירטואליות של Dataflow, צריך להשתמש ב-
dataflowכתג הרשת.אם ציינתם תגי רשת בהתאמה אישית ואתם רוצים שהכלל יהיה ספציפי למכונות וירטואליות של Dataflow, אתם צריכים להשתמש בתגי הרשת המותאמים אישית.
PRIORITY_NUM: העדיפות של כלל חומת האשמספרים נמוכים יותר מייצגים עדיפות גבוהה יותר, והעדיפות הגבוהה ביותר היא
0.
דוגמה לכלל יציאה של חומת אש
כלל חומת האש לתעבורת נתונים יוצאת מאפשר למכונות וירטואליות של Dataflow לשלוח חבילות נתונים זו לזו. אם יצרתם כללים של חומת אש שחוסמים תעבורת נתונים יוצאת, יכול להיות שתצטרכו ליצור כללים מותאמים אישית של חומת אש שמאפשרים תעבורת נתונים יוצאת ברשת ה-VPC.
בדוגמה הזו, נוצר כלל יציאה של חומת אש עבור Dataflow, שבו לכל מכונות העובד הווירטואליות יש תג רשת ברירת מחדל של dataflow. בעלי פרויקט, עורכים או אדמינים של אבטחה יכולים להשתמש בפקודה gcloud הבאה כדי ליצור כלל לאישור תעבורת נתונים יוצאת שמאפשר תעבורת נתונים מיציאות TCP 12345 ו-12346 במכונות וירטואליות עם תג הרשת dataflow למכונות וירטואליות אחרות עם אותו תג:
gcloud compute firewall-rules create FIREWALL_RULE_NAME_EGRESS \
--network=NETWORK \
--action=allow \
--direction=egress \
--target-tags=CUSTOM_TAG \
--source-tags=CUSTOM_TAG \
--destination-ranges=DESTINATION-RANGES\
--priority=PRIORITY_NUM \
--rules tcp:12345-12346
מחליפים את מה שכתוב בשדות הבאים:
FIREWALL_RULE_NAME_EGRESS: שם לכלל חומת האש
NETWORK: השם של הרשת שבה מכונות ה-VM של העובדים משתמשות
CUSTOM_TAG: רשימה מופרדת בפסיקים של תגי רשתהנה רשימת הנחיות לשימוש בתגי רשת:
אם לא מציינים את
--target-tags, הכלל חל על כל המכונות הווירטואליות ברשת ה-VPC.אם לא מציינים את
--source-tagsואת כל שאר המקורות, התנועה מכל מקור מותרת.אם לא ציינתם תגי רשת מותאמים אישית ואתם רוצים שהכלל יהיה ספציפי למכונות וירטואליות של Dataflow, צריך להשתמש ב-
dataflowכתג הרשת.אם ציינתם תגי רשת בהתאמה אישית ואתם רוצים שהכלל יהיה ספציפי למכונות וירטואליות של Dataflow, אתם צריכים להשתמש בתגי הרשת המותאמים אישית.
DESTINATION-RANGES: רשימה מופרדת בפסיקים של CIDRהכללת טווח כתובות ה-IP הראשי של רשת המשנה שנבחרה.
PRIORITY_NUM: העדיפות של כלל חומת האשמספרים נמוכים יותר מייצגים עדיפות גבוהה יותר, והעדיפות הגבוהה ביותר היא
0.
כדי לראות אילו יציאות TCP ספציפיות משמשות את Dataflow, אפשר לצפות במניפסט של קונטיינר הפרויקט. קובץ המניפסט של המאגר מציין במפורש את היציאות כדי למפות יציאות של המארח לתוך המאגר.
גישת SSH למכונות וירטואליות של Worker
לא צריך SSH ב-Dataflow, אבל הוא שימושי לפתרון בעיות.
אם למכונה הווירטואלית של העובד יש כתובת IP חיצונית, אפשר להתחבר למכונה הווירטואלית דרך מסוף Google Cloud או באמצעות Google Cloud CLI. כדי להתחבר באמצעות SSH, צריך כלל חומת אש שמאפשר חיבורים נכנסים ביציאת TCP 22 לפחות מכתובת ה-IP של המערכת שבה מריצים את gcloud או של המערכת שבה מריצים את דפדפן האינטרנט שמשמש לגישה למסוףGoogle Cloud .
כדי לראות את הגדרות הרשת והפעילות, צריך לפתוח סשן SSH באחד מהעובדים ולהריץ את הפקודה iproute2. מידע נוסף זמין בדף בנושא iproute2 בוויקי של Linux Foundation.
אם אתם צריכים להתחבר למכונה וירטואלית של Worker שיש לה רק כתובת IP פנימית, כדאי לעיין במאמר בנושא בחירת אפשרות חיבור למכונות וירטואליות פנימיות בלבד.
המאמרים הבאים
- מידע נוסף על בדיקות קישוריות בדיקות הקישוריות הן כלי אבחון שמאפשר לבדוק את הקישוריות בין נקודות קצה ברשת.
- יצירה והרצה של בדיקות קישוריות