הגדרת VPC Service Controls

Managed Airflow (דור 3) | Managed Airflow (דור 2) | Managed Airflow (דור 1 מדור קודם)

VPC Service Controls מאפשר לארגונים להגדיר גבולות גזרה מסביב לGoogle Cloud משאבים כדי לצמצם את הסיכונים לזליגת נתונים.

אפשר לפרוס סביבות Managed Airflow בתוך גבולות גזרה לשירות. אם תגדירו את הסביבה שלכם באמצעות VPC Service Controls, תוכלו לשמור על פרטיות של מידע אישי רגיש וליהנות מהיכולות של Managed Airflow לניהול תהליכי עבודה.

התמיכה של VPC Service Controls ב-Managed Airflow מאפשרת:

  • עכשיו אפשר לבחור ב-Managed Airflow כשירות מאובטח בתוך מתחם של אמצעי בקרה לשירותי VPC.
  • כל משאבי הבסיס שמשמשים את Managed Airflow מוגדרים לתמיכה בארכיטקטורה של VPC Service Controls ולפעולה בהתאם לכללים שלה.

פריסת סביבות Managed Airflow עם VPC Service Controls מאפשרת לכם:

  • צמצום הסיכון לזליגת נתונים.
  • הגנה מפני חשיפת נתונים בגלל אמצעי בקרה לגישה שהוגדרו בצורה לא נכונה.
  • הסיכון שמשתמשים זדוניים יעתיקו נתונים לGoogle Cloud משאבים לא מורשים או שהאקרים חיצוניים יקבלו גישה לGoogle Cloud משאבים מהאינטרנט יפחת.Google Cloud

מידע על VPC Service Controls ב-Managed Airflow

  • אפשר להציג תבנית שעברה עיבוד עם פונקציות בממשק המשתמש האינטרנטי עם סריאליזציה של DAG מופעלת בסביבות שמופעלת בהן גרסה מנוהלת של Airflow מגרסה 1.12.0 ומעלה וגרסת Airflow מגרסה 1.10.9 ומעלה.

  • הגדרת הדגל async_dagbag_loader לערך True לא נתמכת כשהסריאליזציה של DAG מופעלת.

  • הפעלת סריאליזציה של DAG משביתה את כל הפלאגינים של שרת האינטרנט של Airflow, כי הם עלולים לסכן את האבטחה של רשת ה-VPC שבה Managed Airflow נפרס. השינוי הזה לא משפיע על ההתנהגות של תוספים לתזמון או לעובדים, כולל אופרטורים וחיישנים של Airflow.

  • אם סביבת Managed Airflow מוגנת על ידי גבולות גזרה, הגישה למאגרי PyPI ציבוריים מוגבלת. מידע נוסף זמין במאמר בנושא התקנת חבילות PyPI ב-VPC Service Controls.

  • אם בסביבה שלכם נעשה שימוש ברשתות עם כתובות IP פרטיות, כל התעבורה הפנימית מנותבת לרשת ה-VPC, למעט התעבורה לממשקי Google APIs, לשירותים ולדומיינים שזמינים לסביבות עם כתובות IP פרטיות דרך גישה פרטית ל-Google.

  • בהתאם להגדרת רשת ה-VPC, סביבת IP פרטית יכולה לקבל גישה לאינטרנט דרך רשת ה-VPC.

  • במצב VPC Service Controls, ‏ Managed Airflow מפעיל שני מופעים של שרת האינטרנט של Airflow. שרת proxy לאימות זהויות (IAP) מבצע איזון עומסים של תנועת משתמשים בין המופעים האלה. שרתי האינטרנט של Airflow פועלים במצב 'קריאה בלבד', כלומר:

    • האפשרות DAG Serialization מופעלת. כתוצאה מכך, שרת האינטרנט של Airflow לא מנתח קובצי DAG.

    • הפלאגינים לא מסתנכרנים עם שרת האינטרנט, ולכן אי אפשר לשנות או להרחיב את היכולות של שרת האינטרנט באמצעות פלאגינים.

    • שרת האינטרנט של Airflow משתמש בקובץ אימג' של קונטיינר שנבנה מראש על ידי שירות Managed Airflow. אם מתקינים תמונות PyPI בסביבה, התמונות האלה לא מותקנות בקובץ האימג' של הקונטיינר של שרת האינטרנט.

