בדף הזה מוסבר איך להשתמש בהתחזות לחשבון שירות כדי ליצור פרטי כניסה לטווח קצר בשביל חשבון שירות. בהתאם לסוג האסימון שיוצרים, האסימון לטווח קצר מספק את הזהות (לאסימונים מזהים) או את ההרשאות (לאסימוני הגישה) שמשויכים לחשבון השירות שאליו הוא מתחזה.
אם צריך להשתמש בסדרה של קריאות ליצירת אסימונים בגלל דרישה של ארכיטקטורת המערכות, אפשר להשתמש בשרשרת הענקת הגישה שמורכבת מכמה חשבונות שירות. ברוב המקרים תספיק השיטה הישירה, כפי שיוסבר בדף הזה.
מידע על התחזות לחשבון שירות
משתמשים ועומסי עבודה צריכים תפקידים של ניהול זהויות והרשאות גישה (IAM) כדי לגשת למשאבים. לפעמים כדאי להעניק תפקידים לכל חשבון משתמש ולכל חשבון שירות שצריכים אותם. אם זה לא אפשרי, או אם אתם רוצים שליטה ריכוזית יותר, אפשר להשתמש בהתחזות לחשבון שירות.
בהתחזות ישירה לחשבון שירות מעורבים שני חשבונות משתמשים:
מבצע הקריאה החוזרת (caller)
מבצע הקריאה החוזרת יכול להיות חשבון משתמש או חשבון שירות. הוא צריך גישה למשאב היעד, אבל אין לו את ההרשאות הנדרשות כדי לעשות זאת.
חשבון השירות שנושא את ההרשאות
לחשבון השירות הזה יש את ההרשאות הנדרשות כדי לגשת למשאב היעד.
כשמבצע הקריאה החוזרת מתחזה לחשבון השירות שנושא את ההרשאות, הוא מקבל אסימון לטווח קצר עם ההרשאות של חשבון השירות שנושא את ההרשאות. עד שתוקף האסימון יפוג, הוא יוכל להשתמש באסימון כדי לגשת למשאב היעד.
לשימוש בהתחזות לחשבון שירות כדי ליצור אסימונים לטווח קצר יש כמה יתרונות:
לפרטי הכניסה לטווח קצר יש תוחלת חיים מוגבלת לכמה שעות או פחות, והם לא מתעדכנים באופן אוטומטי. הם בעלי סיכון נמוך יותר מפרטי כניסה לטווח ארוך, כמו מפתחות של חשבון שירות.
אפשר לנהל את חשבון השירות שנושא את ההרשאות ולשלוט בו במרוכז, כך שלא יהיה צורך בעדכונים בהיקף רחב אם ההרשאות הנדרשות משתנות.
לפני שמתחילים
-
מפעילים את ממשקי ה-API של IAM and Service Account Credentials:
gcloud services enable iam.googleapis.com
iamcredentials.googleapis.com הסבר על חשבונות שירות ב-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
:השיטה
serviceAccounts.getIamPolicy
מקבלת מדיניות הרשאה של חשבון שירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
PROJECT_ID
: מזהה הפרויקט ב-Google Cloud. מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project
.-
PRIV_SA
: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION
: גרסת המדיניות שתוחזר. בבקשות צריך לציין את גרסת המדיניות העדכנית ביותר, שהיא גרסה 3 של המדיניות. פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן קבלת מדיניות.
שיטת ה-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:admin@example.com" ] } ] }
אם לא הקצת תפקידים בחשבון השירות, התגובה תכלול רק ערך
etag
. אפשר לכלול את הערךetag
בשלב הבא. -
צריך לשנות את מדיניות ההרשאה כדי להקצות ל-
CALLER_SA
את התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator
).לדוגמה, כדי לשנות את התגובה לדוגמה מהשלב הקודם, צריך להוסיף את הפרטים הבאים:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@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:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
שיטת ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
תוכן בקשת JSON:
{ "policy": POLICY }
כדי לשלוח את הבקשה צריך להרחיב את אחת מהאפשרויות הבאות:
התגובה כוללת את מדיניות ההרשאה המעודכנת.
פרטי הכניסה של המשתמש
כשרוצים להשתמש ב-Google Cloud CLI כדי ליצור אסימונים לטווח קצר, או ליצור אותם מסביבת פיתוח מקומית, אפשר להשתמש בחשבון משתמש כדי ליצור את האסימונים. לעיתים קרובות, אפשר להשתמש בחשבון Google שלכם.
כשמשתמשים בחשבון משתמש כדי ליצור אסימונים לטווח קצר, הזהויות הבאות מעורבות בכך:
חשבון Google של מבצע הקריאה החוזרת (
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.
-
מזינים את כתובת האימייל של חשבון Google של מבצע הקריאה החוזרת,
CALLER_ACCOUNT
.לדוגמה,
username@google.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:CALLER_ACCOUNT" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
צריך לקרוא את מדיניות ההרשאה ל-
PRIV_SA
:השיטה
serviceAccounts.getIamPolicy
מקבלת מדיניות הרשאה של חשבון שירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
PROJECT_ID
: מזהה הפרויקט ב-Google Cloud. מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project
.-
PRIV_SA
: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION
: גרסת המדיניות שתוחזר. בבקשות צריך לציין את גרסת המדיניות העדכנית ביותר, שהיא גרסה 3 של המדיניות. פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן קבלת מדיניות.
שיטת ה-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:admin@example.com" ] } ] }
אם לא הקצת תפקידים בחשבון השירות, התגובה תכלול רק ערך
etag
. אפשר לכלול את הערךetag
בשלב הבא. -
צריך לשנות את מדיניות ההרשאה כדי להקצות ל-
CALLER_ACCOUNT
את התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator
).לדוגמה, כדי לשנות את התגובה לדוגמה מהשלב הקודם, צריך להוסיף את הפרטים הבאים:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
-
כתיבת מדיניות ההרשאה המעודכנת:
השיטה
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:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
שיטת ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
תוכן בקשת JSON:
{ "policy": POLICY }
כדי לשלוח את הבקשה צריך להרחיב את אחת מהאפשרויות הבאות:
התגובה כוללת את מדיניות ההרשאה המעודכנת.
יצירת אסימון הגישה
אפשר ליצור אסימון גישה ל-OAuth 2.0 באמצעות ה-CLI של gcloud, ה-API ל-REST או באמצעות ספריות הלקוח ב-Cloud וספריות הלקוח של Google API.
אם משתמשים ב-API ל-REST, והגדרות המערכת שלכם יאפשרו תוחלת חיים מורחבת לאסימון, אפשר ליצור אסימון שתוחלת החיים שלו ארוכה מברירת המחדל. ב-Google Cloud CLI אין תמיכה בהגדרה של תוחלת חיים לאסימון.
הדוגמאות הבאות נועדו לשימוש בסביבת פיתוח מקומית. מבצע הקריאה החוזרת צריך להשתמש בחשבון משתמש ולא בחשבון שירות.
יצירת אסימון גישה מסוג OAuth 2.0 בשביל חשבון השירות שנושא את ההרשאות:
gcloud
מתחברים ל-Google Cloud CLI בתור חשבון Google של מבצע הקריאה החוזרת.
gcloud auth login CALLER_ACCOUNT
מתחזים לחשבון השירות שנושא את ההרשאות כדי ליצור את האסימון.
הפקודה
gcloud auth print-access-token
יוצרת אסימון גישה מסוג OAuth 2.0 בשביל חשבון שירות.לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
-
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" }
יצירת אסימון מזהה של OpenID Connect (OIDC)
אסימונים מזהים מבוססים על מפרט OpenID Connect (OIDC). מספר מוגבל של שירותים ואפליקציות מקבלים אסימונים מזהים.
מידע נוסף זמין במאמרים אסימונים מזהים ו-אימות לאפליקציות שמתארחות ב-Cloud Run או ב-Cloud Functions.
כדי ליצור אסימון מזהה, מבצעים את הפעולות האלה:
נותנים למבצע הקריאה החוזרת את ההרשאות הנדרשות.
כדי ליצור אסימון מזהה, משתמשים בתפקיד 'יצירת אסימון זהות' ב-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
:השיטה
serviceAccounts.getIamPolicy
מקבלת מדיניות הרשאה של חשבון שירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
PROJECT_ID
: מזהה הפרויקט ב-Google Cloud. מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project
.-
PRIV_SA
: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION
: גרסת המדיניות שתוחזר. בבקשות צריך לציין את גרסת המדיניות העדכנית ביותר, שהיא גרסה 3 של המדיניות. פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן קבלת מדיניות.
שיטת ה-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:admin@example.com" ] } ] }
אם לא הקצת תפקידים בחשבון השירות, התגובה תכלול רק ערך
etag
. אפשר לכלול את הערךetag
בשלב הבא. -
משנים את מדיניות ההרשאה כדי להקצות ל-
CALLER_SA
את התפקיד 'יצירת אסימון זהות' ב-OpenID Connect של חשבון שירות (roles/iam.serviceAccountOpenIdTokenCreator
).לדוגמה, כדי לשנות את התגובה לדוגמה מהשלב הקודם, צריך להוסיף את הפרטים הבאים:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@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:admin@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
שיטת ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
תוכן בקשת JSON:
{ "policy": POLICY }
כדי לשלוח את הבקשה צריך להרחיב את אחת מהאפשרויות הבאות:
התגובה כוללת את מדיניות ההרשאה המעודכנת.
פרטי הכניסה של המשתמש
כשרוצים להשתמש ב-Google Cloud CLI כדי ליצור אסימונים לטווח קצר, או ליצור אותם מסביבת פיתוח מקומית, אפשר להשתמש בחשבון משתמש כדי ליצור את האסימונים. לעיתים קרובות, אפשר להשתמש בחשבון Google שלכם.
כשמשתמשים בחשבון משתמש כדי ליצור אסימונים לטווח קצר, הזהויות הבאות מעורבות בכך:
חשבון Google של מבצע הקריאה החוזרת (
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.
-
מזינים את כתובת האימייל של חשבון Google של מבצע הקריאה החוזרת,
CALLER_ACCOUNT
.לדוגמה,
username@google.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:CALLER_ACCOUNT" ], "role": "roles/iam.serviceAccountOpenIdTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
צריך לקרוא את מדיניות ההרשאה ל-
PRIV_SA
:השיטה
serviceAccounts.getIamPolicy
מקבלת מדיניות הרשאה של חשבון שירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
PROJECT_ID
: מזהה הפרויקט ב-Google Cloud. מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project
.-
PRIV_SA
: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION
: גרסת המדיניות שתוחזר. בבקשות צריך לציין את גרסת המדיניות העדכנית ביותר, שהיא גרסה 3 של המדיניות. פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן קבלת מדיניות.
שיטת ה-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:admin@example.com" ] } ] }
אם לא הקצת תפקידים בחשבון השירות, התגובה תכלול רק ערך
etag
. אפשר לכלול את הערךetag
בשלב הבא. -
משנים את מדיניות ההרשאה כדי להקצות ל-
CALLER_ACCOUNT
את התפקיד 'יצירת אסימון זהות' ב-OpenID Connect של חשבון שירות (roles/iam.serviceAccountOpenIdTokenCreator
).לדוגמה, כדי לשנות את התגובה לדוגמה מהשלב הקודם, צריך להוסיף את הפרטים הבאים:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
-
כתיבת מדיניות ההרשאה המעודכנת:
השיטה
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:admin@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
שיטת ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
תוכן בקשת JSON:
{ "policy": POLICY }
כדי לשלוח את הבקשה צריך להרחיב את אחת מהאפשרויות הבאות:
התגובה כוללת את מדיניות ההרשאה המעודכנת.
יצירת האסימון המזהה
אפשר ליצור אסימון מזהה של OpenID Connect (OIDC), באמצעות ה-CLI של gcloud, ה-API ל-REST או באמצעות ספריות הלקוח ב-Cloud וספריות הלקוח של Google API.
הדוגמאות הבאות נועדו לשימוש בסביבת פיתוח מקומית. מבצע הקריאה החוזרת צריך להשתמש בחשבון משתמש ולא בחשבון שירות.
אסימונים מזהים OIDC תקפים לשעה אחת (3,600 שניות).
יוצרים אסימון מזהה OIDC בחתימה של Google בשביל חשבון השירות שנושא את ההרשאות:
gcloud
מתחברים ל-Google Cloud CLI בתור חשבון Google של מבצע הקריאה החוזרת.
gcloud auth login CALLER_ACCOUNT
מתחזים לחשבון השירות שנושא את ההרשאות כדי ליצור את האסימון.
הפקודה
gcloud auth print-identity-token
יוצרת אסימון מזהה OIDC לחשבון שירות.לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
-
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) בחתימה עצמית במגוון תרחישים:
- אימות ל-API שנפרס באמצעות API Gateway.
- אימות קריאה ל-Google API כפי שמתואר במדריך האימות של Google.
- תקשורת מאובטחת בין האפליקציות שלך. בתרחיש הזה, אפליקציה אחת יכולה לחתום על אסימון שאפליקציה אחרת יכולה לבדוק למטרות אימות.
- התייחסות לחשבון שירות כספק זהויות באמצעות חתימה על 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
:השיטה
serviceAccounts.getIamPolicy
מקבלת מדיניות הרשאה של חשבון שירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
PROJECT_ID
: מזהה הפרויקט ב-Google Cloud. מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project
.-
PRIV_SA
: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION
: גרסת המדיניות שתוחזר. בבקשות צריך לציין את גרסת המדיניות העדכנית ביותר, שהיא גרסה 3 של המדיניות. פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן קבלת מדיניות.
שיטת ה-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:admin@example.com" ] } ] }
אם לא הקצת תפקידים בחשבון השירות, התגובה תכלול רק ערך
etag
. אפשר לכלול את הערךetag
בשלב הבא. -
צריך לשנות את מדיניות ההרשאה כדי להקצות ל-
CALLER_SA
את התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator
).לדוגמה, כדי לשנות את התגובה לדוגמה מהשלב הקודם, צריך להוסיף את הפרטים הבאים:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@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:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
שיטת ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
תוכן בקשת JSON:
{ "policy": POLICY }
כדי לשלוח את הבקשה צריך להרחיב את אחת מהאפשרויות הבאות:
התגובה כוללת את מדיניות ההרשאה המעודכנת.
פרטי הכניסה של המשתמש
כשרוצים להשתמש ב-Google Cloud CLI כדי ליצור אסימונים לטווח קצר, או ליצור אותם מסביבת פיתוח מקומית, אפשר להשתמש בחשבון משתמש כדי ליצור את האסימונים. לעיתים קרובות, אפשר להשתמש בחשבון Google שלכם.
כשמשתמשים בחשבון משתמש כדי ליצור אסימונים לטווח קצר, הזהויות הבאות מעורבות בכך:
חשבון Google של מבצע הקריאה החוזרת (
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.
-
מזינים את כתובת האימייל של חשבון Google של מבצע הקריאה החוזרת,
CALLER_ACCOUNT
.לדוגמה,
username@google.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:CALLER_ACCOUNT" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
צריך לקרוא את מדיניות ההרשאה ל-
PRIV_SA
:השיטה
serviceAccounts.getIamPolicy
מקבלת מדיניות הרשאה של חשבון שירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
PROJECT_ID
: מזהה הפרויקט ב-Google Cloud. מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project
.-
PRIV_SA
: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION
: גרסת המדיניות שתוחזר. בבקשות צריך לציין את גרסת המדיניות העדכנית ביותר, שהיא גרסה 3 של המדיניות. פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן קבלת מדיניות.
שיטת ה-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:admin@example.com" ] } ] }
אם לא הקצת תפקידים בחשבון השירות, התגובה תכלול רק ערך
etag
. אפשר לכלול את הערךetag
בשלב הבא. -
צריך לשנות את מדיניות ההרשאה כדי להקצות ל-
CALLER_ACCOUNT
את התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator
).לדוגמה, כדי לשנות את התגובה לדוגמה מהשלב הקודם, צריך להוסיף את הפרטים הבאים:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
-
כתיבת מדיניות ההרשאה המעודכנת:
השיטה
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:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
שיטת ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
תוכן בקשת 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
לא יותר משעה אחת קדימה.המטען הייעודי בדוגמה הבאה מכיל הצהרות לקריאה ל-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
:השיטה
serviceAccounts.getIamPolicy
מקבלת מדיניות הרשאה של חשבון שירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
PROJECT_ID
: מזהה הפרויקט ב-Google Cloud. מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project
.-
PRIV_SA
: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION
: גרסת המדיניות שתוחזר. בבקשות צריך לציין את גרסת המדיניות העדכנית ביותר, שהיא גרסה 3 של המדיניות. פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן קבלת מדיניות.
שיטת ה-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:admin@example.com" ] } ] }
אם לא הקצת תפקידים בחשבון השירות, התגובה תכלול רק ערך
etag
. אפשר לכלול את הערךetag
בשלב הבא. -
צריך לשנות את מדיניות ההרשאה כדי להקצות ל-
CALLER_SA
את התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator
).לדוגמה, כדי לשנות את התגובה לדוגמה מהשלב הקודם, צריך להוסיף את הפרטים הבאים:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@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:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
שיטת ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
תוכן בקשת JSON:
{ "policy": POLICY }
כדי לשלוח את הבקשה צריך להרחיב את אחת מהאפשרויות הבאות:
התגובה כוללת את מדיניות ההרשאה המעודכנת.
פרטי הכניסה של המשתמש
כשרוצים להשתמש ב-Google Cloud CLI כדי ליצור אסימונים לטווח קצר, או ליצור אותם מסביבת פיתוח מקומית, אפשר להשתמש בחשבון משתמש כדי ליצור את האסימונים. לעיתים קרובות, אפשר להשתמש בחשבון Google שלכם.
כשמשתמשים בחשבון משתמש כדי ליצור אסימונים לטווח קצר, הזהויות הבאות מעורבות בכך:
חשבון Google של מבצע הקריאה החוזרת (
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.
-
מזינים את כתובת האימייל של חשבון Google של מבצע הקריאה החוזרת,
CALLER_ACCOUNT
.לדוגמה,
username@google.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:CALLER_ACCOUNT" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
צריך לקרוא את מדיניות ההרשאה ל-
PRIV_SA
:השיטה
serviceAccounts.getIamPolicy
מקבלת מדיניות הרשאה של חשבון שירות.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
PROJECT_ID
: מזהה הפרויקט ב-Google Cloud. מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project
.-
PRIV_SA
: כתובת האימייל של חשבון השירות שנושא את ההרשאות שבשבילו נוצר האסימון לטווח קצר. POLICY_VERSION
: גרסת המדיניות שתוחזר. בבקשות צריך לציין את גרסת המדיניות העדכנית ביותר, שהיא גרסה 3 של המדיניות. פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן קבלת מדיניות.
שיטת ה-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:admin@example.com" ] } ] }
אם לא הקצת תפקידים בחשבון השירות, התגובה תכלול רק ערך
etag
. אפשר לכלול את הערךetag
בשלב הבא. -
צריך לשנות את מדיניות ההרשאה כדי להקצות ל-
CALLER_ACCOUNT
את התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator
).לדוגמה, כדי לשנות את התגובה לדוגמה מהשלב הקודם, צריך להוסיף את הפרטים הבאים:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
-
כתיבת מדיניות ההרשאה המעודכנת:
השיטה
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:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
שיטת ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
תוכן בקשת 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" }