במאמר הזה מוסבר על הדרישות המוקדמות לייבוא ולייצוא של תמונות ב-Compute Engine.
אתם יכולים לשתף מכונות וירטואליות (VM), קבצים של דיסקים וירטואליים ותמונות של מכונות מסביבות ענן אחרות או מהסביבה המקומית שלכם, על ידי ייבוא וייצוא של תמונות מ-Cloud Storage. ברשימת המשימות הבאה מפורטות הדרישות שצריך לעמוד בהן לפני שמייבאים ומייצאים תמונות:
- הגדרת גישה לקטגוריה של Cloud Storage
- הקצאת התפקידים הנדרשים לחשבון המשתמש
- מקצים את התפקידים הנדרשים לחשבון השירות ב-Cloud Build
- מקצים את התפקידים הנדרשים לחשבון השירות של Compute Engine
- הגדרת VPC Service Controls
לפני שמתחילים
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Cloud de Confiance by S3NS . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Cloud de Confiance כדי לגשת לשירותים ולממשקי ה-API, לא צריך להגדיר אימות. Cloud de Confiance by S3NS
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 .
הגדרת גישה לקטגוריה של Cloud Storage
צריכה להיות לכם גישה לקטגוריה של Cloud Storage שבה הכלי לייבוא או לייצוא יכול להשתמש. אם אין לכם קטגוריה של Cloud Storage, אפשר לעיין במאמר בנושא יצירת קטגוריה של Cloud Storage.
כדי להגדיר גישה לקטגוריה של Cloud Storage, צריך לעיין במאמרים הקצאת התפקידים הנדרשים לחשבון וחשבון השירות של Compute Engine.
אם מייצאים תמונה, הכלי לייצוא מעלה את התמונה לקטגוריה של Cloud Storage.
אם אתם מייבאים תמונה, אתם צריכים קודם להעלות אותה לקטגוריה של Cloud Storage. כלי הייבוא מוריד את הקובץ מקטגוריה של Cloud Storage אל Compute Engine, ואז הכלי יוצר תמונה ב-Compute Engine מקובץ הדיסק הזה.
מתן התפקידים הנדרשים ב-IAM
כדי לבצע את הפעולה בשמו, הכלי לייבוא ולייצוא של תמונות מכונות וירטואליות דורש את החשבונות הבאים:
- חשבון משתמש. החשבון שממנו מריצים את פקודות הייבוא והייצוא.
- חשבון השירות של Cloud Build. חשבון שירות שמוגדר כברירת מחדל ב-Cloud Build, שנוצר כשמפעילים את ממשק ה-API ל-Cloud Build בכלי הייבוא או הייצוא.
- חשבון שירות של Compute Engine. חשבון שירות של Compute Engine שמוגדר כברירת מחדל או מותאם אישית, שנדרש לתהליך העבודה של הייבוא והייצוא.
הקצאת התפקידים הנדרשים לחשבון המשתמש
כדי לייבא או לייצא תמונות, לחשבון המשתמש שלכם צריכות להיות ההרשאות הבאות:
- תפקיד אדמין לניהול נפח האחסון (
roles/storage.admin) - תפקיד הצופה (
roles/viewer) - התפקיד 'אדמין IAM בפרויקט' (
roles/resourcemanager.projectIamAdmin) - תפקיד העריכה ב-Cloud Build (
roles/cloudbuild.builds.editor)
המסוף
עוברים לדף IAM & Admin של הפרויקט או הארגון.
מאתרים את החשבון ולוחצים על עריכה.
ברשימה Select a role, בוחרים את התפקידים הבאים:
- Cloud Storage > Storage Admin
- Project > Viewer
- מנהל המשאבים > Project IAM Admin
- Cloud Build > עריכה ב-Cloud Build
שומרים את השינויים.
gcloud
בשלבים הבאים, משתמשים בפקודה gcloud projects add-iam-policy-binding כדי להעניק את התפקידים הנדרשים ברמת הפרויקט.
הקצאת התפקיד
roles/storage.admin:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/storage.admin'
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: Cloud de Confiance מזהה הפרויקט של הפרויקט -
MEMBER: החשבון שמריץ את פקודות הייבוא והייצוא, לדוגמה,user:export-user@gmail.com
-
הקצאת התפקיד
roles/viewer:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/viewer'
הקצאת התפקיד
roles/resourcemanager.projectIamAdmin:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/resourcemanager.projectIamAdmin'
הקצאת התפקיד
roles/cloudbuild.builds.editor:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/cloudbuild.builds.editor'
REST
קוראים את המדיניות הקיימת באמצעות ה-method
getIamPolicyשל המשאב. לפרויקטים, צריך להשתמש ב-projects.getIamPolicymethod.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
מחליפים את
PROJECT_IDבמזהה הפרויקט, לדוגמה,my-project-1.כדי להקצות לחשבון את התפקידים הנדרשים, עורכים את המדיניות באמצעות כלי לעריכת טקסט.
לדוגמה, כדי להקצות את התפקיד הנדרש לחשבון
user:export-user@gmail.com, מוסיפים את הקישור הבא למדיניות:{ { "role":"roles/storage.admin", "member":[ "user:export-user@gmail.com" ] } { "roles":"roles/viewer", "member":[ "user:export-user@gmail.com" ] } { "roles":"roles/resourcemanager.projectIamAdmin", "member":[ "user:export-user@gmail.com" ] } { "roles":"roles/cloudbuild.builds.editor", "member":[ "user:export-user@gmail.com" ] } }כדי לכתוב את המדיניות המעודכנת, משתמשים בשיטה
setIamPolicy.לדוגמה, כדי להגדיר מדיניות ברמת הפרויקט, משתמשים ב-method
project.setIamPolicy. בגוף הבקשה, מציינים את מדיניות ה-IAM המעודכנת מהשלב הקודם.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
הקצאת התפקידים הנדרשים לחשבון השירות ב-Cloud Build
כשמשתמשים במסוף Cloud de Confiance או ב-ה-CLI של gcloud כדי לייבא או לייצא תמונות בפעם הראשונה, הכלי מנסה להפעיל את Cloud Build API ולהעניק את התפקידים הנדרשים לחשבון השירות של Cloud Build.
חשבון השירות שמשמש את Cloud Build תלוי בשאלה אם השתמשתם ב-Cloud Build בפרויקט לפני מאי 2024. אם כן, חשבון השירות מדור קודם של Cloud Build ישמש לבנייה עתידית. אחרת, נעשה שימוש בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine.
- התפקיד 'יצירת אסימונים בחשבון שירות'
(
roles/iam.serviceAccountTokenCreator) - התפקיד 'משתמש בחשבון שירות'
(
roles/iam.serviceAccountUser) - תפקיד אדמין של Compute (
roles/compute.admin)כדי להימנע מהקצאת התפקיד 'אדמין Compute', אפשר ליצור תפקיד בהתאמה אישית עם הרשאות ה-IAM הבאות של Compute Engine ולהקצות אותו לחשבון השירות של Cloud Build:
- תפקיד משתמש ברשת Compute (
roles/compute.networkUser)התפקיד הזה נדרש רק כשמייבאים או מייצאים תמונות שמשתמשות ב-VPC משותף.
בפרויקט ה-VPC המשותף, מעניקים את התפקיד Compute Network User לחשבון השירות של Cloud Build שנמצא בפרויקט שממנו מייבאים או אליו מייצאים תמונות.
עם זאת, אתם יכולים להקצות את התפקידים האלה באופן ידני כדי לוודא שההרשאות הנדרשות בתוקף:
המסוף
אחרי שמפעילים את Cloud Build API, עוברים לדף IAM & Admin של הפרויקט או הארגון.
מוצאים את חשבון השירות של Cloud Build ולוחצים על עריכה.
אם התפקידים הנדרשים לא מופיעים, צריך לפעול לפי השלבים הבאים:
- לוחצים על הוספת תפקיד נוסף.
ברשימה Select a role, בוחרים את התפקידים הנדרשים שרוצים להוסיף:
- Service Account > Service Account Token Creator
- Service Account > Service Account User
Compute Engine > Compute Admin
אפשר גם לבחור בתפקיד בהתאמה אישית. אפשר לעיין במאמר ההרשאות הנדרשות לתפקיד בהתאמה אישית בחלק הקודם של המסמך הזה.
לוחצים על שמירה כדי לשמור את השינויים.
אופציונלי: אם מייבאים או מייצאים תמונות שמשתמשות ב-VPC משותף, בוחרים את התפקיד Compute Network User (משתמש ברשת Compute) בפרויקט ה-VPC המשותף:
- בכלי לבחירת פרויקטים בחלק העליון של המסוף, בוחרים את פרויקט המארח של ה-VPC המשותף.
- בדף IAM & Admin, לוחצים על Grant access.
- בשדה New principals, מזינים את כתובת האימייל של חשבון השירות ב-Cloud Build:
מחליפים את הערךPROJECT_NUMBER@cloudbuild.s3ns-system.iam.gserviceaccount.com'
PROJECT_NUMBERבמספר הייחודי של הפרויקט שאליו מייבאים או ממנו מייצאים תמונות. - ברשימה Select a role בוחרים בתפקיד Compute Engine > Compute Network User.
- לוחצים על שמירה כדי לשמור את השינויים.
gcloud
בשלבים הבאים, משתמשים בפקודה gcloud projects add-iam-policy-binding כדי להעניק את התפקידים הנדרשים ברמת הפרויקט.
מקצים את התפקיד
roles/compute.adminלחשבון השירות של Cloud Build. כדי להימנע מהקצאת התפקידroles/compute.admin, אפשר ליצור תפקיד בהתאמה אישית עם ההרשאות הנדרשות, ואז להקצות את התפקיד הזה לחשבון השירות של Cloud Build. אפשר לעיין במאמר ההרשאות הנדרשות לתפקיד בהתאמה אישית שמופיע קודם לכן במסמך הזה.gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.s3ns-system.iam.gserviceaccount.com' \ --role='roles/compute.admin'
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: Cloud de Confiance מזהה הפרויקט של הפרויקט -
PROJECT_NUMBER: Cloud de Confiance מספר הפרויקט של הפרויקט
-
הקצאת התפקיד
roles/iam.serviceAccountUser:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.s3ns-system.iam.gserviceaccount.com' \ --role='roles/iam.serviceAccountUser'
הקצאת התפקיד
roles/iam.serviceAccountTokenCreator:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.s3ns-system.iam.gserviceaccount.com' \ --role='roles/iam.serviceAccountTokenCreator'
אופציונלי: אם אתם מייצאים או מייבאים תמונות שמשתמשות ב-VPC משותף, צריך להעניק את התפקיד
roles/compute.networkUser:gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.s3ns-system.iam.gserviceaccount.com' \ --role='roles/compute.networkUser'
מחליפים את מה שכתוב בשדות הבאים:
-
HOST_PROJECT_ID: מזהה הפרויקט המארח שבו נמצא ה-VPC המשותף -
PROJECT_NUMBER: המספר הייחודי של הפרויקט שממנו מייבאים או אליו מייצאים תמונות
-
REST
קוראים את המדיניות הקיימת באמצעות ה-method
getIamPolicyשל המשאב. לפרויקטים, צריך להשתמש ב-projects.getIamPolicymethod.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
מחליפים את
PROJECT_IDבמזהה הפרויקט, לדוגמה,my-project-1.כדי להקצות לחשבון את התפקידים הנדרשים, עורכים את המדיניות באמצעות כלי לעריכת טקסט.
לדוגמה, כדי להקצות את התפקידים הנדרשים ל-
serviceAccount:12345@cloudbuild.s3ns-system.iam.gserviceaccount.com, מוסיפים את הקישור הבא למדיניות:{ { "role":"roles/compute.admin", "member":[ "serviceAccount:12345@cloudbuild.s3ns-system.iam.gserviceaccount.com" ] } { "roles":"roles/iam.serviceAccountUser", "member":[ "serviceAccount:12345@cloudbuild.s3ns-system.iam.gserviceaccount.com" ] } { "roles":"roles/iam.serviceAccountTokenCreator", "member":[ "serviceAccount:12345@cloudbuild.s3ns-system.iam.gserviceaccount.com" ] } }כדי להימנע מהקצאת התפקיד
roles/compute.admin, אפשר ליצור תפקיד בהתאמה אישית עם ההרשאות הנדרשות, ואז להקצות את התפקיד הזה לחשבון השירות של Cloud Build. אפשר לעיין במאמר ההרשאות הנדרשות לתפקיד בהתאמה אישית שמופיע קודם לכן במסמך הזה.אופציונלי: אם מייצאים או מייבאים תמונות שמשתמשות ב-VPC משותף, צריך להעניק את התפקיד
roles/compute.networkUserבפרויקט של ה-VPC המשותף.POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:getIamPolicy
מחליפים את
HOST_PROJECT_IDבמזהה של פרויקט ה-VPC המשותף.מוסיפים את הקישור הבא ב-IAM לחשבון השירות של Cloud Build:
{ { "roles":"roles/compute.networkUser", "member":[ "serviceAccount:12345@cloudbuild.s3ns-system.iam.gserviceaccount.com" ] } }כדי לכתוב את המדיניות המעודכנת, משתמשים בשיטה
setIamPolicy.לדוגמה, כדי להגדיר מדיניות ברמת הפרויקט, משתמשים בשיטה
project.setIamPolicy. בגוף הבקשה, מציינים את מדיניות ה-IAM המעודכנת מהשלב הקודם.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
מידע נוסף על ניהול הגישה למשאבים זמין במאמר הענקה, שינוי וביטול גישה למשאבים.
מקצים את התפקידים הנדרשים לחשבון השירות של Compute Engine
כשמשתמשים במסוף Cloud de Confiance או ב-CLI של gcloud כדי לייבא או לייצא תמונות בפעם הראשונה, הכלי מנסה להעניק את התפקידים הנדרשים לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine.
בהתאם להגדרות של מדיניות הארגון, יכול להיות שחשבון השירות שמוגדר כברירת מחדל יקבל אוטומטית את התפקיד 'עריכה' בפרויקט. אנחנו ממליצים מאוד להשבית את הענקת התפקיד האוטומטית על ידי
החלת האילוץ iam.automaticIamGrantsForDefaultServiceAccounts של מדיניות הארגון. אם יצרתם את הארגון אחרי 3 במאי 2024, האילוץ הזה נאכף כברירת מחדל.
אם משביתים את הענקת התפקיד האוטומטית, צריך לקבוע אילו תפקידים להעניק לחשבונות השירות שמוגדרים כברירת מחדל, ואז להעניק את התפקידים האלה בעצמכם.
אם לחשבון השירות שמוגדר כברירת מחדל כבר יש את התפקיד Editor, מומלץ להחליף את התפקיד הזה בתפקידים עם פחות הרשאות.
לחשבון השירות של Compute Engine צריכים להיות התפקידים הבאים:
- התפקיד 'אדמין של Compute Storage' (
roles/compute.storageAdmin): נדרש גם לייצוא וגם לייבוא של תמונות מכונות וירטואליות - התפקיד 'צפייה באובייקטים באחסון' (
roles/storage.objectViewer): נדרש לייבוא תמונות של מכונות וירטואליות - התפקיד 'אדמין של אובייקטים באחסון' (
roles/storage.objectAdmin): נדרש לייצוא של תמונות מכונות וירטואליות - התפקיד 'אדמין לניהול נפח האחסון'
(
roles/storage.admin): נדרש לייצוא תמונות של מכונות וירטואליות
המסוף
עוברים לדף IAM & Admin של הפרויקט או הארגון.
מחפשים את חשבון השירות של Compute Engine ולוחצים על עריכה.
ברשימה Select a role, בוחרים את התפקידים הבאים:
- Compute Engine > Compute Storage Admin
- Cloud Storage > צפייה באובייקטים באחסון
- Cloud Storage > אדמין של אובייקטים באחסון
שומרים את השינויים.
gcloud
בשלבים הבאים, משתמשים בפקודה gcloud projects add-iam-policy-binding כדי להעניק את התפקידים הנדרשים ברמת הפרויקט.
הקצאת התפקיד
roles/compute.storageAdmin:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER-compute@developer.s3ns-system.iam.gserviceaccount.com' \ --role='roles/compute.storageAdmin'
אם מייבאים תמונה, צריך להעניק את התפקיד
roles/storage.objectViewer:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER-compute@developer.s3ns-system.iam.gserviceaccount.com' \ --role='roles/storage.objectViewer'
אם מייצאים תמונה, צריך להעניק את התפקיד
roles/storage.objectAdmin:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER-compute@developer.s3ns-system.iam.gserviceaccount.com' \ --role='roles/storage.objectAdmin'
REST
קוראים את המדיניות הקיימת באמצעות ה-method
getIamPolicyשל המשאב. לפרויקטים, צריך להשתמש ב-projects.getIamPolicymethod.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
מחליפים את
PROJECT_IDבמזהה הפרויקט, לדוגמה,my-project-1.כדי להקצות לחשבון את התפקידים הנדרשים, עורכים את המדיניות באמצעות כלי לעריכת טקסט.
לדוגמה, כדי להקצות את התפקידים הנדרשים ל-
serviceAccount:12345-compute@developer.s3ns-system.iam.gserviceaccount.comלצורך ייבוא תמונה, מוסיפים את הקישור הבא למדיניות:{ { "role":"roles/compute.storageAdmin", "member":[ "serviceAccount:12345-compute@developer.s3ns-system.iam.gserviceaccount.com" ] } { "roles":"roles/storage.objectViewer", "member":[ "serviceAccount:12345-compute@developer.s3ns-system.iam.gserviceaccount.com" ] } }כדי לכתוב את המדיניות המעודכנת, משתמשים בשיטה
setIamPolicy.לדוגמה, כדי להגדיר מדיניות ברמת הפרויקט, משתמשים ב-method
project.setIamPolicy. בגוף הבקשה, מציינים את מדיניות ה-IAM המעודכנת מהשלב הקודם.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
אם אתם לא רוצים להשתמש בחשבון השירות שמשמש כברירת המחדל של Compute Engine, אתם יכולים לציין חשבון שירות בניהול המשתמשים באמצעות הדגל --compute-service-account בפקודות gcloud import ו-export. למידע נוסף על שימוש בחשבון שירות מותאם אישית של Compute Engine, אפשר לעיין במקורות המידע הבאים:
- ייבוא דיסקים וירטואליים עם חשבונות שירות בהתאמה אישית
- ייבוא מכשירים וירטואליים עם חשבונות שירות בהתאמה אישית
- ייבוא תמונות של מכונות ממכשירים וירטואליים עם חשבונות שירות בהתאמה אישית
- ייצוא תמונות בהתאמה אישית עם חשבונות שירות בהתאמה אישית
הגדרת VPC Service Controls
אם אתם משתמשים ב-VPC Service Controls כדי להגן על הפרויקטים, אתם צריכים להוסיף כלל לתעבורת נתונים יוצאת (egress) לפרויקט compute-image-import (מספר 71462206840).
כדי לפעול לפי העיקרון של הרשאות מינימליות, מומלץ לאפשר רק לשירות artifactregistry.googleapis.com להשתמש בשיטות הבאות:
artifactregistry.repositories.downloadArtifactsartifactregistry.tags.getartifactregistry.tags.listartifactregistry.versions.get
מידע נוסף זמין במאמר מגבלות של VPC Service Controls.