בדף הזה מוסבר איך ליצור פרטי כניסה לטווח קצר לחשבון שירות, שאפשר להשתמש בהם כדי להתחזות לחשבון השירות. בהתאם לסוג האסימון שיוצרים, האסימון לטווח קצר מספק את הזהות (לאסימונים מזהים) או את ההרשאות (לאסימוני הגישה) שמשויכות לחשבון השירות.
אם צריך להשתמש בסדרה של קריאות ליצירת אסימונים בגלל דרישה של ארכיטקטורת המערכות, אפשר להשתמש בשרשרת הענקת הגישה שמורכבת מכמה חשבונות שירות. ברוב המקרים תספיק השיטה הישירה, כפי שיוסבר בדף הזה.
לפני שמתחילים
-
Enable the IAM and Service Account Credentials APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable iam.googleapis.com
iamcredentials.googleapis.com מגדירים אימות.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Go
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Go שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
התקינו את ה-CLI של Google Cloud.
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .
Java
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Java שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
התקינו את ה-CLI של Google Cloud.
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .
Node.js
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Node.js שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
התקינו את ה-CLI של Google Cloud.
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .
Python
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Python שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
התקינו את ה-CLI של Google Cloud.
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .
REST
כדי להשתמש בדוגמאות של API בארכיטקטורת REST שבדף הזה בסביבת פיתוח מקומית, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud.
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .
הסבר על חשבונות שירות ב-IAM
הסבר על התחזות לחשבון שירות
לאחר שתבינו איזה סוג של אסימון אתם צריכים, תוכלו לבצע את הצעדים המתאימים שמופיעים בקטעים למטה:
יצירת אסימון גישה לטווח קצר
רוב ממשקי ה-API של Google מקבלים אסימוני גישה לאימות. כשיוצרים אסימון גישה באמצעות התחזות לחשבון שירות, הוא נוצר ללא אסימון רענון. כלומר, כשפג תוקף האסימון, צריך לחזור על תהליך ההתחזות כדי ליצור אסימון חדש.
מידע נוסף מופיע במאמר אסימוני גישה.
כדי ליצור אסימון גישה לטווח קצר, צריך להשלים את המשימות הבאות:
מתן ההרשאות הנדרשות
בקשה ישירה כוללת שתי זהויות: מבצע הקריאה החוזרת שמבקש את פרטי הכניסה, וחשבון השירות שבשבילו נוצרו פרטי הכניסה. הדרך שבה מגדירים את ההרשאות תלויה בשאלה אם מבצע הקריאה החוזרת עובר אימות כחשבון שירות או כחשבון משתמש.
אם תרצו להריץ פקודת REST או CLI של gcloud בדף הזה בסביבת פיתוח מקומית, מבצע הקריאה החוזרת יוכל להשתמש בפרטי כניסה של משתמש. לעומסי עבודה אוטומטיים, כמו אפליקציות שפועלות על Compute Engine, מבצע הקריאה החוזרת יצטרך להשתמש בחשבון שירות.
חשבון שירות
כשאפליקציית הקריאה משתמשת בחשבון שירות בתור הזהות שלה, חשבונות המשתמשים הבאים מעורבים:
חשבון שירות של מבצע הקריאה החוזרת (
CALLER_SA)חשבון השירות הזה מייצג את אפליקציית הקריאה, שמנפיקה את הבקשה לפרטי הכניסה לטווח הקצר.
-
חשבון שירות שנושא את ההרשאות (
PRIV_SA)חשבון השירות הזה קיבל את תפקידי ה-IAM שנדרשים בשביל האסימון לטווח קצר. זהו חשבון השירות שבשבילו נוצר האסימון לטווח קצר.
כדי לתת הרשאות ל-
CALLER_SAליצור פרטי כניסה לטווח קצר בשבילPRIV_SA, צריך להקצות ל-CALLER_SAאת התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator) ב-PRIV_SA.הקצאת התפקיד הנדרש ב-
PRIV_SA:המסוף
-
נכנסים לדף Service Accounts במסוף Google Cloud .
- בוחרים פרויקט.
-
לוחצים על כתובת האימייל של חשבון השירות שנושא את ההרשאות,
PRIV_SA. - לוחצים על הכרטיסייה Permissions.
- תחת Principals with access to this service account לוחצים על Grant Access.
-
מזינים את כתובת האימייל של חשבון השירות של מבצע הקריאה החוזרת,
CALLER_SA.לדוגמה,
demo@my-project.iam.gserviceaccount.com. -
בוחרים את התפקיד 'יצירת אסימונים בחשבון שירות'
(
roles/iam.serviceAccountTokenCreator). - כדי להקצות את התפקיד לחשבון השירות, לוחצים על Save.
gcloud
הפקודה
gcloud iam service-accounts add-iam-policy-bindingמקצה תפקיד בחשבון שירות.לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
-
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון. -
CALLER_SA: כתובת האימייל של חשבון השירות שמייצג את האפליקציה שמבקשת את האסימון לטווח קצר.
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
אמורים לקבל תגובה שדומה לזו:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "serviceAccount:CALLER_SA" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwXhCB4eyjY=", "version": 1 }REST
-
צריך לקרוא את מדיניות ההרשאה ל-
PRIV_SA:ה-method
serviceAccounts.getIamPolicyמאפשרת לקבל את מדיניות ההרשאות של חשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. -
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION: גרסת המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן אחזור מדיניות.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
תוכן בקשת JSON:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אמורה להתקבל תגובת JSON שדומה לזו:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] } ] }אם לא הקצת תפקידים בחשבון השירות, התגובה תכלול רק ערך
etag. אפשר לכלול את הערךetagבשלב הבא. -
-
צריך לשנות את מדיניות ההרשאה כדי להקצות ל-
CALLER_SAאת התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator).לדוגמה, כדי לשנות את התגובה לדוגמה מהשלב הקודם, צריך להוסיף את הפרטים הבאים:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
כתיבת מדיניות ההרשאה המעודכנת:
השיטה
serviceAccounts.setIamPolicyמגדירה מדיניות הרשאות מעודכנת לחשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. -
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION: גרסת המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן קבלת מדיניות.-
POLICY: ייצוג JSON של המדיניות שרוצים להגדיר. מידע נוסף על הפורמט של מדיניות מופיע בחומר העזר בנושא מדיניות.לדוגמה, כדי להגדיר את מדיניות ההרשאה שמופיעה בשלב הקודם, צריך להחליף את
POLICYעם הערכים הבאים, שבהםCALLER_SAהוא חשבון השירות שיוצר את האסימון לטווח קצר:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
שיטת ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:setIamPolicy
תוכן בקשת JSON:
{ "policy": POLICY }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
התגובה מכילה את מדיניות ההרשאה המעודכנת.
-
פרטי הכניסה של המשתמש
כשרוצים להשתמש ב-Google Cloud CLI כדי ליצור אסימונים לטווח קצר, או ליצור אותם מסביבת פיתוח מקומית, אפשר להשתמש בחשבון משתמש כדי ליצור את האסימונים. לרוב, אפשר להשתמש בחשבון המשתמש שלכם.
כשמשתמשים בחשבון משתמש כדי ליצור אסימונים לטווח קצר, הזהויות הבאות מעורבות בכך:
החשבון של המתקשר (
CALLER_ACCOUNT)חשבון המשתמש הזה משמש ליצירת פרטי כניסה לטווח קצר בשביל חשבון השירות שנושא את ההרשאות.
חשבון שירות שנושא את ההרשאות (
PRIV_SA)חשבון השירות הזה קיבל את תפקידי ה-IAM שנדרשים בשביל האסימון לטווח קצר. זהו חשבון השירות שבשבילו נוצר האסימון לטווח קצר.
כדי לאפשר ל-
CALLER_ACCOUNTליצור פרטי כניסה לטווח קצר בשבילPRIV_SA, צריך להעניק ל-CALLER_ACCOUNTאת התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator) ב-PRIV_SA.הקצאת התפקיד הנדרש ב-
PRIV_SA:המסוף
-
נכנסים לדף Service Accounts במסוף Google Cloud .
- בוחרים פרויקט.
-
לוחצים על כתובת האימייל של חשבון השירות שנושא את ההרשאות,
PRIV_SA. - לוחצים על הכרטיסייה Permissions.
- תחת Principals with access to this service account לוחצים על Grant Access.
-
מזינים את המזהה של החשבון הראשי של מבצע הקריאה החוזרת,
CALLER_ACCOUNT.לדוגמה,
my-user@example.com. -
בוחרים את התפקיד 'יצירת אסימונים בחשבון שירות'
(
roles/iam.serviceAccountTokenCreator). - כדי להקצות את התפקיד לחשבון המשתמש, לוחצים על Save.
gcloud
הפקודה
gcloud iam service-accounts add-iam-policy-bindingמקצה תפקיד בחשבון שירות.לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
-
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון. -
CALLER_ACCOUNT: כתובת האימייל של חשבון המשתמש ששימש לבקשת האסימון לטווח קצר.
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
אמורים לקבל תגובה שדומה לזו:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "user:my-user@example.com" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }REST
-
צריך לקרוא את מדיניות ההרשאה ל-
PRIV_SA:ה-method
serviceAccounts.getIamPolicyמאפשרת לקבל את מדיניות ההרשאות של חשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. -
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION: גרסת המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן אחזור מדיניות.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
תוכן בקשת JSON:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אמורה להתקבל תגובת JSON שדומה לזו:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] } ] }אם לא הקצת תפקידים בחשבון השירות, התגובה תכלול רק ערך
etag. אפשר לכלול את הערךetagבשלב הבא. -
-
צריך לשנות את מדיניות ההרשאה כדי להקצות ל-
CALLER_ACCOUNTאת התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator).לדוגמה, כדי לשנות את התגובה לדוגמה מהשלב הקודם, צריך להוסיף את הפרטים הבאים:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:my-user@example.com" ] } ] }
-
כתיבת מדיניות ההרשאה המעודכנת:
השיטה
serviceAccounts.setIamPolicyמגדירה מדיניות הרשאות מעודכנת לחשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. -
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION: גרסת המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן קבלת מדיניות.-
POLICY: ייצוג JSON של המדיניות שרוצים להגדיר. מידע נוסף על הפורמט של מדיניות מופיע בחומר העזר בנושא מדיניות.לדוגמה, כדי להגדיר את מדיניות ההרשאה שמופיעה בשלב הקודם, צריך להחליף את
POLICYבערכים הבאים, שבהםCALLER_ACCOUNTהוא חשבון המשתמש שיוצר את האסימון לטווח קצר:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "CALLER_ACCOUNT" ] } ] }
ה-method של ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:setIamPolicy
תוכן בקשת JSON:
{ "policy": POLICY }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
התגובה מכילה את מדיניות ההרשאה המעודכנת.
-
יצירת אסימון הגישה
אפשר ליצור אסימון גישה ל-OAuth 2.0 באמצעות ה-CLI של gcloud, ה-API ל-REST או באמצעות ספריות הלקוח ב-Cloud וספריות הלקוח של Google API.
אם משתמשים ב-API ל-REST, והגדרות המערכת שלכם יאפשרו תוחלת חיים מורחבת לאסימון, אפשר ליצור אסימון שתוחלת החיים שלו ארוכה מברירת המחדל. ב-Google Cloud CLI אין תמיכה בהגדרה של תוחלת חיים לאסימון.
הדוגמאות הבאות נועדו לשימוש בסביבת פיתוח מקומית. מבצע הקריאה החוזרת צריך להשתמש בחשבון משתמש ולא בחשבון שירות.
יצירת אסימון גישה מסוג OAuth 2.0 בשביל חשבון שירות:
gcloud
מוודאים שנכנסתם ל-CLI של gcloud באמצעות חשבון המשתמש של מבצע הקריאה.
מריצים את הפקודה
gcloud auth print-access-tokenכדי ליצור אסימון לחשבון השירות.לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
-
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר.
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud auth print-access-token --impersonate-service-account=PRIV_SA
Windows (PowerShell)
gcloud auth print-access-token --impersonate-service-account=PRIV_SA
Windows (cmd.exe)
gcloud auth print-access-token --impersonate-service-account=PRIV_SA
אמורים לקבל תגובה שדומה לזו:
WARNING: This command is using service account impersonation. All API calls will be executed as [my-sa@my-project.iam.gserviceaccount.com]. ya29.c.b0AXv0zTPnzTnDV8F8Aj5Fgy46Yf2v_v8eZIoKq7xGpfbpXuy23aQ1693m3gAuE8AZga7w6kdagN7a9bfdDYbdeoGY0CMHOClsCwIdutL7k_RFC672lOCbUgF5hS8Iu2nCA8hle-11LJXBLmaxFmH08ZTBJLuDrWSNd8cYqGYFunSC1K1qLIPBF18tsa0hxVgKPucI8b1A9L8_MK1JGLGcr0n7-zY77_lmbcdODG3NmIbLOGWOutjJgqSO_YoeCKK2QTUZIp5PG7RkKlXWnmYJA9pEahzNoQrs5sWZctc2bia9af_ITzqqlXC9h1Kj5-me6e8rd734MJvpagqYazRk0gGWpMb03XmMGpgPc_FBp4pnX9rGOzW83SNpcDz8zeFO1Q0Bo3N7CuZougjRce0y8I2_4rtw5ME_nV3wrCWa..................................................................................................................................................................................................................................................................................................
-
REST
שיטת 'ה-API של פרטי הכניסה של חשבון השירות' (
serviceAccounts.generateAccessToken) יוצרת אסימון גישה מסוג OAuth 2.0 בשביל חשבון שירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. -
LIFETIME: משך הזמן עד שיפוג התוקף של אסימון הגישה, בשניות. לדוגמה:300s.כברירת מחדל, משך החיים המקסימלי של אסימון הוא שעה אחת (3,600 שניות). כדי להאריך את משך החיים המקסימלי של האסימונים האלה ל-12 שעות (43,200 שניות), מוסיפים את חשבון השירות למדיניות הארגון שכוללת את אילוץ הרשימה
constraints/iam.allowServiceAccountCredentialLifetimeExtension.
שיטת ה-HTTP וכתובת ה-URL:
POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:generateAccessToken
תוכן בקשת JSON:
{ "scope": [ "https://www.googleapis.com/auth/cloud-platform" ], "lifetime": "LIFETIME" }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אם הבקשה של
generateAccessTokenתאושר, גוף התגובה יכלול אסימון גישה מסוג OAuth 2.0 ומועד תפוגה. לאחר מכן אפשר יהיה להשתמש ב-accessTokenכדי לאמת בקשה מטעם חשבון השירות, עד שמגיעים לזמן ה-expireTime:{ "accessToken": "eyJ0eXAi...NiJ9", "expireTime": "2020-04-07T15:01:23.045123456Z" }Go
Java
Node.js
Python
יצירת אסימון מזהה של OpenID Connect (OIDC)
אסימונים מזהים מבוססים על מפרט OpenID Connect (OIDC). מספר מוגבל של שירותים ואפליקציות מקבלים אסימונים מזהים.
מידע נוסף זמין במאמרים אסימונים מזהים ואימות לאפליקציות שמתארחות ב-Cloud Run או בפונקציות של Cloud Run.
כדי ליצור אסימון מזהה, מבצעים את הפעולות האלה:
נותנים למבצע הקריאה החוזרת את ההרשאות הנדרשות.
כדי ליצור אסימון מזהה, משתמשים בתפקיד 'יצירת אסימון זהות' ב-OpenID Connect של חשבון שירות (
roles/iam.serviceAccountOpenIdTokenCreator). מדובר בתפקיד שונה מהתפקיד שבו משתמשים בסוגי אסימונים אחרים.
מתן ההרשאות הנדרשות
בקשה ישירה כוללת שתי זהויות: מבצע הקריאה החוזרת שמבקש את פרטי הכניסה, וחשבון השירות שבשבילו נוצרו פרטי הכניסה. הדרך שבה מגדירים את ההרשאות תלויה בשאלה אם מבצע הקריאה החוזרת עובר אימות כחשבון שירות או כחשבון משתמש.
אם תרצו להריץ פקודת REST או CLI של gcloud בדף הזה בסביבת פיתוח מקומית, מבצע הקריאה החוזרת יוכל להשתמש בפרטי כניסה של משתמש. לעומסי עבודה אוטומטיים, כמו אפליקציות שפועלות על Compute Engine, מבצע הקריאה החוזרת יצטרך להשתמש בחשבון שירות.
חשבון שירות
כשאפליקציית הקריאה משתמשת בחשבון שירות בתור הזהות שלה, חשבונות המשתמשים הבאים מעורבים:
חשבון שירות של מבצע הקריאה החוזרת (
CALLER_SA)חשבון השירות הזה מייצג את אפליקציית הקריאה, שמנפיקה את הבקשה לפרטי הכניסה לטווח הקצר.
-
חשבון שירות שנושא את ההרשאות (
PRIV_SA)חשבון השירות הזה קיבל את תפקידי ה-IAM שנדרשים בשביל האסימון לטווח קצר. זהו חשבון השירות שבשבילו נוצר האסימון לטווח קצר.
כדי לתת ל-
CALLER_SAהרשאות ליצירת פרטי כניסה לטווח קצר בשבילPRIV_SA, צריך להקצות ל-CALLER_SAאת התפקיד 'יצירת אסימון זהות' ב-OpenID Connect של חשבון שירות (roles/iam.serviceAccountOpenIdTokenCreator) ב-PRIV_SA.הקצאת התפקיד הנדרש ב-
PRIV_SA:המסוף
-
נכנסים לדף Service Accounts במסוף Google Cloud .
- בוחרים פרויקט.
-
לוחצים על כתובת האימייל של חשבון השירות שנושא את ההרשאות,
PRIV_SA. - לוחצים על הכרטיסייה Permissions.
- תחת Principals with access to this service account לוחצים על Grant Access.
-
מזינים את כתובת האימייל של חשבון השירות של מבצע הקריאה החוזרת,
CALLER_SA.לדוגמה,
demo@my-project.iam.gserviceaccount.com. -
בוחרים בתפקיד 'יצירת אסימון זהות' ב-OpenID Connect של חשבון שירות
(
roles/iam.serviceAccountOpenIdTokenCreator). - כדי להקצות את התפקיד לחשבון השירות, לוחצים על Save.
gcloud
הפקודה
gcloud iam service-accounts add-iam-policy-bindingמקצה תפקיד בחשבון שירות.לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
-
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון. -
CALLER_SA: כתובת האימייל של חשבון השירות שמייצג את האפליקציה שמבקשת את האסימון לטווח קצר.
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
אמורים לקבל תגובה שדומה לזו:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "serviceAccount:CALLER_SA" ], "role": "roles/iam.serviceAccountOpenIdTokenCreator" } ], "etag": "BwXhCB4eyjY=", "version": 1 }REST
-
צריך לקרוא את מדיניות ההרשאה ל-
PRIV_SA:ה-method
serviceAccounts.getIamPolicyמאפשרת לקבל את מדיניות ההרשאות של חשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. -
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION: גרסת המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן אחזור מדיניות.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
תוכן בקשת JSON:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אמורה להתקבל תגובת JSON שדומה לזו:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] } ] }אם לא הקצת תפקידים בחשבון השירות, התגובה תכלול רק ערך
etag. אפשר לכלול את הערךetagבשלב הבא. -
-
משנים את מדיניות ההרשאה כדי להקצות ל-
CALLER_SAאת התפקיד 'יצירת אסימון זהות' ב-OpenID Connect של חשבון שירות (roles/iam.serviceAccountOpenIdTokenCreator).לדוגמה, כדי לשנות את התגובה לדוגמה מהשלב הקודם, צריך להוסיף את הפרטים הבאים:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
כתיבת מדיניות ההרשאה המעודכנת:
השיטה
serviceAccounts.setIamPolicyמגדירה מדיניות הרשאות מעודכנת לחשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. -
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION: גרסת המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן קבלת מדיניות.-
POLICY: ייצוג JSON של המדיניות שרוצים להגדיר. מידע נוסף על הפורמט של מדיניות מופיע בחומר העזר בנושא מדיניות.לדוגמה, כדי להגדיר את מדיניות ההרשאה שמופיעה בשלב הקודם, צריך להחליף את
POLICYעם הערכים הבאים, שבהםCALLER_SAהוא חשבון השירות שיוצר את האסימון לטווח קצר:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
שיטת ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:setIamPolicy
תוכן בקשת JSON:
{ "policy": POLICY }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
התגובה מכילה את מדיניות ההרשאה המעודכנת.
-
פרטי הכניסה של המשתמש
כשרוצים להשתמש ב-Google Cloud CLI כדי ליצור אסימונים לטווח קצר, או ליצור אותם מסביבת פיתוח מקומית, אפשר להשתמש בחשבון משתמש כדי ליצור את האסימונים. לרוב, אפשר להשתמש בחשבון המשתמש שלכם.
כשמשתמשים בחשבון משתמש כדי ליצור אסימונים לטווח קצר, הזהויות הבאות מעורבות בכך:
החשבון של המתקשר (
CALLER_ACCOUNT)חשבון המשתמש הזה משמש ליצירת פרטי כניסה לטווח קצר בשביל חשבון השירות שנושא את ההרשאות.
חשבון שירות שנושא את ההרשאות (
PRIV_SA)חשבון השירות הזה קיבל את תפקידי ה-IAM שנדרשים בשביל האסימון לטווח קצר. זהו חשבון השירות שבשבילו נוצר האסימון לטווח קצר.
כדי לאפשר ל-
CALLER_ACCOUNTליצור פרטי כניסה לטווח קצר ל-PRIV_SA, צריך להקצות ל-CALLER_ACCOUNTאת התפקיד 'יצירת אסימון זהות' ב-OpenID Connect בחשבון שירות (roles/iam.serviceAccountOpenIdTokenCreator) ב-PRIV_SA.הקצאת התפקיד הנדרש ב-
PRIV_SA:המסוף
-
נכנסים לדף Service Accounts במסוף Google Cloud .
- בוחרים פרויקט.
-
לוחצים על כתובת האימייל של חשבון השירות שנושא את ההרשאות,
PRIV_SA. - לוחצים על הכרטיסייה Permissions.
- תחת Principals with access to this service account לוחצים על Grant Access.
-
מזינים את המזהה של החשבון הראשי של מבצע הקריאה החוזרת,
CALLER_ACCOUNT.לדוגמה,
my-user@example.com. -
בוחרים בתפקיד 'יצירת אסימון זהות' ב-OpenID Connect של חשבון שירות
(
roles/iam.serviceAccountOpenIdTokenCreator). - כדי להקצות את התפקיד לחשבון המשתמש, לוחצים על Save.
gcloud
הפקודה
gcloud iam service-accounts add-iam-policy-bindingמקצה תפקיד בחשבון שירות.לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
-
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון. -
CALLER_ACCOUNT: כתובת האימייל של חשבון המשתמש ששימש לבקשת האסימון לטווח קצר.
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
אמורים לקבל תגובה שדומה לזו:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "user:my-user@example.com" ], "role": "roles/iam.serviceAccountOpenIdTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }REST
-
צריך לקרוא את מדיניות ההרשאה ל-
PRIV_SA:ה-method
serviceAccounts.getIamPolicyמאפשרת לקבל את מדיניות ההרשאות של חשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. -
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION: גרסת המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן אחזור מדיניות.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
תוכן בקשת JSON:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אמורה להתקבל תגובת JSON שדומה לזו:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] } ] }אם לא הקצת תפקידים בחשבון השירות, התגובה תכלול רק ערך
etag. אפשר לכלול את הערךetagבשלב הבא. -
-
משנים את מדיניות ההרשאה כדי להקצות ל-
CALLER_ACCOUNTאת התפקיד 'יצירת אסימון זהות' ב-OpenID Connect של חשבון שירות (roles/iam.serviceAccountOpenIdTokenCreator).לדוגמה, כדי לשנות את התגובה לדוגמה מהשלב הקודם, צריך להוסיף את הפרטים הבאים:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "user:my-user@example.com" ] } ] }
-
כתיבת מדיניות ההרשאה המעודכנת:
השיטה
serviceAccounts.setIamPolicyמגדירה מדיניות הרשאות מעודכנת לחשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. -
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION: גרסת המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן קבלת מדיניות.-
POLICY: ייצוג JSON של המדיניות שרוצים להגדיר. מידע נוסף על הפורמט של מדיניות מופיע בחומר העזר בנושא מדיניות.לדוגמה, כדי להגדיר את מדיניות ההרשאה שמופיעה בשלב הקודם, צריך להחליף את
POLICYבערכים הבאים, שבהםCALLER_ACCOUNTהוא חשבון המשתמש שיוצר את האסימון לטווח קצר:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "CALLER_ACCOUNT" ] } ] }
ה-method של ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:setIamPolicy
תוכן בקשת JSON:
{ "policy": POLICY }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
התגובה מכילה את מדיניות ההרשאה המעודכנת.
-
יצירת האסימון המזהה
אפשר ליצור אסימון מזהה של OpenID Connect (OIDC), באמצעות ה-CLI של gcloud, ה-API ל-REST או באמצעות ספריות הלקוח ב-Cloud וספריות הלקוח של Google API.
הדוגמאות הבאות נועדו לשימוש בסביבת פיתוח מקומית. מבצע הקריאה החוזרת צריך להשתמש בחשבון משתמש ולא בחשבון שירות.
אסימונים מזהים OIDC תקפים לשעה אחת (3,600 שניות).
יוצרים אסימון מזהה OIDC בחתימה של Google בשביל חשבון שירות:
gcloud
מוודאים שנכנסתם ל-CLI של gcloud באמצעות חשבון המשתמש של מבצע הקריאה.
מריצים את הפקודה
gcloud auth print-identity-tokenכדי ליצור אסימון לחשבון השירות.לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
-
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. -
AUDIENCE_NAME: הקהל של האסימון, בדרך כלל כתובת ה-URL של האפליקציה או השירות שישתמש באסימון כדי לגשת אליהם.
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud auth print-identity-token --impersonate-service-account=PRIV_SA --audiences="AUDIENCE_NAME"
Windows (PowerShell)
gcloud auth print-identity-token --impersonate-service-account=PRIV_SA --audiences="AUDIENCE_NAME"
Windows (cmd.exe)
gcloud auth print-identity-token --impersonate-service-account=PRIV_SA --audiences="AUDIENCE_NAME"
אמורים לקבל תגובה שדומה לזו:
WARNING: This command is using service account impersonation. All API calls will be executed as [my-sa@my-project.iam.gserviceaccount.com]. eyJhbGciOiJSUzI1NiIsImtpZDNhMDg4ZDRmZmMjJkYTVmZTM5MDZjY2MiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJ3d3cuZXhhbXBsJhenAiOiIxMTYzwNDYyMDk0ODIiLCJleHAiOjE2NTQ4ODU0MzEsImlhdCI6MTY1NDg4MTgzMSwiaXN6Ly9hY2NvdW50cy5nb29nbGUuY29tIiwic3ViIMDQ2MjA5NDgyIn0.F7mu8IHj5VQdu7ItFrnYAKyGd7YqXuOP_rFLc98q8BaFBycAF1zAQnSnwqnSUXba0UK9PDT_-IOry68qLwBObz4XlX9lk0ehpN0O0W9FcFToKLB6wefXXPd4h7xtuPe5KzmpSOqj2Qqv34HriGw00Nqd-oGSgNY_lZ4wGEf4rT4oQa_kEcrY57Q2G6pwd769BhgeFwoLi5aK_Cv2kvf_zfMszC-xlkP9zwWQ8XinJBwe-qcQBa4NTgrbueNtXsEjccBS366zmw
-
REST
שיטת 'ה-API של פרטי הכניסה של חשבון השירות' (
serviceAccounts.generateIdToken) יוצרת אסימון מזהה מסוג OIDC בשביל חשבון שירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. -
AUDIENCE_NAME: הקהל של האסימון, בדרך כלל כתובת ה-URL של האפליקציה או השירות שישתמש באסימון כדי לגשת אליהם.
שיטת ה-HTTP וכתובת ה-URL:
POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:generateIdToken
תוכן בקשת JSON:
{ "audience": "AUDIENCE_NAME", "includeEmail": "true" }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אם הבקשה של
generateIdתאושר, גוף התגובה יכלול אסימון מזהה שתקף לשעה אחת. לאחר מכן אפשר יהיה להשתמש ב-tokenכדי לאמת בקשה מטעם חשבון השירות:{ "token": "eyJ0eXAi...NiJ9" }יצירת (JWT) JSON Web Token בחתימה עצמית
אפשר להשתמש ב-JSON Web Tokens (JWT) בחתימה עצמית במגוון תרחישים:
- תקשורת מאובטחת בין האפליקציות שלך. בתרחיש הזה, אפליקציה אחת יכולה לחתום על אסימון שאפליקציה אחרת יכולה לבדוק למטרות אימות.
- אימות קריאה ל-Google API כפי שמתואר בהרשאה של חשבון שירות ללא OAuth.
- אימות ל-API שנפרס באמצעות API Gateway.
- התייחסות לחשבון שירות כספק זהויות באמצעות חתימה על JWT שמכיל הצהרות שרירותיות על משתמש, חשבון או מכשיר.
כדי ליצור JWT, מבצעים את הפעולות הבאות:
מתן ההרשאות הנדרשות
בקשה ישירה כוללת שתי זהויות: מבצע הקריאה החוזרת שמבקש את פרטי הכניסה, וחשבון השירות שבשבילו נוצרו פרטי הכניסה. הדרך שבה מגדירים את ההרשאות תלויה בשאלה אם מבצע הקריאה החוזרת עובר אימות כחשבון שירות או כחשבון משתמש.
אם תרצו להריץ פקודת REST או CLI של gcloud בדף הזה בסביבת פיתוח מקומית, מבצע הקריאה החוזרת יוכל להשתמש בפרטי כניסה של משתמש. לעומסי עבודה אוטומטיים, כמו אפליקציות שפועלות על Compute Engine, מבצע הקריאה החוזרת יצטרך להשתמש בחשבון שירות.
חשבון שירות
כשאפליקציית הקריאה משתמשת בחשבון שירות בתור הזהות שלה, חשבונות המשתמשים הבאים מעורבים:
חשבון שירות של מבצע הקריאה החוזרת (
CALLER_SA)חשבון השירות הזה מייצג את אפליקציית הקריאה, שמנפיקה את הבקשה לפרטי הכניסה לטווח הקצר.
-
חשבון שירות שנושא את ההרשאות (
PRIV_SA)חשבון השירות הזה קיבל את תפקידי ה-IAM שנדרשים בשביל האסימון לטווח קצר. זהו חשבון השירות שבשבילו נוצר האסימון לטווח קצר.
כדי לתת הרשאות ל-
CALLER_SAליצור פרטי כניסה לטווח קצר בשבילPRIV_SA, צריך להקצות ל-CALLER_SAאת התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator) ב-PRIV_SA.הקצאת התפקיד הנדרש ב-
PRIV_SA:המסוף
-
נכנסים לדף Service Accounts במסוף Google Cloud .
- בוחרים פרויקט.
-
לוחצים על כתובת האימייל של חשבון השירות שנושא את ההרשאות,
PRIV_SA. - לוחצים על הכרטיסייה Permissions.
- תחת Principals with access to this service account לוחצים על Grant Access.
-
מזינים את כתובת האימייל של חשבון השירות של מבצע הקריאה החוזרת,
CALLER_SA.לדוגמה,
demo@my-project.iam.gserviceaccount.com. -
בוחרים את התפקיד 'יצירת אסימונים בחשבון שירות'
(
roles/iam.serviceAccountTokenCreator). - כדי להקצות את התפקיד לחשבון השירות, לוחצים על Save.
gcloud
הפקודה
gcloud iam service-accounts add-iam-policy-bindingמקצה תפקיד בחשבון שירות.לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
-
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון. -
CALLER_SA: כתובת האימייל של חשבון השירות שמייצג את האפליקציה שמבקשת את האסימון לטווח קצר.
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
אמורים לקבל תגובה שדומה לזו:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "serviceAccount:CALLER_SA" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwXhCB4eyjY=", "version": 1 }REST
-
צריך לקרוא את מדיניות ההרשאה ל-
PRIV_SA:ה-method
serviceAccounts.getIamPolicyמאפשרת לקבל את מדיניות ההרשאות של חשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. -
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION: גרסת המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן אחזור מדיניות.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
תוכן בקשת JSON:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אמורה להתקבל תגובת JSON שדומה לזו:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] } ] }אם לא הקצת תפקידים בחשבון השירות, התגובה תכלול רק ערך
etag. אפשר לכלול את הערךetagבשלב הבא. -
-
צריך לשנות את מדיניות ההרשאה כדי להקצות ל-
CALLER_SAאת התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator).לדוגמה, כדי לשנות את התגובה לדוגמה מהשלב הקודם, צריך להוסיף את הפרטים הבאים:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
כתיבת מדיניות ההרשאה המעודכנת:
השיטה
serviceAccounts.setIamPolicyמגדירה מדיניות הרשאות מעודכנת לחשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. -
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION: גרסת המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן קבלת מדיניות.-
POLICY: ייצוג JSON של המדיניות שרוצים להגדיר. מידע נוסף על הפורמט של מדיניות מופיע בחומר העזר בנושא מדיניות.לדוגמה, כדי להגדיר את מדיניות ההרשאה שמופיעה בשלב הקודם, צריך להחליף את
POLICYעם הערכים הבאים, שבהםCALLER_SAהוא חשבון השירות שיוצר את האסימון לטווח קצר:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
שיטת ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:setIamPolicy
תוכן בקשת JSON:
{ "policy": POLICY }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
התגובה מכילה את מדיניות ההרשאה המעודכנת.
-
פרטי הכניסה של המשתמש
כשרוצים להשתמש ב-Google Cloud CLI כדי ליצור אסימונים לטווח קצר, או ליצור אותם מסביבת פיתוח מקומית, אפשר להשתמש בחשבון משתמש כדי ליצור את האסימונים. לרוב, אפשר להשתמש בחשבון המשתמש שלכם.
כשמשתמשים בחשבון משתמש כדי ליצור אסימונים לטווח קצר, הזהויות הבאות מעורבות בכך:
החשבון של המתקשר (
CALLER_ACCOUNT)חשבון המשתמש הזה משמש ליצירת פרטי כניסה לטווח קצר בשביל חשבון השירות שנושא את ההרשאות.
חשבון שירות שנושא את ההרשאות (
PRIV_SA)חשבון השירות הזה קיבל את תפקידי ה-IAM שנדרשים בשביל האסימון לטווח קצר. זהו חשבון השירות שבשבילו נוצר האסימון לטווח קצר.
כדי לאפשר ל-
CALLER_ACCOUNTליצור פרטי כניסה לטווח קצר בשבילPRIV_SA, צריך להעניק ל-CALLER_ACCOUNTאת התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator) ב-PRIV_SA.הקצאת התפקיד הנדרש ב-
PRIV_SA:המסוף
-
נכנסים לדף Service Accounts במסוף Google Cloud .
- בוחרים פרויקט.
-
לוחצים על כתובת האימייל של חשבון השירות שנושא את ההרשאות,
PRIV_SA. - לוחצים על הכרטיסייה Permissions.
- תחת Principals with access to this service account לוחצים על Grant Access.
-
מזינים את המזהה של החשבון הראשי של מבצע הקריאה החוזרת,
CALLER_ACCOUNT.לדוגמה,
my-user@example.com. -
בוחרים את התפקיד 'יצירת אסימונים בחשבון שירות'
(
roles/iam.serviceAccountTokenCreator). - כדי להקצות את התפקיד לחשבון המשתמש, לוחצים על Save.
gcloud
הפקודה
gcloud iam service-accounts add-iam-policy-bindingמקצה תפקיד בחשבון שירות.לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
-
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון. -
CALLER_ACCOUNT: כתובת האימייל של חשבון המשתמש ששימש לבקשת האסימון לטווח קצר.
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
אמורים לקבל תגובה שדומה לזו:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "user:my-user@example.com" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }REST
-
צריך לקרוא את מדיניות ההרשאה ל-
PRIV_SA:ה-method
serviceAccounts.getIamPolicyמאפשרת לקבל את מדיניות ההרשאות של חשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. -
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION: גרסת המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן אחזור מדיניות.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
תוכן בקשת JSON:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אמורה להתקבל תגובת JSON שדומה לזו:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] } ] }אם לא הקצת תפקידים בחשבון השירות, התגובה תכלול רק ערך
etag. אפשר לכלול את הערךetagבשלב הבא. -
-
צריך לשנות את מדיניות ההרשאה כדי להקצות ל-
CALLER_ACCOUNTאת התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator).לדוגמה, כדי לשנות את התגובה לדוגמה מהשלב הקודם, צריך להוסיף את הפרטים הבאים:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:my-user@example.com" ] } ] }
-
כתיבת מדיניות ההרשאה המעודכנת:
השיטה
serviceAccounts.setIamPolicyמגדירה מדיניות הרשאות מעודכנת לחשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. -
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION: גרסת המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן קבלת מדיניות.-
POLICY: ייצוג JSON של המדיניות שרוצים להגדיר. מידע נוסף על הפורמט של מדיניות מופיע בחומר העזר בנושא מדיניות.לדוגמה, כדי להגדיר את מדיניות ההרשאה שמופיעה בשלב הקודם, צריך להחליף את
POLICYבערכים הבאים, שבהםCALLER_ACCOUNTהוא חשבון המשתמש שיוצר את האסימון לטווח קצר:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "CALLER_ACCOUNT" ] } ] }
ה-method של ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:setIamPolicy
תוכן בקשת JSON:
{ "policy": POLICY }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
התגובה מכילה את מדיניות ההרשאה המעודכנת.
-
יצירת ה-JWT
יצירת JWT בחתימה עצמית:
REST
שיטת 'ה-API של פרטי הכניסה של חשבון השירות' (
serviceAccounts.signJwt) חותמת על JWT באמצעות מפתח פרטי בניהול מערכת של חשבון שירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. -
JWT_PAYLOAD: המטען הייעודי של JWT לחתימה שהוא אובייקט JSON שמכיל קבוצת הצהרות של JWT. מוסיפים את ההצהרות שנחוצות לתרחיש הרצוי, ושעומדות בדרישות האימות של השירות שרוצים לבצע אליו קריאה. אם מבצעים קריאה ל-Google API, מומלץ לעיין ב מדריך האימות של Google כדי לראות מהן דרישות ההצהרה.התוקף של ההצהרה
exp(זמן התפוגה) צריך להיות בטווח של עד 12 שעות קדימה. כשמבצעים קריאה ל-Google API, צריך להגדיר את ההצהרהexpלא יותר משעה אחת קדימה.המטען הייעודי (payload) בדוגמה הבאה מכיל הצהרות לקריאה ל-Google API שבהן
EXPהיא חותמת זמן במספר שלם שמייצג את זמן התפוגה:{ \"iss\": \"PRIV_SA\", \"sub\": \"PRIV_SA\", \"aud\": \"https://firestore.googleapis.com/\", \"iat\": 1529350000, \"exp\": EXP }
שיטת ה-HTTP וכתובת ה-URL:
POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:signJwt
תוכן בקשת JSON:
{ "payload": "JWT_PAYLOAD" }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אם הבקשה של
signJwtתאושר, גוף התגובה יכלול JWT חתום ומזהה של מפתח החתימה ששימש לחתימה על ה-JWT. אפשר להשתמש בערךsignedJwtכאסימון למוכ"ז כדי לאמת בקשה באופן ישיר מטעם חשבון השירות. האסימון תקף עד לזמן התפוגה שצוין בבקשה:{ "keyId": "42ba1e...fc0a", "signedJwt": "eyJ0eXAi...NiJ9" }יצירת אובייקט בינארי בחתימה עצמית (blob)
אובייקטים בינאריים בחתימה עצמית, או blobs, משמשים לשידור נתונים בינאריים כך שמקור הנתונים ידוע (כיוון שה-blob הוא בחתימה עצמית). אפשר להשתמש ב-blobs כדי ליצור חתימות, אובייקט ב-Cloud Storage שנדרש לתהליכי אימות שונים, כולל כתובות URL חתומות. למידע על חתימות, אפשר לעיין במשאבי העזרה של Cloud Storage.
כדי ליצור אובייקט בינארי בחתימה עצמית, מבצעים את הפעולות הבאות:
מתן ההרשאות הנדרשות
בקשה ישירה כוללת שתי זהויות: מבצע הקריאה החוזרת שמבקש את פרטי הכניסה, וחשבון השירות שבשבילו נוצרו פרטי הכניסה. הדרך שבה מגדירים את ההרשאות תלויה בשאלה אם מבצע הקריאה החוזרת עובר אימות כחשבון שירות או כחשבון משתמש.
אם תרצו להריץ פקודת REST או CLI של gcloud בדף הזה בסביבת פיתוח מקומית, מבצע הקריאה החוזרת יוכל להשתמש בפרטי כניסה של משתמש. לעומסי עבודה אוטומטיים, כמו אפליקציות שפועלות על Compute Engine, מבצע הקריאה החוזרת יצטרך להשתמש בחשבון שירות.
חשבון שירות
כשאפליקציית הקריאה משתמשת בחשבון שירות בתור הזהות שלה, חשבונות המשתמשים הבאים מעורבים:
חשבון שירות של מבצע הקריאה החוזרת (
CALLER_SA)חשבון השירות הזה מייצג את אפליקציית הקריאה, שמנפיקה את הבקשה לפרטי הכניסה לטווח הקצר.
-
חשבון שירות שנושא את ההרשאות (
PRIV_SA)חשבון השירות הזה קיבל את תפקידי ה-IAM שנדרשים בשביל האסימון לטווח קצר. זהו חשבון השירות שבשבילו נוצר האסימון לטווח קצר.
כדי לתת הרשאות ל-
CALLER_SAליצור פרטי כניסה לטווח קצר בשבילPRIV_SA, צריך להקצות ל-CALLER_SAאת התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator) ב-PRIV_SA.הקצאת התפקיד הנדרש ב-
PRIV_SA:המסוף
-
נכנסים לדף Service Accounts במסוף Google Cloud .
- בוחרים פרויקט.
-
לוחצים על כתובת האימייל של חשבון השירות שנושא את ההרשאות,
PRIV_SA. - לוחצים על הכרטיסייה Permissions.
- תחת Principals with access to this service account לוחצים על Grant Access.
-
מזינים את כתובת האימייל של חשבון השירות של מבצע הקריאה החוזרת,
CALLER_SA.לדוגמה,
demo@my-project.iam.gserviceaccount.com. -
בוחרים את התפקיד 'יצירת אסימונים בחשבון שירות'
(
roles/iam.serviceAccountTokenCreator). - כדי להקצות את התפקיד לחשבון השירות, לוחצים על Save.
gcloud
הפקודה
gcloud iam service-accounts add-iam-policy-bindingמקצה תפקיד בחשבון שירות.לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
-
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון. -
CALLER_SA: כתובת האימייל של חשבון השירות שמייצג את האפליקציה שמבקשת את האסימון לטווח קצר.
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
אמורים לקבל תגובה שדומה לזו:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "serviceAccount:CALLER_SA" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwXhCB4eyjY=", "version": 1 }REST
-
צריך לקרוא את מדיניות ההרשאה ל-
PRIV_SA:ה-method
serviceAccounts.getIamPolicyמאפשרת לקבל את מדיניות ההרשאות של חשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. -
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION: גרסת המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן אחזור מדיניות.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
תוכן בקשת JSON:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אמורה להתקבל תגובת JSON שדומה לזו:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] } ] }אם לא הקצת תפקידים בחשבון השירות, התגובה תכלול רק ערך
etag. אפשר לכלול את הערךetagבשלב הבא. -
-
צריך לשנות את מדיניות ההרשאה כדי להקצות ל-
CALLER_SAאת התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator).לדוגמה, כדי לשנות את התגובה לדוגמה מהשלב הקודם, צריך להוסיף את הפרטים הבאים:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
כתיבת מדיניות ההרשאה המעודכנת:
השיטה
serviceAccounts.setIamPolicyמגדירה מדיניות הרשאות מעודכנת לחשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. -
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION: גרסת המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן קבלת מדיניות.-
POLICY: ייצוג JSON של המדיניות שרוצים להגדיר. מידע נוסף על הפורמט של מדיניות מופיע בחומר העזר בנושא מדיניות.לדוגמה, כדי להגדיר את מדיניות ההרשאה שמופיעה בשלב הקודם, צריך להחליף את
POLICYעם הערכים הבאים, שבהםCALLER_SAהוא חשבון השירות שיוצר את האסימון לטווח קצר:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
שיטת ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:setIamPolicy
תוכן בקשת JSON:
{ "policy": POLICY }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
התגובה מכילה את מדיניות ההרשאה המעודכנת.
-
פרטי הכניסה של המשתמש
כשרוצים להשתמש ב-Google Cloud CLI כדי ליצור אסימונים לטווח קצר, או ליצור אותם מסביבת פיתוח מקומית, אפשר להשתמש בחשבון משתמש כדי ליצור את האסימונים. לרוב, אפשר להשתמש בחשבון המשתמש שלכם.
כשמשתמשים בחשבון משתמש כדי ליצור אסימונים לטווח קצר, הזהויות הבאות מעורבות בכך:
החשבון של המתקשר (
CALLER_ACCOUNT)חשבון המשתמש הזה משמש ליצירת פרטי כניסה לטווח קצר בשביל חשבון השירות שנושא את ההרשאות.
חשבון שירות שנושא את ההרשאות (
PRIV_SA)חשבון השירות הזה קיבל את תפקידי ה-IAM שנדרשים בשביל האסימון לטווח קצר. זהו חשבון השירות שבשבילו נוצר האסימון לטווח קצר.
כדי לאפשר ל-
CALLER_ACCOUNTליצור פרטי כניסה לטווח קצר בשבילPRIV_SA, צריך להעניק ל-CALLER_ACCOUNTאת התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator) ב-PRIV_SA.הקצאת התפקיד הנדרש ב-
PRIV_SA:המסוף
-
נכנסים לדף Service Accounts במסוף Google Cloud .
- בוחרים פרויקט.
-
לוחצים על כתובת האימייל של חשבון השירות שנושא את ההרשאות,
PRIV_SA. - לוחצים על הכרטיסייה Permissions.
- תחת Principals with access to this service account לוחצים על Grant Access.
-
מזינים את המזהה של החשבון הראשי של מבצע הקריאה החוזרת,
CALLER_ACCOUNT.לדוגמה,
my-user@example.com. -
בוחרים את התפקיד 'יצירת אסימונים בחשבון שירות'
(
roles/iam.serviceAccountTokenCreator). - כדי להקצות את התפקיד לחשבון המשתמש, לוחצים על Save.
gcloud
הפקודה
gcloud iam service-accounts add-iam-policy-bindingמקצה תפקיד בחשבון שירות.לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
-
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון. -
CALLER_ACCOUNT: כתובת האימייל של חשבון המשתמש ששימש לבקשת האסימון לטווח קצר.
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
אמורים לקבל תגובה שדומה לזו:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "user:my-user@example.com" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }REST
-
צריך לקרוא את מדיניות ההרשאה ל-
PRIV_SA:ה-method
serviceAccounts.getIamPolicyמאפשרת לקבל את מדיניות ההרשאות של חשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. -
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION: גרסת המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן אחזור מדיניות.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
תוכן בקשת JSON:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אמורה להתקבל תגובת JSON שדומה לזו:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] } ] }אם לא הקצת תפקידים בחשבון השירות, התגובה תכלול רק ערך
etag. אפשר לכלול את הערךetagבשלב הבא. -
-
צריך לשנות את מדיניות ההרשאה כדי להקצות ל-
CALLER_ACCOUNTאת התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator).לדוגמה, כדי לשנות את התגובה לדוגמה מהשלב הקודם, צריך להוסיף את הפרטים הבאים:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:my-user@example.com" ] } ] }
-
כתיבת מדיניות ההרשאה המעודכנת:
השיטה
serviceAccounts.setIamPolicyמגדירה מדיניות הרשאות מעודכנת לחשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. -
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION: גרסת המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן קבלת מדיניות.-
POLICY: ייצוג JSON של המדיניות שרוצים להגדיר. מידע נוסף על הפורמט של מדיניות מופיע בחומר העזר בנושא מדיניות.לדוגמה, כדי להגדיר את מדיניות ההרשאה שמופיעה בשלב הקודם, צריך להחליף את
POLICYבערכים הבאים, שבהםCALLER_ACCOUNTהוא חשבון המשתמש שיוצר את האסימון לטווח קצר:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "CALLER_ACCOUNT" ] } ] }
ה-method של ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:setIamPolicy
תוכן בקשת JSON:
{ "policy": POLICY }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
התגובה מכילה את מדיניות ההרשאה המעודכנת.
-
יצירת blob בחתימה עצמית
יצירת blob בחתימה עצמית לחשבון השירות:
REST
שיטת 'ה-API של פרטי הכניסה של חשבון השירות' (
serviceAccounts.signBlob) חותמת על blob באמצעות מפתח פרטי בניהול מערכת של חשבון שירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. -
BLOB_PAYLOAD: מחרוזת מקודדת של base64 בבייטים. לדוגמה:VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu.
שיטת ה-HTTP וכתובת ה-URL:
POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:signBlob
תוכן בקשת JSON:
{ "payload": "BLOB_PAYLOAD" }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אם הבקשה של
signBlobתאושר, גוף התגובה יכלול blob חתום ומזהה של מפתח החתימה ששימש לחתימה על ה-blob. אפשר להשתמש בערךsignedBlobכאסימון למוכ"ז כדי לאמת בקשה באופן ישיר מטעם חשבון השירות. האסימון תקף עד שיפוג התוקף של המפתח הפרטי בניהול מערכת של חשבון השירות. המזהה של המפתח הזה הוא הערך של השדהkeyIdבתגובה.{ "keyId": "42ba1e...fc0a", "signedBlob": "eyJ0eXAi...NiJ9" }אלא אם צוין אחרת, התוכן של דף זה הוא ברישיון Creative Commons Attribution 4.0 ודוגמאות הקוד הן ברישיון Apache 2.0. לפרטים, ניתן לעיין במדיניות האתר Google Developers. Java הוא סימן מסחרי רשום של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2026-03-04 (שעון UTC).
[[["התוכן קל להבנה","easyToUnderstand","thumb-up"],["התוכן עזר לי לפתור בעיה","solvedMyProblem","thumb-up"],["סיבה אחרת","otherUp","thumb-up"]],[["התוכן קשה להבנה","hardToUnderstand","thumb-down"],["שגיאות בקוד לדוגמה או במידע","incorrectInformationOrSampleCode","thumb-down"],["חסרים לי פרטים או דוגמאות","missingTheInformationSamplesINeed","thumb-down"],["בעיה בתרגום","translationIssue","thumb-down"],["סיבה אחרת","otherDown","thumb-down"]],["עדכון אחרון: 2026-03-04 (שעון UTC)."],[],[]]