כדי לבצע אימות מול 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.
אלגוריתמים מומלצים לחתימה:
- ECDSAwithSHA256
- RSAwithSHA256 עם גדלי מפתחות נתמכים של 2048, 3072 ו-4096 ביט.
אישור החתימה צריך לעמוד בדרישות התוקף הבאות:
-
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, כך שכתובת ה-URLISSUER/.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 .
כדי להתחיל בהגדרה של איחוד שירותי אימות הזהות של עומסי עבודה, מבצעים את הפעולות הבאות:
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
עדיף
להשתמש בפרויקט ייעודי לניהול ספקים ומאגרי זהויות של עומסי עבודה.
-
Verify that billing is enabled for your Google Cloud project.
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.
ניהול מפתחות 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 הבאים בפרויקט:
-
אדמין במאגר זהויות של עומסי עבודה (
roles/iam.workloadIdentityPoolAdmin) -
אדמין בחשבון שירות (
roles/iam.serviceAccountAdmin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
לחלופין, התפקיד הבסיסי ב-IAM 'בעלים' (roles/owner) כולל גם הרשאות להגדרה של איחוד זהויות.
לא צריך להקצות תפקידים בסיסיים בסביבת ייצור, אבל אפשר להקצות אותם
בסביבת פיתוח או בדיקה.
עכשיו כל המידע הנדרש כדי ליצור מאגר וספק של זהויות של כוח עבודה נמצא ברשותך:
המסוף
נכנסים לדף New workload provider and pool במסוף Google Cloud .
בקטע Create an identity pool, מזינים את הפרטים הבאים:
- Name: השם של המאגר. השם משמש גם כמזהה המאגר. אי אפשר לשנות את מזהה המאגר בשלב מאוחר יותר.
- Description: טקסט שמתאר את המטרה של המאגר.
לוחצים על Continue.
מגדירים את הספק באופן הבא:
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 שסופק על ידי ספק הזהויות.
לוחצים על Continue.
בקטע Configure provider attributes, מוסיפים את מיפויי המאפיינים שזיהיתם קודם במדריך הזה.
בקטע Attribute conditions, מזינים את התנאי למאפיין שזיהיתם קודם לכן במדריך הזה. אם אין לכם תנאי למאפיין, משאירים את השדה ריק.
כדי ליצור את מאגר וספק הזהויות של כוח העבודה, לוחצים על Save.
gcloud
כדי ליצור מאגר זהויות של כוח עבודה, מריצים את הפקודה הבאה:
gcloud iam workload-identity-pools create POOL_ID \ --location="global" \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"צריך להחליף את מה שכתוב בשדות הבאים:
-
POOL_ID: המזהה הייחודי של המאגר. DISPLAY_NAME: שם המאגר.DESCRIPTION: תיאור של המאגר שנבחר. התיאור הזה מופיע כשנותנים גישה לזהויות במאגר.
-
כדי להוסיף ספק של מאגר זהויות של כוח עבודה, מבצעים את הפעולות הבאות:
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 מוצפן.
יצירת מפתחות הצפנה של טענות נכונות (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
איחוד שירותי אימות הזהות של עומסי עבודה תומך באלגוריתמים הבאים לתעבורת מפתחות:
- http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p
- http://www.w3.org/2009/xmlenc11#rsa-oaep"
- http://www.w3.org/2001/04/xmlenc#rsa-1_5"
איחוד שירותי אימות הזהות של עומסי עבודה תומך באלגוריתמים הבאים של הצפנת בלוקים:
-
אימות של עומסי עבודה
צריך לבצע את השלבים האלה פעם אחת לכל עומס עבודה.
מתן הרשאה לעומס העבודה החיצוני לגשת למשאבי 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.
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
ברשימת הקטגוריות, לוחצים על שם הקטגוריה שבה רוצים להעניק את התפקיד.
לוחצים על הכרטיסייה Permissions בחלק העליון של הדף.
לוחצים על הלחצן add_boxGrant access.
מופיעה תיבת הדו-שיח Add principals.
בשדה 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: הערך של המאפיין
-
בוחרים תפקיד (או תפקידים) בתפריט הנפתח Select a rol. התפקידים שבחרתם יופיעו בחלונית עם תיאור קצר של ההרשאות שהם מעניקים.
לוחצים על Save.
gcloud
כדי להשתמש ב-CLI של gcloud כדי להקצות תפקידי IAM למשאב בפרויקט, מבצעים את הפעולות הבאות:
מקבלים את מספר הפרויקט שבו מוגדר המשאב.
gcloud projects describe $(gcloud config get-value core/project) --format=value\(projectNumber\)
נותנים גישה למשאב.
כדי להשתמש ב-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.
-
התחזות לחשבון שירות
כדי ליצור חשבון שירות לעומס העבודה החיצוני, צריך לבצע את הפעולות הבאות:
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 theserviceusage.services.enablepermission. Learn how to grant roles.יצירת חשבון שירות שמייצג את עומס העבודה. מומלץ להשתמש בחשבון שירות ייעודי לכל עומס עבודה. חשבון השירות לא חייב להיות באותו פרויקט כמו מאגר הזהויות של עומסי העבודה, אבל אתם צריכים להפנות לפרויקט שמכיל את חשבון השירות.
הענקת גישה לחשבון השירות למשאבים שאליהם רוצים שלזהויות חיצוניות תהיה גישה.
כדי לאפשר לזהות המאוחדת להתחזות לחשבון השירות, מבצעים את הפעולות הבאות:
המסוף
כדי להשתמש במסוף Google Cloud כדי להעניק תפקידי IAM לזהות מאוחדת עם חשבון שירות, מבצעים את הפעולות הבאות:
חשבון שירות באותו פרויקט
כדי לתת גישה באמצעות התחזות לחשבון שירות שנמצא באותו פרויקט, מבצעים את הפעולות הבאות:
עוברים לדף Workload Identity Pools.
בוחרים באפשרות הענקת גישה.
בתיבת הדו-שיח Grant access to service account, בוחרים באפשרות Grant access using Service Account impersonation.
ברשימה Service accounts, בוחרים את חשבון השירות שאליו הזהויות החיצוניות יתחזו, ומבצעים את הפעולות הבאות:
כדי לבחור אילו זהויות מהמאגר יכולות להתחזות לחשבון השירות, מבצעים את אחת מהפעולות הבאות:
כדי לאפשר רק לזהויות ספציפיות ממאגר הזהויות של עומסי העבודה להתחזות לחשבון השירות, בוחרים באפשרות Only identities matching the filter.
ברשימה שם מאפיין, בוחרים את המאפיין שרוצים לסנן לפיו.
בשדה ערך מאפיין, מזינים את הערך הצפוי של המאפיין; לדוגמה, אם משתמשים במיפוי מאפיין
google.subject=assertion.sub, מגדירים את שם מאפיין להיותsubjectואת ערך מאפיין לערך של ההצהרהsubבאסימונים שהונפקו על ידי ספק הזהויות החיצוני.
כדי לשמור את ההגדרות האישיות, לוחצים על Save ואז על Dismiss.
חשבון שירות בפרויקט אחר
כדי לתת גישה באמצעות התחזות לחשבון שירות בחשבון שירות בפרויקט אחר, מבצעים את הפעולות הבאות:
עוברים לדף Service Accounts.
בוחרים את חשבון השירות שרוצים להתחזות אליו.
לוחצים על ניהול הגישה.
לוחצים על Add principal.
בשדה 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: המזהה של מאגר הזהויות של עומסי העבודה
-
ברשימת התפקידים Select a role (בחירת תפקיד), בוחרים את התפקיד Workload Identity User (משתמש ב-Workload Identity) (
roles/iam.workloadIdentityUser).כדי לשמור את ההגדרות, לוחצים על שמירה.
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). לשם כך:
-
במסוף Google Cloud , עוברים לדף Workload Identity Pools.
לדף Workload Identity Pools -
בטבלה, בוחרים את המאגר כדי לעבור לדף הפרטים של המאגר.
-
לוחצים על הענקת גישה.
-
בוחרים באפשרות Grant access using federated identities (הענקת גישה באמצעות זהויות מאוחדות) (מומלץ).
-
כדי להוריד את Application Default Credential (ADC) כדי שעומס העבודה יוכל לגשת לספריות לקוח, צריך לבצע את הפעולות הבאות:
-
לוחצים על הורדת ההגדרה.
-
בתיבת הדו-שיח Configure your application, מבצעים את הפעולות הבאות:
-
בתפריט הנפתח ספק, בוחרים את הספק שלכם.
-
בקטע OIDC token path או SAML assertion path, מזינים את הנתיב שבו נמצא האסימון או טענת הנכונות.
ברשימה הנפתחת סוג הפורמט, בוחרים את הפורמט.
-
-
לוחצים על 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_tokenurn: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 שממנה מאחזרים אסימון מזהה של OIDCKEY_n,VALUE_n: כותרות מותאמות אישית שצריך לכלול בבקשת HTTP ל-TOKEN_URLSOURCE_TYPE: פורמט הקובץ של אסימון מזהה של OIDC, שמוגדר ל-text(ברירת המחדל) או ל-jsonFIELD_NAME: שדה בקובץ הטקסט שמכיל את האסימון (אםSOURCE_TYPEהואjson)
שימוש בהגדרות פרטי הכניסה כדי לקבל גישה אל Google Cloud
כדי לאפשר לכלים ולספריות הלקוח להשתמש בתצורת פרטי הכניסה, צריך לבצע את הפעולות הבאות:
מאתחלים את משתנה הסביבה
GOOGLE_APPLICATION_CREDENTIALSומפנים אותו לקובץ התצורה של פרטי הכניסה:Bash
כאשרexport GOOGLE_APPLICATION_CREDENTIALS=`pwd`/FILEPATH.json
FILEPATHהוא הנתיב היחסי לקובץ התצורה של פרטי הכניסה.PowerShell
כאשר$env:GOOGLE_APPLICATION_CREDENTIALS = Resolve-Path 'FILEPATH.json'
FILEPATHהוא הנתיב היחסי לקובץ התצורה של פרטי הכניסה.משתמשים בספריית לקוח או בכלי שתומכים באיחוד שירותי אימות הזהות של עומסי עבודה, ויכולים למצוא פרטי כניסה באופן אוטומטי:
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/oauth2Java
ספריות לקוח של Java תומכות באיחוד שירותי אימות הזהות של עומסי עבודה אם הן משתמשות בארטיפקט
com.google.auth:google-auth-library-oauth2-httpבגרסה 0.24.0 ואילך.כדי לבדוק באיזו גרסה של הארטיפקט הזה נעשה שימוש בספריית הלקוח, בספרייה של האפליקציה מפעילים את פקודת Maven הזאת:
mvn dependency:list -DincludeArtifactIds=google-auth-library-oauth2-httpNode.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 ואילך.
המאמרים הבאים
- מידע נוסף על איחוד זהויות של עומסי עבודה
- שיטות מומלצות לשימוש באיחוד שירותי אימות הזהות של עומסי עבודה
- איך אפשר לבצע ניהול ספקים ומאגרים של זהויות של עומסי עבודה