כברירת מחדל, משך ההפעלה המקסימלי של סשנים של איחוד שירותי אימות הזהות של כוח העבודה הוא 12 שעות. אורך סשן מורחב מאפשר לארגונים להגדיר סשנים ארוכים של עד 90 יום ללקוחות Looker (Google Cloud core).
עם משך סשן מורחב, משתמשי כוח העבודה שומרים על חיבור רציף ל-Looker (Google Cloud core) בלי שיידרשו לאימות מחדש יומי מול ספק הזהויות החיצוני (IdP). האינטראקציה של המשתמשים ב-Looker (Google Cloud Core) ממשיכה להיות כפופה להגדרה של משך הסשן ב-Looker (Google Cloud Core). כדי לשמור על אבטחה במהלך הפעלות ממושכות, Google Cloud מתבצע סינכרון תקופתי של מאפייני משתמשים ומינויים לקבוצות ישירות מספק הזהויות החיצוני (IdP) ברקע.
במאמר הזה מוסבר איך להגדיר כללי מדיניות להארכת משך הסשן באמצעות Access Context Manager API עם אמצעי בקרה בהיקף הפרויקט, איך להגדיר את ספק מאגר הזהויות של כוח העבודה ואיך לנהל קישורים פעילים.
סקירה כללית
איחוד שירותי אימות הזהות של כוח העבודה משתמש ב Google Cloud הרשאות גישה של Access Context Manager כדי להגדיר משך הפעלה מורחב:
- Google Cloud קישור גישה: אדמינים מגדירים מדיניות לגבי משך הפעילות באמצעות Access Context Manager, והיא חלה על כל מאגרי הזהויות של כוח העבודה בארגון. באמצעות ההיקף
restricted_project, המדיניות מעניקה סשנים מורחבים של עד 90 ימים, ומשפיעה רק על מופעים של Looker (Google Cloud core) שבבעלות הפרויקט הזה. - סנכרון מאפייני הרקע:
- OIDC: נתמך באמצעות הרשאה באמצעות קוד OIDC עם ההיקף
offline_access(שימוש באסימוני רענון כדי לרענן מעת לעת את מאפייני המשתמשים והמינויים לקבוצות מה-IdP החיצוני ברקע) או באמצעות הקצאת הרשאות SCIM. - SAML: אצל ספקי SAML, מאפייני המשתמשים והמינויים לקבוצות מתעדכנים באמצעות הקצאת הרשאות SCIM.
- OIDC: נתמך באמצעות הרשאה באמצעות קוד OIDC עם ההיקף
- הגנה מפני נתונים לא עדכניים: אם אי אפשר לרענן את מאפייני המשתמש מ-IdP חיצוני תוך 24 שעות (לדוגמה, אם המשתמש בוטל או שההרשאות שלו בוטלו ב-IdP), Google Cloud הסשן יסתיים.
לפני שמתחילים
לפני שמגדירים את משך הזמן המורחב של הסשן, צריך לוודא שיש לכם את ההרשאות הנדרשות לניהול זהויות והרשאות גישה (IAM) ושהפעלתם את ממשקי ה-API הנדרשים:
תפקידים והרשאות נדרשים
כדי לקבל את ההרשאות שדרושות להגדרה של משך הפעילות המורחב, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
- הגדרת ספקים של מאגרי זהויות של כוח עבודה: אדמין של מאגר זהויות של כוח עבודה (
roles/iam.workforcePoolAdmin) במאגר הזהויות של כוח העבודה או בארגון. - ניהול כבילות גישה בענן ב-Access Context Manager: אדמין של כבילות גישה בענן (
roles/accesscontextmanager.gcpAccessAdmin) ברמת הארגון. התפקיד הזה מספק את ההרשאות שנדרשות ליצירה, להצגה, לעדכון ולמחיקה של קישורי גישה ב-Access Context Manager.
הפעלת ממשקי ה-API
מפעילים בפרויקט את ממשקי ה-API של Access Context Manager ו-IAM:
gcloud services enable \
accesscontextmanager.googleapis.com \
iam.googleapis.com
מגבלות ודרישות
לפני שמגדירים משך זמן ממושך יותר של סשן, חשוב לעיין בדרישות ובמגבלות הבאות:
- אפליקציה נתמכת: הארכת אורך הסשן חלה רק על Looker (Google Cloud Core).
- היקף פרויקט חובה (
restricted_project): צריך להגדיר את הגדרות הסשן ב-scopedAccessSettingsבאמצעות היקף הלקוחrestricted_project, שבו מצוין ה Google Cloud פרויקט שבבעלותו מופע Looker (ליבת Google Cloud) (projects/{PROJECT_NUMBER}).- מדיניות ה-ESL חלה רק על אפליקציות של Looker (ליבת Google Cloud) שנמצאות בבעלות הפרויקט שצוין.
- לכל האפליקציות האחרות (ולאפליקציות Looker (Google Cloud core) שבבעלות פרויקטים אחרים) לא תהיה השפעה מהמדיניות.
- טווח משך הסשן: משך הסשן צריך להיות בין שעה אחת (
3600s) לכל הפחות לבין 90 ימים (7776000s) לכל היותר. - דרישות הפרמטרים של הגדרות הסשן:
-
session_length_enabled: צריך להיות מוגדר ל-true. -
session_length: משך הזמן הנדרש הוא בין שעה אחת (3600s) ל-90 יום (7776000s). -
session_reauth_method: צריך להיות לא מוגדר או מוגדר ל-LOGIN. -
use_oidc_max_age: צריך להיות לא מוגדר או מוגדר ל-false. -
max_inactivity: צריך לבטל את ההגדרה (או להשתמש בערך ברירת המחדל0s). אי אפשר להשתמש בערכים של זמן קצוב לתפוגה של סשן לא פעיל עבור קשירות מסוגrestricted_project.
-
- ספקי זהויות נתמכים:
- OIDC: נדרש ספק OIDC שהוגדר עם Authorization Code Flow וההיקף
offline_accessכדי להנפיק אסימוני רענון, או שהוגדר עם SCIM provisioning. - SAML 2.0: נדרשת הפעלה של הקצאת הרשאות SCIM בספק מאגר הזהויות של כוח העבודה.
- OIDC: נדרש ספק OIDC שהוגדר עם Authorization Code Flow וההיקף
- סף הטריות של המאפיינים: נאכף סף טריות קבוע של 24 שעות. אם Google Cloud לא יכול לרענן את מאפייני המשתמש מ-IdP תוך 24 שעות, הסשן יבוטל והמשתמש יצטרך לבצע אימות מחדש.
- הגבלות של Access Context Manager:
- קשירה ארגונית יחידה: קשירות של משך הפעילות המורחב במאגרי זהויות של כוח עבודה צריכות להיות מכוונות אל החשבון הראשי
principalSet://cloudresourcemanager.googleapis.com/organizations/{ORG_ID}/type/WorkforcePool'כל מאגרי הזהויות של כוח העבודה' בארגון. מכיוון שמזהה החשבון הראשי המאוחד הזה חל על כל מאגרי הזהויות של כוח העבודה בארגון, יכולה להיות רק קשירה אחת כזו לכל ארגון. כדי להגדיר סשנים מורחבים לכמה פרויקטים של Looker (Google Cloud core) במאגרי זהויות של כוח עבודה, צריך לכלול כמהrestricted_projectבלוקים של היקף בתוךscopedAccessSettingsהרשימה של הקישור היחיד. - רמות הגישה (
access_levels,dry_run_access_levels) לא אפשריות בהתקשרויות של מאגר כוח העבודה. - אי אפשר להשתמש ב-
sessionSettingsברמה העליונה ישירות ב-GcpUserAccessBindingבשביל קישורי מאגרי עובדים. צריך להגדיר את ההגדרות בתוךscopedAccessSettings.activeSettings.sessionSettings.
- קשירה ארגונית יחידה: קשירות של משך הפעילות המורחב במאגרי זהויות של כוח עבודה צריכות להיות מכוונות אל החשבון הראשי
הגדרת הספק של מאגר כוח העבודה
כדי לאפשר משך סשן ממושך, צריך להגדיר את ספק הזהויות של כוח העבודה כך שיאפשר רענון של מאפיינים ברקע. אתם יכולים להגדיר את הספק לשימוש בפרוטוקול OIDC או בפרוטוקול SAML.
הגדרת ספק OIDC
אפשר לטפל ברענון מאפיינים ברקע לספקי OIDC באמצעות טוקנים לרענון (היקף offline_access) או הקצאת הרשאות SCIM. אם משתמשים ברענון מאפיינים מבוסס-טוקן:
- ב-IdP החיצוני, מגדירים אפליקציית OIDC עם הרשאה באמצעות קוד ומפעילים גישה אופליין כדי שאסימון רענון יוחזר.
- ב- Google Cloud, מוסיפים את
offline_accessלהיקפי ההרשאות הנוספים בספק של מאגר הזהויות של כוח העבודה ב-OIDC.
כדי שמדיניות הארכת משך הסשן תפעל כמו שרוצים, צריך להגדיר גישה אופליין בכל מאגרי הזהויות של כוח העבודה בארגון Google Cloud .
gcloud
אם לספק כבר יש היקפי הרשאות נוספים, צריך לכלול אותם לצד offline_access כדי שלא יוחלפו:
gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_NAME \
--location=global \
--web-sso-additional-scopes="offline_access[,EXISTING_ADDITIONAL_SCOPES]"
מחליפים את מה שכתוב בשדות הבאים:
PROVIDER_ID: השם של ספק הזהויות של כוח העבודה.-
WORKFORCE_POOL_NAME: השם של מאגר הזהויות של כוח העבודה. -
EXISTING_ADDITIONAL_SCOPES: היקפים נוספים שמופרדים בפסיקים שהוגדרו קודם אצל הספק. אם אין לכם היקפי הרשאות נוספים קיימים, אל תכללו את הפרמטר הזה.
API בארכיטקטורת REST
שולחים בקשה ל-PATCH לעדכן את הספק. כוללים את כל ההיקפים הנוספים הקיימים לצד offline_access:
PATCH https://iam.googleapis.com/v1/locations/global/workforcePools/WORKFORCE_POOL_NAME/providers/PROVIDER_ID?updateMask=oidc.webSsoConfig.additionalScopes
גוף הבקשה:
{
"oidc": {
"webSsoConfig": {
"additionalScopes": [
"offline_access"
]
}
}
}
מחליפים את מה שכתוב בשדות הבאים:
-
WORKFORCE_POOL_NAME: השם של מאגר הזהויות של כוח העבודה. -
PROVIDER_ID: המזהה של ספק הזהויות של כוח העבודה.
הגדרת ספק SAML
בספקים שתומכים ב-SAML, כדי לרענן מאפיינים ברקע צריך הקצאת הרשאות SCIM:
- מגדירים דייר SCIM לספק מאגר הזהויות של כוח העבודה.
- מגדירים הקצאת משתמשים וקבוצות מספק הזהויות של SAML לנקודת הקצה של SCIM.
הוראות מפורטות זמינות במאמר הקצאת הרשאות SCIM לאיחוד שירותי אימות הזהויות של כוח העבודה.
הגדרת מדיניות לדוגמה ל-Looker (Google Cloud Core)
יוצרים משאב GcpUserAccessBinding שמקצה את מדיניות משך הסשן המורחב למאגר כוח העבודה של הארגון, ומגדירים את היקף המדיניות לפרויקט שמארח את מופע Looker (Google Cloud core).
gcloud
מגדירים את המדיניות בקובץ YAML בשם esl-binding.yaml:
scopedAccessSettings:
- scope:
clientScope:
restrictedProject:
name: projects/PROJECT_NUMBER
activeSettings:
sessionSettings:
sessionLength: 7776000s
sessionLengthEnabled: true
sessionReauthMethod: LOGIN
יוצרים את קישור הגישה:
gcloud access-context-manager cloud-bindings create \
--organization=ORG_ID \
--federated-principal="principalSet://cloudresourcemanager.googleapis.com/organizations/ORG_ID/type/WorkforcePool" \
--binding-file="esl-binding.yaml"
מחליפים את מה שכתוב בשדות הבאים:
-
ORG_ID: מזהה הארגון ב- Google Cloud (לדוגמה,123456789012). -
PROJECT_NUMBER: מספר הפרויקט שבבעלותו מופע היעד של Looker (Google Cloud Core) (לדוגמה,987654321098). רק אפליקציות Looker (Google Cloud Core) שבבעלות הפרויקט הזה מקבלות את משך הסשן המורחב. -
sessionLength: משך הסשן בשניות, ואחריוs. לדוגמה,7776000sמציין סשן של 90 יום. -
sessionLengthEnabled: מוגדר ל-true. -
sessionReauthMethod: מוגדר ל-LOGIN(או שלא מוגדר).
API בארכיטקטורת REST
שליחת בקשת POST אל Access Context Manager API:
POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
תוכן בקשת JSON:
{
"principal": {
"federatedPrincipal": "principalSet://cloudresourcemanager.googleapis.com/organizations/ORG_ID/type/WorkforcePool"
},
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedProject": {
"name": "projects/PROJECT_NUMBER"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "7776000s",
"sessionLengthEnabled": true,
"sessionReauthMethod": "LOGIN"
}
}
}
]
}
מחליפים את מה שכתוב בשדות הבאים:
-
ORG_ID: מזהה הארגון ב- Google Cloud (לדוגמה,123456789012). -
PROJECT_NUMBER: מספר הפרויקט שבבעלותו מופע היעד של Looker (Google Cloud Core) (לדוגמה,987654321098). רק אפליקציות Looker (Google Cloud Core) שבבעלות הפרויקט הזה מקבלות את משך הסשן המורחב. -
sessionLength: משך הסשן בשניות, ואחריוs. לדוגמה,7776000sמציין סשן של 90 יום. -
sessionLengthEnabled: מוגדר ל-true. -
sessionReauthMethod: מוגדר ל-LOGIN(או לא מוגדר).
צפייה בהתאמות ורישום שלהן
מכיוון שהקישור חל על כל מאגרי כוח העבודה בארגון, יש לכל היותר קישור גישה אחד לכל ארגון.
רשימת איגודים פעילים
כדי להציג את רשימת ההרשאות של מאגר כוח העבודה בארגון, משתמשים במסנן principal:federatedPrincipal:
gcloud
gcloud access-context-manager cloud-bindings list \
--organization=ORG_ID \
--filter="principal:federatedPrincipal"
API בארכיטקטורת REST
GET https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings?filter=principal:federated_principal
קבלת פרטי הקישור
כדי לראות את הפרטים של קישור גישה ספציפי למאגר כוח העבודה:
gcloud
gcloud access-context-manager cloud-bindings describe \
--binding=BINDING_NAME
מחליפים את BINDING_NAME בשם המלא של המשאב של הקישור (לדוגמה, organizations/123456789012/gcpUserAccessBindings/b1234567890).
API בארכיטקטורת REST
GET https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID
מחליפים את מה שכתוב בשדות הבאים:
-
ORG_ID: מזהה הארגון ב- Google Cloud (לדוגמה,123456789012). -
BINDING_ID: המזהה של הרשאת הגישה (לדוגמה,b1234567890).
עדכון של קשירת הרשאות גישה
אתם יכולים לעדכן קישור קיים למאגר כוח עבודה כדי לשנות את משך הסשן, להוסיף היקפי פרויקט חדשים או להסיר היקפי פרויקט קיימים.
gcloud
מגדירים את המדיניות המעודכנת בקובץ YAML בשם
updated-esl-binding.yaml:scopedAccessSettings: - scope: clientScope: restrictedProject: name: projects/PROJECT_NUMBER activeSettings: sessionSettings: sessionLength: 2592000s sessionLengthEnabled: true sessionReauthMethod: LOGINהחלת המדיניות המעודכנת:
- החלפת הגדרות הגישה המוגבלת: כדי להחליף את היקפי הפרויקט הקיימים בהגדרה שמוגדרת ב-
updated-esl-binding.yaml:
gcloud access-context-manager cloud-bindings update \ --binding=BINDING_NAME \ --binding-file="updated-esl-binding.yaml"- הוספה להגדרות קיימות: כדי להוסיף את היקפי הפרויקט שמוגדרים ב-
updated-esl-binding.yamlלהיקפי הפרויקט הקיימים של הקישור בלי להחליף אותם, מעבירים את הדגל--append:
gcloud access-context-manager cloud-bindings update \ --binding=BINDING_NAME \ --binding-file="updated-esl-binding.yaml" \ --append- החלפת הגדרות הגישה המוגבלת: כדי להחליף את היקפי הפרויקט הקיימים בהגדרה שמוגדרת ב-
מחליפים את הערכים הבאים:
* BINDING_NAME: שם המשאב המלא של הקישור (לדוגמה, organizations/123456789012/gcpUserAccessBindings/b1234567890).
* PROJECT_NUMBER: מספר הפרויקט שבבעלותו מופע היעד של Looker (ליבת Google Cloud).
* sessionLength: משך הזמן המעודכן של הסשן (לדוגמה, 2592000s ל-30 ימים).
API בארכיטקטורת REST
שולחים בקשה ל-PATCH כדי לעדכן את הקישור.
- החלפת הגדרות של גישה בהיקף מוגבל: כדי להחליף היקפי פרויקט קיימים:
PATCH https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID?updateMask=scopedAccessSettings
- הוספה להגדרות קיימות: כדי להוסיף היקפי פרויקט חדשים בלי לדרוס את הקיימים, מגדירים את
append=trueפרמטר השאילתה:
PATCH https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID?updateMask=scopedAccessSettings&append=true
תוכן בקשת JSON:
{
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedProject": {
"name": "projects/PROJECT_NUMBER"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "2592000s",
"sessionLengthEnabled": true,
"sessionReauthMethod": "LOGIN"
}
}
}
]
}
מחליפים את הערכים הבאים:
* ORG_ID: מזהה הארגון Google Cloud (לדוגמה, 123456789012).
* BINDING_ID: מזהה הקישור להרשאת הגישה (לדוגמה, b1234567890).
* PROJECT_NUMBER: מספר הפרויקט שבבעלותו מופע היעד של Looker (Google Cloud core).
* sessionLength: משך הזמן המעודכן של הסשן (לדוגמה, 2592000s ל-30 ימים).
מחיקת כבילת גישה
אם תמחקו את הקישור של הגישה למאגר כוח העבודה, משך הפעילות המורחב של הסשן יושבת בכל מאגרי כוח העבודה בארגון.
gcloud
gcloud access-context-manager cloud-bindings delete \
--binding=BINDING_NAME
מחליפים את BINDING_NAME בשם המשאב המלא של הקישור.
API בארכיטקטורת REST
שליחת בקשה ל-DELETE להסרת הקישור:
DELETE https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID
מחליפים את מה שכתוב בשדות הבאים:
-
ORG_ID: מזהה הארגון ב- Google Cloud . -
BINDING_ID: המזהה של קישור ההרשאות שרוצים למחוק.