בדף הזה מוסבר איך ליצור פרטי כניסה לטווח קצר לחשבון שירות, שאפשר להשתמש בהם כדי להתחזות לחשבון השירות. בהתאם לסוג האסימון שיוצרים, האסימון לטווח קצר מספק את הזהות (לאסימונים מזהים) או את ההרשאות (לאסימוני הגישה) שמשויכות לחשבון השירות.
אם צריך להשתמש בסדרה של קריאות ליצירת אסימונים בגלל דרישה של ארכיטקטורת המערכות, אפשר להשתמש בשרשרת הענקת הגישה שמורכבת מכמה חשבונות שירות. ברוב המקרים תספיק השיטה הישירה, כפי שיוסבר בדף הזה.
לפני שמתחילים
-
מפעילים את ממשקי ה-API של IAM ושל Service Account Credentials:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידיםgcloud services enable iam.googleapis.com
iamcredentials.googleapis.com מגדירים אימות.
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Cloud de Confiance כדי לגשת לשירותים ולממשקי ה-API, לא צריך להגדיר אימות. Cloud de Confiance by S3NS
gcloud
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם. אחרי שנכנסתם לחשבון, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud initהמשך
כדי להשתמש בדוגמאות של Go שבדף הזה בסביבת פיתוח מקומית, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
-
התקינו את ה-CLI של Google Cloud.
-
הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.
-
יוצרים פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Cloud de Confiance .
Java
כדי להשתמש בדוגמאות של Java שבדף הזה בסביבת פיתוח מקומית, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
-
התקינו את ה-CLI של Google Cloud.
-
הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.
-
יוצרים פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Cloud de Confiance .
Node.js
כדי להשתמש בדוגמאות של Node.js שבדף הזה בסביבת פיתוח מקומית, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
-
התקינו את ה-CLI של Google Cloud.
-
הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.
-
יוצרים פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Cloud de Confiance .
Python
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Python שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
-
התקינו את ה-CLI של Google Cloud.
-
הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.
-
יוצרים פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Cloud de Confiance .
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Cloud de Confiance .
-
הסבר על חשבונות שירות ב-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 במסוף Cloud de Confiance .
- בוחרים פרויקט.
-
לוחצים על כתובת האימייל של חשבון השירות שנושא את ההרשאות,
PRIV_SA. - לוחצים על הכרטיסייה Permissions.
- תחת Principals with access to this service account לוחצים על Grant Access.
-
מזינים את כתובת האימייל של חשבון השירות של מבצע הקריאה החוזרת,
CALLER_SA.לדוגמה,
demo@my-project.s3ns.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: מזהה הפרויקט ב- Cloud de Confiance . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמו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": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }אם לא הקצת תפקידים בחשבון השירות, התגובה תכלול רק ערך
etag. אפשר לכלול את הערךetagבשלב הבא. -
-
צריך לשנות את מדיניות ההרשאה כדי להקצות ל-
CALLER_SAאת התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator).לדוגמה, כדי לשנות את התגובה לדוגמה מהשלב הקודם, צריך להוסיף את הפרטים הבאים:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
כתיבת מדיניות ההרשאה המעודכנת:
השיטה
serviceAccounts.setIamPolicyמגדירה מדיניות הרשאות מעודכנת לחשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. -
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION: גרסת המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן קבלת מדיניות.-
POLICY: ייצוג JSON של המדיניות שרוצים להגדיר. מידע נוסף על הפורמט של מדיניות מופיע בחומר העזר בנושא מדיניות.לדוגמה, כדי להגדיר את מדיניות ההרשאה שמופיעה בשלב הקודם, צריך להחליף את
POLICYעם הערכים הבאים, שבהםCALLER_SAהוא חשבון השירות שיוצר את האסימון לטווח קצר:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/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 במסוף Cloud de Confiance .
- בוחרים פרויקט.
-
לוחצים על כתובת האימייל של חשבון השירות שנושא את ההרשאות,
PRIV_SA. - לוחצים על הכרטיסייה Permissions.
- תחת Principals with access to this service account לוחצים על Grant Access.
-
מזינים את מזהה החשבון הראשי של החשבון שמבצע את הקריאה,
CALLER_ACCOUNT.לדוגמה,
//iam.googleapis.com/locations/global/workforcePools/my-pool/subject/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": [
"principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com"
],
"role": "roles/iam.serviceAccountTokenCreator"
}
],
"etag": "BwX1ZbefjXU=",
"version": 1
}
REST
-
צריך לקרוא את מדיניות ההרשאה ל-
PRIV_SA:ה-method
serviceAccounts.getIamPolicyמחזירה את מדיניות ההרשאות של חשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמו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": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }אם לא הקצת תפקידים בחשבון השירות, התגובה תכלול רק ערך
etag. אפשר לכלול את הערךetagבשלב הבא. -
-
צריך לשנות את מדיניות ההרשאה כדי להקצות ל-
CALLER_ACCOUNTאת התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator).לדוגמה, כדי לשנות את התגובה לדוגמה מהשלב הקודם, צריך להוסיף את הפרטים הבאים:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }
-
כתיבת מדיניות ההרשאה המעודכנת:
השיטה
serviceAccounts.setIamPolicyמגדירה מדיניות הרשאות מעודכנת לחשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. -
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION: גרסת המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן קבלת מדיניות.-
POLICY: ייצוג JSON של המדיניות שרוצים להגדיר. מידע נוסף על הפורמט של מדיניות מופיע בחומר העזר בנושא מדיניות.לדוגמה, כדי להגדיר את מדיניות ההרשאות שמופיעה בשלב הקודם, צריך להחליף את
POLICYבערכים הבאים, שבהםCALLER_ACCOUNTהוא חשבון המשתמש שיוצר את האסימון לטווח קצר:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/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.s3ns.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"
}
המשך
Java
Node.js
Python
יצירת אסימון מזהה של OpenID Connect (OIDC)
אסימונים מזהים מבוססים על מפרט OpenID Connect (OIDC). מספר מוגבל של שירותים ואפליקציות מקבלים אסימונים מזהים.
מידע נוסף זמין במאמר אסימונים מזהים.
כדי ליצור אסימון מזהה, מבצעים את הפעולות האלה:
נותנים למבצע הקריאה החוזרת את ההרשאות הנדרשות.
כדי ליצור אסימון מזהה, משתמשים בתפקיד 'יצירת אסימון זהות' ב-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 במסוף Cloud de Confiance .
- בוחרים פרויקט.
-
לוחצים על כתובת האימייל של חשבון השירות שנושא את ההרשאות,
PRIV_SA. - לוחצים על הכרטיסייה Permissions.
- תחת Principals with access to this service account לוחצים על Grant Access.
-
מזינים את כתובת האימייל של חשבון השירות של מבצע הקריאה החוזרת,
CALLER_SA.לדוגמה,
demo@my-project.s3ns.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: מזהה הפרויקט ב- Cloud de Confiance . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמו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": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }אם לא הקצת תפקידים בחשבון השירות, התגובה תכלול רק ערך
etag. אפשר לכלול את הערךetagבשלב הבא. -
-
משנים את מדיניות ההרשאה כדי להקצות ל-
CALLER_SAאת התפקיד 'יצירת אסימון זהות' ב-OpenID Connect של חשבון שירות (roles/iam.serviceAccountOpenIdTokenCreator).לדוגמה, כדי לשנות את התגובה לדוגמה מהשלב הקודם, צריך להוסיף את הפרטים הבאים:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
כתיבת מדיניות ההרשאה המעודכנת:
השיטה
serviceAccounts.setIamPolicyמגדירה מדיניות הרשאות מעודכנת לחשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. -
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION: גרסת המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן קבלת מדיניות.-
POLICY: ייצוג JSON של המדיניות שרוצים להגדיר. מידע נוסף על הפורמט של מדיניות מופיע בחומר העזר בנושא מדיניות.לדוגמה, כדי להגדיר את מדיניות ההרשאה שמופיעה בשלב הקודם, צריך להחליף את
POLICYעם הערכים הבאים, שבהםCALLER_SAהוא חשבון השירות שיוצר את האסימון לטווח קצר:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/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 במסוף Cloud de Confiance .
- בוחרים פרויקט.
-
לוחצים על כתובת האימייל של חשבון השירות שנושא את ההרשאות,
PRIV_SA. - לוחצים על הכרטיסייה Permissions.
- תחת Principals with access to this service account לוחצים על Grant Access.
-
מזינים את מזהה החשבון הראשי של החשבון שמבצע את הקריאה,
CALLER_ACCOUNT.לדוגמה,
//iam.googleapis.com/locations/global/workforcePools/my-pool/subject/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": [
"principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com"
],
"role": "roles/iam.serviceAccountOpenIdTokenCreator"
}
],
"etag": "BwX1ZbefjXU=",
"version": 1
}
REST
-
צריך לקרוא את מדיניות ההרשאה ל-
PRIV_SA:ה-method
serviceAccounts.getIamPolicyמחזירה את מדיניות ההרשאות של חשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמו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": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }אם לא הקצת תפקידים בחשבון השירות, התגובה תכלול רק ערך
etag. אפשר לכלול את הערךetagבשלב הבא. -
-
משנים את מדיניות ההרשאה כדי להקצות ל-
CALLER_ACCOUNTאת התפקיד 'יצירת אסימון זהות' ב-OpenID Connect של חשבון שירות (roles/iam.serviceAccountOpenIdTokenCreator).לדוגמה, כדי לשנות את התגובה לדוגמה מהשלב הקודם, צריך להוסיף את הפרטים הבאים:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }
-
כתיבת מדיניות ההרשאה המעודכנת:
השיטה
serviceAccounts.setIamPolicyמגדירה מדיניות הרשאות מעודכנת לחשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. -
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION: גרסת המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן קבלת מדיניות.-
POLICY: ייצוג JSON של המדיניות שרוצים להגדיר. מידע נוסף על הפורמט של מדיניות מופיע בחומר העזר בנושא מדיניות.לדוגמה, כדי להגדיר את מדיניות ההרשאות שמופיעה בשלב הקודם, צריך להחליף את
POLICYבערכים הבאים, שבהםCALLER_ACCOUNTהוא חשבון המשתמש שיוצר את האסימון לטווח קצר:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/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 בשביל חשבון שירות:
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) בחתימה עצמית במגוון תרחישים:
- תקשורת מאובטחת בין האפליקציות שלך. בתרחיש הזה, אפליקציה אחת יכולה לחתום על אסימון שאפליקציה אחרת יכולה לבדוק למטרות אימות.
- התייחסות לחשבון שירות כספק זהויות באמצעות חתימה על 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 במסוף Cloud de Confiance .
- בוחרים פרויקט.
-
לוחצים על כתובת האימייל של חשבון השירות שנושא את ההרשאות,
PRIV_SA. - לוחצים על הכרטיסייה Permissions.
- תחת Principals with access to this service account לוחצים על Grant Access.
-
מזינים את כתובת האימייל של חשבון השירות של מבצע הקריאה החוזרת,
CALLER_SA.לדוגמה,
demo@my-project.s3ns.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: מזהה הפרויקט ב- Cloud de Confiance . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמו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": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }אם לא הקצת תפקידים בחשבון השירות, התגובה תכלול רק ערך
etag. אפשר לכלול את הערךetagבשלב הבא. -
-
צריך לשנות את מדיניות ההרשאה כדי להקצות ל-
CALLER_SAאת התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator).לדוגמה, כדי לשנות את התגובה לדוגמה מהשלב הקודם, צריך להוסיף את הפרטים הבאים:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
כתיבת מדיניות ההרשאה המעודכנת:
השיטה
serviceAccounts.setIamPolicyמגדירה מדיניות הרשאות מעודכנת לחשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. -
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION: גרסת המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן קבלת מדיניות.-
POLICY: ייצוג JSON של המדיניות שרוצים להגדיר. מידע נוסף על הפורמט של מדיניות מופיע בחומר העזר בנושא מדיניות.לדוגמה, כדי להגדיר את מדיניות ההרשאה שמופיעה בשלב הקודם, צריך להחליף את
POLICYעם הערכים הבאים, שבהםCALLER_SAהוא חשבון השירות שיוצר את האסימון לטווח קצר:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/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 במסוף Cloud de Confiance .
- בוחרים פרויקט.
-
לוחצים על כתובת האימייל של חשבון השירות שנושא את ההרשאות,
PRIV_SA. - לוחצים על הכרטיסייה Permissions.
- תחת Principals with access to this service account לוחצים על Grant Access.
-
מזינים את מזהה החשבון הראשי של החשבון שמבצע את הקריאה,
CALLER_ACCOUNT.לדוגמה,
//iam.googleapis.com/locations/global/workforcePools/my-pool/subject/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": [
"principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com"
],
"role": "roles/iam.serviceAccountTokenCreator"
}
],
"etag": "BwX1ZbefjXU=",
"version": 1
}
REST
-
צריך לקרוא את מדיניות ההרשאה ל-
PRIV_SA:ה-method
serviceAccounts.getIamPolicyמחזירה את מדיניות ההרשאות של חשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמו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": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }אם לא הקצת תפקידים בחשבון השירות, התגובה תכלול רק ערך
etag. אפשר לכלול את הערךetagבשלב הבא. -
-
צריך לשנות את מדיניות ההרשאה כדי להקצות ל-
CALLER_ACCOUNTאת התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator).לדוגמה, כדי לשנות את התגובה לדוגמה מהשלב הקודם, צריך להוסיף את הפרטים הבאים:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }
-
כתיבת מדיניות ההרשאה המעודכנת:
השיטה
serviceAccounts.setIamPolicyמגדירה מדיניות הרשאות מעודכנת לחשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. -
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION: גרסת המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן קבלת מדיניות.-
POLICY: ייצוג JSON של המדיניות שרוצים להגדיר. מידע נוסף על הפורמט של מדיניות מופיע בחומר העזר בנושא מדיניות.לדוגמה, כדי להגדיר את מדיניות ההרשאות שמופיעה בשלב הקודם, צריך להחליף את
POLICYבערכים הבאים, שבהםCALLER_ACCOUNTהוא חשבון המשתמש שיוצר את האסימון לטווח קצר:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/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 במסוף Cloud de Confiance .
- בוחרים פרויקט.
-
לוחצים על כתובת האימייל של חשבון השירות שנושא את ההרשאות,
PRIV_SA. - לוחצים על הכרטיסייה Permissions.
- תחת Principals with access to this service account לוחצים על Grant Access.
-
מזינים את כתובת האימייל של חשבון השירות של מבצע הקריאה החוזרת,
CALLER_SA.לדוגמה,
demo@my-project.s3ns.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: מזהה הפרויקט ב- Cloud de Confiance . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמו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": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }אם לא הקצת תפקידים בחשבון השירות, התגובה תכלול רק ערך
etag. אפשר לכלול את הערךetagבשלב הבא. -
-
צריך לשנות את מדיניות ההרשאה כדי להקצות ל-
CALLER_SAאת התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator).לדוגמה, כדי לשנות את התגובה לדוגמה מהשלב הקודם, צריך להוסיף את הפרטים הבאים:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
כתיבת מדיניות ההרשאה המעודכנת:
השיטה
serviceAccounts.setIamPolicyמגדירה מדיניות הרשאות מעודכנת לחשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. -
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION: גרסת המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן קבלת מדיניות.-
POLICY: ייצוג JSON של המדיניות שרוצים להגדיר. מידע נוסף על הפורמט של מדיניות מופיע בחומר העזר בנושא מדיניות.לדוגמה, כדי להגדיר את מדיניות ההרשאה שמופיעה בשלב הקודם, צריך להחליף את
POLICYעם הערכים הבאים, שבהםCALLER_SAהוא חשבון השירות שיוצר את האסימון לטווח קצר:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/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 במסוף Cloud de Confiance .
- בוחרים פרויקט.
-
לוחצים על כתובת האימייל של חשבון השירות שנושא את ההרשאות,
PRIV_SA. - לוחצים על הכרטיסייה Permissions.
- תחת Principals with access to this service account לוחצים על Grant Access.
-
מזינים את מזהה החשבון הראשי של החשבון שמבצע את הקריאה,
CALLER_ACCOUNT.לדוגמה,
//iam.googleapis.com/locations/global/workforcePools/my-pool/subject/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": [
"principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com"
],
"role": "roles/iam.serviceAccountTokenCreator"
}
],
"etag": "BwX1ZbefjXU=",
"version": 1
}
REST
-
צריך לקרוא את מדיניות ההרשאה ל-
PRIV_SA:ה-method
serviceAccounts.getIamPolicyמחזירה את מדיניות ההרשאות של חשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמו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": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }אם לא הקצת תפקידים בחשבון השירות, התגובה תכלול רק ערך
etag. אפשר לכלול את הערךetagבשלב הבא. -
-
צריך לשנות את מדיניות ההרשאה כדי להקצות ל-
CALLER_ACCOUNTאת התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator).לדוגמה, כדי לשנות את התגובה לדוגמה מהשלב הקודם, צריך להוסיף את הפרטים הבאים:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }
-
כתיבת מדיניות ההרשאה המעודכנת:
השיטה
serviceAccounts.setIamPolicyמגדירה מדיניות הרשאות מעודכנת לחשבון השירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. -
PRIV_SA: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION: גרסת המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן קבלת מדיניות.-
POLICY: ייצוג JSON של המדיניות שרוצים להגדיר. מידע נוסף על הפורמט של מדיניות מופיע בחומר העזר בנושא מדיניות.לדוגמה, כדי להגדיר את מדיניות ההרשאות שמופיעה בשלב הקודם, צריך להחליף את
POLICYבערכים הבאים, שבהםCALLER_ACCOUNTהוא חשבון המשתמש שיוצר את האסימון לטווח קצר:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/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"
}