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

אם ספק הזהויות (IdP) שלכם תומך במערכת לניהול זהויות בין דומיינים (SCIM), אתם יכולים להגדיר אותו להקצאה ולניהול של משתמשים וקבוצות ב- Google Cloud.

יכולות

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

  • סנכרון זהויות: סנכרון משתמשים וקבוצות מה-IdP החיצוני אל Google Cloud כדי לשמור על תצוגה הוליסטית של זהויות כוח העבודה.
  • מקור ראשי לטענות: כש-SCIM מופעל אצל ספק כוח עבודה, Google Cloud משתמש במשתמשים ובקבוצות שסונכרנו באמצעות SCIM כמקור האמת להערכת מדיניות IAM, גם לגבי מאפייני משתמשים וגם לגבי חברות בקבוצות.
  • השלמה אוטומטית של זהויות: מאפשרת השלמה אוטומטית של משתמשים וקבוצות כשמעניקים גישה ומשתפים משאבים (כמו מחברות וסוכנים) ב-Gemini Enterprise.

לתשומת ליבכם

כשמשתמשים בתמיכה של SCIM באיחוד שירותי אימות הזהות של כוח העבודה, צריך לקחת בחשבון את הנקודות הבאות:

  • צריך להגדיר מאגר זהויות של כוח עבודה וספק לפני שמגדירים דייר SCIM.
  • כל מאגר זהויות של כוח עבודה תומך רק בדייר SCIM אחד, שמקושר לספק אחד. אי אפשר להפעיל שימוש ב-SCIM‏ (--scim-usage) אצל ספק אחר באותו מאגר. כדי להגדיר דייר SCIM חדש באותו מאגר זהויות של כוח עבודה, צריך קודם למחוק את הדייר הקיים. כדי למחוק דייר SCIM, משתמשים באחת מהשיטות הבאות:
    • מחיקה עם אפשרות שחזור (ברירת מחדל): מחיקה של דייר SCIM מתחילה תקופה של 30 יום שבה אפשר לשחזר את הדייר. במהלך התקופה הזו, הדייר מוסתר ואי אפשר להשתמש בו, ואי אפשר ליצור דייר SCIM חדש באותו מאגר זהויות של כוח העבודה.
    • מחיקה סופית: כדי למחוק דייר SCIM באופן מיידי ולתמיד, משתמשים בדגל --hard-delete עם פקודת המחיקה. הפעולה הזו היא בלתי הפיכה, והיא מאפשרת לכם ליצור דייר SCIM חדש באותו מאגר זהויות של כוח העבודה באופן מיידי, בלי לחכות לתקופת השמירה של 30 יום. לחלופין, אפשר ליצור מאגר זהויות חדש של כוח עבודה ודייר SCIM חדש, או להשתמש במאגר זהויות של כוח עבודה שלא הוגדר בעבר עם דייר SCIM.
  • מצבי שימוש ב-SCIM (--scim-usage):
    • ‫enabled-for-groups (Gemini Enterprise): משתמש בקבוצות שמסונכרנות עם SCIM להרשאות IAM ולהערכת מדיניות. מאפייני המשתמשים ממשיכים להגיע מאסימוני הכניסה. רק מיפויים של google.subject ו-google.group נבדקים.
    • ‫enabled-for-users-groups (Looker) (תצוגה מקדימה): משתמש בנתוני משתמשים וקבוצות שמסונכרנים עם SCIM כמקור של טענות לאימות IAM ולתהליכי כניסה באמצעות OAuth. הפונקציה מעריכה את google.subject,‏ google.group ואת כל טענות המשתמש שהוגדרו (כמו google.display_name,‏ google.profile_photo,‏ google.email,‏ google.posix_username ו-attribute.KEY מותאם אישית).
  • בלעדיות הדדית: ההגדרה --scim-usage=enabled-for-users-groups (תצוגה מקדימה) היא בלעדית הדדית עם מאפיינים נוספים (extra_attributes_oauth2_client) ומאפיינים מורחבים (extended_attributes_oauth2_client).
  • כשמשתמשים ב-SCIM, ממפים מאפיינים גם בספק הזהויות של כוח העבודה וגם בדייר SCIM. הערך של מאפיין google.subject צריך להיות ייחודי ולציין את אותם זהויות. מציינים את google.subject בספק של מאגר הזהויות של כוח העבודה באמצעות הדגל --attribute-mapping, ובדייר SCIM באמצעות הדגל --claim-mapping. מיפוי של ערכי זהות לא ייחודיים עלול לגרום ל- Google Cloud להתייחס לזהויות שונות ב-IdP כאילו הן אותה זהות. כתוצאה מכך, גישה שניתנת למשתמש אחד או לקבוצה אחת יכולה להתרחב למשתמשים או לקבוצות אחרים, אבל ביטול הגישה למשתמש או לקבוצה מסוימים לא בהכרח יסיר אותה מכולם.
  • אם מפעילים את השימוש ב-SCIM אצל ספק בלי שצורף אליו דייר SCIM, ניסיונות הכניסה נכשלים כי Google Cloud המערכת לא מצליחה למצוא דייר SCIM עבור הספק הזה.
  • אכיפת ייחודיות: Google Cloud מאמתת ואוכפת ייחודיות במאפיינים שממופים ל-google.subject (משתמשים) ול-google.group (קבוצות) בדייר SCIM. אם המיפוי של המאפיינים שמוקצים על ידי ספק הזהויות מוביל לערכים כפולים של google.subject או google.group במהלך הסנכרון, הקצאת ההרשאות נכשלת עם שגיאת HTTP 409 Conflict. אם מאפיין ממופה מקבל את הערך null או ערך ריק, הקצאת ההרשאות נכשלת עם שגיאת HTTP 400 Bad Request.
  • מגבלות על גודל המאפיינים: הגודל המקסימלי של מאפייני משתמש ממופים שעברו סריאליזציה (לא כולל google.group) הוא 16 kB. אם המאפיינים הממופים חורגים מהמגבלה הזו, ניסיונות הכניסה נכשלים.
  • מגבלת אסימוני SCIM: כל דייר SCIM תומך בשני אסימוני SCIM לכל היותר (לדוגמה, כדי לתמוך ברוטציה של אסימונים ללא השבתה). אם יש לכם שני אסימונים, צריך למחוק אסימון קיים לפני שיוצרים אסימון חדש.
  • ממשק SCIM API‏ (iamscim.googleapis.com) כפוף למכסות קצב שונות ממכסות ה-API הרגילות של משאבי IAM. כברירת מחדל, בקשות כתיבה וקריאה מוגבלות ל-3,000 בקשות לדקה לכל דייר SCIM לכל ארגון. מידע נוסף זמין במאמר מכסות ומגבלות.

