ניהול קישורי גישה

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

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

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

הצגת רשימה של כבילות גישה

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

gcloud

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

gcloud access-context-manager cloud-bindings list \
  --organization ORGANIZATION_ID

ORG_ID: מזהה הארגון. אם המאפיין access-context-manager/organization לא הוגדר, מחליפים את ORG_ID בדגל האופציונלי --organization במזהה הארגון שבו השתמשתם כשיצרתם את התפקיד GcpAccessAdmin.

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

  --filter="FILTER"

מחליפים את FILTER במסנן שמתאר את המשאב שמדיניות הגישה קשורה אליו – לדוגמה:

  • קבוצות משתמשים: principal:group_key

  • חשבונות שירות: principal:service_account OR principal:service_account_project_number

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

כדי להציג רשימה של כל ההרשאות לגישה ל-USER_LOGIN, מריצים את הפקודה הבאה:

curl -H "X-Goog-User-Project: PROJECT_ID" -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/organizations/ORGANIZATION_ID/gcpUserAccessBindings"

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

curl -H "X-Goog-User-Project: PROJECT_ID" -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/organizations/ORGANIZATION_ID/gcpUserAccessBindings?filter=FILTER"

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

  • PROJECT_ID: מזהה הפרויקט
  • ORGANIZATION_ID: מזהה הארגון
  • FILTER: מסנן שמתאר את המשאב שמדיניות הגישה קשורה אליו. לדוגמה:

    • קבוצות משתמשים: principal:group_key

    • חשבונות שירות: principal:service_account OR principal:service_account_project_number

צפייה בהרשאת גישה

אחרי שיוצרים את ההרשאות לקבוצת משתמשים, הגישה ל-Google Cloud console ול- Google Cloud APIs נשלטת על סמך רמת הגישה שנקבעה.

אפשר לראות את הפרטים של הקישור לגישה שיצרתם, לערוך אותו או למחוק אותו.

המסוף

  1. נכנסים לדף Access Context Manager במסוף Google Cloud .

    מעבר אל Access Context Manager

  2. אם מתבקשים, בוחרים פרויקט. כבילות הגישה מפורטות בדף Access Context Manager.

gcloud

כדי לראות את הפרטים של הרשאת גישה, מריצים את הפקודה הבאה:

  gcloud access-context-manager cloud-bindings describe \
  --binding=BINDING_ID

BINDING_ID הוא המזהה של שיוך הרשאות הגישה או מזהה מוגדר במלואו של שיוך הרשאות הגישה.

API

כדי לראות את הפרטים של הרשאת גישה:

ה-method של ה-HTTP וכתובת ה-URL:

GET https://accesscontextmanager.googleapis.com/v1/BINDING_ID

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

curl

מריצים את הפקודה הבאה:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/BINDING_ID"

PowerShell

מריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://accesscontextmanager.googleapis.com/v1/BINDING_ID" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON שדומה לזו:


{
  "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
  "groupKey": "045jfvxd0ybeul8",
  "accessLevels": [
    "accessPolicies/305009197125/accessLevels/device_lock"
  ],
  "dryRunAccessLevels": [
    "accessPolicies/305009197125/accessLevels/another"
  ]
}

עדכון של הרשאת גישה

אפשר לעדכן את הרשאות הגישה כדי לבצע את הפעולות הבאות:

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

המסוף

  1. נכנסים לדף Access Context Manager במסוף Google Cloud .

    מעבר אל Access Context Manager

  2. אם מתבקשים, בוחרים פרויקט.

  3. בדף Access Context Manager, בוחרים את הרשאות הגישה ולוחצים על עריכה כדי לעדכן אותן.

אי אפשר לעדכן את הרשאות הגישה באמצעות רמות גישה של הרצה יבשה או אמצעי בקרה של סשן במסוף Google Cloud .

