במאמר הזה מוסבר איך להגדיר דייר SCIM במאגר זהויות של כוח עבודה. מידע נוסף על SCIM זמין במאמר הקצאת הרשאות SCIM לאיחוד שירותי אימות הזהות של כוח עבודה.
כל מאגר זהויות של כוח עבודה תומך רק בדייר SCIM אחד. כדי להגדיר דייר SCIM חדש במאגר שכבר יש בו דייר, צריך קודם למחוק את הדייר הקיים באופן סופי.
הדגל --claim-mapping לדייר SCIM יכול להכיל רק ביטויים ספציפיים של Common Expression Language (CEL). כדי לראות אילו ביטויים נתמכים, אפשר לעיין במאמר בנושא מיפוי הצהרות.
מוודאים שספק ה-IdP מספק ערכים ייחודיים ולא ריקים למאפיינים שממופים ל-google.subject ול-google.group. סנכרון של ערכים כפולים נכשל עם שגיאת HTTP 409 Conflict, וסנכרון של ערכים ריקים או ערכי null נכשל עם שגיאת HTTP 400 Bad Request. מידע נוסף זמין במאמר בנושא תמיכה ב-SCIM.
כדי להגדיר מערכת לניהול זהויות בכמה דומיינים (SCIM), מבצעים את הפעולות הבאות:
- הגדרת דייר וטוקן SCIM ב- Google Cloud
- הגדרת SCIM ב-Microsoft Entra ID
- עדכון הספק כדי להפעיל SCIM
- אימות הסנכרון של SCIM
הגדרת דייר וטוקן SCIM ב- Google Cloud
כדי להגדיר דייר SCIM ב- Google Cloud:
-
יוצרים דייר SCIM.
gcloud iam workforce-pools providers scim-tenants create SCIM_TENANT_ID \ --workforce-pool="WORKFORCE_POOL_ID" \ --provider="PROVIDER_ID" \ --display-name="SCIM_TENANT_DISPLAY_NAME" \ --description="SCIM_TENANT_DESCRIPTION" \ --claim-mapping="CLAIM_MAPPING" \ --location="global"מחליפים את מה שכתוב בשדות הבאים:
-
SCIM_TENANT_ID: מזהה של דייר SCIM. -
WORKFORCE_POOL_ID: המזהה של מאגר כוח העבודה שיצרתם קודם במסמך הזה. -
PROVIDER_ID: המזהה של ספק הזהויות של כוח העבודה שיצרתם קודם במסמך הזה. -
SCIM_TENANT_DISPLAY_NAME: השם המוצג של דייר SCIM. -
SCIM_TENANT_DESCRIPTION: תיאור של דייר SCIM. -
CLAIM_MAPPING: רשימה מופרדת בפסיקים של מיפויי מאפיינים. רשימה מורחבת של מאפייני מיפוי זמינה במאמר בנושא מיפוי טענות. מומלץ להשתמש במיפוי הבא ב-Gemini Enterprise:google.subject=user.emails[0].value.lowerAscii(),google.group=group.externalIdהמאפיין
google.subjectשאתם ממפים בדייר SCIM חייב להתייחס באופן ייחודי לאותן זהויות שממופות במאפייןgoogle.subjectבספק של מאגר הזהויות של כוח העבודה, באמצעות הדגל--attribute-mapping. אחרי שיוצרים את דייר SCIM, אי אפשר לעדכן את מיפוי הטענות. כדי להחליף אותו, אפשר למחוק את דייר SCIM באופן סופי וליצור חדש באופן מיידי. מידע נוסף על שיקולים לשימוש ב-SCIM זמין במאמר בנושא תמיכה ב-SCIM.
-
-
בסיום הפקודה, מבצעים את הפעולות הבאות:
-
בשדה
baseUriבפלט, שומרים את ה-URI כולו, שמופיע בפורמטhttps://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID. צריך לספק את ה-URI הזה ל-IdP. -
בנוסף, מה-URI, שומרים רק את
SCIM_TENANT_UID. תצטרכו את ה-UID הזה כדי להגדיר מדיניות הרשאה ב-IAM בדייר SCIM בהמשך המאמר הזה.
-
בשדה
-
יצירת טוקן SCIM:
gcloud iam workforce-pools providers scim-tenants tokens create SCIM_TOKEN_ID \ --display-name DISPLAY_NAME \ --scim-tenant SCIM_TENANT_ID \ --workforce-pool WORKFORCE_POOL_ID \ --provider PROVIDER_ID \ --location globalמחליפים את מה שכתוב בשדות הבאים:
SCIM_TOKEN_ID: מזהה לאסימון SCIM-
DISPLAY_NAME: השם המוצג של אסימון SCIM -
WORKFORCE_POOL_ID: המזהה של מאגר כוח העבודה -
SCIM_TENANT_ID: מזהה דייר SCIM -
PROVIDER_ID: המזהה של ספק מאגר הזהויות של כוח העבודה
-
אחרי שהפקודה
gcloud iam workforce-pools providers scim-tenants tokens createמסתיימת, מבצעים את הפעולות הבאות:-
בפלט, שומרים את הערך של
SCIM_TOKENבשדהsecurityToken. צריך לספק את אסימון האבטחה הזה ל-IdP. טוקן האבטחה מוצג רק בפלט הזה, ואם הוא אבד, צריך ליצור טוקן SCIM חדש. -
כדי לבדוק אם
SCIM_TOKENנדחה על ידי מדיניות הארגון, מריצים את הפקודה הבאה:curl -v -H "Authorization: Bearer SCIM_TOKEN" https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Users
אם הפקודה נכשלת עם שגיאה שקשורה להרשאות, מריצים את הפקודה
gcloud organizations add-iam-policy-binding, שמתוארת בשלב מאוחר יותר. אם הפקודה מצליחה, אפשר לדלג על השלב הזה.
-
-
מגדירים מדיניות הרשאה ב-IAM לדייר ולטוקן של SCIM. אם הפקודה
curlבשלב הקודם נכשלה בגלל שגיאה שקשורה להרשאות, צריך להריץ את הפקודה הבאה:gcloud organizations add-iam-policy-binding ORGANIZATION_ID \ --member=serviceAccount:SERVICE_AGENT_EMAIL \ --role roles/iam.scimSyncerמחליפים את מה שכתוב בשדות הבאים:
- ORGANIZATION_ID: מזהה הארגון.
- SERVICE_AGENT_EMAIL: כתובת האימייל של סוכן השירות. כתובת האימייל היא בפורמט הבא:
o-ORGANIZATION_ID-SCIM_TENANT_UID@gcp-sa-iamscim.iam.gserviceaccount.com. הערך SCIM_TENANT_UID מוחזר כשיוצרים את דייר SCIM.
כשמקצים קבוצות בספק הזהויות, צריך לוודא שהשם המוצג של כל קבוצה, כפי שמופיע בשדה displayName, הוא ייחודי בדייר SCIM. מידע נוסף על קבוצות ועל SCIM ב-Microsoft Entra ID זמין במאמר קבוצות.
הגדרת SCIM ב-Microsoft Entra ID
כדי להגדיר SCIM ב-Microsoft Entra ID, מבצעים את הפעולות הבאות:
- פותחים את פורטל Azure ונכנסים כמשתמש עם הרשאות אדמין גלובליות.
- בוחרים באפשרות Microsoft Entra ID > Enterprise Apps (אפליקציות ארגוניות).
- לוחצים על בקשה חדשה.
- בקטע Browse Microsoft Entra App gallery (חיפוש בגלריית האפליקציות של Microsoft Entra), לוחצים על Create your own application (יצירת אפליקציה משלכם).
-
בחלונית Create your own application שמופיעה, מבצעים את הפעולות הבאות:
- בשדה What's the name of your app (מה שם האפליקציה שלך), מזינים את שם האפליקציה.
- בוחרים באפשרות Integrate any other application you don't find in gallery (Non-gallery) (שילוב של אפליקציה אחרת שלא מופיעה בגלריה).
- כדי ליצור את האפליקציה, לוחצים על Create.
-
באפליקציה, מבצעים את הפעולות הבאות:
- בקטע ניהול, לוחצים על הקצאת הרשאות.
- בחלונית השמאלית שמופיעה, לוחצים על הגדרה חדשה.
-
בקטע Admin Credentials (פרטי הכניסה של האדמין), בשדה Tenant URL (כתובת ה-URL של הדייר), מזינים את כתובת ה-URL של SCIM שהתקבלה כשנוצר דייר SCIM, עם התוספת
?aadOptscim062020. צריך להוסיף את המחרוזת?aadOptscim062020לסוף ה-URI הבסיסי.פרמטר השאילתה הזה נדרש על ידי Microsoft Entra ID כדי לוודא שבקשות SCIM PATCH עומדות בתקני SCIM RFC. פרטים נוספים מופיעים במאמרי העזרה של מיקרוסופט.
כתובת ה-URL הסופית של הדייר ב-Microsoft Entra ID צריכה להיות בפורמט הבא:
https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID?aadOptscim062020
מחליפים את
SCIM_TENANT_UIDבמזהה הייחודי של הדייר ב-SCIM. - בשדה Secret token (אסימון סודי), מזינים את האסימון הסודי שקיבלתם כשייצרתם את אסימון SCIM.
- כדי לבדוק את הגדרת ה-SCIM באמצעות איחוד שירותי אימות הזהות של כוח העבודה, לוחצים על בדיקת החיבור.
- כדי לשמור את ההגדרות, לוחצים על Create.
-
בקטע Manage (ניהול), מבצעים את הפעולות הבאות:
- לוחצים על מיפוי מאפיינים.
- לוחצים על Provision Microsoft Entra ID Users (הקצאת משתמשים ב-Microsoft Entra ID).
-
בדף מיפוי מאפיינים, מבצעים את הפעולות הבאות:
-
בטבלה מיפוי מאפיינים, מאתרים את השורה של externalId ולוחצים על עריכה בשורה הזו.
בדף Edit attributes, מבצעים את הפעולות הבאות:
-
בתפריט הנפתח מאפיין המקור, בוחרים באפשרות
objectId. - לוחצים על אישור.
-
בתפריט הנפתח מאפיין המקור, בוחרים באפשרות
- כדי לשמור את מיפוי המאפיינים, לוחצים על Save.
-
בטבלה מיפוי מאפיינים, מאתרים את השורה של externalId ולוחצים על עריכה בשורה הזו.
בדף Edit attributes, מבצעים את הפעולות הבאות:
עדכון הספק כדי להפעיל SCIM
כדי להפעיל SCIM אצל ספק, מגדירים את הדגל --scim-usage בהתאם ליעד המוצר:
-
מופעל לקבוצות (
enabled-for-groups): משמש ל-Gemini Enterprise. משתמש בקבוצות שמסונכרנות עם SCIM להרשאות IAM ולהערכת מדיניות. מאפייני המשתמשים ממשיכים להגיע מאסימוני התחברות של IdP. -
מופעל למשתמשים ולקבוצות (
enabled-for-users-groups): משמש ל-Looker (גרסת Preview). משתמש בנתוני משתמשים וקבוצות שסונכרנו באמצעות SCIM כמקור הראשי של טענות להרשאה ב-IAM ולתהליכי עבודה של כניסה באמצעות OAuth.
הפעלת SCIM לקבוצות (Gemini Enterprise)
OIDC
gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_ID \
--location=LOCATION \
--scim-usage=enabled-for-groups
מחליפים את מה שכתוב בשדות הבאים:
-
PROVIDER_ID: המזהה של ספק מאגר הזהויות של כוח העבודה -
WORKFORCE_POOL_ID: המזהה של מאגר כוח העבודה -
LOCATION: המיקום של מאגר כוח העבודה
SAML
gcloud iam workforce-pools providers update-saml PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_ID \
--location=LOCATION \
--scim-usage=enabled-for-groups
מחליפים את מה שכתוב בשדות הבאים:
-
PROVIDER_ID: המזהה של ספק מאגר הזהויות של כוח העבודה -
WORKFORCE_POOL_ID: המזהה של מאגר כוח העבודה -
LOCATION: המיקום של מאגר כוח העבודה
הפעלת SCIM למשתמשים ולקבוצות (Looker) (גרסת טרום-השקה (Preview))
OIDC
gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_ID \
--location=LOCATION \
--scim-usage=enabled-for-users-groups
מחליפים את מה שכתוב בשדות הבאים:
-
PROVIDER_ID: המזהה של ספק מאגר הזהויות של כוח העבודה -
WORKFORCE_POOL_ID: המזהה של מאגר כוח העבודה -
LOCATION: המיקום של מאגר כוח העבודה
SAML
gcloud iam workforce-pools providers update-saml PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_ID \
--location=LOCATION \
--scim-usage=enabled-for-users-groups
מחליפים את מה שכתוב בשדות הבאים:
-
PROVIDER_ID: המזהה של ספק מאגר הזהויות של כוח העבודה -
WORKFORCE_POOL_ID: המזהה של מאגר כוח העבודה -
LOCATION: המיקום של מאגר כוח העבודה
כדי לוודא שהסנכרון של SCIM פועל, אפשר לקרוא את המאמר אימות סנכרון SCIM.
מיפוי תביעות
כשמגדירים SCIM, מגדירים מיפויי הצהרות (--claim-mapping) בדייר SCIM כדי למפות מאפייני משתמש וקבוצה של SCIM למאפיינים של Google.
מאפיינים נתמכים Google Cloud למיפוי הצהרות בעלות
בטבלה הבאה מפורטים Google Cloud המאפיינים שאפשר למפות בדייר SCIM (--claim-mapping) באמצעות Common Expression Language (CEL):
| מאפייןGoogle Cloud | דרישה | תיאור | ביטויים נתמכים ומגבלות |
|---|---|---|---|
google.subject |
חובה |
מזהה ייחודי של המשתמש המאומת. מאפיין ה-IdP הבסיסי שמשמש לאכלוס |
מוגבל לביטויי הבסיס הבאים (או עם .lowerAscii()):
אורך מקסימלי: 127 בייטים. הערה: אי אפשר לשנות את המיפוי הזה אחרי שיוצרים את דייר SCIM. כדי לעדכן אותו, צריך למחוק את דייר SCIM ולשחזר אותו. |
google.group |
חובה לקבוצות SCIM | מזהה ייחודי של חברות בקבוצה שמסונכרנת באמצעות SCIM. | מוגבל לביטויי הבסיס הבאים (או עם .lowerAscii()):
הערה: אי אפשר לשנות את המיפוי הזה אחרי שיוצרים את דייר 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 בשם המאפיין שרוצים להשתמש בו. לדוגמה, אתם יכולים להגדיר מאפיין מותאם אישית כמו |
עד 50 כללי מיפוי של מאפיינים מותאמים אישית. הגודל המקסימלי לכל כלל: 256 תווים. |
דוגמאות למיפויים לשמירה על עקביות בנושא
כמו שמתואר במאמר מאפיינים נתמכים למיפוי הצהרות, מאפיין ה-IdP הבסיסי שמשמש לאכלוס google.subject חייב להיות זהה גם במיפוי הספק (--attribute-mapping) וגם בדייר SCIM (--claim-mapping). בטבלה הבאה מוצגות דוגמאות להפניה ל-Microsoft Entra ID:
| מאפיין של Google | מיפוי של ספק מאגר זהויות של כוח עבודה | מיפוי של דייר SCIM |
|---|---|---|
google.subject |
assertion.oid |
user.externalId |
google.subject |
assertion.attributes['http://schemas.microsoft.com/identity/claims/objectidentifier'][0] |
user.externalId |
google.subject |
assertion.email |
user.emails[0].value |
google.subject |
assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress'][0] |
user.emails[0].value |
google.subject |
assertion.email.lowerAscii() |
user.emails[0].value.lowerAscii() |
google.subject |
assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress'][0].lowerAscii() |
user.emails[0].value.lowerAscii() |
google.subject |
assertion.preferred_username |
user.userName |
google.subject |
assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name'][0] |
user.userName |
google.subject |
assertion.preferred_username.lowerAscii() |
user.userName.lowerAscii() |
google.subject |
assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name'][0].lowerAscii() |
user.userName.lowerAscii() |
אימות הסנכרון של SCIM
אחרי שמגדירים את SCIM, אפשר להשתמש ב-curl כדי לוודא שהמשתמשים והקבוצות מסתנכרנים בצורה תקינה עם Google Cloud. כדי להשתמש בפקודות האלה צריך טוקן SCIM תקין ומזהה דייר SCIM.
אימות סנכרון המשתמשים
כדי לוודא שהסנכרון של המשתמש בוצע בצורה תקינה, מחפשים את userName של המשתמש באמצעות המסנן הבא:
curl -H "Authorization: Bearer SCIM_TOKEN" \ "https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Users?filter=userName%20eq%20%22USER_NAME%22"
דוגמה לתגובה:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 1,
"Resources": [
{
"id": "USER_ID",
"userName": "USER_NAME",
...
}
]
}
אימות סנכרון הקבוצות
כדי לוודא שקבוצה סונכרנה בצורה תקינה, מחפשים את displayName של הקבוצה באמצעות המסנן הבא:
curl -H "Authorization: Bearer SCIM_TOKEN" \ "https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Groups?filter=displayName%20eq%20%22GROUP_NAME%22"
דוגמה לתגובה:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 1,
"Resources": [
{
"id": "GROUP_ID",
"displayName": "GROUP_NAME",
...
}
]
}
אימות החברות בקבוצה
כדי לבדוק אם משתמש מסוים הוא חבר בקבוצה, משתמשים במסנן שמציין גם את מזהה הקבוצה וגם את מזהה המשתמש.
curl -H "Authorization: Bearer SCIM_TOKEN" \ "https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Groups?filter=id%20eq%20%22GROUP_ID%22%20and%20members%20eq%20%22USER_ID%22"
דוגמה לתגובה אם המשתמש הוא חבר מועדון:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 1,
"Resources": [
{
"id": "GROUP_ID",
"displayName": "GROUP_NAME",
...
}
]
}
דוגמה לתשובה אם המשתמש לא חבר:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 0,
"Resources": []
}
הערה: כדי לקבל את הערכים GROUP_ID ו-USER_ID, קודם צריך למצוא את הקבוצה והמשתמש באמצעות המסננים displayName ו-userName. המזהים מוחזרים בשדה id של התשובה. מחליפים את SCIM_TOKEN, SCIM_TENANT_UID, USER_NAME, GROUP_NAME, GROUP_ID ו-USER_ID בערכים בפועל.
מחיקה בכוח של דייר SCIM
כדי למחוק דייר SCIM בכוח:
-
אם ספק הזהויות מוגדר ל-
--scim-usage=enabled-for-groupsאו ל---scim-usage=enabled-for-users-groups, צריך להשבית אותו בהגדרות הספק:OIDC
gcloud iam workforce-pools providers update-oidc PROVIDER_ID \ --workforce-pool=WORKFORCE_POOL_ID \ --location=LOCATION \ --scim-usage=SCIM_USAGE_UNSPECIFIEDמחליפים את מה שכתוב בשדות הבאים:
-
PROVIDER_ID: המזהה של ספק מאגר הזהויות של כוח העבודה -
WORKFORCE_POOL_ID: המזהה של מאגר כוח העבודה -
LOCATION: המיקום של מאגר כוח העבודה
SAML
gcloud iam workforce-pools providers update-saml PROVIDER_ID \ --workforce-pool=WORKFORCE_POOL_ID \ --location=LOCATION \ --scim-usage=SCIM_USAGE_UNSPECIFIEDמחליפים את מה שכתוב בשדות הבאים:
-
PROVIDER_ID: המזהה של ספק מאגר הזהויות של כוח העבודה -
WORKFORCE_POOL_ID: המזהה של מאגר כוח העבודה -
LOCATION: המיקום של מאגר כוח העבודה
-
- מחיקת הדייר ב-SCIM:
gcloud iam workforce-pools providers scim-tenants delete SCIM_TENANT_ID \ --workforce-pool=WORKFORCE_POOL_ID \ --provider=PROVIDER_ID \ --hard-delete \ --location=globalמחליפים את מה שכתוב בשדות הבאים:
-
SCIM_TENANT_ID: המזהה של דייר SCIM למחיקה -
WORKFORCE_POOL_ID: המזהה של מאגר כוח העבודה -
PROVIDER_ID: המזהה של ספק מאגר הזהויות של כוח העבודה
-
המאמרים הבאים
- פתרון בעיות בהקצאת הרשאות באמצעות SCIM
- מחיקת המשתמשים באיחוד שירותי אימות הזהות של כוח עבודה והנתונים שלהם
- מידע על מוצרי Google Cloud Google Cloud שתומכים באיחוד שירותי אימות הזהות של כוח העבודה
- הגדרת גישה של משתמשים למסוף (מאוחד)