מיפוי תביעות

כשמגדירים SCIM, מגדירים מיפויי הצהרות (--claim-mapping) בדייר SCIM כדי למפות מאפייני משתמש וקבוצה של SCIM למאפיינים של Google.

מאפיינים נתמכים Google Cloud למיפוי הצהרות בעלות

בטבלה הבאה מפורטים Google Cloud המאפיינים שאפשר למפות בדייר SCIM ‏ (--claim-mapping) באמצעות Common Expression Language ‏ (CEL):

מאפייןGoogle Cloud דרישה תיאור ביטויים נתמכים ומגבלות
google.subject חובה

מזהה ייחודי של המשתמש המאומת.

מאפיין ה-IdP הבסיסי שמשמש לאכלוס google.subject חייב להיות זהה במיפוי הספק (--attribute-mapping) ובדייר SCIM (--claim-mapping). אם המיפויים האלה לא עקביים, יכול להיות שהמשתמשים יוכלו להיכנס אבל לא יזוהו כחברים בקבוצות שהוקצו באמצעות SCIM.

מוגבל לביטויי הבסיס הבאים (או עם .lowerAscii()):
  • user.externalId
  • user.userName
  • user.emails[0].value

אורך מקסימלי: 127 בייטים.

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

google.group חובה לקבוצות SCIM מזהה ייחודי של חברות בקבוצה שמסונכרנת באמצעות SCIM. מוגבל לביטויי הבסיס הבאים (או עם .lowerAscii()):
  • group.externalId
  • group.displayName

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

google.display_name אופציונלי מאפיין שמגדיר את השם של המשתמש שנכנס לחשבון במסוף Google Cloud . אי אפשר להשתמש במאפיין הזה בכללי מדיניות ההרשאות ב-IAM. ממפה למאפיין מחרוזת (כמו user.displayName או user.name.formatted). האורך המקסימלי: 100 בייטים.
google.profile_photo אופציונלי כתובת URL של התמונה הממוזערת של המשתמש שמוצגת כתמונת הפרופיל שלו ב Google Cloud מסוף. אי אפשר להשתמש במאפיין הזה בכללי מדיניות ההרשאות ב-IAM. הערך שמתקבל מהפונקציה חייב להיות מחרוזת של כתובת URL תקינה (למשל user.photos.filter(p, p.type == 'thumbnail')[0].value או user.photos[0].value).
google.email אופציונלי מאפיין שמשמש למיפוי כתובות אימייל מ-IdP למוצרים שמשולבים באמצעות שילוב של לקוח OAuth של איחוד שירותי אימות הזהות של כוח עבודה. אי אפשר להשתמש במאפיין הזה בכללי מדיניות ההרשאות ב-IAM. מיפוי למאפיין אימייל (כמו user.emails.filter(e, e.type == 'work')[0].value או user.emails[0].value).
google.posix_username אופציונלי מחרוזת ייחודית של שם משתמש שתואמת ל-POSIX, שמשמשת לכניסה ל-SSH בדפדפן ול-OS Login עם איחוד שירותי אימות הזהות של כוח העבודה. אי אפשר להשתמש במאפיין הזה בכללי מדיניות ההרשאות ב-IAM. האורך המקסימלי הוא 32 תווים.
attribute.KEY אופציונלי

