הפעלת סוכני מכונות וירטואליות בכל צומת GKE בארגונים

בדף הזה מוסבר איך לוודא ש-VM Manager מופעל בכל המכונות הווירטואליות של Compute Engine, כולל מכונות וירטואליות של Google Kubernetes Engine בארגון, בתיקייה או בפרויקט, באמצעות Organization Policy Service.

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

לפני שקוראים את הדף הזה, חשוב לוודא שכבר יש לכם היכרות עם VM Manager ועם אילוצים של מנהל המשאבים.

במדריך הזה נסביר איך לאכוף את השימוש ב-VM Manager בכל פרויקט בארגון או בתיקייה. במדריך הזה לא מוסבר איך להגדיר את VM Manager ולהשתמש בו עם מדיניות מערכת הפעלה. הוראות מפורטות זמינות במאמר בנושא יצירת הקצאה של מדיניות מערכת הפעלה.

מידע על VM Manager

VM Manager הוא חבילת כלים לניהול מערכות הפעלה למכונות וירטואליות (VM) ב-Fleets גדולים, שמריצים Windows ו-Linux ב-Compute Engine. אפשר להשתמש ב-VM Manager כדי להחיל מדיניות של מערכת ההפעלה כדי להתאים אישית את התוכניות שפועלות במכונות וירטואליות. לדוגמה, אתם יכולים להגדיר מדיניות להתקנת סוכן במשאב, ולעשות שימוש חוזר במדיניות הזו בכמה משאבים. כברירת מחדל, VM Manager מושבת בפרויקטים שלGoogle Cloud .

כדי לצמצם את היקף ההחלה של כללי המדיניות על ידי VM Manager, אפשר להשתמש בOSPolicyAssignments, שמאפשר להגדיר את היקף ההחלה של כללי מדיניות של מערכת ההפעלה למכונות וירטואליות ספציפיות באמצעות סלקטורים. לדוגמה, לכל המכונות הווירטואליות של צומתי GKE יש את התווית goog-gke-node, שאפשר לטרגט באמצעות הקצאת מדיניות של מערכת הפעלה.

מדיניות הארגון ו-VM Manager

אם Google Cloud בארגון שלכם יש כמה רמות היררכיות, כמו תיקיות ותיקיות משנה, הפעלה ידנית של VM Manager בכל הפרויקטים האלה עלולה לגרום לתקורה מיותרת של ניהול. אתם יכולים לדרוש שבכל הפרויקטים בתיקיות או בארגון, יופעל VM Manager בכל המכונות הווירטואליות באמצעות Organization Policy Service עם המגבלה constraints/compute.requireOsConfig. אלה כמה מהיתרונות של אכיפת VM Manager באמצעות מדיניות ארגונית:

  • בכל הפרויקטים החדשים, התווית enable-osconfig=TRUE של מטא-נתונים מתווספת לכל פרויקט ולכל מכונה וירטואלית.
  • אם מישהו ינסה להסיר את התווית הזו או להגדיר אותה לערך שאינו true, השינוי יידחה.
  • אם מישהו ינסה ליצור או לעדכן מכונה וירטואלית באופן שיגדיר את מפתח המטא-נתונים enable-osconfig לערך שאינו true, השינוי יידחה.

לפני שמתחילים

לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:

  • מפעילים את ממשק ה-API של Google Kubernetes Engine.
  • הפעלת Google Kubernetes Engine API
  • אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה gcloud components update כדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
  • חשוב לוודא שכבר משתמשים ב-VM Manager עם מדיניות מערכת הפעלה והקצאות של מדיניות מערכת הפעלה כדי להפעיל סוכנים במכונות הווירטואליות. הוראות מפורטות זמינות במאמר יצירת הקצאת מדיניות OS.
  • Enable the Cloud Resource Manager API, OS Config API APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

מגבלות

למדיניות הארגון constraints/compute.requireOsConfig יש את המגבלות הבאות:

  • המשאבים עם הפרות קיימות לא משתנים בעקבות מדיניות הארגון החדשה. אפשר להגדיר את המטא נתונים של המדיניות באופן ידני או באמצעות gcloud במשאבים קיימים.
  • כל מי שיש לו הרשאה לשנות מטא-נתונים במכונות וירטואליות של Compute Engine בפרויקט יכול להשבית את osconfig-agent במכונה הווירטואלית על ידי הגדרת שדה המטא-נתונים osconfig-disabled-features.
  • אם osconfig-agent לא פועל, ה-VM מופיע כלא תואם בלוח הבקרה של VM Manager. לדוגמה, זה יכול לקרות אם משתמש השבית את הסוכן באופן ידני.

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות לניהול מדיניות הארגון, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM Organization policy administrator (roles/orgpolicy.policyAdmin) בארגון. להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

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