היקפים לסביבות עם VPC משותף ו-CMEK

אם הסביבה שלכם מוגנת על ידי גבול גזרה לשירות ומשתמשת ב-VPC משותף, ב-Customer-Managed Encryption Keys (CMEK) או בשניהם, צריך לוודא שהפרויקטים הבאים נמצאים באותו גבול גזרה לשירות:

  • פרויקט שירות: הפרויקט שמכיל את סביבת Managed Airflow.
  • פרויקט מארח: הפרויקט שמכיל את רשת ה-VPC המשותפת.
  • הפרויקט שמארח את המפתחות של Cloud Key Management Service.

יצירת סביבות ב-perimeter

כדי לפרוס את Managed Airflow בתוך גבולות גזרה, צריך לבצע את השלבים הבאים:

  1. מפעילים את Access Context Manager API ואת Cloud Composer API בפרויקט. מידע נוסף זמין במאמר בנושא הפעלת ממשקי API.

  2. חשוב לוודא שבגבולות גזרה לשירות יש גישה לשירותי ה-VPC הבאים, אחרת יכול להיות שלא תצליחו ליצור את הסביבה:

    • Cloud Composer API ‏ (composer.googleapis.com)
    • ‫Compute Engine API‏ (compute.googleapis.com)
    • ‫Kubernetes Engine API‏ (container.googleapis.com)
    • ‫Container Registry API‏ (containerregistry.googleapis.com)
    • ‫Artifact Registry API‏ (artifactregistry.googleapis.com)
    • Cloud Storage API (storage.googleapis.com)
    • Cloud SQL Admin API ‏ (sqladmin.googleapis.com)
    • ‫Cloud Logging API‏ (logging.googleapis.com)
    • Cloud Monitoring API ‏ (monitoring.googleapis.com)
    • Cloud Pub/Sub API ‏ (pubsub.googleapis.com)
    • ‫Cloud Cloud Resource Manager API‏ (cloudresourcemanager.googleapis.com)
    • Service Directory API ‏ (servicedirectory.googleapis.com)
    • ‫Cloud Key Management Service API‏ (cloudkms.googleapis.com), אם אתם משתמשים במפתחות Cloud KMS או CMEK.
    • ‫Secret Manager API‏ (secretmanager.googleapis.com), אם אתם משתמשים ב-Secret Manager כקצה עורפי של סודות.
  3. יוצרים סביבת Managed Airflow חדשה עם האפשרות כתובת IP פרטית מופעלת. חשוב לזכור שצריך להגדיר את ההגדרה הזו במהלך יצירת הסביבה.

    • להשתמש בגרסה composer-1.10.4 ואילך.

    • מוודאים שDAGs serialization מופעל. אם בסביבה שלכם נעשה שימוש ב-Managed Airflow מגרסה 1.15.0 ואילך, הסריאליזציה מופעלת כברירת מחדל.

    • כשיוצרים את הסביבה, חשוב לזכור להגדיר גישה לשרת האינטרנט של Airflow. כדי לשפר את ההגנה, כדאי לאפשר גישה לשרת האינטרנט רק מטווחים ספציפיים של כתובות IP. פרטים נוספים זמינים במאמר בנושא הגדרת גישה לרשת של שרת אינטרנט.

הוספת סביבה קיימת לגבולות גזרה

התקנת חבילות PyPI ב-VPC Service Controls

בהגדרת ברירת המחדל של VPC Service Controls, ‏ Managed Airflow תומך רק בהתקנת חבילות PyPI ממאגרים פרטיים שאפשר להגיע אליהם ממרחב כתובות ה-IP הפנימי של רשת ה-VPC.

התקנה ממאגר פרטי

