אפשר להשתמש במדיניות מערכת ההפעלה כדי לשמור על תצורות תוכנה עקביות במכונות וירטואליות (VM) של Linux ו-Windows.
לפני שמתחילים
- קוראים את המאמר בנושא מדיניות מערכת ההפעלה והקצאת מדיניות מערכת ההפעלה.
- בודקים את המכסות של OS Config.
- כדי ליצור יומני ביקורת לאירועים ב-VM Manager, צריך להפעיל יומני ביקורת של גישה לנתונים.
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים Google Cloud ולממשקי ה-API, לא צריך להגדיר אימות.
gcloud
-
התקינו את ה-CLI של Google Cloud. אחר כך, מאתחלים את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud initאם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
- הגדרת אזור ותחום כברירת מחדל
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
אם אתם משתמשים במעטפת מקומית, צריך ליצור פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם אתם משתמשים ב-Cloud Shell, אתם לא צריכים לעשות את זה.
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
Terraform
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Terraform שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud.
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .
מערכות הפעלה נתמכות
רשימה מלאה של מערכות הפעלה וגרסאות שתומכות במדיניות מערכת ההפעלה זמינה בפרטים על מערכת ההפעלה.
הרשאות
מכיוון שאפשר להשתמש במדיניות מערכת ההפעלה כדי להתקין חבילות תוכנה במכונה וירטואלית ולנהל אותן, יצירה וניהול של מדיניות מערכת ההפעלה שווים למתן גישה להרצת קוד מרחוק במכונה וירטואלית. כשמגדירים מדיניות של מערכת הפעלה, נעשה שימוש בהרשאות IAM כדי לשלוט בגישה למשאבי המדיניות, והפעילויות מתועדות ביומן הביקורת.
לבעלי פרויקט יש גישה מלאה ליצירה ולניהול של הקצאות של מדיניות מערכת הפעלה. לכל שאר המשתמשים, צריך להעניק הרשאות. אפשר להקצות את אחד מהתפקידים הבאים עם הרשאות מפורטות:
- אדמין של הקצאת מדיניות OS (
roles/osconfig.osPolicyAssignmentAdmin). התפקיד הזה כולל הרשאות ליצירה, למחיקה, לעדכון, לקבלת רשימה ולהצגת הקצאות של מדיניות OS. - OSPolicyAssignment Editor (
roles/osconfig.osPolicyAssignmentEditor). מכיל הרשאות לעדכון, לקבלת רשימה ולרשימה של הקצאות של מדיניות מערכת ההפעלה. - צפייה בהקצאת מדיניות של מערכת הפעלה (
roles/osconfig.osPolicyAssignmentViewer). ההרשאות מאפשרות גישת קריאה בלבד כדי לקבל ולרשום הקצאות של מדיניות מערכת הפעלה.
דוגמה לפקודה להגדרת הרשאות
כדי להעניק למשתמש הרשאת אדמין להקצאת מדיניות של מערכת הפעלה, מריצים את הפקודה הבאה:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member user:USER_ID@gmail.com \
--role roles/osconfig.osPolicyAssignmentAdmin
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט -
USER_ID: שם המשתמש של המשתמש ב-Google Workspace
יצירת הקצאה של מדיניות מערכת הפעלה
כדי ליצור הקצאת מדיניות למערכת הפעלה ולהשיק אותה, מבצעים את השלבים הבאים:
- הגדרת VM Manager
- מקצים למשתמשים את ההרשאות הנדרשות.
- קוראים את המאמר מדיניות מערכת ההפעלה והקצאת מדיניות מערכת ההפעלה.
- יוצרים את משאבי המדיניות של מערכת ההפעלה.
כדי ליצור הקצאת מדיניות למערכת ההפעלה ולהשיק אותה, משתמשים באחת מהשיטות הבאות:
המסוף
כדי ליצור הקצאת מדיניות למערכת הפעלה ולהשיק אותה, מבצעים את השלבים הבאים:
- בקליינט המקומי, יוצרים או מורידים מדיניות של מערכת הפעלה. הקובץ חייב להיות בפורמט JSON או YAML. מידע נוסף על יצירת מדיניות למערכת ההפעלה ודוגמאות למדיניות כזו זמין במאמר מדיניות למערכת ההפעלה.
נכנסים לדף OS policies במסוף Google Cloud .
לוחצים על Create zonal (יצירת אזור).
בקטע Assignment ID, נותנים שם להקצאת מדיניות מערכת ההפעלה. מוסכמות למתן שמות למשאבים
בקטע OS policies (מדיניות מערכת ההפעלה), מעלים את קובץ המדיניות של מערכת ההפעלה.
בקטע Target VM instances (מכונות וירטואליות ליעד), מציינים את מכונות היעד.
- בוחרים את האזור שמכיל את המכונות הווירטואליות שרוצים להחיל עליהן את המדיניות.
- בוחרים את משפחות מערכות ההפעלה.
- אופציונלי: אפשר לסנן עוד יותר את המכונות הווירטואליות על ידי ציון תוויות להכללה ולהחרגה.
לדוגמה, אתם יכולים לבחור את כל המכונות הווירטואליות של Ubuntu בסביבת הבדיקה, ולהחריג את אלה שמריצות Google Kubernetes Engine, על ידי ציון הפרטים הבאים:
- שם מקוצר של מערכת ההפעלה:
ubuntu - כולל:
env:test,env:staging - החרגה:
goog-gke-node

