הגדרה של אמצעי בקרה על פעילות לאימות מחדש

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

אפשר להשתמש באמצעי בקרה על סשנים כדי:

  • אכיפת אימות מחדש בתדירות גבוהה למשתמשים עם הרשאות מורחבות: דרישה ממשתמשים עם הרשאות מורחבות, כמו בעלי פרויקטים ואדמינים לחיוב, לבצע אימות מחדש בתדירות גבוהה יותר.
  • הגדרת סשנים ארוכים יותר לאפליקציות מסוימות: אפשר לאפשר לאפליקציות נתמכות, כמו Google Cloud Console,‏ Google Cloud SDK או אפליקציות ספציפיות של OAuth, ליהנות ממשך סשן ארוך יותר כדי לשמור על חלון ההקשר הגדול שנדרש לביצועים אופטימליים.

הגדרת משך הביקור ושיטות לאימות מחדש

אפשר להגדיר אמצעי בקרה על פעילות כשיוצרים קישור של Access Context Manager. מידע נוסף על אמצעי הבקרה של הסשן זמין במאמר החלת מדיניות על קבוצות משתמשים באמצעות הרשאות גישה.

gcloud

  • הגדרת אמצעי בקרה של ברירת מחדל לסשן לכל האפליקציות

    משתמשים בדגל --session-length כדי להגדיר את משך הסשן. הערך חייב להיות 0s, או בין שעה ל-24 שעות. מציינים את משך הזמן בשעות. לדוגמה, אפשר להשתמש בערך '12h' כדי להגדיר סשן באורך 12 שעות. משתמשים בדגל --session-reauth-method כדי לציין את שיטת האימות מחדש. לדוגמה, אפשר להגדיר משך סשן של 3 שעות (3h) ושיטת אימות מחדש של LOGIN, PASSWORD או SECURITY_KEY.

    ההגדרה הזו תחול על כל האפליקציות, אלא אם היא תוחלף בהגדרות ספציפיות לאפליקציה.

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

    כדי לציין אמצעי בקרה על סשנים עבור אפליקציות ספציפיות באמצעות clientId, מגדירים את scopedAccessSettings בקובץ YAML. כך תוכלו לשנות את הגדרות ברירת המחדל של השליטה בסשן עבור האפליקציות האלה. אחר כך אפשר להעביר את קובץ ה-YAML באמצעות --binding-file flag.

‫API בארכיטקטורת REST

מגדירים את השדות sessionLength ו-sessionReauthMethod באובייקט sessionSettings בגוף ה-JSON של בקשת ה-POST כדי ליצור או לעדכן קישור GcpUserAccessBinding.

  • sessionLength הוא משך הסשן בשניות. הערך חייב להיות 0s, או בין שעה ל-24 שעות, בפורמט של מספר שניות ואחריו s (לדוגמה, 3600s, שמתאים לאורך סשן של שעה).
  • הערך של sessionReauthMethod יכול להיות LOGIN,‏ PASSWORD או SECURITY_KEY.
  • אפשר להשתמש בscopedAccessSettings כדי להגדיר אמצעי בקרה על סשנים שספציפיים לאפליקציות. פרטים נוספים זמינים במאמר בנושא הגדרת תצורות לאפליקציות ספציפיות.

Terraform

במשאב Terraform Google Cloud User Access Binding, מאכלסים את הארגומנט session_settings כדי להגדיר אמצעי בקרה כלליים על משך הסשן שחלים על כל תנועת המשתמשים:

  • session_length: משך הסשן בשניות. לדוגמה, 3600s מגדיר את משך הסשן לשעה אחת. חובה להוסיף את התו s בסוף.
  • session_length_enabled: מגדירים את הערך false כדי להשבית את הגדרות הסשן שצוינו.
  • session_reauth_method: סוג אתגר האימות שמשמש לרענון פרטי הכניסה. האפשרויות הן LOGIN, ‏PASSWORD או SECURITY_KEY.
  • use_oidc_max_age: שדה מתקדם שמשמש להגדרה אם הסשן מכבד פרמטר אופציונלי של OIDC max_age, שמצוין אם פרטי הכניסה לאימות הם טוקן OAuth.

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

הגדרת מדיניות לדוגמה

