הגדרה של איחוד שירותי אימות הזהות של עומסי עבודה עם ספקי זהויות אחרים

במדריך הזה מוסבר איך להשתמש באיחוד שירותי אימות הזהות של עומסי עבודה בספקי זהויות (IdPs) אחרים.

כדי לבצע אימות ב- Cloud de Confiance, אתם יכולים לאפשר לעומס העבודה להחליף את פרטי הכניסה הספציפיים לסביבה בפרטי כניסה לטווח קצר ל- Cloud de Confianceבאמצעות איחוד שירותי אימות הזהות של עומסי עבודה.

לעומסי עבודה שפועלים מחוץ ל- Cloud de Confiance יכולה להיות גישה לפרטי כניסה קיימים שספציפיים לסביבה, לדוגמה:

  • יכול להיות שעומס עבודה יוכל לקבל אסימון טענת נכונות (assertion) של OpenID Connect‏ (OIDC) מ-IdP.

  • עומס עבודה יכול לקבל אסימון טענת נכוֹנוּת (assertion) של SAML מספק זהויות (IdP).

באמצעות איחוד שירותי אימות הזהות של עומסי עבודה, תוכלו לצמצם את מספר פרטי הכניסה שדורשים רוטציה.

בקטעים הבאים מוסבר איך להשתמש באיחוד שירותי אימות הזהות של עומסי עבודה בספקי זהויות (IdPs) שתומכים ב-OpenID Connect (OIDC) או בפרוטוקולים של אימות SAML.

הכנת ה-IdP החיצוני

צריך לבצע את השלבים האלה פעם אחת לכל IdP.

לפני שמתחילים, צריך לוודא שה-IdP החיצוני עומד בדרישות הבאות:

OIDC

  • IdP שתומך ב-OpenID Connect 1.0.

  • ל-IdP יש URI של מנפיק.

  • ‫Cloud de Confiance יכול לגשת לקבוצת מפתחות אינטרנט מסוג JSON ‏ (JWKS) שמכילה מפתחות אינטרנט מסוג JSON ‏ (JWKs). מפתחות ה-JWK משמשים לאימות אסימוני טענת נכוֹנוּת (assertion) של OIDC. אתם יכולים לתת גישה ל-JWKS באחת מהדרכים הבאות:

    • Cloud de Confiance מוריד מטא-נתונים של OIDC מ-IdP, דרך כתובת URL של מסמך Discovery שזמינה לכולם, מוכרת ונגישה באינטרנט. בתוך המטא-נתונים, כתובת ה-URL של JWKS חייבת להיות מאובטחת באמצעות SSL ו-TLS. כתובת ה-URL של JWKS חייבת להתחיל ב-https://. מערכת Cloud de Confiance לא תומכת בכתובות URL של JWKS שמאובטחות באמצעות אישורים חתומים באופן עצמי.

      כברירת מחדל, Cloud de Confiance מוסיף את /.well-known/openid-configuration ל-URI של המנפיק כדי לאתר את כתובת ה-URL של מסמך Discovery. אם ספק הזהויות מארח את המטא-נתונים של הגילוי בנקודת קצה מותאמת אישית, אתם יכולים לציין URI מותאם אישית של גילוי (--discovery-uri) (גרסת טרום-השקה (Preview)).

      ה-URI המותאם אישית של הגילוי צריך לעמוד בדרישות הבאות:

      • ה-URI חייב להתחיל ב-https://.
      • ה-URI לא יכול להכיל יותר מ-2,000 תווים.
      • הסכימה, המארח והיציאה חייבים להתאים ל-URI של המנפיק.
      • נתיב ה-URI חייב להכיל את /.well-known/<suffix> (כאשר <suffix> לא ריק, כמו openid-configuration) ולעמוד באחת מהטופולוגיות הבאות של כתובת ה-URL של המנפיק:
      • קטע הנתיב well-known מוכנס לפני הנתיב של המנפיק (לדוגמה, https://example.com/.well-known/openid-configuration/tenant1 למנפיק https://example.com/tenant1).
      • מקטע הנתיב well-known מצורף מתחת לנתיב המנפיק (לדוגמה, https://example.com/tenant1/.well-known/openid-configuration למנפיק https://example.com/tenant1).

      ‫Cloud de Confiance משתמש בכתובות ה-URL האלה של נקודות הקצה כדי להוריד את מפתחות האינטרנט בפורמט JSON‏ (JWK) של ה-IdP, ומשתמש במפתחות האלה כדי לאמת אסימונים. ב-Cloud de Confiance אין הגבלה על מספר המפתחות שאפשר להוריד.

    • אתם יכולים להעלות קובץ JWKS של OIDC ישירות אל Cloud de Confiance כשאתם יוצרים או מעדכנים את הספק של מאגר הזהויות של עומסי העבודה ב-OIDC. כדי לעשות את זה, משתמשים ב---jwk-json-path כדי לספק נתיב לקובץ ה-JWKS. אתם יכולים להשתמש בשיטה הזו כשכתובת ה-URL של נקודת הקצה של המטא-נתונים של ה-OIDC של ה-IdP לא נגישה לכולם. אפשר להעלות עד 8 מפתחות אל Cloud de Confiance. מומלץ לבצע רוטציה של מפתחות JWKS באופן קבוע על ידי עדכון קובץ ה-JWKS.

  • אם אתם מאחדים עומסי עבודה מ-AWS באמצעות AWS Outbound Identity Federation, ‏ AWS פועל בתור ה-OIDC IdP שלכם. כדי להכין את סביבת AWS:

    1. מפעילים איחוד זהויות יוצא בהגדרות של חשבון AWS כדי ליצור את כתובת ה-URL הייחודית של מנפיק ה-OIDC.

    2. מוודאים שלעומסי העבודה ב-AWS (כמו פרופילים של מכונות EC2 או תפקידי משימות ב-ECS) יש את מדיניות AWS IAM הנדרשת, שמעניקה הרשאה לקבל אסימוני אינטרנט מסוג JSON‏ (JWT).

SAML

  • IdP שתומך ב-SAML גרסה 2.0.

  • ה-IdP מציג מסמך מטא-נתונים מסוג SP של SAML שמתאר את ההגדרה של ספק השירות של SAML ומכיל את אישור החתימה של ה-IdP.

    ב-Cloud de Confiance , המערכת משתמשת באישור הזה כדי לאמת טענות נכונות ותגובות של SAML.

  • אישור החתימה של ה-IdP חייב להכיל מפתח ECDSA או RSA שנמצא בתוך אישור X.509 v3.

  • האלגוריתמים המומלצים לחתימה כוללים:

  • אישור החתימה צריך לעמוד בדרישות התוקף הבאות:

    • notBefore: חותמת זמן של 7 ימים לכל היותר בעתיד
    • notAfter: חותמת זמן של 25 שנים לכל היותר בעתיד

אפשר להגדיר ספק של מאגר זהויות של עומסי עבודה ב-SAML עם שלושה אישורי חתימה של SAML לכל היותר בכל רגע נתון. המגבלה הזו לא חלה על סוגים אחרים של ספקים של מאגרי זהויות של עומסי עבודה, כמו OIDC ו-X.509. כשיש כמה אישורים, מערכת Cloud de Confiance עוברת באיטרציות על האישורים שעדיין בתוקף ומנסה להשתמש בכל אישור כדי למלא בקשות להחלפת אסימונים.

כשיטה מומלצת לאבטחה, מומלץ מאוד לא להשתמש שוב באותו זוג מפתחות בשירותים אחרים.

אם ה-IdP שלך עומד בקריטריונים האלה, צריך לבצע את הפעולות הבאות:

OIDC

מגדירים את ה-IdP כדי שעומס העבודה שלכם יוכל לקבל טוקנים של מזהים שעומדים בקריטריונים הבאים:

  • האסימונים נחתמים באמצעות האלגוריתם RS256 או ES256.
  • האסימונים מכילים הצהרת aud עם הערך הבא:

    https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫PROJECT_NUMBER: מספר הפרויקט ב- Cloud de Confiance שבו משתמשים כדי ליצור מאגר זהויות של עומסי עבודה.
    • POOL_ID: מזהה לבחירתכם, שמזהה את מאגר הזהויות של עומסי העבודה. בהמשך תצטרכו להשתמש במזהה הזה כשתיצרו את מאגר הזהויות של עומסי עבודה.
    • WORKLOAD_PROVIDER_ID: מזהה לבחירתכם, שמזהה את ספק מאגר הזהויות של עומסי העבודה. בהמשך תצטרכו להשתמש במזהה הזה כשתיצרו ספק של מאגר זהויות של עומסי עבודה.

    לחלופין, אפשר להגדיר את הספק של מאגר הזהויות של עומסי העבודה כדי לצפות לקהל בהתאמה אישית.

  • האסימונים מכילים הצהרת exp עתידית והצהרת iat שחלה בעבר.

    הערך של exp צריך להיות גדול מהערך של iat עד 24 שעות לכל היותר.

  • אסימונים שקשורים לאישור (גרסת טרום-השקה (Preview)): אופציונלי, אסימונים יכולים לכלול הצהרת cnf (אישור) שמכילה טביעת אצבע לאישור SHA-256‏ (x5t#S256):

    "cnf": {
      "x5t#S256": "BASE64URL_SHA256_CERT_FINGERPRINT"
    }
    

    הערך של x5t#S256 חייב להיות גיבוב SHA-256 בקידוד base64url של קידוד ה-DER של אישור ה-X.509 של הלקוח. כשמציגים אסימון שמכיל את ההצהרה הזו לאיחוד שירותי אימות הזהות של עומסי עבודה דרך חיבור Mutual TLS (mTLS) (sts.mtls.googleapis.com), שירות אסימוני האבטחה מאמת שטביעת האצבע תואמת לאישור הלקוח שהוצג במהלך לחיצת היד בפרוטוקול TLS, ומנפיק אסימון גישה לטווח קצר שקשור לאישור באופן קריפטוגרפי.

    כדי להגן על המשאבים מפני גניבת אסימונים ומתקפות של הפעלה חוזרת, אפשר לאכוף אסימונים שקשורים לאישור על ידי הגדרת כללי מדיניות של בקרת גישה מבוססת-הקשר.

בדרך כלל מומלץ להשתמש בטוקנים של מזהים כשמבצעים המרת טוקנים, כי הטוקנים של המזהים משקפים את זהות המשתמש. אם מחליטים להשתמש באסימוני גישה במקום זאת, צריך לוודא שאסימוני הגישה עומדים בדרישות הנוספות האלה:

  • טוקני הגישה מעוצבים בפורמט JSON Web Token.
  • אסימוני הגישה מכילים הצהרת ISSUER, כך שכתובת ה-URL ISSUER/.well-known/openid-configuration מפנה לנקודת הקצה של המטא-נתונים של OIDC ב-IdP.

  • כדי להעלות מפתחות JWK מקומיים, קראו את המאמר ניהול מפתחות JWK ב-OIDC.

SAML

צריך להגדיר את ה-IdP כך שטענות הנכוֹנוּת (assertions) של SAML יכללו רכיבים שעומדים בקריטריונים הבאים:

  • רכיב Issuer שמוגדר למזהה הישות ב-SAML בהגדרות הספק של מאגר הזהויות של עומסי העבודה. צריך להשמיט את הפורמט של המנפיק או להגדיר אותו בתור urn:oasis:names:tc:SAML:2.0:nameid-format:entity.
  • רכיב Subject עם:
    • רכיב NameID.
    • רכיב SubjectConfirmation אחד בדיוק עם Method שמוגדר ל-urn:oasis:names:tc:SAML:2.0:cm:bearer.
    • רכיב SubjectConfirmationData עם NotOnOrAfter מוגדר לחותמת זמן שתתרחש בעתיד ואין לה ערך NotBefore.
  • רכיב Conditions עם:

    • NotBefore שהושמט או שהוא התרחש בעבר.
    • NotOnOrAfter שהושמט או שהוא יתרחש בעתיד.
    • Audience מופיע לפי הפורמט הבא:

      https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID
      

      מחליפים את מה שכתוב בשדות הבאים:

      • ‫PROJECT_NUMBER: מספר הפרויקט ב- Cloud de Confiance שבו משתמשים כדי ליצור מאגר זהויות של עומסי עבודה.
      • POOL_ID: מזהה לבחירתכם, שמזהה את מאגר הזהויות של עומסי העבודה. בהמשך תצטרכו להשתמש במזהה הזה כשתיצרו את מאגר הזהויות של עומסי עבודה.
      • WORKLOAD_PROVIDER_ID: מזהה לבחירתכם, שמזהה את ספק מאגר הזהויות של עומסי העבודה. בהמשך תצטרכו להשתמש במזהה הזה כשתיצרו ספק של מאגר זהויות של עומסי עבודה.
  • לפחות רכיב אחד של AuthnStatement.

  • רכיב SessionNotOnOrAfter עם חותמת זמן שתתרחש בעתיד. לחלופין, אפשר להשמיט את הרכיב.

בטענות נכוֹנוּת (assertions) של SAML שמצורפות לתגובת SAML, תגובת SAML חייבת להכיל:

  • טענת נכוֹנוּת אחת בדיוק שעומדת בקריטריונים של טענת נכוֹנוּת (assertion) ב-SAML שמתוארים למעלה בקטע הזה.
  • מאפיין IssueInstant עם ערך שחל לפני פחות משעה.
  • קוד סטטוס urn:oasis:names:tc:SAML:2.0:status:Success.

צריך לחתום על טענת נכונות של SAML, על התגובה או על שתיהן.

הגדרה של איחוד שירותי אימות הזהות של עומסי עבודה

צריך לבצע את השלבים האלה פעם אחת לכל IdP. לאחר מכן אפשר להשתמש באותו מאגר זהויות של עומסי עבודה ובאותו ספק לעומסי עבודה מרובים ולכמה פרויקטים ב- Cloud de Confiance .

כדי להתחיל בהגדרה של איחוד שירותי אימות הזהות של עומסי עבודה, מבצעים את הפעולות הבאות:

  1. בדף לבחירת הפרויקט במסוף Cloud de Confiance , בוחרים פרויקט ב- Cloud de Confiance או יוצרים אותו.

    התפקידים שנדרשים כדי לבחור או ליצור פרויקט

    • בחירת פרויקט: כדי לבחור פרויקט לא נדרש תפקיד IAM ספציפי – אתם יכולים לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד "יצירת פרויקטים" (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים?

    כניסה לדף לבחירת הפרויקט

  2. עדיף להשתמש בפרויקט ייעודי לניהול ספקים ומאגרי זהויות של עומסי עבודה.
  3. מוודאים שהחיוב מופעל בפרויקט ב- Cloud de Confiance .

  4. מפעילים את ממשקי ה-API הבאים, אם הם עדיין לא מופעלים: IAM,‏ מנהל המשאבים,‏ פרטי כניסה לחשבון שירות ו-Security Token Service.

    התפקידים שנדרשים כדי להפעיל ממשקי API

    כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    הפעלת ממשקי ה-API

ניהול מפתחות JWK של OIDC שהועלו באופן עצמאי (אופציונלי)

בקטע הזה מוסבר איך לנהל מפתחות JWKS של OIDC שהועלו באופן עצמאי, בספקי OIDC של מאגר זהויות של עומסי עבודה.

יצירת הספק והעלאה של מפתחות JWKs של OIDC

כדי ליצור מפתחות JWK של OIDC, יש לעיין במאמר הטמעה של JWT,‏ JWS,‏ JWE,‏ JWK ו-JWA.

כדי להעלות קובץ מפתח JWK ב-OIDC בזמן היצירה של ספק מאגר זהויות של עומסי עבודה, מריצים את הפקודה gcloud iam workload-identity-pools providers create-oidc עם הפרמטרים --jwk-json-path="JWK_JSON_PATH". מחליפים את הערך של JWK_JSON_PATH בנתיב שלכם לקובץ מפתחות ה-JWK ב-JSON.

הפעולה הזו יוצרת מפתחות העלאה מהמפתחות שבקובץ.

עדכון מפתחות JWK ב-OIDC

כדי לעדכן את מפתחות JWK ב-OIDC, מפעילים את הפקודה gcloud iam workload-identity-pools providers update-oidc עם הפרמטרים --jwk-json-path="JWK_JSON_PATH". מחליפים את הערך של JWK_JSON_PATH בנתיב שלכם לקובץ מפתחות ה-JWK ב-JSON.

הפעולה הזו מחליפה מפתחות העלאה קיימים עם המפתחות שבקובץ. אי אפשר לשחזר את המפתחות שהוחלפו.

מחיקה של כל מפתחות ה-JWK של OIDC שהועלו

כדי למחוק את כל המפתחות JWK של OIDC ולחזור להשתמש ב-URI של המנפיק כדי לאחזר את המפתחות, מריצים את הפקודה gcloud iam workload-identity-pools providers update-oidc עם הפרמטרים --jwk-json-path="JWK_JSON_PATH". מחליפים את הערך ב-JWK_JSON_PATH בנתיב לקובץ ריק. משתמשים בדגל --issuer-uri כדי להגדיר את ה-URI של המנפיק.

הפעולה הזו תמחק את כל מפתחות ההעלאה הקיימים ותחליף אותם עם המפתחות שמופיעים בקובץ. אי אפשר לשחזר את המפתחות שנמחקו.

הגדרת מיפוי של מאפיין ותנאי

יכול להיות שאסימוני OIDC או טענות נכונות (assertions) של SAML שה-IdP הנפיק, יכילו מאפיינים מרובים, וצריך להחליט באיזה מאפיין להשתמש כמזהה הנושא (google.subject) ב- Cloud de Confiance.

אפשר גם למפות מאפיינים נוספים (אופציונלי). לאחר מכן אפשר לקרוא למאפיינים האלה כשמקצים גישה למשאבים.

OIDC

כשממפים את המאפיינים אפשר להשתמש בהצהרות שמוטמעות בטוקן של המזהה או בטוקן הגישה שהנפיק ה-IdP החיצוני.

צריך למפות את אחת מההצהרות האלה ל-google.subject כדי לזהות את המשתמש באופן ייחודי. כדי להגן מפני איומי זיופים, צריך לבחור הצהרה עם ערך ייחודי שאי אפשר לשנות.

מזהי IdP רבים נכללים בהצהרה sub עם מזהה ייחודי שלא ניתן לשינוי. לגבי מזהי ה-IdP האלה, כדאי למפות את ההצהרה sub ל-google.subject:

google.subject=assertion.sub

לשם כך, עדיף שלא להשתמש בהצהרה כמו email. בדרך כלל אפשר להקצות או לשנות כתובות אימייל כדי שהן לא יזהו משתמש באופן ייחודי ועקבי.

מיפוי מאפייני משתמשים עם הקצאת זהות (גרסת טרום-השקה (Preview)): כשמשתמשים בהקצאת זהות, שירות אסימוני האבטחה משלב את ההצהרות של הנושא וההצהרות של המשתמש, וחושף את ההצהרות של המשתמש באובייקט ההצהרה act. אפשר להפנות להצהרות של שחקנים במיפוי המאפיינים באמצעות assertion.act.<claim_name>.

כשמבצעים החלפת אסימונים מואצלת, רק מיפויי המאפיינים והתנאים למאפיינים של ספק הנושא נבדקים ומוחלים. המערכת מתעלמת מכל מיפוי מאפיינים או תנאי מאפיינים שמוגדרים בספק של הגורם המבצע.

לדוגמה, אפשר למפות את מזהה הנושא ואת ה-URI של המנפיק של השחקן למאפיינים מותאמים אישית של Google:

attribute.actor_subject=assertion.act.sub,attribute.actor_issuer=assertion.act.iss

אם משתמשים בהקצאת הרשאות מרובת-שלבים, הגורמים במעלה הזרם מוטמעים בתוך assertion.act.act. עם זאת, אין הבטחה לגבי הסדר של הטענות המקוננות.

SAML

כשממפים את המאפיינים, אפשר להשתמש ברכיבים <Subject> ו-<Attribute> שמוטמעים בטענת הנכוֹנוּת (assertion) שהנפיק ה-IdP החיצוני. אפשר לקרוא למאפייני SAML באמצעות מילות המפתח הבאות:

  • assertion.subject מכיל את ה-NameID של המשתמש המאומת שנמצא ברכיב <Subject>.
  • assertion.attributes['ATTRIBUTE_NAME'] מכיל רשימת ערכים בשביל <Attribute> בשם דומה.

צריך למפות את אחת מההצהרות האלה ל-google.subject כדי לזהות את המשתמש באופן ייחודי. כדי להגן מפני איומי זיופים, צריך לבחור הצהרה עם ערך ייחודי שאי אפשר לשנות.

מזהי IdP רבים נכללים בהצהרה NameId עם מזהה ייחודי שלא ניתן לשינוי. למזהי ה-IdP האלה, כדאי למפות את המאפיין NameId ל-google.subject:

google.subject=assertion.subject

לשם כך, עדיף שלא להשתמש במאפיין כמו http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress. בדרך כלל אפשר להקצות או לשנות כתובות אימייל כדי שהן לא יזהו משתמש באופן ייחודי ועקבי.

אפשר גם להגדיר תנאי למאפיין. תנאים למאפיינים הם ביטויים ב-CEL שאפשר לבדוק בהם טענת נכוֹנוּת (assertion) ומאפייני יעד. אם התנאי למאפיין מקבל ערך של true לגבי פרטי כניסה מסוימים, הפרטים האלה מאושרים. אחרת, פרטי הכניסה נדחים.

OIDC

אפשר להשתמש בתנאי למאפיין כדי להגביל את המשתמשים שיכולים להשתמש באיחוד שירותי אימות הזהות של עומסי עבודה כדי לקבל אסימוני Cloud de Confianceלטווח קצר.

לדוגמה, בעזרת התנאי הבא אפשר להגביל גישה לאסימונים שכוללים הצהרת service_account מותאמת אישית עם הערך true:

assertion.service_account==true

תנאים להענקת הרשאות לזהות (אסימון שחקן) (גרסת טרום-השקה (Preview)): כשמשתמשים בהענקת הרשאות לזהות, אפשר להשתמש בתנאי מאפיינים של CEL כדי להגביל את השחקנים שמורשים לבצע פעולות בשם הנושאים, או לאכוף הצהרות ספציפיות על אסימון השחקן.

לדוגמה, התנאי הבא דורש שיהיה אסימון של גורם מבצע, ושהגורם המבצע הגיע ממנפיק צפוי:

has(assertion.act) && assertion.act.iss == 'https://actor-idp.example.com'

כדי להגביל את הגישה למזהה נושא ספציפי של שחקן:

assertion.act.sub == 'authorized-agent-worker'

SAML

אפשר להשתמש בתנאי למאפיין כדי להגביל את המשתמשים שיכולים להשתמש באיחוד שירותי אימות הזהות של עומסי עבודה כדי לקבל אסימוני Cloud de Confianceלטווח קצר.

לדוגמה, בעזרת התנאי הבא אפשר להגביל גישה לטענות נכוֹנוּת (assertions) שכוללות מאפיין https://example.com/SAML/Attributes/AllowGcpFederation מותאם אישית עם הערך true:

assertion.attributes['https://example.com/SAML/Attributes/AllowGcpFederation'][0]=='true'

יצירה של ספק ומאגר זהויות של עומסי עבודה

התפקידים הנדרשים

כדי לקבל את ההרשאות שנדרשות להגדרה של איחוד שירותי אימות הזהות של עומסי עבודה, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

לחלופין, התפקיד הבסיסי ב-IAM 'בעלים' (roles/owner) כולל גם הרשאות להגדרה של איחוד זהויות. לא צריך להקצות תפקידים בסיסיים בסביבת ייצור, אבל אפשר להקצות אותם בסביבת פיתוח או בדיקה.

עכשיו כל המידע הנדרש כדי ליצור מאגר וספק של זהויות של כוח עבודה נמצא ברשותך:

המסוף

  1. במסוף Cloud de Confiance , נכנסים לדף New workload provider and pool.

    לדף New workload provider and pool

  2. בקטע Create an identity pool, מזינים את הפרטים הבאים:

    • Name: השם של המאגר. השם משמש גם כמזהה המאגר. אי אפשר לשנות את מזהה המאגר בשלב מאוחר יותר.
    • Description: טקסט שמתאר את המטרה של המאגר.
  3. לוחצים על Continue.

  4. מגדירים את הספק באופן הבא:

    OIDC

    • ב-Select a provider, בוחרים את OpenID Connect (OIDC).
    • בקטע שם הספק, מזינים שם לספק. השם משמש גם כמזהה הספק. אי אפשר לשנות את מזהה הספק אחרי שיוצרים את הספק.
    • בשדה Issuer URL, מזינים את כתובת ה-URL של מנפיק ה-IdP. כתובת ה-URL צריכה להתחיל ב-https://
    • אופציונלי: בקטע JWK file (JSON), בוחרים קובץ JWK להעלאה. אם לא מוסיפים את השדה הזה, המערכת של Cloud de Confiance תנסה לאחזר מפתח JWK מהמנפיק.
    • Allowed audiences: הקהל הצפוי של הטוקנים של המזהים.

    SAML

    • בקטע Select a provider, בוחרים באפשרות SAML.
    • בקטע שם הספק, מזינים שם לספק. השם משמש גם כמזהה הספק. אי אפשר לשנות את מזהה הספק אחרי שיוצרים את הספק.
    • בשדה IDP Metadata file (XML), מעלים את מסמך ה-XML של המטא-נתונים של SAML שקיבלתם מה-IdP.
  5. לוחצים על Continue.

  6. בקטע Configure provider attributes, מוסיפים את מיפויי המאפיינים שזיהיתם קודם במדריך הזה.

  7. בקטע Attribute conditions, מזינים את התנאי למאפיין שזיהיתם קודם לכן במדריך הזה. אם אין לכם תנאי למאפיין, משאירים את השדה ריק.

  8. כדי ליצור את מאגר הזהויות של עומסי עבודה וספק, לוחצים על Save.

gcloud

  1. כדי ליצור מאגר זהויות של עומסי עבודה, מריצים את הפקודה הבאה:

    gcloud iam workload-identity-pools create POOL_ID \
        --location="global" \
        --description="DESCRIPTION" \
        --display-name="DISPLAY_NAME"
    

    צריך להחליף את מה שכתוב בשדות הבאים:

    • ‏POOL_ID: המזהה הייחודי של המאגר.
    • DISPLAY_NAME: שם המאגר.
    • DESCRIPTION: תיאור של המאגר שנבחר. התיאור הזה מופיע כשנותנים גישה לזהויות במאגר.
  2. כדי להוסיף ספק של מאגר זהויות של עומסי עבודה:

    OIDC

    כדי להוסיף ספק של מאגר זהויות של עומסי עבודה ב-OIDC, מריצים את הפקודה הבאה:

    gcloud iam workload-identity-pools providers create-oidc WORKLOAD_PROVIDER_ID \
        --location="global" \
        --workload-identity-pool="POOL_ID" \
        --issuer-uri="ISSUER" \
        --discovery-uri="DISCOVERY_URI" \
        --allowed-audiences="AUDIENCE" \
        --attribute-mapping="MAPPINGS" \
        --attribute-condition="CONDITIONS" \
        --jwk-json-path="JWK_JSON_PATH" \
        --actor-providers="ACTOR_PROVIDERS"
    

    מחליפים את מה שכתוב בשדות הבאים:

    • WORKLOAD_PROVIDER_ID: מזהה ייחודי לפי בחירתכם של ספק מאגר הזהויות של עומסי העבודה.
    • POOL_ID: מזהה מאגר הזהויות של עומסי העבודה שיצרתם קודם.
    • ISSUER: URI של מנפיק כפי שמוגדר במטא-נתונים של OIDC.
    • ‫DISCOVERY_URI גרסת טרום-השקה (Preview): כתובת URL אופציונלית של מסמך Discovery בהתאמה אישית לאחזור מטא-נתונים של OIDC, אם ה-IdP לא מארח את נקודת הקצה הידועה של מסמך Discovery של OIDC בכתובת https://<issuer_url>/.well-known/openid-configuration. הסכימה, המארח והיציאה חייבים להתאים ל-ISSUER, והנתיב חייב להתאים לטופולוגיה של כתובת ה-URL של המנפיק (שמכילה את /.well-known/<suffix>).
    • AUDIENCE: הקהל הצפוי של אסימונים מזהים, שאצל ספקים רבים תואם את מזהה הלקוח.
    • MAPPINGS: רשימה מופרדת בפסיקים של מיפויי המאפיינים שיצרת קודם לכן במדריך הזה.
    • CONDITIONS: תנאי למאפיין אפשרי שיצרת מוקדם יותר במדריך הזה. אפשר להסיר את הפרמטר אם אין לך תנאי למאפיין.
    • JWK_JSON_PATH: נתיב אופציונלי למפתחות JWK ב-OIDC שהועלו באופן מקומי. אם לא מוסיפים את הפרמטר הזה, המערכת של Cloud de Confiance תשתמש בכתובת ה-URL של מסמך Discovery (או DISCOVERY_URI או הנתיב /.well-known/openid-configuration של ה-IdP) כדי למצוא את מפתחות ה-JWK שמכילים את המפתחות הציבוריים.
    • ACTOR_PROVIDERS גרסת טרום-השקה (Preview): רשימה אופציונלית מופרדת בפסיקים של שמות המשאבים המלאים של ספקי מאגר הזהויות של עומסי העבודה באותו מאגר, שמורשים להנפיק אסימוני שחקן לספק הזה (לדוגמה, projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/ACTOR_PROVIDER_ID). מזהה מאגר הפרויקטים בשם המשאב חייב להתאים לפורמט שמשמש את ספק הנושא (שניהם משתמשים במספר הפרויקט או ששניהם משתמשים במזהה הפרויקט). אפשר לציין עד שלושה ספקי שחקנים. מידע נוסף זמין במאמר הגדרת הקצאת זהויות ואסימוני שחקנים.

    SAML

    כדי להוסיף ספק של מאגר זהויות של עומסי עבודה ב-SAML, מריצים את הפקודה הבאה:

    gcloud iam workload-identity-pools providers create-saml WORKLOAD_PROVIDER_ID \
        --location="global" \
        --workload-identity-pool="POOL_ID" \
        --idp-metadata-path="IDP_METADATA_PATH" \
        --attribute-mapping="MAPPINGS" \
        --attribute-condition="CONDITIONS"
    

    צריך להחליף את מה שכתוב בשדות הבאים:

    • ‫POOL_ID: מזהה המאגר
    • IDP_METADATA_PATH: הנתיב המקומי למסמך המטא-נתונים של ה-IdP ב-SAML
    • MAPPINGS: רשימה של מיפויי מאפייניםשמופרדים בפסיקים שיצרת קודם לכן במדריך הזה
    • CONDITIONS: אופציונלי: התנאי למאפיין שיצרת קודם לכן במדריך הזה

    התחילית gcp- שמורה ואי אפשר להשתמש בה במזהה של מאגר זהויות של כוח עבודה או במזהה של ספק של מאגר זהויות של כוח עבודה.

    אופציונלי: אישור טענות נכונות (assertions) של SAML מוצפן מ-IdP

    כדי לאפשר ל-IdP ב-SAML 2.0 ליצור טענות נכוֹנוּת (assertions) של SAML מוצפן שאיחוד שירותי אימות הזהות של עומסי עבודה יכול לאשר, צריך לבצע את הפעולות הבאות:

    • באיחוד שירותי אימות הזהות של עומסי עבודה, מבצעים את הפעולות הבאות:
      • יוצרים זוג מפתחות אסימטריים לספק מאגר הזהויות של עומסי העבודה.
      • מורידים קובץ אישור שמכיל את המפתח הציבורי.
      • מגדירים את ספק הזהויות ב-SAML כך שישתמש במפתח הציבורי להצפנה של טענות הנכוֹנוּת שהוא מנפיק ב-SAML.
    • מבצעים את הפעולות הבאות בספק הזהויות:
      • מפעילים הצפנה של טענות נכונות (assertions), שנקראת גם הצפנת אסימונים.
      • מעלים את המפתח הציבורי שיצרתם באיחוד שירותי אימות הזהות של עומסי עבודה.
      • מוודאים שה-IdP מייצר טענות נכונות (assertions) של SAML מוצפן.
    שימו לב שגם אם תגדירו מפתחות של ספק הצפנת SAML, איחוד שירותי אימות הזהות של עומסי עבודה עדיין יוכל לעבד טענת נכונות (assertions) של טקסט ללא הצפנה.

    יצירת מפתחות הצפנה של טענות נכונות (assertions) של SAML לאיחוד שירותי אימות הזהות של עומסי עבודה

    הקטע מסביר איך ליצור זוג מפתחות אסימטריים שמאפשר לאיחוד שירותי אימות הזהות של עומסי עבודה לקבל טענות נכונות (assertions) מוצפנות של SAML.

    ב- Cloud de Confiance by S3NS , המערכת משתמשת במפתח פרטי כדי לפענח את טענות הנכוֹנוּת (assertion) ב-SAML שה-IdP מנפיק. כדי ליצור זוג מפתחות אסימטריים להצפנה ב-SAML, מריצים את הפקודה הבאה. למידע נוסף, ראו אלגוריתמים נתמכים להצפנה ב-SAML.

    gcloud iam workload-identity-pools providers keys create KEY_ID \
        --workload-identity-pool WORKLOAD_POOL_ID \
        --provider WORKLOAD_PROVIDER_ID \
        --location global \
        --use encryption \
        --spec KEY_SPECIFICATION

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫KEY_ID: שם המפתח שבחרתם
    • ‫WORKLOAD_POOL_ID: מזהה המאגר
    • ‫WORKLOAD_PROVIDER_ID: המזהה של ספק מאגר הזהויות של כוח העבודה
    • KEY_SPECIFICATION: מפרט המפתחות, שיכול להיות אחד מאלה: rsa-2048, ‏rsa-3072 או rsa-4096.

    אחרי שיוצרים את זוג המפתחות, מריצים את הפקודה הבאה כדי להוריד את המפתח הציבורי לקובץ האישור. רק לאיחוד שירותי אימות הזהות של עומסי העבודה יש גישה למפתח הפרטי.

    gcloud iam workload-identity-pools providers keys describe KEY_ID \
        --workload-identity-pool WORKLOAD_POOL_ID \
        --provider WORKLOAD_PROVIDER_ID \
        --location global \
        --format "value(keyData.key)" \
        > CERTIFICATE_PATH

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫KEY_ID: שם המפתח
    • ‫WORKLOAD_POOL_ID: מזהה המאגר
    • ‫WORKLOAD_PROVIDER_ID: המזהה של ספק מאגר הזהויות של כוח העבודה
    • CERTIFICATE_PATH: הנתיב שבו האישור ייכתב. לדוגמה: saml-certificate.cer או saml-certificate.pem

    הגדרת ה-IdP שתואם ל-SAML 2.0 כדי להנפיק טענות נכונות (assertions) של SAML מוצפן

    צריך להגדיר את ה-IdP ב-SAML כך שישתמש באישור הציבורי שהורדת בשלב האחרון ויצפין את טענות הנכונות (assertions) של ה-SAML שהוא מנפיק. לקבלת הוראות ספציפיות, אפשר לפנות לצוות ה-IdP שלך.

    אחרי שהגדרת את ה-IdP להצפין טענות נכונות (assertions) של SAML, מומלץ לבדוק שטענות הנכונות שנוצרות הן אכן מוצפנות. גם כשמוגדרת הצפנת טענות נכונות (assertions) של SAML, איחוד שירותי אימות הזהות של עומסי עבודה עדיין יכול לעבד טענות נכונות (assertions) בטקסט ללא הצפנה.

    מחיקת מפתחות ההצפנה של איחוד שירותי אימות הזהות של עומסי עבודה

    כדי למחוק מפתחות הצפנה של SAML, צריך להריץ את הפקודה הבאה:
      gcloud iam workload-identity-pools providers keys delete KEY_ID \
          --workload-identity-pool WORKLOAD_POOL_ID \
          --provider WORKLOAD_PROVIDER_ID \
          --location global

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫KEY_ID: שם המפתח
    • ‫WORKLOAD_POOL_ID: מזהה המאגר
    • ‫WORKLOAD_PROVIDER_ID: המזהה של ספק מאגר הזהויות של כוח העבודה

    אלגוריתמי הצפנה נתמכים של SAML

    איחוד שירותי אימות הזהות של עומסי עבודה תומך באלגוריתמים הבאים לתעבורת מפתחות:

    באיחוד שירותי אימות הזהות של עומסי עבודה אפשר להשתמש באלגוריתמים הבאים להצפנת בלוקים:

הגדרת אכיפה של בקרת גישה מבוססת-הקשר לאיחוד שירותי אימות הזהות של עומסי עבודה

אכיפת המדיניות של בקרת גישה מבוססת-הקשר חלה רק כשמשתמשים באסימונים שקשורים לאישור. כדי לחזק את אבטחת המשאבים מפני התקפות של גניבת טוקנים והפעלה חוזרת, אתם יכולים להפעיל בקרת גישה מבוססת-הקשר, שאוכפת אימות mTLS וקישור אישורים לבקשות גישה. כשמגדירים כללי מדיניות של בקרת גישה מבוססת-הקשר לטוקנים שמקושרים לאישורים, Cloud de Confiance בודק את הקשר ההעברה ואת אישור הלקוח של הבקשות הנכנסות כדי לוודא שטוקני הגישה שמוצגים על ידי עומס העבודה מקושרים באופן קריפטוגרפי לסשן מהימן של אישור לקוח mTLS. אכיפת המדיניות של בקרת גישה מבוססת-הקשר לא חלה על טוקנים רגילים לא מאובטחים.

הגדרת הקצאת זהויות ואסימוני שחקנים

בתרחיש של הקצאת זהות, כפי שמוגדר ב-RFC 8693: OAuth 2.0 Token Exchange, גורם פועל (actor) מבצע פעולות בשם זהות של נושא.

כדי להגדיר ולאשר הקצאת הרשאות לזהות, צריך לעמוד בדרישות הבאות:

  1. הרשאה של ספק השחקן: בהגדרות של ספקי השחקנים (--actor-providers) של ספק הנושא, צריך לכלול את שם המשאב המלא של הספק שמנפיק את אסימון השחקן. ספק השחקנים צריך לעמוד בקריטריונים הבאים:

    • חייב להיות באותו מאגר זהויות של עומסי עבודה כמו הספק של הנושא.
    • מזהה מאגר הפרויקטים בשם המשאב חייב להתאים לפורמט שבו משתמש ספק הנושא (לדוגמה, אם אתם משתמשים ב-Google Cloud CLI כדי ליצור את ספק הנושא, הוא חייב להיות מזהה הפרויקט האלפאנומרי).
    • אפשר לאשר עד 3 ספקי משתמשים לכל ספק.
  2. הצהרת may_act בטוקן של הנושא: הטוקן של מזהה הנושא חייב לכלול הצהרת may_act:

    "may_act": {
      "sub": "ACTOR_SUBJECT",
      "iss": "ACTOR_ISSUER"
    }
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫ACTOR_SUBJECT: מזהה הנושא של המשתמש המורשה (חייב להיות זהה לטענת הנכוֹנוּת (claim) של sub באסימון המשתמש).
    • ‫ACTOR_ISSUER: אופציונלי. מזהה ה-URI של המנפיק של ספק הזהויות של השחקן (חייב להתאים לטענת הנכוֹנוּת (claim) של iss באסימון השחקן). אם משמיטים את השדה, המנפיק של האקטור צריך להיות זהה למנפיק של אסימון הנושא.
  3. פרמטרים של החלפת אסימונים: כשמבצעים החלפת אסימונים באמצעות איחוד שירותי אימות הזהות של עומסי עבודה, הלקוח מספק גם את subject_token וגם את actor_token, יחד עם סוגי האסימונים המתאימים (subject_token_type ו-actor_token_type):

    • ‫subject_token: אסימון האבטחה שמייצג את הזהות שבשמה נשלחה הבקשה.
    • ‫subject_token_type: מזהה שמציין את סוג אסימון הנושא (למשל urn:ietf:params:oauth:token-type:jwt או urn:ietf:params:oauth:token-type:id_token).
    • ‫actor_token: אסימון האבטחה שמייצג את הזהות של הגורם הפועל. האסימון של הגורם המבצע צריך לעמוד בדרישות הבאות:
      • הצהרת קהל (aud): חייבת להכיל את ה-URI המלא של המשאב של ספק השחקנים הספציפי שמנפיק את ה-actor_token: //iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/ACTOR_PROVIDER_ID. התביעה aud חייבת להכיל רק URI אחד של משאב ספק של מאגר זהויות של עומסי עבודה. אם יש כמה ספקי שחקנים באותו מאגר זהויות של עומסי עבודה, צריך לכלול רק את ה-URI של המשאב של הספק שמנפיק את ה-actor_token.
      • ספק מורשה של משתמשים: ספק המשתמשים שצוין בטענת הנכוֹנוּת (claim) של aud חייב להיות באותו מאגר זהויות של עומסי עבודה כמו ספק הנושאים, ולהופיע בהגדרות של ספקי המשתמשים (--actor-providers) של ספק הנושאים.
      • התאמה בין הטענות sub ו-iss: הטענה sub והטענה האופציונלית iss של אסימון השחקן צריכות להתאים לערכים של sub ו-iss שהוצהרו בטענה may_act של אסימון הנושא.
    • actor_token_type: מזהה שמציין את סוג אסימון המשתמש (urn:ietf:params:oauth:token-type:jwt או urn:ietf:params:oauth:token-type:id_token). הפרמטר הזה נדרש כשמציינים את actor_token.
    • אסימונים שקשורים לאישור עם הענקת גישה: אם ה-subject_token קשור לאישור (מכיל טענת אישור cnf), גם ה-actor_token צריך להיות קשור לאישור (להכיל טענת cnf). כשמבצעים את החלפת האסימון דרך mTLS (sts.mtls.googleapis.com), אישור הלקוח שמוצג בלחיצת היד של mTLS חייב להתאים לטביעת האצבע של האישור של actor_token.

אימות של עומס עבודה

צריך לבצע את השלבים האלה פעם אחת לכל עומס עבודה.

מתן הרשאה לעומס העבודה החיצוני לגשת למשאבי Cloud de Confiance

כדי לתת לעומס העבודה גישה למשאבים של Cloud de Confiance , מומלץ לתת לחשבון הראשי גישה ישירה למשאבים. במקרה הזה, חשבון המשתמש הוא המשתמש המאומת. למוצרים מסוימים של Cloud de Confiance יש מגבלות על Google Cloud API. אם עומס העבודה שולח קריאה לנקודת קצה ל-API שיש לה מגבלה, אתם יכולים להשתמש במקום זאת בהתחזות לחשבון שירות. במקרה הזה, חשבון המשתמש הואCloud de Confiance חשבון השירות, שמשמש בתור הזהות. אתם נותנים לחשבון השירות גישה למשאב.

גישה ישירה למשאבים

אתם יכולים לתת גישה לזהות מאוחדת ישירות במשאבים באמצעות מסוף Cloud de Confiance או ה-CLI של gcloud.

המסוף

כדי להקצות תפקידי IAM ישירות למשאב באמצעות מסוף Cloud de Confiance , צריך להיכנס לדף של המשאב ולהקצות את התפקיד. בדוגמה הבאה מוסבר איך לעבור לדף Cloud Storage ולהקצות את התפקיד "צפייה באובייקט אחסון" (roles/storage.objectViewer) לזהות מאוחדת ישירות בקטגוריה של Cloud Storage.

  1. במסוף Cloud de Confiance , נכנסים לדף Buckets של Cloud Storage.

    כניסה לדף Buckets

  2. ברשימת הקטגוריות, לוחצים על שם הקטגוריה שבה רוצים להקצות את התפקיד.

  3. לוחצים על הכרטיסייה Permissions בחלק העליון של הדף.

  4. לוחצים על הלחצן Grant access.

    מופיעה תיבת הדו-שיח Add principals.

  5. בשדה New principals, מזינים את הזהות (או הזהויות) שצריכה גישה לקטגוריה.

    לפי נושא

    principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫PROJECT_NUMBER: מספר הפרויקט
    • ‫POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה
    • ‫SUBJECT: הנושא הספציפי שמופה מה-IdP, לדוגמה: administrator@example.com

    לפי קבוצה

    principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫PROJECT_NUMBER: מספר הפרויקט
    • ‫WORKLOAD_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה
    • ‫GROUP: הקבוצה שמופתה מה-IdP, לדוגמה: administrator-group@example.com

    לפי תכונה

    principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫PROJECT_NUMBER: מספר הפרויקט
    • ‫WORKLOAD_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה
    • ‫ATTRIBUTE_NAME: אחד מהמאפיינים שמופו מה-IdP
    • ‫ATTRIBUTE_VALUE: הערך של המאפיין
  6. בוחרים תפקיד (או תפקידים) בתפריט הנפתח Select a rol. התפקידים שבחרתם יופיעו בחלונית עם תיאור קצר של ההרשאות שהם מעניקים.

  7. לוחצים על Save.

gcloud

כדי להקצות תפקידי IAM למשאב בפרויקט באמצעות ה-CLI של gcloud:

  1. משיגים את מספר הפרויקט שבו מוגדר המשאב.

    gcloud projects describe $(gcloud config get-value core/project) --format=value\(projectNumber\)
    
  2. נותנים גישה למשאב.

    כדי להשתמש ב-CLI של gcloud כדי להקצות את התפקיד Storage Object Viewer ‏(roles/storage.objectViewer) לזהויות חיצוניות שעומדות בקריטריונים מסוימים, מריצים את הפקודה הבאה:

    לפי נושא

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"

    לפי קבוצה

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"

    לפי תכונה

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫BUCKET_ID: הקטגוריה שבה רוצים לתת גישה
    • ‫PROJECT_NUMBER: מספר הפרויקט שמכיל את מאגר הזהויות של עומסי העבודה.
    • ‫POOL_ID: מזהה מאגר הזהויות של עומסי העבודה
    • ‫SUBJECT: הערך הצפוי של המאפיין שמיפיתם ל-google.subject
    • ‫GROUP: הערך הצפוי של המאפיין שמיפיתם ל-google.groups
    • ‫ATTRIBUTE_NAME: השם של המאפיין בהתאמה אישית במיפוי המאפיינים שלכם
    • ‫ATTRIBUTE_VALUE: הערך של המאפיין המותאם אישית במיפוי המאפיינים שלכם

    אפשר להקצות תפקידים בכל משאב של Cloud de Confiance שתומך במדיניות הרשאות של IAM.

התחזות לחשבון שירות

  1. כדי ליצור חשבון שירות לעומס העבודה החיצוני:

    1. מפעילים את ממשקי ה-API של IAM,‏ Security Token Service ו-Service Account Credentials, אם הם עדיין לא מופעלים.

      התפקידים שנדרשים כדי להפעיל ממשקי API

      כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

      הפעלת ממשקי ה-API

    2. יצירת חשבון שירות שמייצג את עומס העבודה. מומלץ להשתמש בחשבון שירות ייעודי לכל עומס עבודה. חשבון השירות לא חייב להיות באותו פרויקט כמו מאגר הזהויות של עומסי העבודה, אבל צריך להפנות לפרויקט שמכיל את חשבון השירות.

    3. הענקת גישה לחשבון השירות למשאבים שאליהם רוצים שלזהויות חיצוניות תהיה גישה.

  2. כדי לאפשר לזהות המאוחדת להתחזות לחשבון השירות:

המסוף

כדי להקצות תפקידי IAM לזהות מאוחדת עם חשבון שירות באמצעות מסוף Cloud de Confiance :

חשבון שירות באותו פרויקט

  1. כדי לתת גישה באמצעות התחזות לחשבון שירות באותו פרויקט:

    1. נכנסים לדף Workload Identity Pools.

      כניסה לדף Workload Identity Pools

    2. לוחצים על מתן גישה.

    3. בתיבת הדו-שיח Grant access to service account, בוחרים באפשרות Grant access using Service Account impersonation.

    4. ברשימה Service accounts, בוחרים את חשבון השירות שאליו הזהויות החיצוניות יתחזו, ומבצעים את הפעולות הבאות:

    5. כדי לבחור אילו זהויות מהמאגר יכולות להתחזות לחשבון השירות, מבצעים את אחת מהפעולות הבאות:

      • כדי לאפשר רק לזהויות ספציפיות ממאגר הזהויות של עומסי העבודה להתחזות לחשבון השירות, בוחרים באפשרות Only identities matching the filter.

      • ברשימה שם מאפיין, בוחרים את המאפיין שרוצים לסנן לפיו.

      • בשדה ערך מאפיין, מזינים את הערך הצפוי של המאפיין. לדוגמה, אם משתמשים במיפוי מאפיינים google.subject=assertion.sub, מגדירים את שם מאפיין ל-subject ואת ערך מאפיין לערך של ההצהרה sub באסימונים שהונפקו על ידי ספק הזהויות החיצוני.

    6. כדי לשמור את ההגדרות האישיות, לוחצים על Save ואז על Dismiss.

חשבון שירות בפרויקט אחר

  1. כדי לתת גישה באמצעות התחזות לחשבון שירות בפרויקט אחר, מבצעים את הפעולות הבאות:

    1. נכנסים לדף Service Accounts.

      לדף Service accounts

    2. בוחרים את חשבון השירות שרוצים להתחזות אליו.

    3. לוחצים על ניהול הגישה.

    4. לוחצים על Add principal.

    5. בשדה New principal, מזינים את אחד ממזהי חשבונות המשתמשים של הזהויות במאגר שיתחזו לחשבון השירות.

      לפי נושא

      principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT
      

      מחליפים את מה שכתוב בשדות הבאים:

      • ‫PROJECT_NUMBER: מספר הפרויקט
      • ‫POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה
      • ‫SUBJECT: הנושא הספציפי שמופה מה-IdP, לדוגמה: administrator@example.com

      לפי קבוצה

      principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP
      

      מחליפים את מה שכתוב בשדות הבאים:

      • ‫PROJECT_NUMBER: מספר הפרויקט
      • ‫WORKLOAD_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה
      • ‫GROUP: הקבוצה שמופתה מה-IdP, לדוגמה: administrator-group@example.com

      לפי תכונה

      principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
      

      מחליפים את מה שכתוב בשדות הבאים:

      • ‫PROJECT_NUMBER: מספר הפרויקט
      • ‫WORKLOAD_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה
      • ‫ATTRIBUTE_NAME: אחד מהמאפיינים שמופו מה-IdP
      • ‫ATTRIBUTE_VALUE: הערך של המאפיין

      לפי מאגר

      principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/*
      

      מחליפים את מה שכתוב בשדות הבאים:

      • ‫PROJECT_NUMBER: מספר הפרויקט
      • ‫WORKLOAD_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה
    6. ברשימת התפקידים Select a role, בוחרים את התפקיד Workload Identity User ‏ (roles/iam.workloadIdentityUser).

    7. כדי לשמור את ההגדרות האישיות, לוחצים על Save.

gcloud

כדי להקצות את התפקיד "משתמש ב-Workload Identity" ‏ (roles/iam.workloadIdentityUser) לחשבון משתמש מאוחד או לקבוצת חשבונות משתמשים מאוחדים, מריצים את הפקודה הבאה: מידע נוסף על מזהי חשבונות משתמשים של איחוד שירותי אימות הזהות של עומסי עבודה מופיע במאמר סוגי חשבונות משתמשים.

לפי נושא

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
    --role=roles/iam.workloadIdentityUser \
    --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"

לפי קבוצה

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
    --role=roles/iam.workloadIdentityUser \
    --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"

לפי תכונה

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
    --role=roles/iam.workloadIdentityUser \
    --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"

מחליפים את מה שכתוב בשדות הבאים:

  • ‫SERVICE_ACCOUNT_EMAIL: כתובת האימייל של חשבון השירות
  • ‫PROJECT_NUMBER: מספר הפרויקט שמכיל את מאגר הזהויות של עומסי העבודה.
  • ‫POOL_ID: מזהה מאגר הזהויות של עומסי העבודה
  • ‫SUBJECT: הערך הצפוי של המאפיין שמיפיתם ל-google.subject
  • ‫GROUP: הערך הצפוי של המאפיין שמיפיתם ל-google.groups
  • ‫ATTRIBUTE_NAME: השם של המאפיין בהתאמה אישית במיפוי המאפיינים שלכם
  • ‫ATTRIBUTE_VALUE: הערך של המאפיין המותאם אישית במיפוי המאפיינים שלכם

הורדת הגדרות אישיות של פרטי הכניסה

כאן מוסבר איך להוריד את קובץ הגדרת פרטי הכניסה באמצעות מסוףCloud de Confiance .

כדי לאפשר לעומס העבודה לגשת לספריות הלקוח, קודם צריך להוריד ולהגדיר את Application Default Credentials ‏ (ADC):

  1. במסוף Cloud de Confiance , נכנסים לדף מאגרי זהויות של עומסי עבודה.

    כניסה לדף Workload Identity Pools
  2. בטבלה, בוחרים את המאגר כדי לעבור לדף הפרטים שלו.

  3. לוחצים על הענקת גישה.

  4. בוחרים באפשרות Grant access using federated identities (Recommended).

  5. כדי להוריד את Application Default Credential ‏ (ADC) כדי שעומס העבודה יוכל לגשת לספריות הלקוח:

    1. לוחצים על Download config.

    2. בתיבת הדו-שיח Configure your application, מבצעים את הפעולות הבאות:

      1. ברשימה הנפתחת Provider, בוחרים את הספק.

      2. בשדה OIDC token path או SAML assertion path, מזינים את הנתיב שבו נמצאים האסימון או טענת הנכוֹנוּת.

      3. ברשימה הנפתחת Format type, בוחרים את הפורמט.

    3. לוחצים על Download configuration ורושמים את הנתיב שבו שמרתם את הקובץ.

הגדרות אישיות של פרטי הכניסה

ספריות הלקוח ב-Cloud, ‏ה-CLI של gcloud ו-Terraform יכולים להשיג פרטי כניסה חיצוניים באופן אוטומטי, ולהשתמש בהם כדי לגשת אל Cloud de Confiance. כדי לאפשר לספריות ולכלים להשלים את התהליך הזה, צריך לספק קובץ תצורה של פרטי הכניסה. הקובץ יגדיר את הפרטים הבאים:

  • המקור שממנו משיגים פרטי כניסה חיצוניים
  • מאגר וספק הזהויות של עומסי העבודה שבהם צריך להשתמש
  • חשבון השירות שצריך להתחזות אליו, אם משתמשים בהתחזות לחשבון שירות

ספריות הלקוח ב-Cloud מקבלות פרטי כניסה חיצוניים מקובץ מקומי, כתובת URL מסוג HTTP, על ידי הרצה של קובץ הפעלה מקומי:

  • פרטי כניסה שהתקבלו מקובץ הפעלה: הספריות יוצרות קובץ הפעלה בכל פעם שהן צריכות פרטי כניסה חדשים. אם קובץ ההפעלה מצליח לקבל פרטי כניסה חיצוניים חדשים, צריך להופיע ב-STDOUT מסמך JSON שנראה כך:

    OIDC

    {
      "version": 1,
      "success": true,
      "token_type": "urn:ietf:params:oauth:token-type:id_token",
      "id_token": "HEADER.PAYLOAD.SIGNATURE",
      "expiration_time": 1620499962
    }
    

    אם קובץ ההפעלה לא מצליח להשיג פרטי כניסה חדשים, צריך להופיע ב-STDOUT מסמך JSON שנראה כך:

    {
      "version": 1,
      "success": false,
      "code": "401",
      "message": "Caller not authorized."
    }
    

    מסמכי ה-JSON כוללים את השדות הבאים:

    • version: הגרסה של פלט ה-JSON. יש תמיכה רק בגרסה 1.
    • success: הסטטוס של התגובה.

      כשהערך הוא true, התגובה צריכה להכיל את השדות id_token ו-token_type. קובץ ההפעלה חייב לצאת באמצעות קוד יציאה 0.

      כשהערך הוא false, התגובה חייבת להכיל את השדות code ו-message ולצאת באמצעות ערך שהוא לא אפס.

    • token_type: סוג האסימון של פרטי הכניסה החיצוניים. הערכים שנתמכים הם:

      • urn:ietf:params:oauth:token-type:id_token
      • urn:ietf:params:oauth:token-type:jwt
    • id_token: פרטי הכניסה החיצוניים.

    • expiration_time: זמן התפוגה של אסימון OIDC בשניות (ראשית זמן יוניקס [Unix epoch]) השדה הזה נדרש רק אם צוין קובץ פלט בתצורת פרטי הכניסה.

    • code: מחרוזת קוד השגיאה.

    • message: הודעת השגיאה.

    SAML

    {
      "version": 1,
      "success": true,
      "token_type": "urn:ietf:params:oauth:token-type:saml2",
      "saml_response": "...",
      "expiration_time": 1620499962
    }
    

    אם קובץ ההפעלה לא מצליח להשיג פרטי כניסה חדשים, צריך להופיע ב-STDOUT מסמך JSON שנראה כך:

    {
      "version": 1,
      "success": false,
      "code": "401",
      "message": "Caller not authorized."
    }
    

    מסמכי ה-JSON כוללים את השדות הבאים:

    • version: הגרסה של פלט ה-JSON. יש תמיכה רק בגרסה 1.
    • success: הסטטוס של התגובה.

      כשהערך הוא true, התגובה צריכה להכיל את השדות id_token ו-token_type. קובץ ההפעלה חייב לצאת באמצעות קוד יציאה 0.

      כשהערך הוא false, התגובה חייבת להכיל את השדות code ו-message ולצאת באמצעות ערך שהוא לא אפס.

    • token_type: סוג האסימון של פרטי הכניסה החיצוניים. חייב להיות urn:ietf:params:oauth:token-type:saml2.

    • saml_response: תגובת SAML אוט ענת נכוֹנוּת (assertion) של SAML בקידוד base64.

    • expiration_time: זמן התפוגה של טענת הנכוֹנוּת (assertion) בשניות (ראשית זמן יוניקס [Unix epoch]). השדה הזה נדרש רק אם צוין קובץ פלט בתצורת פרטי הכניסה.

    • code: מחרוזת קוד השגיאה.

    • message: הודעת השגיאה.

    כשמפעילים את קובץ ההפעלה, ספריות הלקוח מגדירות את משתני הסביבה הבאים:

    • GOOGLE_EXTERNAL_ACCOUNT_AUDIENCE: הקהל מתצורת פרטי הכניסה. מוצג תמיד.
    • GOOGLE_EXTERNAL_ACCOUNT_TOKEN_TYPE: הסוג של אסימון הנושא הצפוי. מוצג תמיד.
    • GOOGLE_EXTERNAL_ACCOUNT_IMPERSONATED_EMAIL: כתובת האימייל של חשבון השירות. מוצג רק כשמשתמשים בהתחזות לחשבון שירות.
    • GOOGLE_EXTERNAL_ACCOUNT_OUTPUT_FILE: המיקום של קובץ הפלט בתצורת פרטי הכניסה. מוצג רק כשהוא מצוין בתצורה של פרטי הכניסה.

    כדי להשתמש בפרטי הכניסה שהתקבלו מקובץ הפעלה, צריך להגדיר את משתנה הסביבה GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES לערך 1.

  • פרטי כניסה שהתקבלו מקובץ: הספריות קוראות את פרטי הכניסה החיצוניים מקובץ מקומי של טקסט פשוט או של JSON. לדוגמה:

    JSON

    {
      "mytoken": "ey...
    }
    

    טקסט

    ey...
    

    פרטי הכניסה החיצוניים יכולים להיות:

    • אסימון OIDC
    • תגובת SAML
    • טענת נכוֹנוּת (assertion) של SAML בקידוד Base64

    צריך לעדכן מדי פעם את הקובץ כך שתמיד יהיו בו פרטי כניסה תקפים. לדוגמה, אם אסימון ה-OIDC או טענת נכוֹנוּת (assertion) של ה-SAML בתוקף לשעה אחת, צריך לרענן את הקובץ לפחות פעם בשעה.

  • פרטי כניסה שהתקבלו מכתובות URL: הספריות שולחות בקשת GET לנקודת קצה (endpoint) של HTTP בכל פעם שנדרשים פרטי כניסה חדשים. נקודת הקצה חייבת להחזיר תגובה של טקסט פשוט או של JSON שתואמת לפורמט של פרטי הכניסה שהתקבלו מקובץ.

כדי ליצור קובץ תצורה של פרטי הכניסה, צריך לבצע את הפעולות הבאות:

פרטי כניסה שהתקבלו מקובץ הפעלה

gcloud iam workload-identity-pools create-cred-config \
    projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID \
    --service-account=SERVICE_ACCOUNT_EMAIL \
    --service-account-token-lifetime-seconds=SERVICE_ACCOUNT_TOKEN_LIFETIME \
    --sts-location=REGION \
    --output-file=FILEPATH.json \
    --executable-command=EXECUTABLE_COMMAND \
    --executable-timeout-millis=EXECUTABLE_TIMEOUT \
    --executable-output-file=EXECUTABLE_OUTPUT_FILE

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_NUMBER: מספר הפרויקט שמכיל את מאגר הזהויות של עומסי העבודה.
  • ‫POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה.
  • ‫WORKLOAD_PROVIDER_ID: מזהה הספק של מאגר הזהויות של עומסי העבודה.
  • ‫SERVICE_ACCOUNT_EMAIL: אם אתם משתמשים בהתחזות לחשבון שירות, החליפו את הערך בכתובת האימייל של חשבון השירות. אם אתם לא משתמשים בהתחזות לחשבון שירות, אל תשתמשו בדגל הזה.
  • ‫SERVICE_ACCOUNT_TOKEN_LIFETIME: אם אתם משתמשים בהתחזות לחשבון שירות, החליפו את הערך הזה במשך החיים של אסימון הגישה לחשבון השירות בשניות. אם לא ציינתם ערך, הגדרת ברירת המחדל היא שעה אחת. אם אתם לא משתמשים בהתחזות לחשבון שירות, אל תשתמשו בדגל הזה. כדי לציין משך חיים ארוך יותר משעה אחת, צריך להגדיר את אילוץ המדיניות הארגונית ‏constraints/iam.allowServiceAccountCredentialLifetimeExtension.
  • ‫REGION: אופציונלי. מציינים את האזור של נקודות הקצה האזוריות של Security Token Service, אם הן זמינות.
  • ‫FILEPATH: הקובץ שבו שומרים את התצורה.
  • EXECUTABLE_COMMAND: הפקודה המלאה, כולל ארגומנטים, שמריצים כדי לאחזר את האסימון המזהה של OIDC, לדוגמה: --executable-command="/path/to/command --foo=bar".
  • EXECUTABLE_TIMEOUT: משך הזמן האופציונלי באלפיות השנייה כדי להמתין להרצה של קובץ ההפעלה (ברירת המחדל היא 30 שניות).
  • EXECUTABLE_OUTPUT_FILE: נתיב שמפנה לפרטי הכניסה 3PI שקובץ ההפעלה יצר. כדאי להיעזר בזה אם רוצים לשמור במטמון את פרטי הכניסה. כשמציינים את הנתיב הזה, ספריות Auth (אימות) יבדקו קודם אם הוא קיים לפני שיריצו את קובץ ההפעלה.

פרטי כניסה שהתקבלו מקובץ

gcloud iam workload-identity-pools create-cred-config \
    projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID \
    --service-account=SERVICE_ACCOUNT_EMAIL \
    --service-account-token-lifetime-seconds=SERVICE_ACCOUNT_TOKEN_LIFETIME \
    --sts-location=REGION \
    --output-file=FILEPATH.json \
    --credential-source-file=TOKEN_FILEPATH \
    --credential-source-type=SOURCE_TYPE \
    --credential-source-field-name=FIELD_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_NUMBER: מספר הפרויקט שמכיל את מאגר הזהויות של עומסי העבודה.
  • ‫POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה.
  • ‫WORKLOAD_PROVIDER_ID: מזהה הספק של מאגר הזהויות של עומסי העבודה.
  • ‫SERVICE_ACCOUNT_EMAIL: אם אתם משתמשים בהתחזות לחשבון שירות, החליפו את הערך בכתובת האימייל של חשבון השירות. אם אתם לא משתמשים בהתחזות לחשבון שירות, אל תשתמשו בדגל הזה.
  • ‫SERVICE_ACCOUNT_TOKEN_LIFETIME: אם אתם משתמשים בהתחזות לחשבון שירות, החליפו את הערך הזה במשך החיים של אסימון הגישה לחשבון השירות בשניות. אם לא ציינתם ערך, הגדרת ברירת המחדל היא שעה אחת. אם אתם לא משתמשים בהתחזות לחשבון שירות, אל תשתמשו בדגל הזה. כדי לציין משך חיים ארוך יותר משעה אחת, צריך להגדיר את אילוץ המדיניות הארגונית ‏constraints/iam.allowServiceAccountCredentialLifetimeExtension.
  • ‫REGION: אופציונלי. מציינים את האזור של נקודות הקצה האזוריות של Security Token Service, אם הן זמינות.
  • ‫FILEPATH: הקובץ שבו שומרים את ההגדרות האישיות.
  • ‫TOKEN_FILEPATH: הנתיב שבו שמורים טוקנים של מזהה של OIDC.
  • ‫SOURCE_TYPE: פורמט הקובץ של אסימון מזהה של OIDC, שמוגדר ל-text (ברירת המחדל) או ל-json.
  • ‫FIELD_NAME: השדה בקובץ הטקסט שמכיל את האסימון (אם SOURCE_TYPE הוא json).

פרטי כניסה שהתקבלו מכתובת URL

gcloud iam workload-identity-pools create-cred-config \
    projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID \
    --service-account=SERVICE_ACCOUNT_EMAIL \
    --service-account-token-lifetime-seconds=SERVICE_ACCOUNT_TOKEN_LIFETIME \
    --sts-location=REGION \
    --output-file=FILEPATH.json \
    --credential-source-url="TOKEN_URL" \
    --credential-source-headers="KEY_1=VALUE_1,KEY_2=VALUE_2" \
    --credential-source-type=SOURCE_TYPE \
    --credential-source-field-name=FIELD_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_NUMBER: מספר הפרויקט שמכיל את מאגר הזהויות של עומסי העבודה.
  • ‫POOL_ID: מזהה מאגר הזהויות של עומסי העבודה.
  • ‫WORKLOAD_PROVIDER_ID: מזהה הספק של מאגר הזהויות של עומסי העבודה
  • ‫SERVICE_ACCOUNT_EMAIL: אם אתם משתמשים בהתחזות לחשבון שירות, החליפו את הערך בכתובת האימייל של חשבון השירות. אם אתם לא משתמשים בהתחזות לחשבון שירות, אל תשתמשו בדגל הזה.
  • ‫SERVICE_ACCOUNT_TOKEN_LIFETIME: אם אתם משתמשים בהתחזות לחשבון שירות, החליפו את הערך הזה במשך החיים של אסימון הגישה לחשבון השירות בשניות. אם לא ציינתם ערך, הגדרת ברירת המחדל היא שעה אחת. אם אתם לא משתמשים בהתחזות לחשבון שירות, אל תשתמשו בדגל הזה. כדי לציין משך חיים ארוך יותר משעה אחת, צריך להגדיר את אילוץ המדיניות הארגונית ‏constraints/iam.allowServiceAccountCredentialLifetimeExtension.
  • ‫REGION: אופציונלי. מציינים את האזור של נקודות הקצה האזוריות של Security Token Service, אם הן זמינות.
  • ‫FILEPATH: הקובץ שבו שומרים את התצורה.
  • TOKEN_URL: כתובת URL שממנה מאחזרים טוקן של מזהה OIDC
  • KEY_n, VALUE_n: כותרות מותאמות אישית שצריך לכלול בבקשת HTTP ל-TOKEN_URL
  • ‫SOURCE_TYPE: פורמט הקובץ של אסימון מזהה של OIDC, שמוגדר ל-text (ברירת המחדל) או ל-json
  • FIELD_NAME: שדה בקובץ הטקסט שמכיל את האסימון (אם SOURCE_TYPE הוא json)

שימוש בהגדרות פרטי הכניסה כדי לקבל גישה אל Cloud de Confiance

כדי לאפשר לכלים ולספריות הלקוח להשתמש בתצורת פרטי הכניסה, צריך לבצע את הפעולות הבאות:

  1. מאתחלים את משתנה הסביבה GOOGLE_APPLICATION_CREDENTIALS ומפנים אותו לקובץ התצורה של פרטי הכניסה:

    Bash

      export GOOGLE_APPLICATION_CREDENTIALS=`pwd`/FILEPATH.json
      
    ‫FILEPATH הוא הנתיב היחסי לקובץ התצורה של פרטי הכניסה.

    PowerShell

      $env:GOOGLE_APPLICATION_CREDENTIALS = Resolve-Path 'FILEPATH.json'
      
    ‫FILEPATH הוא הנתיב היחסי לקובץ התצורה של פרטי הכניסה.
  2. משתמשים בספריית לקוח או בכלי שתומכים באיחוד שירותי אימות הזהות של עומסי עבודה, ויכולים למצוא פרטי כניסה באופן אוטומטי:

    C++‎

    ספריות הלקוח שלCloud de Confiance ל-C++‎ תומכות באיחוד שירותי אימות הזהות של עומסי עבודה החל מגרסה v2.6.0. כדי להשתמש באיחוד שירותי אימות הזהות של עומסי עבודה, צריך ליצור את ספריות הלקוח בגרסה 1.36.0 ואילך של gRPC.

    המשך

    ספריות לקוח ל-Go תומכות באיחוד שירותי אימות הזהות של עומסי עבודה אם נעשה בהן שימוש במודול golang.org/x/oauth2 בגרסה 00.0.0-20210218202405-ba52d332ba99 ואילך.

    כדי לבדוק באיזו גרסה של המודול הזה נעשה שימוש בספריית הלקוח, מפעילים את הפקודות האלה:

    cd $GOPATH/src/cloud.google.com/go
    go list -m golang.org/x/oauth2
    

    Java

    בספריות לקוח ל-Java יש תמיכה באיחוד שירותי אימות הזהות של עומסי עבודה, אם נעשה בהן שימוש בארטיפקט com.google.auth:google-auth-library-oauth2-http בגרסה 0.24.0 ואילך.

    כדי לבדוק באיזו גרסה של הארטיפקט הזה נעשה שימוש בספריית הלקוח, בספרייה של האפליקציה מפעילים את פקודת Maven הזאת:

    mvn dependency:list -DincludeArtifactIds=google-auth-library-oauth2-http
    

    Node.js

    בספריות לקוח ל-Node.js יש תמיכה באיחוד שירותי אימות הזהות של עומסי עבודה אם נעשה בהן שימוש בחבילת google-auth-library בגרסת 7.0.2 ואילך.

    כדי לבדוק באיזו גרסה של החבילה הזאת נעשה שימוש בספריית הלקוח, בספרייה של האפליקציה מפעילים את פקודת Maven הזאת:

    npm list google-auth-library
    

    כשיוצרים אובייקט GoogleAuth, אפשר לציין מזהה פרויקט או לאפשר ל-GoogleAuth לאתר את מזהה הפרויקט באופן אוטומטי. כדי לאתר את מזהה הפרויקט באופן אוטומטי, צריך להקצות לחשבון השירות בקובץ התצורה את התפקיד דפדפן (roles/browser) או תפקיד עם הרשאות דומות בפרויקט. לפרטים נוספים, ראו README לחבילת google-auth-library.

    Python

    בספריות לקוח ל-Python יש תמיכה באיחוד שירותי אימות הזהות של עומסי עבודה אם נעשה בהן שימוש בחבילת google-auth בגרסת 1.27.0 ואילך.

    כדי לבדוק באיזו גרסה של החבילה הזאת נעשה שימוש בספריית הלקוח, בסביבה שהחבילה מותקנת בה מפעילים את הפקודה:

    pip show google-auth
    

    כדי לציין מזהה פרויקט ללקוח האימות, תוכלו להגדיר את משתנה הסביבה GOOGLE_CLOUD_PROJECT או לאפשר ללקוח למצוא את מזהה הפרויקט באופן אוטומטי. כדי לאתר את מזהה הפרויקט באופן אוטומטי, צריך להקצות לחשבון השירות בקובץ התצורה את התפקיד דפדפן (roles/browser) או תפקיד עם הרשאות דומות בפרויקט. לפרטים נוספים, ראו מדריך למשתמש לחבילת google-auth.

    gcloud

    כדי לבצע אימות באמצעות איחוד שירותי אימות הזהות של עומסי עבודה, משתמשים בפקודה gcloud auth login:

    gcloud auth login --cred-file=FILEPATH.json
    

    מחליפים את הערך FILEPATH בנתיב לקובץ התצורה של פרטי הכניסה.

    ב-CLI של gcloud יש תמיכה באיחוד שירותי אימות הזהות של עומסי עבודה ב-CLI של gcloud בגרסה 363.0.0 ואילך.

    Terraform

    הספק שלCloud de Confiance תומך באיחוד שירותי אימות הזהות של עומסי עבודה אם משתמשים בגרסה 3.61.0 ואילך:

    terraform {
      required_providers {
        google = {
          source  = "hashicorp/google"
          version = "~> 3.61.0"
        }
      }
    }
    

    BQ

    כדי לבצע אימות באמצעות איחוד שירותי אימות הזהות של עומסי עבודה, משתמשים בפקודה gcloud auth login:

    gcloud auth login --cred-file=FILEPATH.json
    

    מחליפים את הערך FILEPATH בנתיב לקובץ התצורה של פרטי הכניסה.

    ב-bq, יש תמיכה באיחוד שירותי אימות הזהות של עומסי עבודה ב-CLI של gcloud בגרסה 390.0.0 ואילך.

המאמרים הבאים