gcloud

  1. יוצרים קובץ YAML של קישור.

    gcloud access-context-manager cloud-bindings update \
      --binding=ACCESS_BINDING \
      --binding-file=BINDING_FILE_PATH \
      --level=DEFAULT_ACCESS_LEVEL \
      --dry-run-level=DEFAULT_DRY_RUN_ACCESS_LEVEL
    [  --session-length=DEFAULT_SESSION_LENGTH                ]
    [  --session-reauth-method=DEFAULT_SESSION_REAUTH_METHOD  ]
    

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

    • הערך ACCESS_BINDING הוא בפורמט organizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME.
    • BINDING_FILE_PATH: הנתיב לקובץ ה-YAML שמכיל את סכמת קישור הגישה. קובץ הקישור תומך רק ב-scopedAccessSettings.
    • DEFAULT_ACCESS_LEVEL: השם האופציונלי של רמת הגישה, בפורמט accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME. מחליפים את POLICY_ID במזהה מדיניות הגישה ואת ACCESS_LEVEL_NAME בשם רמת הגישה.
    • DEFAULT_DRY_RUN_ACCESS_LEVEL_2: שם אופציונלי של רמת גישה בפורמט accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME. כוללים את הדגל הזה כדי להחיל את רמת הגישה שצוינה בהרצה היבשה על כל האפליקציות כברירת מחדל, אם הן לא צוינו ב-YAML.
    • DEFAULT_SESSION_LENGTH: משך הסשן האופציונלי בפורמט של שעות, למשל 15h ל-15 שעות או 2h לשעתיים.
    • DEFAULT_SESSION_REAUTH_METHOD: השיטה האופציונלית לאתגר משתמשים לאמת מחדש את הזהות שלהם, שיכולה להיות אחת מהאפשרויות הבאות:
      • LOGIN: החלת הכניסה הרגילה, שיכולה לכלול MFA או גורמים אחרים שמוגדרים ב-Workspace.
      • PASSWORD: נדרשת רק סיסמה, גם אם מוגדרים גורמים אחרים. אם הסיסמאות מנוהלות באמצעות IdP חיצוני, המשתמשים מופנים אל ה-IdP. אם הסשן של ספק ה-IdP פעיל, המשתמשים עוברים אימות מחדש באופן מרומז. אם ה-IdP לא פעיל, המשתמשים צריכים להיכנס דרך ה-IdP.
      • SECURITY_KEY: דורש מפתח אבטחה פיזי.

    איך הארגומנטים --level ו---binding-file פועלים יחד

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

    עבודה עם אמצעי בקרה על סשנים

    • כדי להגדיר אמצעי בקרה על הפעילות כברירת מחדל לכל האפליקציות, משתמשים ב---session-length וב---session-reauth-method.
    • אם מגדירים גם אמצעי בקרה על סשנים בקובץ ה-YAML, אמצעי הבקרה האלה מבטלים את הגדרות ברירת המחדל של האפליקציות הספציפיות האלה.
    • חובה להשתמש ב---session-length וב---session-reauth-method ביחד.

    כדי להסיר רמת גישה שמוגדרת כברירת מחדל או רמת גישה שמוגדרת כברירת מחדל להרצה יבשה, צריך לספק מחרוזת ריקה, כמו --level= או --dry-run-level=. אם לא מספקים את הארגומנטים האלה, הפקודה update לא מבצעת שינויים.

    כדי להסיר אמצעי בקרה על פעילות, מגדירים את --session-length=0.