ההגדרה המומלצת היא להגדיר מאגר PyPI פרטי:

  1. מאכלסים אותו בחבילות שנבדקו ומשמשות את הארגון, ואז מגדירים את Managed Airflow כך שיבצע התקנה של יחסי תלות של Python ממאגר פרטי.

  2. נותנים הרשאות נוספות להתקנת חבילות ממאגרי מידע פרטיים לחשבון השירות של הסביבה, כמו שמתואר במאמר בנושא בקרת גישה.

התקנה ממאגר ציבורי

מאגר מרוחק

זו הגישה המומלצת להתקנת חבילות ממאגר ציבורי.

כדי להתקין חבילות PyPI ממאגרים מחוץ למרחב כתובות ה-IP הפרטיות, צריך לבצע את השלבים הבאים:

  1. יוצרים מאגר מרוחק של Artifact Registry.
  2. נותנים למאגר הזה גישה למקורות במעלה הזרם.
  3. מגדירים את Airflow כך שיתקין חבילות ממאגר Artifact Registry.
  4. מעניקים הרשאות נוספות להתקנת חבילות ממאגרי Artifact Registry לחשבון השירות של הסביבה, כמו שמתואר במאמר בנושא בקרת גישה.

חיבורים חיצוניים

כדי להתקין חבילות PyPI ממאגרים מחוץ למרחב כתובות ה-IP הפרטיות, צריך לבצע את השלבים הבאים:

  1. מגדירים Cloud NAT כדי לאפשר ל-Managed Airflow שפועל במרחב כתובות IP פרטי להתחבר למאגרי PyPI חיצוניים.

  2. מגדירים את כללי חומת האש כך שיאפשרו חיבורים יוצאים מאשכול Composer למאגר.

הגדרת קישוריות לממשקי API ולשירותים של Google

בהגדרת VPC Service Controls, כדי לשלוט בתנועת הרשת, צריך להגדיר גישה לממשקי API ולשירותים של Google דרך restricted.googleapis.com. הדומיין הזה חוסם גישה לשירותים ולממשקי Google API שלא תומכים ב-VPC Service Controls.

סביבות Managed Airflow משתמשות בדומיינים הבאים:

  • משתמשים ב-*.googleapis.com כדי לגשת לשירותי Google אחרים.

  • *.pkg.dev משמש לקבלת תמונות של סביבות, למשל כשיוצרים או מעדכנים סביבה.

  • *.gcr.io ב-GKE נדרשת קישוריות לדומיין של Container Registry, ללא קשר לגרסה של Managed Airflow.

מגדירים קישוריות לנקודת הקצה restricted.googleapis.com:

דומיין שם DNS רשומת CNAME רשומת A
*.googleapis.com googleapis.com. שם DNS: ‏ *.googleapis.com.
סוג רשומת משאבים: ‏ CNAME
שם קנוני: ‏ googleapis.com.
סוג רשומת המשאב: A
כתובות IPv4: ‏ 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7
*.pkg.dev pkg.dev. שם DNS: ‏ *.pkg.dev.
סוג רשומת משאבים: ‏ CNAME
שם קנוני: ‏ pkg.dev.
סוג רשומת המשאב: A
כתובות IPv4: ‏ 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7
*.gcr.io gcr.io. שם DNS: ‏ *.gcr.io.
סוג רשומת משאבים: ‏ CNAME
שם קנוני: ‏ gcr.io.
סוג רשומת המשאב: A
כתובות IPv4: ‏ 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7

כדי ליצור כלל DNS:

  1. יוצרים תחום DNS חדש ומשתמשים בשם DNS כשם ה-DNS של התחום הזה.

    לדוגמה: pkg.dev.

  2. מוסיפים קבוצת רשומות לרשומת CNAME.

    דוגמה:

    • שם DNS: ‏ *.pkg.dev.
    • סוג רשומת המשאבים: CNAME
    • שם קנוני: pkg.dev.
  3. מוסיפים קבוצת רשומות עם רשומת כתובת קבועה:

    דוגמה:

    • סוג רשומת המשאבים: A
    • כתובות IPv4: ‏ 199.36.153.4, ‏ 199.36.153.5, ‏ 199.36.153.6, ‏ 199.36.153.7

מידע נוסף זמין במאמר בנושא הגדרת קישוריות פרטית לממשקי API ולשירותים של Google.

