הגדרת אורך פעולה מורחב לאיחוד שירותי אימות הזהות של כוח העבודה

כברירת מחדל, משך ההפעלה המקסימלי של סשנים של איחוד שירותי אימות הזהות של כוח העבודה הוא 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.
  • הגנה מפני נתונים לא עדכניים: אם אי אפשר לרענן את מאפייני המשתמש מ-IdP חיצוני תוך 24 שעות (לדוגמה, אם המשתמש בוטל או שההרשאות שלו בוטלו ב-IdP), Google Cloud הסשן יסתיים.

לפני שמתחילים

לפני שמגדירים את משך הזמן המורחב של הסשן, צריך לוודא שיש לכם את ההרשאות הנדרשות לניהול זהויות והרשאות גישה (IAM) ושהפעלתם את ממשקי ה-API הנדרשים:

תפקידים והרשאות נדרשים

כדי לקבל את ההרשאות שדרושות להגדרה של משך הפעילות המורחב, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

הפעלת ממשקי ה-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 בספק מאגר הזהויות של כוח העבודה.
  • סף הטריות של המאפיינים: נאכף סף טריות קבוע של 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. אם משתמשים ברענון מאפיינים מבוסס-טוקן:

  1. ב-IdP החיצוני, מגדירים אפליקציית OIDC עם הרשאה באמצעות קוד ומפעילים גישה אופליין כדי שאסימון רענון יוחזר.
  2. ב- 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:

  1. מגדירים דייר SCIM לספק מאגר הזהויות של כוח העבודה.
  2. מגדירים הקצאת משתמשים וקבוצות מספק הזהויות של 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

  1. מגדירים את המדיניות המעודכנת בקובץ YAML בשם updated-esl-binding.yaml:

    scopedAccessSettings:
    - scope:
        clientScope:
          restrictedProject:
            name: projects/PROJECT_NUMBER
      activeSettings:
        sessionSettings:
          sessionLength: 2592000s
          sessionLengthEnabled: true
          sessionReauthMethod: LOGIN
    
  2. החלת המדיניות המעודכנת:

    • החלפת הגדרות הגישה המוגבלת: כדי להחליף את היקפי הפרויקט הקיימים בהגדרה שמוגדרת ב-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: המזהה של קישור ההרשאות שרוצים למחוק.