בדוגמה הבאה מוצג אופן היצירה של אמצעי בקרה על סשן שמחייב אימות מחדש כל 18 שעות באמצעות LOGIN וכל שעתיים עבור אפליקציה ספציפית (SENSITIVE_APP_ID) באמצעות SECURITY_KEY.

הגדרות ברירת מחדל

הדגלים --level, --session-length ו---session-reauth-method בפקודה של Google Cloud CLI (או השדות התואמים בגוף ה-JSON של קריאה ל-API) מגדירים את התנהגות ברירת המחדל של כל האפליקציות שלא הוגדרו באופן מפורש ב-scopedAccessSettings.

הגדרות ספציפיות לאפליקציה

בקטע scopedAccessSettings בקובץ ה-YAML (או בגוף ה-JSON) אפשר לשנות את הגדרות ברירת המחדל של אפליקציות ספציפיות. בדוגמה, הגדרנו דרישה לאימות מחדש כל שעתיים באמצעות SECURITY_KEY עבור האפליקציה עם מזהה הלקוח SENSITIVE_APP_ID.

כדי להחריג אפליקציות מסוימות מהבקרה על סשן, מגדירים את השדה sessionLength לערך 0s או sessionLengthEnabled לערך false. המערכת תתעלם מהשיטה sessionReauthMethod.

gcloud

בדוגמה הבאה מוצגת ההגדרה של הגדרות הסשן:

scopedAccessSettings:
  scope:
    clientScope:
      restrictedClientApplication:
        clientId: SENSITIVE_APP_ID
  activeSettings:
    sessionSettings:
      sessionLength: 7200s
      sessionReauthMethod: SECURITY_KEY
      sessionLengthEnabled: true

יוצרים את קישור הגישה:

gcloud access-context-manager cloud-bindings create \
    --organization=ORG_ID \
    --group-key=GROUP_ID \
    --binding-file=BINDING_FILE_PATH \
    --level=DEFAULT_ACCESS_LEVEL \
    --session-length=SESSION_LENGTH \
    --session-reauth-method LOGIN

מחליפים את מה שכתוב בשדות הבאים:

  • ORG_ID: מזהה הארגון
  • GROUP_ID: מפתח הקבוצה
  • BINDING_FILE_PATH: הנתיב של קובץ הקישור
  • DEFAULT_ACCESS_LEVEL: רמת הגישה שמוגדרת כברירת מחדל
  • SESSION_LENGTH: אורך הסשן, למשל,18h

‫API בארכיטקטורת REST

דוגמה לתוכן בקשת API בפורמט JSON:

{
  "groupKey": "GROUP_ID",
  "accessLevels": [
    "accessPolicies/POLICY_ID/accessLevels/DEFAULT_ACCESS_LEVEL"
  ],
  "scopedAccessSettings": [
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "clientId": "SENSITIVE_APP_ID"
          }
        }
      },
      "activeSettings": {
        "accessLevels": [
          "accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME"
        ],
        "sessionSettings": [
          {
            "sessionLength": "2h",
            "sessionReauthMethod": "SECURITY_KEY",
            "sessionLengthEnabled": true
          }
        ]
      }
    }
  ]

יוצרים את בקשת ה-POST בפורמט הבא:

POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings

מחליפים את ORG_ID במזהה הארגון.