מגדירים תוכנית השקה.
- מציינים את גודל הגל (נקרא גם תקציב השיבושים). לדוגמה, 10%.
- מציינים את זמן ההמתנה. לדוגמה, 15 דקות.

לוחצים על הפעלת ההשקה.
gcloud
כדי ליצור הקצאת מדיניות של מערכת הפעלה ולהשיק אותה באזור:
יוצרים משאב להקצאת מדיניות למערכת הפעלה בפורמט JSON או YAML. בקובץ הזה מוגדרות מדיניות מערכת ההפעלה שרוצים להחיל על המכונות הווירטואליות, המכונות הווירטואליות שאליהן רוצים להחיל את המדיניות ושיעור ההשקה שבו רוצים להחיל את מדיניות מערכת ההפעלה. מידע נוסף על הקובץ הזה ועל דוגמאות להקצאת הרשאות זמין במאמר בנושא הקצאת הרשאות למערכת ההפעלה.
משתמשים בפקודה
os-config os-policy-assignments createכדי ליצור הקצאה של מדיניות מערכת הפעלה ולפרוס אותה במיקום שצוין.gcloud compute os-config os-policy-assignments create OS_POLICY_ASSIGNMENT_ID \ --location=ZONE \ --file=OS_POLICY_ASSIGNMENT_FILE \ --async
מחליפים את מה שכתוב בשדות הבאים:
OS_POLICY_ASSIGNMENT_ID: השם של הקצאת מדיניות מערכת ההפעלה. מוסכמות למתן שמות למשאבים-
ZONE: האזור שבו ייצור את הקצאת מדיניות מערכת ההפעלה. -
OS_POLICY_ASSIGNMENT_FILE: הנתיב המוחלט לקובץ הקצאת מדיניות מערכת ההפעלה שיצרתם בשלב הקודם.
דוגמה
gcloud compute os-config os-policy-assignments create my-os-policy-assignment \ --location=asia-south1-a \ --file=/downloads/assignment-config.yaml \ --asyncהפלט אמור להיראות כך:
Create request issued for: [my-os-policy-assignment] Check operation [projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa] for status.
רושמים את שם המשאב שמוגדר במלואו של הפעולה. בדוגמה הקודמת, השם המוגדר במלואו של המשאב הוא:
projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa
אפשר להשתמש בשם המשאב המוגדר במלואו הזה כדי לקבל פרטים על השקת גרסה או כדי לבטל השקת גרסה. מידע נוסף על השקות
Terraform
כדי ליצור הקצאה של מדיניות מערכת הפעלה, משתמשים במשאב
google_os_config_os_policy_assignment.בדוגמה הבאה מוודאים ששרת האינטרנט של Apache פועל במכונות וירטואליות של CentOS.
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
REST
כדי ליצור הקצאת מדיניות של מערכת הפעלה בלקוח המקומי:
יוצרים הקצאת מדיניות למערכת ההפעלה. הקובץ חייב להיות JSON. מידע נוסף על יצירת הקצאות של מדיניות OS
אם רוצים להשתמש בהקצאת מדיניות לדוגמה של מערכת הפעלה בפורמט YAML, צריך להמיר אותה לפורמט JSON.
ב-API, יוצרים בקשת
POSTאל ה-methodprojects.locations.osPolicyAssignments.create.בגוף הבקשה, מדביקים את המפרטים של הקצאת מדיניות מערכת ההפעלה מהשלב הקודם.
POST https://osconfig.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/osPolicyAssignments?osPolicyAssignmentId=OS_POLICY_ASSIGNMENT_ID { JSON_OS_POLICY }מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט -
OS_POLICY_ASSIGNMENT_ID: השם של הקצאת מדיניות מערכת ההפעלה -
JSON_OS_POLICY: המפרטים של הקצאת מדיניות מערכת ההפעלה שנוצרו בשלב הקודם. הערך הזה חייב להיות בפורמט JSON. מידע נוסף על הפרמטרים והפורמט זמין במאמרResource: OSPolicyAssignment. -
ZONE: האזור שבו רוצים ליצור את הקצאת מדיניות מערכת ההפעלה
דוגמה
לדוגמה, כדי ליצור הקצאת מדיניות למערכת ההפעלה עבור Google Cloud Observability שמתקינה סוכני ניטור ורישום ביומנים במכונות וירטואליות נבחרות באמצעות הקצאת המדיניות לדוגמה למערכת ההפעלה, מבצעים את השלבים הבאים:
- המרת הדוגמה ל-JSON
- שולחים את הבקשה הבאה:
POST https://osconfig.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/osPolicyAssignments?osPolicyAssignmentId=OS_POLICY_ASSIGNMENT_ID { "osPolicies": [ { "id": "setup-repo-and-install-package-policy", "mode": "ENFORCEMENT", "resourceGroups": [ { "resources": [ { "id": "setup-repo", "repository": { "yum": { "id": "google-cloud-monitoring", "displayName": "Google Cloud Monitoring Agent Repository", "baseUrl": "https://packages.cloud.google.com/yum/repos/google-cloud-monitoring-el8-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" ] } } }, { "id": "install-pkg", "pkg": { "desiredState": "INSTALLED", "yum": { "name": "stackdriver-agent" } } } ] } ] } ], "instanceFilter": { "inclusionLabels": [ { "labels": { "used_for": "testing" } } ] }, "rollout": { "disruptionBudget": { "fixed": 10 }, "minWaitDuration": { "seconds": 300 } } }-
השקות
הקצאות של מדיניות מערכת ההפעלה נפרסות בהתאם לקצב ההשקה. המשמעות היא שאפשר לפרוס בהדרגה הקצאות שמטרגטות קבוצה של מכונות וירטואליות, והן לא יחולו על כל המכונות הווירטואליות באופן מיידי. השינויים מושקים בהדרגה כדי לאפשר לכם להתערב ולבטל את ההשקה אם שינויים חדשים גורמים לרגרסיות.
כשקריאות ל-method של API עשויות להימשך זמן רב, ה-API מחזיר פעולות ממושכות (LRO). מידע נוסף על פעולות ממושכות זמין במאמר בנושא פעולות ממושכות.
ממשק ה-API של OS Config יוצר LRO בכל פעם שיוצרים, מעדכנים או מוחקים הקצאה של מדיניות מערכת הפעלה. כל LRO מחזיר משאב של פעולה. משאב הפעולה אמור להיראות כך:
Create request issued for: [my-os-policy-assignment] Check operation [projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa] for status.
כל פעולת יצירה, עדכון או מחיקה יוצרת גם גרסה חדשה של הקצאת מדיניות למערכת ההפעלה. כדי לראות את הגרסאות של הקצאת מדיניות למערכת הפעלה, אפשר לעיין במאמר רשימת הגרסאות של הקצאת מדיניות למערכת הפעלה.
אפשר להשתמש ב-Google Cloud CLI כדי לקבל את הפרטים של השקת גרסה או כדי לבטל השקת גרסה.
קבלת פרטים על השקה
כדי לקבל פרטים על השקת תכונה, משתמשים בפקודה os-config os-policy-assignments operations describe.
gcloud compute os-config os-policy-assignments operations describe FULLY_QUALIFIED_OPERATION_NAME
מחליפים את FULLY_QUALIFIED_OPERATION_NAME בשם המשאב המלא של הפעולה שמוחזרת מהפעולה create, update או delete.
דוגמה
gcloud compute os-config os-policy-assignments operations describe \
projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa
פלט לדוגמה
done: true
metadata:
'@type': type.googleapis.com/google.cloud.osconfig.$$api-version$$.OSPolicyAssignmentOperationMetadata
apiMethod: CREATE
osPolicyAssignment: projects/3841234882888/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment@cfb78790-41d8-40d1-b8a1-1eaf6011b909
rolloutStartTime: '2021-04-15T00:53:52.963569Z'
rolloutState: SUCCEEDED
rolloutUpdateTime: '2021-04-15T00:53:53.094041Z'
name: projects/3841234882888/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/cfb78790-41d8-40d1-b8a1-1eaf6011b909
response:
'@type': type.googleapis.com/google.cloud.osconfig.$$api-version$$.OSPolicyAssignment
baseline: true
description: My test policy
instanceFilter:
inclusionLabels:
- labels:
label-key-not-targeting-instances: label-value-not-targeting-instances
name: projects/3841234882888/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment
osPolicies:
- id: q-test-policy
mode: ENFORCEMENT
resourceGroups:
- osFilter:
osShortName: centos
osVersion: '7'
resources:
- id: add-repo
repository:
yum:
baseUrl: https://packages.cloud.google.com/yum/repos/google-cloud-ops-agent-el7-x86_64-all
ביטול השקה
המסוף
נכנסים לדף OS policies במסוף Google Cloud .
לוחצים על הכרטיסייה הקצאות אזוריות.
במדיניות של מערכת ההפעלה שרוצים לבטל את ההשקה שלה, לוחצים על פעולה () > ביטול ההשקה.
לוחצים על ביטול ההשקה.
gcloud
כדי לבטל את ההשקה, משתמשים בפקודה gcloud compute os-config os-policy-assignments operations cancel.
gcloud compute os-config os-policy-assignments operations cancel FULLY_QUALIFIED_OPERATION_NAME
מחליפים את FULLY_QUALIFIED_OPERATION_NAME בשם המשאב המלא של הפעולה שמוחזרת מהפעולה create, update או delete.
דוגמה
gcloud compute os-config os-policy-assignments operations cancel \
projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa
אם הפקודה מצליחה, לא מוחזר פלט.