יצירת מדיניות לגבי אורחים (קודמת)

אפשר להשתמש במדיניות של מערכת ההפעלה האורחת כדי לשמור על הגדרות תוכנה עקביות במכונות וירטואליות (VM) של Linux ו-Windows.

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

  1. מקצים למשתמשים את ההרשאות הנדרשות.
  2. הגדרת מכונה וירטואלית.
  3. מגדירים את מדיניות האורחים בקובץ JSON או YAML.
  4. יוצרים את מדיניות האורחים.

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

מגבלות

  • במכונות וירטואליות מטורגטות, מדיניות האורח מתעדכנת בכל פעם שהסוכן מתחבר לשירות. הבדיקה הזו מתבצעת כל 10 עד 15 דקות.
  • אין לוחות בקרה של תאימות, התראות או שירותי התראה שזמינים עם מדיניות האורחים של מערכת ההפעלה מדור קודם. מכונות וירטואליות שלא מריצות את הסוכן OS Config לא מדווחות על כשל. כדי לקבל את התוצאות הטובות ביותר, מומלץ להשתמש בתכונה הזו עם השירות ניהול מלאי מערכות הפעלה או עם כלי אחר למעקב אחרי תאימות.
  • מתכון תוכנה עם שם ספציפי מופעל רק פעם אחת כשיוצרים מדיניות אורח. כדי להפעיל מחדש מתכון תוכנה, צריך לבצע את הפעולות הבאות:

    1. משנים את השם של מתכון התוכנה.
    2. מוחקים את מדיניות האורחים ויוצרים אותה מחדש באמצעות מתכון התוכנה ששונה שמו.

הרשאות

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

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

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

  • אדמין של GuestPolicy ‏ (roles/osconfig.guestPolicyAdmin). מכיל הרשאות ליצירה, למחיקה, לעדכון, לקבלת רשימה ולקבלת פרטים של מדיניות אורחים.
  • הכלי לעריכת מדיניות למשתתפים (roles/osconfig.guestPolicyEditor). מכיל הרשאות לקבלת מדיניות למשתתפים, לעדכון שלה ולצפייה ברשימה שלה.
  • GuestPolicy Viewer (roles/osconfig.guestPolicyViewer). מכיל הרשאות לגישה לקריאה בלבד כדי לקבל ולרשום מדיניות של אורחים.

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

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member user:USER_ID@gmail.com \
    --role roles/osconfig.guestPolicyAdmin

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID: מזהה הפרויקט.
  • USER_ID: שם המשתמש של המשתמש ב-Google Workspace.

הגדרת מכונה וירטואלית

כדי להשתמש במדיניות אורחים, צריך להגדיר את VM Manager.

הגדרת קובץ YAML או JSON של מדיניות אורח

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

קובץ ה-YAML או ה-JSON מכיל את שני החלקים העיקריים הבאים:

מטלות

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

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

  • שם המכונה. דוגמה 1
  • קידומת לשם המכונה. דוגמה 2
  • תווית המופע. דוגמה 3
  • אזור. דוגמה 4
  • פרטי מערכת ההפעלה, שכוללים את השם, הגרסה והארכיטקטורה של מערכת ההפעלה. דוגמה 5 אפשר להשתמש בפקודה os-inventory describe כדי לקבוע את השם, הגרסה והארכיטקטורה של מערכת ההפעלה של מכונות וירטואליות.

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

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

הגדרה נדרשת

אפשר לבצע את ההגדרה הנדרשת באמצעות אחת מהמשימות הבאות או שילוב שלהן:

  • התקנה, הסרה ועדכון אוטומטי של חבילות תוכנה. דוגמה 1
  • הגדרת מאגרי חבילות תוכנה. דוגמה 1 או דוגמה 3
  • התקנת תוכנה באמצעות מתכוני תוכנה.
    • במכונות וירטואליות של Linux, אפשר לעיין בדוגמה 5.
    • למכונות וירטואליות של Windows, אפשר לעיין בדוגמה 4 או בדוגמה 6.

קבצים לדוגמה של מדיניות לגבי אורחים ב-YAML

דוגמה 1

צריך להתקין את החבילה my-package ולעדכן אותה במופעי ה-VM הבאים: my-instance-1 ו-my-instance-2.

assignment:
  instances:
  - zones/us-east1-c/instances/my-instance-1
  - zones/us-east1-c/instances/my-instance-2
packages:
- name: "my-package"
  desiredState: UPDATED

מידע נוסף על הקצאת מדיניות לאורחים בחבילות זמין במאמר ייצוג JSON של חבילות.

דוגמה 2

מתקינים את סוכן Cloud Monitoring באמצעות מנהל החבילות yum בכל מכונות ה-VM שיש להן אחת מהקידומות הבאות של שמות המכונות: test-instance- או dev-instance-.

assignment:
  instanceNamePrefixes:
  - "test-instance-"
  - "dev-instance-"
packages:
- name: "stackdriver-agent"
  desiredState: INSTALLED
  manager: YUM
packageRepositories:
- yum:
    id: google-cloud-monitoring
    displayName: "Google Cloud Monitoring Agent Repository"
    baseUrl: https://packages.cloud.google.com/yum/repos/google-cloud-monitoring-el7-x86_64-all
    gpgKeys:
    - https://packages.cloud.google.com/yum/doc/yum-key.gpg
    - https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

