בדף הזה נתאר כמה דרכים לקבלת אסימון מזהה של 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.
המשך
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה 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 של שירות היעד, לדוגמה