במאמר הזה מוסבר איך ליצור מכונה וירטואלית (VM) שמוגדרת לשימוש בחשבון שירות שמנוהל על ידי משתמש. חשבון שירות הוא סוג מיוחד של חשבון, שמשמש בדרך כלל אפליקציה או עומס עבודה ממוחשב כדי לבצע קריאות מורשות ל-API.
חשבונות שירות נדרשים במקרים שבהם עומס עבודה (workload), כמו אפליקציה בהתאמה אישית, צריך גישה למשאבים או לבצע פעולות בלי מעורבות של משתמש קצה. Cloud de Confiance by S3NS מידע נוסף על מקרים שבהם כדאי להשתמש בחשבונות שירות זמין במאמר שיטות מומלצות לשימוש בחשבונות שירות.
אם יש לכם אפליקציות שצריכות לבצע קריאות לממשקי Cloud de Confiance by S3NS API, מומלץ לצרף חשבון שירות בניהול המשתמשים למכונה הווירטואלית שבה האפליקציה או עומס העבודה פועלים. לאחר מכן, מקצים לחשבון השירות תפקידי IAM, וכך מאפשרים לחשבון השירות (ולאפליקציות שפועלות במכונה) לגשת לCloud de Confiance by S3NS משאבים.
לפני שמתחילים
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי 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
-
- הגדרת אזור ותחום כברירת מחדל
-
התקינו את ה-CLI של Google Cloud.
-
הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.
-
יוצרים פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
Terraform
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Terraform שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Cloud de Confiance .
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות ליצירת מכונות וירטואליות שמשתמשות בחשבונות שירות, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
- Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1) - יצירת חשבונות שירות (
roles/iam.serviceAccountCreator) - אדמין IAM בפרויקט (
roles/resourcemanager.projectIamAdmin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקידים המוגדרים מראש האלה מכילים את ההרשאות שנדרשות ליצירת מכונות וירטואליות שמשתמשות בחשבונות שירות. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי ליצור מכונות וירטואליות שמשתמשות בחשבונות שירות, צריך את ההרשאות הבאות:
-
כדי ליצור חשבונות שירות:
כל ההרשאות בתפקיד
iam.serviceAccountCreator -
כדי לתת הרשאות לחשבון השירות:
כל ההרשאות בתפקיד
resourcemanager.projectIamAdmin -
כדי ליצור מכונות וירטואליות:
-
compute.instances.createבפרויקט - כדי להשתמש באימג' בהתאמה אישית ליצירת המכונה הווירטואלית (VM):
compute.images.useReadOnlyבקובץ אימג' - כדי להשתמש ב-snapshot ליצירת המכונה הווירטואלית:
compute.snapshots.useReadOnlyבקובץ ה-snapshot - כדי להשתמש בתבנית של הגדרות מכונה ליצירת המכונה הווירטואלית:
compute.instanceTemplates.useReadOnlyבתבנית של הגדרות המכונה - כדי להקצות רשת מדור קודם למכונה הווירטואלית:
compute.networks.useבפרויקט - כדי לציין כתובת IP סטטית למכונה הווירטואלית:
compute.addresses.useבפרויקט - כדי להקצות כתובת IP חיצונית למכונה הווירטואלית כשמשתמשים ברשת מדור קודם:
compute.networks.useExternalIpבפרויקט - כדי לציין רשת משנה למכונה הווירטואלית:
compute.subnetworks.useבפרויקט או ברשת המשנה שנבחרה - כדי להקצות כתובת IP חיצונית למכונה הווירטואלית כשמשתמשים ברשת VPC:
compute.subnetworks.useExternalIpבפרויקט או ברשת המשנה שנבחרה - כדי להגדיר מטא-נתונים של המכונה הווירטואלית:
compute.instances.setMetadataבפרויקט - כדי להגדיר תגים למכונה הווירטואלית:
compute.instances.setTagsבמכונה הווירטואלית - כדי להגדיר תוויות למכונה הווירטואלית:
compute.instances.setLabelsבמכונה הווירטואלית - כדי להגדיר חשבון שירות לשימוש של המכונה הווירטואלית:
compute.instances.setServiceAccountבמכונה הווירטואלית - כדי ליצור דיסק חדש למכונה הווירטואלית:
compute.disks.createבפרויקט - כדי לצרף דיסק קיים במצב קריאה-בלבד או במצב קריאה וכתיבה:
compute.disks.useבדיסק - כדי לצרף דיסק קיים במצב קריאה-בלבד:
compute.disks.useReadOnlyבדיסק
-
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
סקירה כללית
מומלץ להגדיר חשבונות שירות למכונות הווירטואליות באופן הבא:
- יוצרים חשבון שירות חדש שמנוהל על ידי המשתמש במקום להשתמש בחשבון השירות שמוגדר כברירת מחדל של Compute Engine, ומקצים לחשבון השירות הזה תפקידי IAM רק למשאבים ולפעולות שהוא צריך.
- מצרפים את חשבון השירות למכונה הווירטואלית.
- מגדירים את היקף פלטפורמת הענן (
https://www.googleapis.com/auth/cloud-platform) במכונה הווירטואלית. כך חשבון השירות של מכונת ה-VM יכול לקרוא לממשקי ה-API שיש לו הרשאה להשתמש בהם. Cloud de Confiance by S3NS- אם מציינים את חשבון השירות באמצעות Cloud de Confiance המסוף, צריך להגדיר את היקף הגישה של חשבון השירות לAllow full access to all Cloud APIs.
- אם מציינים את חשבון השירות באמצעות Google Cloud CLI או Compute Engine API, אפשר להשתמש בפרמטר
scopesכדי להגדיר את היקף הגישה.
הגדרה של חשבון שירות
יוצרים חשבון שירות ומקצים לו את תפקידי ה-IAM הנדרשים. מקצים כמה תפקידי IAM שצריך. אפשר לשנות את תפקידי ה-IAM בחשבון השירות לפי הצורך.
Google ממליצה להגביל את ההרשאות של חשבונות שירות ולבדוק באופן קבוע את ההרשאות של חשבונות השירות כדי לוודא שהן עדכניות.
אפשר להגדיר את חשבון השירות באחת מהדרכים הבאות.
המסוף
-
מוודאים שיש לכם את תפקיד ה-IAM 'יצירת חשבונות שירות' (
-
במסוף Cloud de Confiance , נכנסים לדף יצירת חשבון שירות.
כניסה לדף Create service account - בוחרים את הפרויקט הרצוי.
-
כותבים שם בשדה Service account name. המסוף Cloud de Confiance ממלא את השדה מזהה חשבון שירות בהתאם לשם הזה.
כותבים תיאור בשדה Service account description. לדוגמה:
Service account for quickstart. - לוחצים על Create and continue.
-
מקצים לחשבון השירות את התפקידים הנדרשים.
כדי להקצות תפקיד, בוחרים תפקיד מהרשימה Select a role.
כדי להקצות עוד תפקידים, לוחצים על Add another role ומוסיפים את כולם.
- לוחצים על Continue.
-
בשדה Service account users role, מזינים את המזהה של חשבון המשתמש שיצרף את חשבון השירות למשאבים אחרים, כמו מכונות של Compute Engine.
בדרך כלל זה המזהה של משתמש במאגר זהויות של כוח עבודה. לפרטים נוספים, קראו את המאמר ייצוג המשתמשים במאגרי כוח עבודה בכללי מדיניות IAM.
-
לוחצים על Done כדי לסיים ליצור את חשבון השירות.
roles/iam.serviceAccountCreator) ואת התפקיד 'אדמין IAM בפרויקט' (roles/resourcemanager.projectIamAdmin). איך מקצים תפקידים
gcloud
-
מוודאים שיש לכם את תפקיד ה-IAM Create Service Accounts (
roles/iam.serviceAccountCreator) ואת תפקיד ה-IAM Project Admin (roles/resourcemanager.projectIamAdmin). איך מקצים תפקידים -
יוצרים את חשבון השירות:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
מחליפים את הערך
SERVICE_ACCOUNT_NAMEבשם שרוצים לתת לחשבון השירות. -
כדי לתת גישה לפרויקט ולמשאבים, מקצים תפקיד לחשבון השירות:
gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com" --role=ROLE
מחליפים את מה שכתוב בשדות הבאים:
SERVICE_ACCOUNT_NAME: השם של חשבון השירותPROJECT_ID: מזהה הפרויקט שבו יצרתם את חשבון השירותROLE: התפקיד שאתם רוצים לתת
- כדי להקצות תפקיד נוסף לחשבון השירות, מריצים שוב את הפקודה שמו שעשיתם בשלב הקודם.
-
מקצים את התפקיד הנדרש לחשבון המשתמש שיצרף את חשבון השירות למשאבים אחרים.
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com --member="principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/SUBJECT_ID" --role=roles/iam.serviceAccountUser
מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE_ACCOUNT_NAME: השם של חשבון השירות. PROJECT_ID: מזהה הפרויקט שבו יצרתם את חשבון השירות.-
POOL_ID: מזהה מאגר הזהויות של כוח העבודה. -
SUBJECT_ID: מזהה נושא. בדרך כלל זה המזהה של משתמש במאגר זהויות של כוח עבודה. לפרטים נוספים, קראו את המאמר ייצוג המשתמשים במאגרי כוח עבודה בכללי מדיניות IAM.
-
מגדירים את האימות:
Terraform
כדי ליצור חשבון שירות, אפשר להשתמש במשאב google_service_account.
חשוב להחליף את ערכי placeholder במאפיינים account_id ו-display_name.
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
יצירת מכונה וירטואלית וצירוף חשבון השירות
אחרי שיוצרים את חשבון השירות, יוצרים מכונה וירטואלית ומצרפים אליה את חשבון השירות שיצרתם בקטע הקודם. צריך גם להגדיר את היקף הגישה של ה-VM ל-cloud-platform.
היקפי הגישה שמוגדרים במכונה וירטואלית מגדירים את היקפי הגישה המקסימליים לאסימוני גישה מסוג OAuth2 משרת המטא-נתונים. אתם יכולים לבקש אסימונים עם פחות היקפי הרשאה מהברירת מחדל. מידע נוסף זמין במאמר קבלת אסימוני גישה ספציפיים מסוג OAuth2.
אם כבר יש לכם מכונה וירטואלית ואתם רוצים להגדיר אותה לשימוש בחשבון שירות אחר, אפשר לעיין במאמר בנושא שינוי חשבון השירות המצורף.
אפשר להשתמש באחת מהשיטות הבאות כדי ליצור מכונה וירטואלית ולצרף אליה את חשבון השירות.
המסוף
נכנסים לדף Create an instance במסוף Cloud de Confiance .
כדי לצרף חשבון שירות:
- בתפריט הניווט, לוחצים על אבטחה.
- ברשימה Service account בוחרים את חשבון השירות שיצרתם.
- בקטע Access scopes בוחרים באפשרות Allow full access to all Cloud APIs.
אופציונלי: מציינים אפשרויות הגדרה אחרות. מידע נוסף מופיע במאמר אפשרויות הגדרה במהלך יצירת מכונה.
כדי ליצור את המכונה ולהפעיל אותה, לוחצים על Create.
gcloud
כדי ליצור מכונת VM חדשה ולהגדיר אותה לשימוש בחשבון שירות מותאם אישית באמצעות Google Cloud CLI, משתמשים בפקודה gcloud compute instances create ומספקים את כתובת האימייל בחשבון השירות ואת היקף הגישה cloud-platform למכונת ה-VM.
gcloud compute instances create VM_NAME \
--service-account=SERVICE_ACCOUNT_EMAIL \
--scopes=https://www.googleapis.com/auth/cloud-platform
מחליפים את מה שכתוב בשדות הבאים:
SERVICE_ACCOUNT_EMAIL: כתובת האימייל של חשבון השירות שיצרתם. לדוגמה:my-sa-123@my-project-123.s3ns.iam.gserviceaccount.com. כדי לראות את כתובת האימייל, קראו את המאמר בנושא הצגת רשימה של חשבונות שירות.-
VM_NAME: השם של מופע ה-VM.
לדוגמה:
gcloud compute instances create example-vm \
--service-account 123-my-sa@my-project-123.s3ns.iam.gserviceaccount.com \
--scopes=https://www.googleapis.com/auth/cloud-platform
אפשר גם לציין את ההיקף באמצעות הכינוי: --scopes=cloud-platform.
הכינויים האלה מזוהים רק על ידי ה-CLI של gcloud. ממשק ה-API וספריות אחרות לא מזהים את הכינויים האלה, ולכן צריך לציין את מזהה ה-URI המלא של ההיקף.
Terraform
כדי להגדיר מכונה וירטואלית חדשה לשימוש בחשבון שירות, אפשר להשתמש במשאב google_compute_instance.
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
REST
משתמשים בשיטה instances.insert כדי ליצור את מכונת ה-VM ולציין את כתובת האימייל של חשבון השירות ואת היקף הגישה למכונת ה-VM.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "machineType":"zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "name":"VM_NAME", "disks":[ { "initializeParams":{ "sourceImage":"projects/IMAGE_PROJECT/global/images/IMAGE" }, "boot":true } ], "networkInterfaces":[ { "network":"global/networks/NETWORK_NAME" } ], "serviceAccounts": [ { "email": "SERVICE_ACCOUNT_EMAIL", "scopes": ["https://www.googleapis.com/auth/cloud-platform"] } ], "shieldedInstanceConfig":{ "enableSecureBoot":"ENABLE_SECURE_BOOT" } }
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: המזהה של הפרויקט שבו רוצים ליצור את המכונה הווירטואלית -
ZONE: האזור שבו רוצים ליצור את המכונה הווירטואלית -
MACHINE_TYPE_ZONE: האזור שמכיל את סוג המכונה שרוצים להשתמש בו למכונה הווירטואלית החדשה -
MACHINE_TYPE: סוג המכונה, מוגדר מראש או מותאם אישית, של המכונה הווירטואלית החדשה -
VM_NAME: name של המכונה הווירטואלית החדשה -
IMAGE_PROJECT: הפרויקט שמכיל את התמונה
. לדוגמה, אם מצייניםdebian-10כמשפחת התמונות, מצייניםdebian-cloudכפרויקט התמונות. -
IMAGE: מציינים אחת מהאפשרויות הבאות:
IMAGE: גרסה ספציפית של תמונה ציבוריתלדוגמה,
"sourceImage": "projects/debian-cloud/global/images/debian-10-buster-v20200309"
IMAGE_FAMILY: משפחת תמונותהפעולה הזו יוצרת את מכונת ה-VM מתמונת מערכת ההפעלה העדכנית ביותר שלא הוצאה משימוש. לדוגמה, אם מציינים
"sourceImage": "projects/debian-cloud/global/images/family/debian-10", Compute Engine יוצר מכונה וירטואלית מהגרסה האחרונה של תמונת מערכת ההפעלה במשפחת התמונותDebian 10.
-
NETWORK_NAME: רשת ה-VPC שבה רוצים להשתמש עבור מכונת ה-VM. אפשר לצייןdefaultכדי להשתמש ברשת ברירת המחדל. SERVICE_ACCOUNT_EMAIL: כתובת האימייל של חשבון השירות שיצרתם. לדוגמה:my-sa-123@my-project-123.s3ns.iam.gserviceaccount.com. במאמר איך מקבלים כתובת אימייל של חשבון שירות מוסבר איך לראות את כתובת האימייל.
ENABLE_SECURE_BOOT: אופציונלי: אם בחרתם תמונה שתומכת בתכונות של Shielded VM, Compute Engine מפעיל כברירת מחדל את מודול הפלטפורמה הווירטואלית המהימנה (vTPM) ואת המעקב אחר השלמות. ב-Compute Engine, האפשרות Secure Boot לא מופעלת כברירת מחדל.אם מציינים
trueבשבילenableSecureBoot, Compute Engine יוצר מכונה וירטואלית עם כל שלושת התכונות של מכונה וירטואלית מוגנת. אחרי שמכונה וירטואלית מופעלת ב-Compute Engine, כדי לשנות את האפשרויות של מכונה וירטואלית מוגנת, צריך להפסיק את הפעילות של המכונה הווירטואלית.
גישה לשירותים אחרים Cloud de Confiance by S3NS ושימוש בהם
אחרי שמגדירים את המכונה הווירטואלית לשימוש בחשבון השירות, אפשר להשתמש בחשבון השירות כדי לבצע אימות באפליקציות. השיטה הנפוצה ביותר היא אימות באמצעות Application Default Credentials וספריית לקוח. חלק מהכלים, כמו ה-CLI של gcloud, יכולים להשתמש באופן אוטומטי בחשבון השירות כדי לגשת לממשקי API ממכונה וירטואלית. Cloud de Confiance by S3NS Cloud de Confiance by S3NS מידע נוסף זמין במאמר אימות עומסי עבודה באמצעות חשבונות שירות.
אם חשבון שירות נמחק, לאפליקציות לא תהיה יותר גישה למשאבים דרך חשבון השירות הזה.Cloud de Confiance by S3NS אם מוחקים את חשבונות השירות שמוגדרים כברירת מחדל ב-App Engine וב-Compute Engine, למכונות הווירטואליות לא תהיה יותר גישה למשאבים בפרויקט. אם לא בטוחים אם משתמשים בחשבון שירות, Google ממליצה להשבית את חשבון השירות לפני שמחליטים למחוק אותו. אפשר להפעיל מחדש חשבונות שירות מושבתים אם הם עדיין נחוצים.
דוגמה: גישה למשאבים של Cloud Storage ממכונת ה-VM
אחרי שמגדירים את המכונה הווירטואלית לשימוש בחשבון שירות עם תפקיד storage.admin, אפשר להשתמש בכלים כמו ה-CLI של gcloud כדי לנהל קבצים ששמרתם ב-Cloud Storage. כדי לגשת למשאבים של Cloud Storage, צריך לבצע את הפעולות הבאות:
מוודאים שלחשבון השירות שמחובר למכונה הווירטואלית מוקצה התפקיד
roles/storage.admin.אם ה-VM שלכם משתמש בקובץ אימג' מותאם אישית של מערכת הפעלה, צריך להתקין את ה-CLI של gcloud. כברירת מחדל, ה-CLI של gcloud מותקן ברוב תמונות מערכות ההפעלה הציבוריות שמסופקות על ידי Cloud de Confiance by S3NS.
מתחברים ל-VM.
מתוך מכונת ה-VM, משתמשים ב-Google Cloud CLI כדי לנהל את המשאבים ב-Cloud Storage.
מה השלב הבא?
- איך מאמתים עומסי עבודה באמצעות חשבונות שירות
- איך משנים את חשבון השירות שמצורף למכונה וירטואלית
- איך מציגים חשבון שירות ועורכים אותו
- כדאי לעיין בשיטות המומלצות לשימוש בחשבונות שירות כדי לצמצם את סיכוני האבטחה.