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

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

יכולות

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

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

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

  • שילוב של Gemini Enterprise: דיירים של SCIM תומכים בשיתוף ב-Gemini Enterprise. דייר SCIM מאפשר שתי תכונות שקשורות לשיתוף נוטבוקים ב-Gemini Notebook Enterprise:

    • השלמה אוטומטית של כתובות אימייל וקבוצות

    • שימוש בשם הקבוצה במקום במזהה האובייקט שלה (UUID)

    מידע נוסף זמין במאמר בנושא שיתוף מחברת עם קבוצה.

לתשומת ליבכם

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

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

מיפוי ספקי OIDC ו-SAML להגדרת SCIM

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

מכיוון ש---claim-mapping הוא בלתי ניתן לשינוי אחרי שיוצרים את דייר SCIM, אם אתם צריכים לעדכן את מיפויי הטענות (למשל, כדי להוסיף את הטרנספורמציה .lowerAscii()), אתם צריכים למחוק את דייר SCIM באופן סופי וליצור אותו מחדש עם המיפוי החדש.

אם המיפויים האלה לא עקביים, יכול להיות שהמשתמשים יוכלו להיכנס אבל לא יזוהו כחברים בקבוצות שהוקצו להם באמצעות SCIM. לדוגמה, אם הספק משתמש ב-assertion.email בשביל google.subject, דייר SCIM צריך להשתמש גם במאפיין SCIM המקביל (לדוגמה, user.emails[0].value) בשביל google.subject.

בטבלה הבאה מוצגים המיפויים בין מאפייני הצהרה של אסימון לבין מאפייני SCIM:

מאפיין של Google מיפוי של ספק מאגר זהויות של כוח עבודה מיפוי דיירים ב-SCIM
google.subject assertion.oid (EntraId) 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()
google.group לא רלוונטי (מופה באמצעות SCIM) group.externalId

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

יש תמיכה בנקודות הקצה הבאות של פרוטוקול 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 שמכילים אסימון API לא תקין יחזירו 401 HTTP error מ- Google Cloud. התגובה היא לא מבנה JSON כנדרש במפרט.

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

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

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

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

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

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

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

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

בטבלה הבאה מפורטות אפשרויות התמיכה במאפייני משתמשים:

מאפיין מאפייני משנה נתמך מגבלות
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.

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

בטבלה הבאה מפורטת התמיכה במאפיינים קבוצתיים:

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

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

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

מאפיין מאפייני משנה נתמכים
employeeNumber לא רלוונטי
costCenter לא רלוונטי
organization לא רלוונטי
division לא רלוונטי
department לא רלוונטי
manager value, $ref, displayName

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