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

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

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

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

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

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

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

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

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

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

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

OIDC

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

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

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

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

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

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

SAML

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

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

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

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

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

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

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

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

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

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

OIDC

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

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

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

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

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

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

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

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

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

  • אסימוני הגישה מעוצבים בפורמט 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: מספר הפרויקט של Google Cloud הפרויקט שבו משתמשים כדי ליצור מאגר זהויות של עומסי עבודה.
      • POOL_ID: מזהה לבחירתכם, שמזהה את מאגר הזהויות של כוח העבודה. בהמשך תצטרכו להשתמש במזהה הזה כשתיצרו את מאגר הזהויות של כוח העבודה.
      • WORKLOAD_PROVIDER_ID: מזהה לבחירתכם, שמזהה את ספק מאגר הזהויות של עומסי עבודה. בהמשך תצטרכו להשתמש באותו מזהה כשתיצרו ספק של מאגר זהויות של עומסי עבודה.
  • לפחות רכיב אחד של AuthnStatement.

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

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

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

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

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

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

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

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. עדיף להשתמש בפרויקט ייעודי לניהול ספקים ומאגרי זהויות של עומסי עבודה.
  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the IAM, Resource Manager, Service Account Credentials, and Security Token Service APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

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

בקטע הזה מוסבר איך לנהל מפתחות JWK של 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) ב- Google Cloud.

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

OIDC

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

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

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

google.subject=assertion.sub

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

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

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

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

assertion.service_account==true

SAML

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

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

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

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

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

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

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

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

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

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

המסוף

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

    לדף 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‏ (JSON), בוחרים קובץ JWK להעלאה. אם לא מציינים את השדה הזה, Google Cloud מנסה לאחזר JWK מהנפקן.
    • Allowed audiences: הקהל הצפוי של האסימונים המזהים.

    SAML

    • בקטע Select a provider (בחירת ספק), בוחרים באפשרות SAML.
    • בשדה שם הספק, מזינים שם לספק. השם משמש גם כמזהה הספק. אי אפשר לשנות את מזהה הספק אחרי שיוצרים את הספק.
    • בקטע IDP Metadata file (XML) (קובץ מטא-נתונים של ספק הזהויות (XML)), מעלים את מסמך ה-XML של המטא-נתונים של SAML שסופק על ידי ספק הזהויות.
  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" \
        --allowed-audiences="AUDIENCE" \
        --attribute-mapping="MAPPINGS" \
        --attribute-condition="CONDITIONS"
        --jwk-json-path="JWK_JSON_PATH"
    

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

    • WORKLOAD_PROVIDER_ID: מזהה ייחודי לפי בחירתכם של ספק מאגר הזהויות של עומסי העבודה.
    • POOL_ID: מזהה מאגר זהויות של כוח עבודה קודם לכן.
    • ISSUER: URI של מנפיק כפי שמוגדר במטא-נתונים של OIDC.
    • AUDIENCE: הקהל הצפוי של אסימונים מזהים, שאצל ספקים רבים תואם את מזהה הלקוח.
    • MAPPINGS: רשימה מופרדת בפסיקים של מיפויי המאפיינים שיצרת קודם לכן במדריך הזה.
    • CONDITIONS: תנאי למאפיין אפשרי שיצרת מוקדם יותר במדריך הזה. אפשר להסיר את הפרמטר אם אין לך תנאי למאפיין.
    • JWK_JSON_PATH: נתיב אופציונלי למפתחות JWK ב-OIDC שהועלו באופן מקומי. אם לא מוסיפים את הפרמטר הזה,המערכת של Google Cloud תשתמש בנתיב /.well-known/openid-configuration של ה-IdP כדי למצוא את מפתחות ה-JWK שמכילים את המפתחות הציבוריים.

    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.

    Google Cloud משתמש במפתח הפרטי כדי לפענח את טענות הנכונות (assertions) ב-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

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

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

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

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

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

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

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

אפשר להעניק גישה לזהות מאוחדת ישירות למשאבים באמצעות מסוף Google Cloud או ה-CLI של gcloud.

המסוף

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

  1. במסוף Google Cloud , נכנסים לדף 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

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

  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: הערך של המאפיין בהתאמה אישית במיפוי המאפיינים

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

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

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

    1. Enable the IAM, Security Token Service, and Service Account Credentials APIs.

      Roles required to enable APIs

      To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

      Enable the APIs

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

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

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

המסוף

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

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

  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 (משתמש ב-Workload Identity) ‏(roles/iam.workloadIdentityUser).

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

gcloud

כדי להקצות את התפקיד Workload Identity User ‏ (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: הערך של המאפיין בהתאמה אישית במיפוי המאפיינים

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

בקטע הזה מוסבר איך להוריד את הגדרת פרטי הכניסה באמצעות מסוףGoogle Cloud .

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

  1. במסוף Google Cloud , עוברים לדף Workload Identity Pools.

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

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

  4. בוחרים באפשרות Grant access using federated identities (הענקת גישה באמצעות זהויות מאוחדות) (מומלץ).

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

    1. לוחצים על הורדת ההגדרה.

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

      1. בתפריט הנפתח ספק, בוחרים את הספק שלכם.

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

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

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

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

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

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

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

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

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)

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

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

  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++‎

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

    Go

    ספריות לקוח ל-Go תומכות באיחוד שירותי אימות הזהות של עומסי עבודה אם נעשה בהן שימוש במודול golang.org/x/oauth2 בגרסה v0.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 תומכות באיחוד שירותי אימות הזהות של עומסי עבודה אם הן משתמשות בגרסה 7.0.2 ואילך של חבילת google-auth-library.

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

    npm list google-auth-library
    

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

    Python

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

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

    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

    יש תמיכה באיחוד שירותי אימות הזהות של עומסי עבודה אם משתמשים בספקGoogle Cloud בגרסה 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 ואילך.

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