מידע נוסף על הקצאת מדיניות לאורחים למאגרי חבילות זמין במאמר בנושא ייצוג JSON של PackageRepository.

דוגמה 3

התקנה של my-package והסרה של bad-package-1 ושל bad-package-2 ממופעים עם קבוצה ספציפית של תוויות. מוסיפים גם מאגרי מידע למנהלי החבילות apt ו-yum.

assignment:
  # Assign to VM instances where `(label.color=red AND label.env=test) OR (label.color=blue AND label.env=test)`
  groupLabels:
  - labels:
      color: red
      env: test
  - labels:
      color: blue
      env: test
packages:
- name: "my-package"
  desiredState: INSTALLED
- name: "bad-package-1"
  desiredState: REMOVED
- name: "bad-package-2"
  desiredState: REMOVED
  manager: APT  # Only apply this to systems with APT.
packageRepositories:
- apt:  # Only apply this to systems with APT.
    uri: "https://packages.cloud.google.com/apt"
    archiveType: DEB
    distribution: cloud-sdk-stretch
    components:
    - main
- yum:  # Only apply this to systems with YUM.
    id: google-cloud-sdk
    displayName: "Google Cloud SDK"
    baseUrl: https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64
    gpgKeys:
    - https://packages.cloud.google.com/yum/doc/yum-key.gpg
    - https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

דוגמה 4

התקנת תוכנה מקובץ MSI שמתארח ב-Cloud Storage בכל המכונות ב-us-east1-b וב-us-east1-d.

assignment:
  zones:
  - us-east1-b
  - us-east1-d
recipes:
- name: "swr-msi-gcs"
  desiredState: INSTALLED
  artifacts:
  - id: "the-msi"
    gcs:
      bucket: "my-bucket"
      object: "executable.msi"  # full URI gs://my-bucket/executable.msi#nnnnn
      generation: 1546030865175603
  installSteps:
  - msiInstallation:
      artifactId: "the-msi"

מידע נוסף על הגדרת מדיניות של מתכוני תוכנה מופיע במסמך העזר בנושא ייצוג JSON של SoftwareRecipe.

דוגמה 5

כדי להתקין תוכנה, מריצים סקריפט מוטבע בכל מכונות ה-VM שעומדות בדרישות הבאות:

  • מערכת הפעלה: Red Hat Enterprise Linux 7
  • תווית: color=red
assignment:
  osTypes:
  - osShortName: rhel
    osVersion: "7"
  groupLabels:
  - labels:
      color: red
recipes:
- name: recipe-runscript
  desiredState: INSTALLED
  installSteps:
  - scriptRun:
      script: |-
        #!/bin/bash
        touch /TOUCH_FILE

מידע נוסף על הגדרת מדיניות של מתכוני תוכנה מופיע במסמך העזר בנושא ייצוג JSON של SoftwareRecipe.

דוגמה 6

התקנת האפליקציה בכל המקרים של Windows באמצעות קובץ הפעלה להתקנה עם תחילית שם המופע הבאה: test-instance-.

assignment:
  instanceNamePrefixes:
  - "test-instance-"
  osTypes:
  - osShortName: WINDOWS
recipes:
- name: windows-install-exe-example
  desiredState: INSTALLED
  artifacts:
  - id: installer
    gcs:
      bucket: my-bucket
      generation: '1597013478912389'
      object: MyApp.Installer.x64.exe
  installSteps:
  - fileExec:
      artifactId: installer
      args:
      - /S # Installation must be silent

מידע נוסף על הגדרת מדיניות של מתכוני תוכנה מופיע במסמך העזר בנושא ייצוג JSON של SoftwareRecipe.

יצירת מדיניות לגבי אורחים

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

  • הוא יכול לכלול רק אותיות קטנות, מספרים ומקפים
  • התחלה באות
  • השם צריך להסתיים בספרה או באות
  • להיות באורך של 1 עד 63 תווים
  • כל מזהה מדיניות חייב להיות ייחודי בפרויקט

כדי ליצור מדיניות לאורחים, משתמשים באחת מהשיטות הבאות.

gcloud

כדי ליצור מדיניות אורחים, משתמשים בפקודה os-config guest-policies create.

gcloud beta compute os-config guest-policies create POLICY_ID \
    --file=FILE

מחליפים את מה שכתוב בשדות הבאים:

  • POLICY_ID: השם של מדיניות האורחים שרוצים ליצור.
  • FILE: קובץ JSON או YAML שמכיל את המפרטים של מדיניות האורחים. כדי לראות דוגמאות להגדרות, אפשר לעיין בדוגמאות לקובצי YAML של מדיניות אורח.

REST

ב-API, יוצרים בקשת POST ל-method‏ projects.guestPolicies.create.

POST https://osconfig.googleapis.com/v1beta/projects/PROJECT_ID/guestPolicies?guestPolicyId=POLICY_ID

{
 For more information, see Guest policy JSON
}

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID: מזהה הפרויקט.
  • POLICY_ID: השם של מדיניות האורחים.

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

פתרון בעיות

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

מה השלב הבא?