Terraform

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

    resource "google_access_context_manager_gcp_user_access_binding" "gcp_user_access_binding" {
      organization_id = "{Organization ID}"
      group_key = "{Group Key}"
      session_settings {
        session_length = "3600s"
        session_length_enabled = true
        session_reauth_method = "LOGIN"
        use_oidc_max_age = false
      }

כדי לציין את אורך הסשן לבקשות ממשתמשים שמגיעים מקבוצת Google ספציפית באמצעות אפליקציה ספציפית, כמו Google Cloud המסוף, צריך לאכלס את הארגומנט המתאים scoped_access_settings בארגומנט session_settings ב-active_settings. ארגומנטי המשנה בתוך session_settings זהים לארגומנט ברמה העליונה.

    resource "google_access_context_manager_gcp_user_access_binding" "gcp_user_access_binding" {
      organization_id = "{Organization ID}"
      group_key = "{Group Key}"
      scoped_access_settings {
        scope {
          client_scope {
            restricted_client_application {
              name = "Cloud Console"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "3600s"
            session_length_enabled = true
            session_reauth_method = "LOGIN"
            use_oidc_max_age = false
          }
        }
      }
    }

דוגמה להגדרת מדיניות עבור אפליקציות Google Cloud

אתם יכולים להגדיר אמצעי בקרה ספציפיים לאימות מחדש עבור Google Cloud אפליקציות, למשל לדרוש SECURITY_KEY עבור Google Cloud SDK ו-LOGIN עבור Google Cloud המסוף. בדוגמה הבאה מוצג איך ליצור אמצעי בקרה על סשנים שדורש אימות מחדש כל שעה עבור Google Cloud SDK עם SECURITY_KEY, וכל 4 שעות עבור מסוף Google Cloud עם LOGIN.

בקטע scopedAccessSettings בקובץ ה-YAML (או בגוף ה-JSON) אפשר לשנות את הגדרות ברירת המחדל של אפליקציות ספציפיות. בדוגמה הזו, אנחנו מגדירים דרישה לאימות מחדש כל שעה באמצעות SECURITY_KEY עבור Google Cloud SDK, ודרישה לאימות מחדש כל ארבע שעות באמצעות LOGIN עבור Google Cloud המסוף באמצעות השדה name כדי לזהות את האפליקציות האלה.

כדי להחריג אפליקציות מסוימות מהבקרה על סשן, מגדירים את השדה sessionLength לערך 0s או sessionLengthEnabled לערך false. המערכת תתעלם מהשיטה sessionReauthMethod.

gcloud

בדוגמה הבאה מוצגת ההגדרה של הגדרות הסשן:

scopedAccessSettings:
- scope:
    clientScope:
      restrictedClientApplication:
        name: Google Cloud SDK
  activeSettings:
    sessionSettings:
      sessionLength: 3600s
      sessionReauthMethod: SECURITY_KEY
      sessionLengthEnabled: true
- scope:
    clientScope:
      restrictedClientApplication:
        name: Cloud Console
  activeSettings:
    sessionSettings:
      sessionLength: 14400s
      sessionReauthMethod: LOGIN
      sessionLengthEnabled: true

יוצרים את קישור הגישה:

gcloud access-context-manager cloud-bindings create \
    --organization=ORG_ID \
    --group-key=GROUP_ID \
    --binding-file=BINDING_FILE_PATH

מחליפים את מה שכתוב בשדות הבאים:

  • ORG_ID: מזהה הארגון
  • GROUP_ID: מפתח הקבוצה
  • BINDING_FILE_PATH: הנתיב של קובץ הקישור

‫API בארכיטקטורת REST

דוגמה לתוכן בקשת API בפורמט JSON:

{
  "groupKey": "GROUP_ID",
  "scopedAccessSettings": [
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "name": "Google Cloud SDK"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
            "sessionLength": "3600s",
            "sessionReauthMethod": "SECURITY_KEY",
            "sessionLengthEnabled": true
          }
      }
    },
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "name": "Cloud Console"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
            "sessionLength": "14400s",
            "sessionReauthMethod": "LOGIN",
            "sessionLengthEnabled": true
          }
      }
    }
  ]
}

יוצרים את בקשת ה-POST בפורמט הבא:

POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings

מחליפים את ORG_ID במזהה הארגון.

Terraform

כדי לציין את הגדרות אורך הסשן עבור Google Cloud SDK ו- Google Cloud Console, מאכלסים את הארגומנט המתאים scoped_access_settings:

    resource "google_access_context_manager_gcp_user_access_binding" "gcp_user_access_binding" {
      organization_id = "{Organization ID}"
      group_key = "{Group Key}"
      scoped_access_settings {
        scope {
          client_scope {
            restricted_client_application {
              name = "Google Cloud SDK"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "3600s"
            session_length_enabled = true
            session_reauth_method = "SECURITY_KEY"
            use_oidc_max_age = false
          }
        }
      }
      scoped_access_settings {
        scope {
          client_scope {
            restricted_client_application {
              name = "Cloud Console"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "14400s"
            session_length_enabled = true
            session_reauth_method = "LOGIN"
            use_oidc_max_age = false
          }
        }
      }
    }