בדף הזה נתאר כמה דרכים לקבלת אסימון מזהה של OpenID Connect (OIDC) בחתימת Google.
בקטע אסימונים מזהים מוסבר על התוכן ועל משך החיים של אסימונים.
אפשר להשתמש באסימונים מזהים רק באפליקציה או בשירות הספציפיים שמצוינים בהצהרת aud שלהם. במאמר הזה נשתמש במונח שירות היעד כדי להתייחס לאפליקציה או לשירות שבהם אפשר להשתמש באסימון המזהה לצורך אימות.
אחרי שמקבלים את האסימון המזהה, אפשר לכלול אותו בכותרת Authorization של בקשה ששולחים לשירות היעד.
שיטות לקבלת אסימון מזהה
יש כמה דרכים לקבל אסימון מזהה, ובדף זה נתאר את השיטות הבאות:
- קבלת אסימון מזהה משרת המטא-נתונים
- יצירת אסימון מזהה באמצעות שירות מחבר
- יצירת אסימון מזהה על ידי התחזות לחשבון שירות
סביר להניח שתוכלו להשתמש בשיטות האלה גם עם אפליקציות שאינן מתארחות ב-Cloud de Confiance. עם זאת, עליכם לבדוק אילו הצהרות נדרשות באסימון המזהה עבור כל אפליקציה.
קבלת אסימון מזהה משרת המטא-נתונים
כשהקוד שלכם פועל במשאב שאפשר לצרף לו חשבון שירות, בדרך כלל אפשר לקבל את האסימון המזהה משרת המטא-נתונים של השירות המצורף. האסימונים המזהים נוצרים על ידי שרת המטא-נתונים עבור חשבון השירות המצורף. לא ניתן לקבל משרת המטא-נתונים אסימון מזהה שמבוסס על פרטי הכניסה של משתמשים.
כשאתם מפעילים את הקוד שלכם בשירותים הבאים, תוכלו לקבל אסימון מזהה משרת המטא-נתונים: Cloud de Confiance
כדי לאחזר אסימון מזהה משרת המטא-נתונים, צריך להריץ שאילתה על נקודת הקצה (endpoint) של חשבון השירות כפי שמתואר בדוגמה הבאה.
curl
מחליפים את AUDIENCE במזהה המשאבים האחיד (URI) של שירות היעד, לדוגמה http://www.example.com.
curl -H "Metadata-Flavor: Google" \ 'http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE'
PowerShell
מחליפים את AUDIENCE במזהה המשאבים האחיד (URI) של שירות היעד, לדוגמה http://www.example.com.
$value = (Invoke-RestMethod `
-Headers @{'Metadata-Flavor' = 'Google'} `
-Uri "http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE")
$value
Java
כדי להריץ את דוגמת הקוד הזו, צריך קודם לבצע את השלבים הבאים:
- התקנה של ספריית לקוח לאימות ב-Java
-
מגדירים את משתנה הסביבה
GOOGLE_CLOUD_UNIVERSE_DOMAINלערךs3nsapis.fr.
Go
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
Node.js
כדי להריץ את דוגמת הקוד הזו, צריך קודם לבצע את השלבים הבאים:
- מתקינים את Google Auth Library עבור Node.js.
-
מגדירים את משתנה הסביבה
GOOGLE_CLOUD_UNIVERSE_DOMAINלערךs3nsapis.fr.
Python
כדי להריץ את דוגמת הקוד הזו, צריך קודם לבצע את השלבים הבאים:
- מתקינים את Google Auth Python Library.
-
מגדירים את משתנה הסביבה
GOOGLE_CLOUD_UNIVERSE_DOMAINלערךs3nsapis.fr.
Ruby
כדי להריץ את דוגמת הקוד הזו, צריך קודם לבצע את השלבים הבאים:
- מתקינים את ספריית Google Auth ל-Ruby.
-
מגדירים את משתנה הסביבה
GOOGLE_CLOUD_UNIVERSE_DOMAINלערךs3nsapis.fr.
יצירת אסימון מזהה באמצעות שירות מחבר
בשירותים מסוימים Cloud de Confiance אפשר לקרוא לשירותים אחרים. השירותים המחברים האלה מאפשרים לקבוע מתי תתבצע הקריאה ולנהל תהליך עבודה שכולל קריאה לשירות. בשירותים הבאים ניתן לכלול אסימון מזהה באופן אוטומטי, עם הערך המתאים להצהרה aud, בכל קריאה יזומה לשירות שבו נדרש אסימון מזהה:
- Pub/Sub
- באמצעות שירות Pub/Sub ניתן לקיים תקשורת אסינכרונית בין שירותים. בהגדרות של Pub/Sub ניתן לכלול אסימון מזהה עם הודעה. למידע נוסף, ראו אימות למינוי דחיפה.
יצירת אסימון מזהה על ידי התחזות לחשבון שירות
אפשר ליצור פרטי כניסה לטווח קצר של חשבון שירות מהימן עבור חשבון משתמש, על ידי התחזות לחשבון שירות. אפשר להשתמש בפרטי הכניסה האלה כדי לאמת את חשבון המשתמש בתור חשבון השירות.
כדי לאפשר לחשבון המשתמש להתחזות לחשבון שירות, צריך להיות לו תפקיד IAM שמאפשר התחזות באותו חשבון שירות. אם חשבון המשתמש הוא גם חשבון שירות בעצמו, יכול להיות שייראה קל יותר לספק את ההרשאות הנדרשות ישירות לחשבון השירות הזה ולאפשר לו להתחזות לעצמו. אבל הגדרה כזו, שנקראת 'התחזות עצמית', יוצרת נקודת חולשה באבטחה כי היא מאפשרת לחשבון השירות ליצור אסימון גישה שניתן לרענן לצמיתות.
התחזות לחשבון שירות תמיד צריכה לכלול שני חשבונות משתמשים: חשבון משתמש שמייצג את הקריאה לשירות, וחשבון השירות שאליו הוא מתחזה, שנקרא גם חשבון השירות הנושא את ההרשאות.
כדי ליצור אסימון מזהה באמצעות התחזות לחשבון שירות, פועלים לפי התהליך הכללי הבא.
להוראות מפורטות, תוכלו לקרוא את המאמר יצירת אסימון מזהה.
מאתרים או יוצרים חשבון שירות שישמש כחשבון השירות הנושא את ההרשאות.
- כדי לזהות את התפקידים הנדרשים להפעלת שירות היעד, אפשר לעיין במסמכי התיעוד של המוצר. מקצים לחשבון השירות את התפקידים הבאים בשירות היעד:
מאתרים את חשבון המשתמש שבו תתבצע ההתחזות, ומגדירים לו את פרטי הכניסה לשימוש ב-Application Default Credentials (ADC).
בסביבות פיתוח, חשבון המשתמש הוא בדרך כלל החשבון שסיפקתם ל-ADC באמצעות ה-CLI של gcloud. עם זאת, אם אתם משתמשים במשאב עם חשבון שירות מצורף, חשבון השירות המצורף ישמש בתור חשבון המשתמש.
מקצים לחשבון המשתמש את התפקיד 'יצירת אסימון זהות של OpenID Connect בחשבון השירות' (
roles/iam.serviceAccountOpenIdTokenCreator).משתמשים ב-IAM Credentials API כדי ליצור את האסימון המזהה לחשבון השירות עם ההרשאות.
מחליפים את מה שכתוב בשדות הבאים:
- AUDIENCE: ה-URI של שירות היעד, לדוגמה,
http://www.example.com. - SERVICE_ACCOUNT_EMAIL: כתובת האימייל של חשבון השירות שנושא את ההרשאות.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{"audience": "AUDIENCE", "includeEmail": "true"}' \ https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/SERVICE_ACCOUNT_EMAIL:generateIdToken- AUDIENCE: ה-URI של שירות היעד, לדוגמה,