הפעלה של compute.requireOsConfig בכל הארגון

אחרי שמפעילים את VM Manager ומגדירים את OSPolicyAssignment למכונות הווירטואליות, אפשר לוודא ש-VM Manager מופעל כברירת מחדל בכל הפרויקטים החדשים עם מדיניות הארגון constraints/compute.requireOsConfig. האופן שבו אוכפים את constraints/compute.requireOsConfig תלוי בגרסת ה-API שבה אתם משתמשים.

Organization Policy v2 API

אפשר לאכוף את האילוץ constraints/compute.requireOsConfig עלGoogle Cloud משאב כמו תיקייה או ארגון באמצעות ה-CLI של gcloud או מסוף Google Cloud .

gcloud

  1. מוודאים שההגבלה compute.requireOsConfig לא הוחלה כבר:

    gcloud org-policies describe \
        constraints/compute.requireOsConfig \
        --organization=ORGANIZATION_ID
    

    מחליפים את ORGANIZATION_ID במזהה הארגון.

    אם לא מוגדרת מדיניות, הפקודה הזו מחזירה שגיאה מסוג NOT_FOUND:

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    

    אם המדיניות קיימת, הפקודה מחזירה את המדיניות הנוכחית. החלת מדיניות חדשה מחליפה את המדיניות הקיימת, אם יש כזו.

  2. יוצרים קובץ זמני /tmp/policy.yaml לאחסון המדיניות:

    name: organizations/ORGANIZATION_ID/policies/constraints/compute.requireOsConfig
    spec:
      rules:
      - enforce: true
    
  3. מריצים את הפקודה set-policy:

    gcloud org-policies set-policy /tmp/policy.yaml
    
  4. מוודאים שהמדיניות החדשה חלה:

    gcloud org-policies describe \
        constraints/compute.requireOsConfig --effective \
        --organization=ORGANIZATION_ID
    

    הפלט של הפקודה אמור להיראות כך:

    name: organizations/ORGANIZATION_ID/policies/constraints/compute.requireOsConfig
    spec:
      rules:
      - enforce: true
    

console

  1. במסוף Google Cloud , נכנסים לדף מדיניות הארגון.

    מעבר אל מדיניות הארגון

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

  3. בדף מדיניות הארגון, משתמשים במסנן כדי לחפש את compute.requireOsConfig.

  4. לוחצים על שם המדיניות כדי לפתוח את הדף פרטי המדיניות.

  5. לוחצים על ניהול מדיניות כדי לעדכן את מדיניות הארגון עבור המשאב הזה.

  6. בדף עריכת מדיניות, בוחרים באפשרות במקום המדיניות של המשאב הראשי.

  7. בוחרים באפשרות הוספת כלל.

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

  9. כדי לאכוף את המדיניות, לוחצים על הגדרת מדיניות.

Resource Manager v1 API

  1. מוודאים שההגבלה compute.requireOsConfig לא הוחלה כבר:

    gcloud resource-manager org-policies describe constraints/compute.requireOsConfig \
        --organization ORGANIZATION_ID
    

    מחליפים את ORGANIZATION_ID במזהה הארגון.

    אם לא מוגדרת מדיניות, הפקודה הזו מחזירה מדיניות לא מלאה, כמו בדוגמה הבאה:

    constraint: "constraints/compute.requireOsConfig"
    etag: BwVJi0OOESU=
    

    אם המדיניות קיימת, הפקודה מחזירה את המדיניות הנוכחית. החלת מדיניות חדשה מחליפה את המדיניות הקיימת, אם יש כזו.

  2. מגדירים את המדיניות לאכיפה בארגון:

    gcloud resource-manager org-policies enable-enforce constraints/compute.requireOsConfig \
        --organization ORGANIZATION_ID
    

    הפלט של הפקודה אמור להיראות כך:

    booleanPolicy:
      enforced: true
    constraint: constraints/compute.requireOsConfig
    etag: BwVJitxdiwY=
    
  3. מוודאים שהמדיניות החדשה חלה:

    gcloud resource-manager org-policies describe constraints/compute.requireOsConfig \
        --effective \
        --organization ORGANIZATION_ID
    

    הפלט של הפקודה אמור להיראות כך:

    booleanPolicy:
      enforced: true
    constraint: constraints/compute.requireOsConfig
    

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

במאמרי העזרה של מנהל המשאבים מוסבר בהרחבה על מדיניות נוספת שאפשר להחיל, ועל שינוי או מחיקה של מדיניות.

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

מידע נוסף על כתיבה ביומני ביקורת ב-GKE