API

  1. יוצרים גוף JSON.

    {
      "accessLevels": [
        "DEFAULT_ACCESS_LEVEL"
      ],
      "scopedAccessSettings": [
        {
          "scope": {
            "clientScope": {
              "restrictedClientApplication": {
                "clientId": "CLIENT_ID"
              }
            }
          },
          "activeSettings": {
            "accessLevels": [
              "ACCESS_LEVEL_A"
            ],
            "sessionSettings": {
              "sessionLength": "SESSION_LENGTH",
              "sessionReauthMethod": "SESSION_REAUTH_METHOD",
              "sessionLengthEnabled": true
            }
          }
        },
        {
          "scope": {
            "clientScope": {
              "restrictedClientApplication": {
                "name": "CLIENT_NAME"
              }
            }
          },
          "activeSettings": {
            "accessLevels": [
              "ACCESS_LEVEL_C"
            ]
          }
        }
      ]
    }
    

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

    • DEFAULT_ACCESS_LEVEL: השם האופציונלי של רמת הגישה, בפורמט accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME. מחליפים את POLICY_ID במזהה מדיניות הגישה ואת ACCESS_LEVEL_NAME בשם רמת הגישה.
    • CLIENT_ID: מזהה הלקוח ב-OAuth. אפשר להשתמש ב-clientId או ב-name כשבאפליקציה יש sessionSettings.
    • ACCESS_LEVEL_A: שם של רמת גישה בפורמט accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME.
    • SESSION_LENGTH: משך הזמן של הסשן בפורמט משך הזמן ISO 8601, למשל 30m ל-30 דקות או 2h לשעתיים.
    • SESSION_REAUTH_METHOD: השיטה האופציונלית לאתגר משתמשים ולאמת מחדש את הזהות שלהם. השיטה חייבת להיות אחת מהאפשרויות הבאות:

      • LOGIN: החלת הכניסה הרגילה, שיכולה לכלול MFA או גורמים אחרים שמוגדרים ב-Workspace.
      • PASSWORD: נדרשת רק סיסמה, גם אם מוגדרים אמצעי אימות אחרים. אם הסיסמאות מנוהלות באמצעות IdP חיצוני, המשתמשים מופנים אל ה-IdP. אם הסשן ב-IdP פעיל, המשתמשים מאומתים מחדש באופן מרומז. אם ה-IdP לא פעיל, המשתמשים צריכים להיכנס דרך ה-IdP.
      • SECURITY_KEY: דורש מפתח אבטחה פיזי.
    • CLIENT_NAME: שם הלקוח. אפשר להשתמש ב-name או ב-clientId כשבאפליקציה יש sessionSettings.

    • ACCESS_LEVEL_C: שם של רמת גישה בפורמט accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME.

  2. שולחים את בקשת ה-PATCH.

    PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING?updateMask=FIELD_MASK
    

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

    • הערך ACCESS_BINDING הוא בפורמט organizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME.
    • FIELD_MASK: רשימה מופרדת בפסיקים של שדות שרוצים לעדכן. זהו שדה חובה. הפרמטר הזה מציין לממשק ה-API אילו חלקים בהגדרת כבילת הגישה צריך לשנות.

    fieldMask צריך להכיל את מפתחות ה-JSON ברמה העליונה בגוף הבקשה שרוצים לעדכן, שיכולים להכיל את accessLevels,‏ dryRunAccessLevels ו-scopedAccessSettings.

    אם הפעולה בוצעה ללא שגיאות, תקבלו ייצוג של אובייקט ה-JSON. אם יש בעיה, מוצגת הודעת שגיאה.

מחיקת הרשאות גישה

המסוף

  1. נכנסים לדף Access Context Manager במסוף Google Cloud .

    מעבר אל Access Context Manager

  2. אם מתבקשים, בוחרים פרויקט.

  3. בדף Access Context Manager, בוחרים את הרשאות הגישה ולוחצים על מחיקה.

gcloud

   gcloud access-context-manager cloud-bindings delete \
       --binding ACCESS_BINDING

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

  • הערך ACCESS_BINDING הוא בפורמט organizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME.
  • ACCESS_BINDING_NAME היא המחרוזת הייחודית שמוחזרת עבור המזהה name כשנוצרת ההגדרה של הרשאות הגישה.

API

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ACCESS_BINDING_NAME היא המחרוזת הייחודית שמוחזרת עבור המזהה name כשנוצרת ההגדרה של הרשאות הגישה.

ה-method של ה-HTTP וכתובת ה-URL:

DELETE https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME

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

curl

מריצים את הפקודה הבאה:

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME"

PowerShell

מריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME" | Select-Object -Expand Content

אמורים לקבל קוד סטטוס של הצלחה (2xx) ותגובה ריקה.