אבטחת משימות cron באמצעות VPC Service Controls

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

מגבלות

ההגבלות הבאות חלות על התמיכה של VPC Service Controls ב-Cloud Scheduler.

פעולות שנאכפות

האכיפה של VPC Service Controls מתבצעת בפעולות הבאות:

  • יצירת משימות ב-Cloud Scheduler
  • עדכונים לגבי משימות ב-Cloud Scheduler

למה זה חשוב?

מכיוון ש-VPC Service Controls נאכף רק על יצירה ועדכונים של משימות, הוא לא נאכף באופן אוטומטי על משימות שנוצרו לפני שהוספתם את Cloud Scheduler להיקף של VPC Service Controls. העבודות ממשיכות להתבצע גם אם יעדי העבודה לא נכללים בהיקף של VPC Service Controls או שהם לא יעדים נתמכים. כדי לאכוף את VPC Service Controls על כל המשימות ב-Cloud Scheduler:

יעדים נתמכים

השילוב של Cloud Scheduler עם VPC Service Controls תומך ביעדים הבאים. נקודות קצה של HTTP נתמכות אם הן מופיעות ברשימה, אבל לא נתמכות נקודות קצה שרירותיות של HTTP.

  • שירותי Cloud Run – חייבים להשתמש בדומיין run.app שמוגדר כברירת מחדל. אין תמיכה בדומיינים מותאמים אישית וב-DNS מותאם אישית, והם יגרמו לכך שיצירת המשימה תיכשל.
  • פונקציות Cloud Run – צריך להשתמש בדומיין הקנוני cloudfunctions.net או בדומיין run.app שמוגדר כברירת מחדל. אין תמיכה בדומיינים מותאמים אישית וב-DNS מותאם אישית, והם יגרמו לכך שיצירת המשימה תיכשל.
  • Google Cloud ממשקי API שתואמים ל-VPC Service Controls (בגרסת Preview או ב-GA) יכולים להיות בפרויקט אחר Google Cloud מזה של משימת Cloud Scheduler.

    • חובה להשתמש בפורמט של נקודת קצה גלובלית (https://SERVICE.googleapis.com). נקודות קצה אזוריות – כמו *.rep.googleapis.com,‏ LOCATION.SERVICE.googleapis.com ו-REGION-SERVICE.googleapis.com – ונקודות קצה של mTLS ‏ (*.mtls.googleapis.com) נדחות.
    • במשימות ב-Cloud Run, הפורמט הנתמך של ה-URI הוא: https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB_NAME:run

      כדי להבין את ההבדל בין שירות Cloud Run לבין משאבי משימות, אפשר לעיין במאמר שירותים, משימות, מאגרי עובדים ומופעים: ארבע דרכים להרצת הקוד.

  • Pub/Sub

יעדים לא נתמכים

אם Cloud Scheduler הוא שירות מוגבל בגבולות הגזרה של VPC Service Controls, כל ניסיון ליצור או לעדכן משימה עם יעד לא נתמך ייכשל עם קוד השגיאה TARGET_TYPE_NOT_PERMITTED_FOR_VPC. הפעולה הזו לא יוצרת יומן הפרות כשמשתמשים במצב הרצה יבשה.

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

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

מחיקת משרות שלא עומדות בדרישות

מומלץ. מחיקת משימות של Cloud Scheduler עם יעדים שהם:

  • לא נתמך (ראו יעדים נתמכים)
  • מחוץ לגבולות הגזרה של VPC Service Controls שבהם אתם מתכננים להשתמש

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

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

לדוגמה, אם יש לכם משימה ב-Cloud Scheduler שמכוונת ליעד לא נתמך (כמו נקודת קצה שרירותית של HTTP), המשימה תמשיך לפעול אחרי שתוסיפו את Cloud Scheduler להיקף של VPC Service Controls, אבל היא לא תהיה מוגנת על ידי VPC Service Controls. הדבר נכון גם לגבי משימה קיימת עם יעד מחוץ לגבולות הגזרה של VPC Service Controls. עם זאת, אם משימה קיימת מכוונת לדומיין מותאם אישית ללא שרתים בתוך ההיקף שלכם, שירות היעד חוסם הפעלות של זמן ריצה.

הוספת תפקידי IAM נדרשים

חובה. כדי להשתמש ב-VPC Service Controls, לחשבון השירות של Cloud Scheduler צריך להיות תפקיד IAM של Cloud Scheduler Service Agent. חשבון השירות של Cloud Scheduler נוצר אוטומטית עבור הפרויקט. כדי לוודא שלסוכן השירות מוקצה תפקיד IAM של Cloud Scheduler, או כדי להקצות לו את התפקיד הזה, מבצעים את השלבים הבאים:

  1. במסוף Google Cloud , נכנסים אל IAM.

    כניסה לדף IAM

  2. מסמנים את התיבה Include Google-provided role grants.

  3. במסנן, מקלידים Cloud Scheduler Service Account ובוחרים את הגורם הזה.

  4. בודקים את העמודה תפקיד של החשבון הראשי Cloud Scheduler Service Account. אפשר להמשיך אם התפקיד הבא מופיע ברשימה:

    • סוכן שירות של Cloud Scheduler

    אם התפקיד של חשבון השירות של Cloud Scheduler לא מופיע, לוחצים על סמל העריכה ומעניקים את התפקיד Cloud Scheduler Service Agent לחשבון המשתמש של חשבון השירות של Cloud Scheduler.

ציון גבול גזרה של VPC Service Controls

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

אכיפת VPC Service Controls על משימות קיימות

מומלץ. כדי לאכוף את VPC Service Controls על משימות Cloud Scheduler שיצרתם לפני שהוספתם את Cloud Scheduler לגבולות הגזרה של VPC Service Controls, מריצים update על המשימה. לא צריך לשנות את העבודה, אבל צריך להריץ את העדכון כדי ש-VPC Service Controls יחול על העבודה ועל ההרצות העתידיות שלה.

אפשר להריץ עדכון של העבודה באמצעות מסוף Google Cloud (בוחרים את העבודה ולוחצים על עריכה), ה-API או ה-CLI של gcloud.

כדי לאכוף את VPC Service Controls על עבודה קיימת באמצעות ה-CLI של gcloud, מריצים את הפקודה הבאה:

יעדים של HTTP

gcloud scheduler jobs update http JOB_ID

מחליפים את JOB_ID במזהה המשימה.

יעדים של Pub/Sub

gcloud scheduler jobs update pubsub JOB_ID

מחליפים את JOB_ID במזהה המשימה.