שימוש בכללי מדיניות לאורחים כדי לשמור על הגדרות תוכנה עקביות במכונות וירטואליות (VM) של Linux ו-Windows.
כדי להגדיר מדיניות אורח בקבוצה של מכונות וירטואליות, מבצעים את השלבים הבאים:
- מקצים למשתמשים את ההרשאות הנדרשות.
- הגדרת המכונה הווירטואלית.
- מגדירים את קובץ ה-JSON או ה-YAML של מדיניות האורחים.
- יצירת מדיניות האורחים.
לפני שמתחילים
- בודקים את המכסות של OS Config.
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא התהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Cloud de Confiance by S3NS . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים האלה:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
gcloud
-
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם. אחרי שנכנסתם לחשבון, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud init
-
- הגדרת אזור ותחום כברירת מחדל.
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Cloud de Confiance .
מגבלות
- במכונות הווירטואליות המטורגטות, מדיניות האורח מתעדכנת בכל פעם שהסוכן מתחבר לשירות. הבדיקה הזו מתבצעת כל 10 עד 15 דקות.
- במדיניות האורח של מערכת ההפעלה הקודמת אין לוחות בקרה לתאימות, התראות או שירותי התראות. מכונות וירטואליות שלא פועל בהן סוכן OS Config לא מדווחות על כשל. כדי לקבל את התוצאות הטובות ביותר, כדאי להשתמש בתכונה הזו עם שירות ניהול מלאי של מערכת ההפעלה או עם כל כלי אחר למעקב אחרי תאימות.
מתכון תוכנה עם שם ספציפי פועל רק פעם אחת כשיוצרים מדיניות אורח. כדי להריץ מחדש מתכון תוכנה, צריך לבצע את הפעולות הבאות:
- משנים את השם של מתכון התוכנה.
- מוחקים את מדיניות האורח ויוצרים אותה מחדש באמצעות מתכון התוכנה ששמו שונה.
הרשאות
מכיוון שאפשר להשתמש בכללי מדיניות אורח כדי להתקין ולנהל חבילות תוכנה במכונה וירטואלית, יצירה וניהול של כללי מדיניות אורח מקבילים להענקת גישה להרצת קוד מרחוק במכונה וירטואלית.
כשמגדירים מדיניות אורחים, הרשאות IAM משמשות כדי לשלוט בגישה למשאב המדיניות, והפעילויות נרשמות ביומן הביקורת. עם זאת, המשתמשים עדיין יכולים להריץ קוד במכונה הווירטואלית, מה שעלול לסכן את האבטחה. כדי לצמצם את הסיכון, מומלץ לתת לכל משתמש רק את הגישה הנדרשת.
לבעלים של פרויקט יש גישה מלאה ליצירה ולניהול של כללי מדיניות. לכל שאר המשתמשים צריך להעניק הרשאות. אפשר להקצות אחד מהתפקידים המפורטים הבאים:
- אדמין של GuestPolicy (
roles/osconfig.guestPolicyAdmin). מכיל הרשאות ליצירה, מחיקה, עדכון, קבלה ופירוט של כללי מדיניות אורחים. - עורך GuestPolicy (
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. כדי לשמור על הפרטיות, כברירת מחדל, פרטי מערכת ההפעלה של המכונות הווירטואליות לא זמינים. כדי לקבץ מכונות וירטואליות לפי פרטי מערכת ההפעלה, צריך לוודא שמאפייני האורח ושירותי OS Inventory Management מופעלים. כדי להפעיל את השירותים האלה, קראו את המאמר הגדרת המכונה הווירטואלית.
הגדרות המדיניות של האורחים חלות באופן אוטומטי על כל המכונות הווירטואליות החדשות שתואמות להקצאה.
הגדרה נדרשת
כדי לבצע את ההגדרה הנדרשת, אפשר להשתמש בכל אחת מהמשימות הבאות או בשילוב שלהן:
- להתקין, להסיר ולעדכן באופן אוטומטי חבילות תוכנה. דוגמה 1.
- להגדיר מאגרים של חבילות תוכנה. אפשר לעיין בדוגמה 1 או בדוגמה 3.
- להתקין תוכנות באמצעות מתכוני תוכנה.
קובצי YAML לדוגמה של מדיניות אורחים
דוגמה 1
מתקינים את החבילה my-package, שצריך לעדכן אותה במכונות הווירטואליות הבאות: 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
- למידע נוסף על הקצאת מדיניות אורח לחבילות, קראו את מסמך העזרה ייצוג JSON של חבילה.
- למידע נוסף על הקצאת מדיניות אורחים למאגרי חבילות, קראו את מאמר העזרה ייצוג JSON של PackageRepository.
דוגמה 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.
יצירת מדיניות אורחים
כשיוצרים מדיניות אורח, השם של מדיניות האורח צריך לעמוד בדרישות הבאות:
- הוא יכול לכלול רק אותיות קטנות, מספרים ומקפים.
- להתחיל באות
- להסתיים במספר או באות
- להכיל בין תו אחד ל-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 לדוגמה של מדיניות אורח.
פתרון בעיות
כדי לפתור בעיות במדיניות אורח, קראו את המאמר ניפוי באגים במדיניות אורח.