בדף הזה מוסבר איך יוצרים ומוחקים מפתחות של חשבונות שירות באמצעותGoogle Cloud המסוף, Google Cloud CLI, ה-API לניהול זהויות והרשאות גישה או אחת מספריות הלקוח ב-Google Cloud.
לפני שמתחילים
מפעילים את IAM API.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםמגדירים אימות.
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים ולממשקי ה-API, לא צריך להגדיר אימות. Google Cloud
gcloud
במסוף Google Cloud , מפעילים את Cloud Shell.
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
C#
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של .NET שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
אם אתם משתמשים במעטפת מקומית, אתם צריכים ליצור פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם אתם משתמשים ב-Cloud Shell, אין צורך לבצע את הפעולה הזו.
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .
C++
כדי להשתמש בדוגמאות של C++ שבדף הזה בסביבת פיתוח מקומית, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
אם אתם משתמשים במעטפת מקומית, אתם צריכים ליצור פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם אתם משתמשים ב-Cloud Shell, אין צורך לבצע את הפעולה הזו.
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .
המשך
כדי להשתמש בדוגמאות של Go שבדף הזה בסביבת פיתוח מקומית, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
אם אתם משתמשים במעטפת מקומית, אתם צריכים ליצור פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם אתם משתמשים ב-Cloud Shell, אין צורך לבצע את הפעולה הזו.
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .
Java
כדי להשתמש בדוגמאות של Java שבדף הזה בסביבת פיתוח מקומית, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
אם אתם משתמשים במעטפת מקומית, אתם צריכים ליצור פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם אתם משתמשים ב-Cloud Shell, אין צורך לבצע את הפעולה הזו.
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .
Python
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Python שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
אם אתם משתמשים במעטפת מקומית, אתם צריכים ליצור פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם אתם משתמשים ב-Cloud Shell, אין צורך לבצע את הפעולה הזו.
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud.
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .
-
הסבר על פרטי הכניסה לחשבון שירות
התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות ליצירה ולמחיקה של מפתחות של חשבונות שירות, צריך לבקש מהאדמין את תפקיד ה-IAM אדמין של מפתח של חשבון שירות (roles/iam.serviceAccountKeyAdmin) בפרויקט, או בחשבון השירות שאת המפתחות שלו רוצים לנהל.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
בהתאם להגדרת מדיניות הארגון, יכול להיות שתצטרכו גם לאפשר יצירה של מפתחות לחשבונות שירות בפרויקט לפני שתיצרו מפתח.
כדי לקבל את ההרשאות שדרושות בשביל לאפשר יצירה של מפתחות של חשבונות שירות בפרויקט, אתם צריכים לבקש מהאדמין לתת לכם את התפקידים הבאים ב-IAM ברמת הארגון:
- אדמין של מדיניות הארגון (
roles/orgpolicy.policyAdmin) - צפייה בארגון (
roles/resourcemanager.organizationViewer) - Tag Administrator (
roles/resourcemanager.tagAdmin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקידים המוגדרים מראש האלה מכילים את ההרשאות שנדרשות כדי לאפשר יצירה של מפתחות לחשבונות שירות בפרויקט. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי לאפשר יצירה של מפתחות של חשבונות שירות בפרויקט, צריך את ההרשאות הבאות:
-
orgpolicy.constraints.list -
orgpolicy.customConstraints.create -
orgpolicy.customConstraints.delete -
orgpolicy.customConstraints.get -
orgpolicy.customConstraints.list -
orgpolicy.customConstraints.update -
orgpolicy.policies.create -
orgpolicy.policies.delete -
orgpolicy.policies.list -
orgpolicy.policies.update -
orgpolicy.policy.get -
orgpolicy.policy.set -
resourcemanager.organizations.get -
resourcemanager.projects.listTagBindings -
resourcemanager.projects.listEffectiveTags -
resourcemanager.tagKeys.get -
resourcemanager.tagKeys.list -
resourcemanager.tagValues.list -
resourcemanager.tagValues.get
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
מתן הרשאה ליצירת מפתחות לחשבון שירות
לפני שיוצרים מפתח לחשבון שירות, צריך לוודא שהאילוץ iam.disableServiceAccountKeyCreation של מדיניות הארגון לא נאכף בפרויקט. אם האילוץ הזה נאכף בפרויקט, לא תוכלו ליצור מפתחות של חשבונות שירות בפרויקט הזה.
מומלץ לאכוף את האילוץ הזה ברוב הפרויקטים, ולהחריג רק פרויקטים שבאמת נדרשים להם מפתחות של חשבונות שירות. מידע נוסף על שיטות אימות חלופיות זמין במאמר בחירת שיטת האימות שמתאימה לתרחיש שלכם לדוגמה.
כדי להחריג פרויקט מאילוץ מדיניות הארגון iam.disableServiceAccountKeyCreation, צריך לבקש מאדמין של מדיניות הארגון לבצע את הפעולות הבאות:
-
ברמת הארגון, יוצרים מפתח תג וערך תג שישמשו להגדרה אם משאב צריך להיות פטור ממדיניות הארגון. מומלץ ליצור תג עם המפתח
disableServiceAccountKeyCreationוהערכיםenforcedו-not_enforced.במאמר איך יוצרים ומגדירים תגים חדשים מוסבר איך ליצור מפתחות וערכים של תגים.
-
מצרפים את התג
disableServiceAccountKeyCreationלארגון ומגדירים את הערך שלו ל-enforced. כל המשאבים בארגון יורשים את ערך התג הזה, אלא אם הוא מוחלף בערך תג אחר.במאמר צירוף תגים למשאבים מוסבר איך לצרף תגים למשאבים.
-
לכל פרויקט או תיקייה שרוצים להחריג ממדיניות הארגון, מצרפים את התג
disableServiceAccountKeyCreationומגדירים את הערך שלו ל-not_enforced. הגדרה של ערך תג לפרויקט או לתיקייה בדרך הזו מבטלת את ערך התג שהתקבל בירושה מהארגון. -
יוצרים או מעדכנים את מדיניות הארגון שמונעת יצירה של מפתחות של חשבונות שירות, כך שהיא לא תאכוף את האילוץ על משאבים שפטורים ממנו. המדיניות הזו צריכה לכלול את הכללים הבאים:
-
מגדירים את האילוץ
iam.disableServiceAccountKeyCreationכך שלא ייאכף על משאבים עם התגdisableServiceAccountKeyCreation: not_enforced. התנאי בכלל הזה צריך להיראות כך:"resource.matchTag('ORGANIZATION_ID/disableServiceAccountKeyCreation', 'not_enforced')" -
מגדירים את האילוץ
iam.disableServiceAccountKeyCreationכך שהוא ייאכף על כל שאר המשאבים.
-
יצירת מפתח של חשבון שירות
כדי להשתמש בחשבון שירות מחוץ ל- Google Cloud, למשל בפלטפורמות אחרות או בארגונים מקומיים, קודם צריך ליצור את הזהות של חשבון השירות. אפשר לעשות את זה בדרך מאובטחת באמצעות זוג מפתחות ציבוריים/פרטיים. כשיוצרים מפתח של חשבון שירות, החלק הציבורי מאוחסן ב-Google Cloudוהחלק הפרטי זמין רק לכם. מידע נוסף על מפתחות ציבוריים/פרטיים מופיע במאמר מפתחות של חשבונות שירות.
למרות שחשבונות שירות משמשים בעיקר לגישה ל-API Google Cloud שמנוהלים דרך IAM, אפשר להשתמש בהם גם לאימות ב-Google APIs שלא מנוהלים על ידי IAM, כמו Google Ads, YouTube ו-Google Workspace. כל שירות קובע את כללי ההרשאה שלו.
אפשר ליצור מפתח של חשבון שירות באמצעות מסוף Google Cloud , ה-CLI של gcloud, ה-method serviceAccounts.keys.create() או אחת מספריות הלקוח.
בחשבון שירות יכולים להיות עד 10 מפתחות.
כברירת מחדל, למפתחות של חשבונות השירות אין תאריך תפוגה. אתם יכולים להשתמש באילוץ של מדיניות הארגון כדי לציין את משך התוקף של מפתח של חשבון שירות. לפרטים נוספים, קראו את המאמר זמני תפוגה של מפתחות בניהול המשתמשים.
בדוגמאות בהמשך, SA_NAME הוא השם של חשבון השירות ו-PROJECT_ID הוא המזהה שלGoogle Cloud הפרויקט. אפשר לאחזר את המחרוזת SA_NAME@PROJECT_ID.iam.gserviceaccount.com מהדף Service Accounts במסוף Google Cloud .
המסוף
- נכנסים לדף Service accounts במסוף Google Cloud .
שאר השלבים יופיעו במסוף Google Cloud .
- בוחרים פרויקט.
- לוחצים על כתובת האימייל של חשבון השירות שעבורו רוצים ליצור מפתח.
- לוחצים על הכרטיסייה
Keys . - לוחצים על התפריט הנפתח Add key ובוחרים באפשרות Create new key.
- בוחרים באפשרות JSON בתור Key type ולוחצים על Create.
לחיצה על Create מורידה קובץ מפתח של חשבון השירות. אחרי שמורידים את קובץ המפתח, אי אפשר להוריד אותו שוב.
המפתח שהורדתם מופיע בפורמט הבא, כאשר PRIVATE_KEY הוא החלק הפרטי של זוג המפתחות הציבוריים/הפרטיים:
{
"type": "service_account",
"project_id": "PROJECT_ID",
"private_key_id": "KEY_ID",
"private_key": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n",
"client_email": "SERVICE_ACCOUNT_EMAIL",
"client_id": "CLIENT_ID",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL"
}אפשר להעביר את הקובץ לאן שרוצים ולשנות את השם שלו למה שרוצים.
אתם יכולים להשתמש בקובצי מפתחות של חשבונות שירות כדי לאמת אפליקציה כחשבון שירות.
gcloud
כדי ליצור מפתחות של חשבונות שירות, מריצים את הפקודה gcloud iam service-accounts keys create.
מחליפים את הערכים הבאים:
-
KEY_FILE: הנתיב לקובץ פלט חדש של המפתח הפרטי, לדוגמה~/sa-private-key.json. -
SA_NAME: השם של חשבון השירות שעבורו רוצים ליצור מפתח. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
gcloud iam service-accounts keys create KEY_FILE \
--iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
פלט:
created key [e44da1202f82f8f4bdd9d92bc412d1d8a837fa83] of type [json] as [/usr/home/username/KEY_FILE] for [SA_NAME@PROJECT_ID.iam.gserviceaccount.com]
עכשיו מתבצעת הורדה של קובץ המפתח של חשבון השירות למחשב שלכם. אחרי שמורידים את קובץ המפתח, אי אפשר להוריד אותו שוב.
המפתח שהורדתם מופיע בפורמט הבא, כאשר PRIVATE_KEY הוא החלק הפרטי של זוג המפתחות הציבוריים/הפרטיים:
{ "type": "service_account", "project_id": "PROJECT_ID", "private_key_id": "KEY_ID", "private_key": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n", "client_email": "SERVICE_ACCOUNT_EMAIL", "client_id": "CLIENT_ID", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL" }
תמיד צריך לאחסן את המפתחות של חשבונות השירות במיקום מאובטח. אם לא מאחסנים את המפתחות בצורה מאובטחת, גורמים זדוניים יכולים למצוא את המפתחות ולהשתמש בהם כדי לגשת למשאבים שלחשבון השירות יש גישה אליהם. מומלץ מאוד לאחסן את המפתחות במאגר מפתחות מבוסס חומרה או מבוסס תוכנה. הנחיות נוספות לאחסון מאובטח של מפתחות של חשבונות שירות זמינות במאמר הגנה מפני הסלמת הרשאות.
אפשר להעביר את הקובץ לאן שרוצים ולשנות את השם שלו למה שרוצים.
אתם יכולים להשתמש בקובצי מפתח של חשבון שירות כדי לאמת אפליקציה כחשבון שירות.
C++
במאמר ספריות הלקוח של IAM מוסבר איך להתקין את ספריית הלקוח ולהשתמש בה ב-IAM. למידע נוסף, קראו את מאמרי העזרה של IAM C++ API.
כדי לבצע אימות ב-IAM, צריך להגדיר את Application Default Credentials. מידע נוסף מופיע במאמר לפני שמתחילים.
C#
במאמר ספריות הלקוח של IAM מוסבר איך להתקין את ספריית הלקוח ולהשתמש בה ב-IAM. למידע נוסף, קראו את מאמרי העזרה של IAM C# API.
כדי לבצע אימות ב-IAM, צריך להגדיר את Application Default Credentials. מידע נוסף מופיע במאמר לפני שמתחילים.
Go
במאמר ספריות הלקוח של IAM מוסבר איך להתקין את ספריית הלקוח ולהשתמש בה ב-IAM. למידע נוסף, קראו את מאמרי העזרה של IAM Go API.
כדי לבצע אימות ב-IAM, צריך להגדיר את Application Default Credentials. מידע נוסף מופיע במאמר לפני שמתחילים.
Java
במאמר ספריות הלקוח של IAM מוסבר איך להתקין את ספריית הלקוח ולהשתמש בה ב-IAM. למידע נוסף, קראו את מאמרי העזרה של IAM Java API.
כדי לבצע אימות ב-IAM, צריך להגדיר את Application Default Credentials. מידע נוסף מופיע במאמר לפני שמתחילים.
Python
במאמר ספריות הלקוח של IAM מוסבר איך להתקין את ספריית הלקוח ולהשתמש בה ב-IAM. למידע נוסף, קראו את מאמרי העזרה של IAM Python API.
כדי לבצע אימות ב-IAM, צריך להגדיר את Application Default Credentials. מידע נוסף מופיע במאמר לפני שמתחילים.