הגדרת 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

היקפים לסביבות עם 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)
    • ‫Security Token Service API ‏ (sts.googleapis.com)
    • 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 פרטית. חשוב לזכור שצריך להגדיר את ההגדרה הזו במהלך יצירת הסביבה.

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

  4. כברירת מחדל, הגישה לממשק המשתמש ול-API של Airflow מותרת רק מתוך גבולות גזרה של האבטחה. אם רוצים להפוך אותו לזמין מחוץ למתחם האבטחה, צריך להגדיר רמות גישה או כללים לתעבורת נתונים נכנסת (ingress) וגם יוצאת (egress).

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

אתם יכולים להוסיף את הפרויקט שמכיל את הסביבה שלכם לגבולות גזרה אם:

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

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

לכל סביבות Managed Airflow בתוך היקף של VPC Service Controls אין גישה למאגרי PyPI ציבוריים כברירת מחדל.

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

ההגדרה המומלצת היא להגדיר מאגר 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 אחרים.

  • *.composer.cloud.google.com משמש כדי להעניק גישה לשרת האינטרנט של Airflow בסביבה שלכם. צריך להחיל את הכלל הזה לפני שיוצרים סביבה.

    • אפשרות אחרת היא ליצור כלל לאזור ספציפי. כדי לעשות את זה, משתמשים בפקודה REGION.composer.cloud.google.com. מחליפים את REGION באזור שבו נמצאת הסביבה, לדוגמה, us-central1.
  • (אופציונלי) נעשה שימוש ב-*.composer.googleusercontent.com כשניגשים לשרת האינטרנט של Airflow בסביבה שלכם. הכלל הזה נדרש רק אם אתם ניגשים לשרת האינטרנט של Airflow ממופע שפועל ברשת ה-VPC, ולא נדרש בשום מקרה אחר. תרחיש נפוץ לשימוש בכלל הזה הוא כשרוצים לקרוא ל-Airflow API בארכיטקטורת REST מתוך רשת VPC.

    • אפשרות נוספת היא ליצור כלל לסביבה ספציפית. כדי לעשות את זה, משתמשים בפקודה ENVIRONMENT_WEB_SERVER_NAME.composer.googleusercontent.com. מחליפים את ENVIRONMENT_WEB_SERVER_NAME בחלק הייחודי של כתובת ה-URL של ממשק המשתמש של Airflow בסביבה שלכם, לדוגמה, bffe6ce6c4304c55acca0e57be23128c-dot-us-central1.
  • *.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
*.composer.cloud.google.com composer.cloud.google.com. שם DNS: ‏ *.composer.cloud.google.com.
סוג רשומת משאבים: ‏ CNAME
שם קנוני: ‏ composer.cloud.google.com.
סוג רשומת המשאב: A
כתובות IPv4: ‏ 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7
*.composer.googleusercontent.com
(אופציונלי, ראו תיאור)
composer.googleusercontent.com. שם DNS: ‏ *.composer.googleusercontent.com.
סוג רשומת משאבים: ‏ CNAME
שם קנוני: ‏ composer.googleusercontent.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
(אם הסביבה שלכם משתמשת ב-Private Service Connect) רשת משנה לחיבור תעבורת נתונים יוצאת (egress) אישור טווח רשת המשנה של חיבור Managed Airflow TCP 3306, 3307, 19090
(אם הסביבה שלכם משתמשת בקישור בין רשתות VPC שכנות) רשת הדייר תעבורת נתונים יוצאת (egress) אישור טווח כתובות ה-IP של רשת הדיירים ב-Managed Airflow TCP 3306, 3307, 19090

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

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

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

      מעבר אל Environments

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

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

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

  • אפשר לראות את טווח כתובות ה-IP של רשת הדיירים של Managed Airflow בסביבה בכרטיסייה Environment configuration (הגדרת סביבה).

  • בכרטיסייה Environment configuration (הגדרת הסביבה) אפשר לראות את מזהה רשת המשנה של הסביבה ואת מזהה רשת המשנה של חיבור Managed Airflow. כדי לראות את טווחי כתובות ה-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, מנהל את רכיבי הסביבה בפרויקטים של שירותים ופרויקטים מארחים.

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