מאפיינים מותאמים אישית מ-IdP שאפשר להשתמש בהם כדי להגדיר את אסטרטגיית ההרשאות במדיניות הרשאה ב-IAM. מחליפים את KEY בשם המאפיין שרוצים להשתמש בו.

לדוגמה, אתם יכולים להגדיר מאפיין מותאם אישית כמו costcenter = "1234" ולהפנות אליו באמצעות principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workforcePools/WORKFORCE_POOL_ID/attribute.costcenter/1234. הענקת גישה למזהה העיקרי הזה מעניקה גישה לכל הזהויות שהוגדרו בספק הזהויות עם מרכז העלויות הזה.

עד 50 כללי מיפוי של מאפיינים מותאמים אישית. הגודל המקסימלי לכל כלל: 256 תווים.

התנהגות על סמך השימוש ב-SCIM של הספק (--scim-usage)

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

  • ‫enabled-for-groups (Gemini Enterprise): רק המיפויים google.subject ו-google.group נבדקים. המערכת מתעלמת ממיפויים נוספים של טענות לגבי משתמשים ב---claim-mapping.
  • ‫enabled-for-users-groups (Looker) (תצוגה מקדימה): הערכה של google.subject,‏ google.group וכל טענות המשתמש שהוגדרו (כמו google.display_name,‏ google.profile_photo,‏ google.email,‏ google.posix_username ו-attribute.<var>KEY</var> מותאם אישית).

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

כמו שמתואר במאמר מאפיינים נתמכים למיפוי הצהרות, מאפיין ה-IdP הבסיסי שמשמש לאכלוס google.subject חייב להיות זהה גם במיפוי הספק (--attribute-mapping) וגם בדייר SCIM (--claim-mapping). בטבלה הבאה מוצגות דוגמאות להפניה:

מאפיין של Google מיפוי של ספק מאגר זהויות של כוח עבודה מיפוי דיירים ב-SCIM
google.subject ‫assertion.oid (Entra ID) user.externalId
google.subject ‫assertion.sub (Okta) user.externalId
google.subject assertion.preferred_username user.userName
google.subject assertion.preferred_username.lowerAscii() user.userName.lowerAscii()
google.subject assertion.email user.emails[0].value
google.subject assertion.email.lowerAscii() user.emails[0].value.lowerAscii()

נקודות קצה נתמכות ונקודות קצה שלא נתמכות

המערכת תומכת בנקודות הקצה הבאות של פרוטוקול SCIM:

  • ‫/Users: ניהול משאבי משתמשים. פעולות נתמכות: Create,‏ Get,‏ Update,‏ Delete,‏ Patch ו-Put.

  • ‫/Groups: ניהול משאבי קבוצה. פעולות נתמכות: Create,‏ Get,‏ Update,‏ Delete ו-Patch. השיטה PUT לא נתמכת לקבוצות.

  • ‫/Schemas: אחזור פרטי הסכימה.

  • ‫/ServiceProviderConfig: אחזור ההגדרות של ספק השירות.

אין תמיכה בנקודות הקצה הבאות של פרוטוקול SCIM:

  • /Me

  • /Bulk

  • /Search

  • /ResourceTypes

מגבלות

בקטעים הבאים מתוארות המגבלות והסטיות של הטמעת SCIM של איחוד שירותי אימות הזהויות של כוח העבודה ממפרטי SCIM‏ (RFC 7643 ו-7644).

מגבלות על תכונות של פרוטוקולים

  • תמיכה במסננים: כשמציגים רשימה של משתמשים או קבוצות באמצעות נקודות הקצה /Users או /Groups, ביטויי המסננים תומכים רק באופרטור eq (שווה). אפשר לשלב כמה מסנני eq עם and. אין תמיכה באופרטורים אחרים של מסנני SCIM, כמו co (מכיל) או sw (מתחיל ב).

  • חלוקה לדפים: ה-IAM SCIM API לא תומך בחלוקה רגילה לדפים כשמציגים רשימה של משתמשים או קבוצות.

    • ‫startIndex: הפרמטר הזה תמיד 1. ה-API מחזיר עד 100 תוצאות, ללא קשר לערך שמזינים בפרמטר startIndex.

    • ‫itemsPerPage: המספר המקסימלי של משאבים שמוחזרים בתגובה אחת הוא 100.

    • ‫totalResults: ה-API לא מחזיר את המספר הכולל של המשאבים התואמים. השדה totalResults בתשובה תמיד שווה למספר הפריטים שמוחזרים בתשובה הזו, עד 100 פריטים.

  • קבלת קבוצה ורשימת קבוצות ללא סינון: ממשקי ה-API‏ GetGroup ו-ListGroups מחזירים רשימת חברים ריקה. כדי לאחזר את חברי קבוצה ספציפית, משתמשים ב-ListGroups API עם מסנן חברים.

  • תגובת JSON לא תואמת עם טוקנים לא תקינים: בקשות שמכילות טוקן API לא תקין מחזירות קוד סטטוס HTTP 401 מ- Google Cloud. התגובה היא לא JSON תקין, כפי שנדרש במפרט SCIM.

