בדף הזה מוסבר איך להגדיר את הפרויקט כך ש-Deployment Manager יוכל ליצור מכונות וירטואליות של Compute Engine באמצעות תמונות של מערכות הפעלה ששייכות לפרויקט אחר.
לדוגמה, נניח שיש לכם פרויקט בשם Awesome Project שבו Deployment Manager יוצר ומנהל מכונות וירטואליות. נניח שאתם צריכים להשתמש בתמונות פרטיות ששייכות לפרויקט אחר בשם Database Images.
כדי לתת גישה לתמונות האלה, הבעלים של Database Images צריך להקצות את תפקיד ה-IAM roles/compute.imageUser לחשבון השירות של Google APIs של Awesome Project, ואז Awesome Project יוכל להשתמש בתמונות מהפרויקט Database Images.
אפשר גם להשתמש בתהליך הזה כדי להעניק לקבוצות של מכונות וירטואליות מנוהלות גישה לתמונות מפרויקטים אחרים.
לפני שמתחילים
- אם רוצים להשתמש בדוגמאות לשורת הפקודה במדריך הזה, צריך להתקין את כלי שורת הפקודה`gcloud`.
- כדי להשתמש בדוגמאות ל-API במדריך הזה, צריך להגדיר גישה ל-API.
- מידע נוסף על הגדרות של Deployment Manager
- מידע נוסף על קובצי אימג' פרטיים ב-Compute Engine
- אפשר לקרוא את חומרי העזרה בנושא ניהול זהויות והרשאות גישה (IAM).
- מידע על תפקידי IAM ב-Deployment Manager, ובמיוחד על התפקיד
roles/compute.imageUser.
מגבלות
ההגבלות הבאות חלות על השימוש בתכונה הזו:
- צריך להקצות את התפקיד
compute.imageUserברמת הפרויקט לחשבון השירות של Google APIs בפרויקט. - הקצאת התפקיד
compute.imageUserמעניקה הרשאות לכל התמונות בפרויקט הספציפי. אי אפשר לשתף תמונות ספציפיות. - צריך להעניק את התפקיד הזה למשתמשים ספציפיים, ולא ל
allAuthenticatedUsersאו לallUsers.
מתן גישה לתמונות
כדי להעניק גישה לתמונות ששייכות לפרויקט אחר, הבעלים של הפרויקט שבו נמצאות התמונות צריך להעניק גישה לחשבון השירות של Google APIs של הפרויקט שרוצה להשתמש בתמונות.
- נכנסים לדף IAM במסוף Google Cloud של הפרויקט שצריך לקבל גישה לתמונות פרטיות שנמצאות בבעלות של פרויקט אחר.
- אם מתבקשים, בוחרים את הפרויקט מהרשימה. חשוב לבחור את הפרויקט שצריך לקבל גישה לתמונות שמאוחסנות בפרויקט אחר.
מחפשים את חשבון השירות של Google APIs, שיש לו כתובת אימייל בפורמט הבא:
[PROJECT_NUMBER]@cloudservices.gserviceaccount.comחשוב לרשום את כתובת האימייל שמופיעה למעלה. לאחר מכן, בעלי הפרויקט שבו נמצאות התמונות הרצויות יכולים להקצות לחשבון השירות של Google APIs את התפקיד
roles/compute.imageUser.המסוף
- במסוף Google Cloud , עוברים לדף IAM של הפרויקט שמכיל את התמונות שרוצים לגשת אליהן.
- בוחרים את הפרויקט מרשימת הפרויקטים.
- לוחצים על הלחצן הוספה כדי להוסיף חבר חדש.
- בתיבה Members (חברים), מזינים את כתובת האימייל של חשבון השירות.
- מרחיבים את התפריט הנפתח Roles (תפקידים) ובוחרים באפשרות Compute Engine > Compute Image User (משתמש בתמונת מחשוב).
- לוחצים על הוספה כדי להוסיף את החשבון.
gcloud
בעזרת Google Cloud CLI, מוסיפים קשר למדיניות IAM של הפרויקט:
gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member serviceAccount:[SERVICE_ACCOUNT_EMAIL] --role roles/compute.imageUserwhere:
-
[PROJECT_ID]הוא מזהה הפרויקט שמכיל את התמונות שרוצים לשתף. -
[SERVICE_ACCOUNT_EMAIL]היא כתובת האימייל של חשבון השירות.
לדוגמה:
gcloud projects add-iam-policy-binding database-images \ --member serviceAccount:123456789012@cloudservices.gserviceaccount.com \ --role roles/compute.imageUserAPI
ב-API, שולחים בקשת
POSTלכתובת ה-URL הבאה, כאשר[PROJECT_ID]הוא מזהה הפרויקט שמכיל את התמונות שרוצים לשתף.POST https://cloudresourcemanager.googleapis.com/v1/projects/$[PROJECT_ID]:setIamPolicyגוף הבקשה צריך להכיל את רשימת ההתאמות שרוצים להחיל על הפרויקט הזה. התפקיד
roles/compute.imageUserצריך להיות חלק מהקישור. לדוגמה:{ "policy": { "version": "0", "bindings": [ { "role": "roles/owner", "members": [ "user:example@gmail.com" ] }, { "role": "roles/compute.imageUser", "members": [ "serviceAccount:123456789012@cloudservices.gserviceaccount.com" ] } ] }}
שימוש בתמונות מפרויקטים אחרים בהגדרות
אחרי שניתנת לפרויקט גישה לתמונות מפרויקט אחר, משתמשים בפרויקט יכולים להשתמש בתמונות על ידי ציון מזהה הפרויקט שאליו התמונות שייכות בתבניות או בהגדרות שלהם:
image: projects/[PROJECT_ID]/global/images/[IMAGE_NAME]
לדוגמה, אם מזהה הפרויקט של התמונה הוא database-images, יכול להיות שתספקו את ה-URI הבא של התמונה בהגדרה:
resources:
- name: a-special-vm
type: compute.v1.instances
properties:
machineType: zones/us-central1-a/machineTypes/f1-micro
image: projects/database-images/global/images/example-database-image
...אחרי שמוסיפים את התמונה, משלימים את יצירת ההגדרה ואז פורסים אותה.
מה השלב הבא?
- מידע נוסף על שיתוף תמונות
- מידע נוסף על קובצי אימג' ב-Compute Engine
- אילו תפקידים נוספים אפשר להעניק ב-IAM
- למידע נוסף על חשבונות שירות