הגדרת כללים לחומת אש

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

לדוגמה, יכול להיות ש-Managed Airflow לא יצליח ליצור סביבה אם יש לכם כלל חומת אש שחוסם את כל תעבורת הנתונים היוצאת. כדי למנוע בעיות, צריך להגדיר כללי allow סלקטיביים שמופיעים אחרי הרשימה ובעלי עדיפות גבוהה יותר מהכלל הגלובלי deny.

מגדירים את רשת ה-VPC כך שתאפשר תעבורת נתונים מהסביבה שלכם:

  • במאמר שימוש בכללים של חומת אש מוסבר איך לבדוק, להוסיף ולעדכן כללים ברשת ה-VPC.
  • אפשר להשתמש בכלי הקישוריות כדי לאמת את הקישוריות בין טווחי כתובות IP.
  • אפשר להשתמש בתגי רשת כדי להגביל עוד יותר את הגישה. אפשר להגדיר את התגים האלה כשיוצרים סביבה.
תיאור כיוון פעולה מקור או יעד פרוטוקולים יציאות
‫DNS

הגדרה כפי שמתואר במאמר תמיכה ב-VPC Service Controls ל-Cloud DNS
- - - - -
ממשקי API ושירותים של Google תעבורת נתונים יוצאת (egress) אישור כתובות IPv4 של restricted.googleapis.com שמשמשות אתכם ל-Google APIs ולשירותים של Google. TCP 443
צמתים של אשכול בסביבה תעבורת נתונים יוצאת (egress) אישור טווח כתובות ה-IP הראשי של רשת המשנה של הסביבה TCP, ‏ UDP all
‫Pods באשכול של הסביבה תעבורת נתונים יוצאת (egress) אישור טווח כתובות IP משני עבור Pods בתת-הרשת של הסביבה TCP, ‏ UDP all
מישור הבקרה של אשכול הסביבה תעבורת נתונים יוצאת (egress) אישור טווח כתובות ה-IP של מישור הבקרה של GKE TCP, ‏ UDP all
שרת אינטרנט תעבורת נתונים יוצאת (egress) אישור טווח כתובות IP ברשת של שרת אינטרנט TCP ‫3306, 3307

כדי לקבל את טווחי ה-IP של אשכול הסביבה:

  • אפשר לראות את טווחי הכתובות של ה-Pod, השירות ומישור הבקרה בדף Clusters (אשכולות) של האשכול בסביבה שלכם:

    1. במסוף Google Cloud , עוברים לדף Environments.

      מעבר אל Environments

    2. ברשימת הסביבות, לוחצים על שם הסביבה. הדף Environment details ייפתח.

    3. עוברים לכרטיסייה Environment configuration (הגדרת הסביבה).

    4. לוחצים על הקישור הצגת פרטי האשכול.

  • אפשר לראות את טווח כתובות ה-IP של שרת האינטרנט של הסביבה בכרטיסייה Environment configuration.

  • אפשר לראות את מזהה הרשת של הסביבה בכרטיסייה Environment configuration. כדי לראות את טווחי כתובות ה-IP של רשת משנה, עוברים לדף VPC Networks ולוחצים על שם הרשת כדי לראות את הפרטים:

    כניסה אל VPC Networks

יומנים של VPC Service Controls

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

בנוסף להודעות אחרות ביומן, אפשר לבדוק ביומנים מידע על חשבונות שירות של cloud-airflow-prod@system.gserviceaccount.com ושל service-PROJECT_ID@cloudcomposer-accounts.iam.gserviceaccount.com שמגדירים רכיבים של הסביבות שלכם.

שירות Managed Airflow משתמש בחשבון השירות cloud-airflow-prod@system.gserviceaccount.com כדי לנהל את רכיבי פרויקט הדייר (tenant) בסביבות שלכם.

service-PROJECT_ID@cloudcomposer-accounts.iam.gserviceaccount.com חשבון השירות, שנקרא גם חשבון השירות של סוכן השירות של Composer, מנהל את רכיבי הסביבה בפרויקטים של שירותים ופרויקטים מארחים.

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