מגבלות על התנהגות SCIM

  • מזהים שלא ניתן לשנות: המערכת מתייחסת לערכים של מאפייני SCIM שממופים ל-google.subject או ל-google.group כמזהים שלא ניתן לשנות בתוך Google Cloud. אם אתם צריכים לשנות את הערכים האלה, אתם צריכים למחוק את המשתמש או הקבוצה מספק הזהויות באופן סופי, ואז ליצור אותם מחדש עם הערך החדש.

  • מזהים ייחודיים ולא ריקים: Google Cloud מבטיח ייחודיות של הערכים שממופים ל-google.subject ול-google.group בדייר SCIM. סינכרון של מאפיינים ממופים שמובילים לערכים כפולים עבור google.subject או google.group נכשל עם שגיאת HTTP 409 Conflict. מאפיינים ממופים שמוערכים כ-null או כריקים נכשלים עם שגיאת HTTP 400 Bad Request.

  • דרישה לכתובת אימייל אחת: כדי שהסנכרון של SCIM יצליח, לכל משתמש צריכה להיות בדיוק כתובת אימייל אחת מהסוג work. הקצאת הרשאות או עדכונים ייכשלו אם ספק ה-IdP ישלח כמה אימיילים או אם האימייל היחיד שסופק לא יהיה מסוג work.

  • טרנספורמציות לא תלויות-רישיות: יש תמיכה בטרנספורמציות מוגבלות של Common Expression Language‏ (CEL) למיפוי טענות SCIM. רק הערך .lowerAscii() נתמך בהשוואות לא תלויות-רישיות של user.userName ושל user.emails[0].value.

מגבלות על מאפיינים

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

מאפייני המשתמשים

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

מאפיין מאפייני משנה נתמך בהקצאת הרשאות SCIM מגבלות נתמך ב---claim-mapping
userName לא רלוונטי כן לא רלוונטי כן
name formatted, familyName, givenName, middleName, honorificPrefix, honorificSuffix כן לא רלוונטי כן
displayName לא רלוונטי כן לא רלוונטי כן
nickName לא רלוונטי כן לא רלוונטי כן
profileUrl לא רלוונטי כן לא רלוונטי כן
title לא רלוונטי כן לא רלוונטי כן
userType לא רלוונטי כן לא רלוונטי כן
preferredLanguage לא רלוונטי כן לא רלוונטי כן
locale לא רלוונטי כן לא רלוונטי כן
timezone לא רלוונטי כן לא רלוונטי כן
active לא רלוונטי כן לא רלוונטי כן
password לא רלוונטי לא לא רלוונטי לא
emails display,‏ type,‏ value,‏ primary כן יש תמיכה רק בסוג האימייל work. כן
phoneNumbers display,‏ type,‏ value,‏ primary כן לא רלוונטי כן
ims display, type, value כן לא רלוונטי כן
photos display, type, value כן לא רלוונטי כן
addresses formatted, streetAddress, locality, region, postalCode, country כן לא רלוונטי כן
groups לא רלוונטי לא לא רלוונטי לא
entitlements display, type, value כן לא רלוונטי כן
roles type, value כן אין תמיכה ב-display. כן
x509Certificates type, value כן אין תמיכה ב-display. לא

מאפייני הקבוצות

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

מאפיין מאפייני משנה נתמכים נתמך ב---claim-mapping
displayName לא רלוונטי כן
externalId לא רלוונטי כן
members value,‏ type,‏ $ref,‏ display לא

מאפיינים של הרחבות לסכימת משתמשים בארגון

בטבלה הבאה מפורטות אפשרויות התמיכה בהרחבת סכימת המשתמשים של מהדורת Enterprise:

מאפיין מאפייני משנה נתמכים נתמך ב---claim-mapping
employeeNumber לא רלוונטי כן
costCenter לא רלוונטי כן
organization לא רלוונטי כן
division לא רלוונטי כן
department לא רלוונטי כן
manager value, $ref, displayName כן (יש תמיכה ב-$ref רק בהקצאת הרשאות ב-SCIM, ולא ב---claim-mapping)

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