יצירה של רמת גישה בהתאמה אישית

אתם יכולים להשתמש ברמות גישה בהתאמה אישית ב-Access Context Manager כדי לשלוט בגישה למשאביGoogle Cloud באמצעות ביטויים בוליאניים שנכתבו בקבוצת משנה של Common Expression Language‏ (CEL). אתם יכולים להעריך מאפייני בקשה – כמו פרויקט הרשת המקורי, כתובת ה-IP, הזהות ונתוני המכשיר משירותי אבטחה של צד שלישי – כדי לאכוף דרישות גישה מפורטות ומבוססות-הקשר.

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

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

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

אפשר ליצור רמת גישה מותאמת אישית באמצעות מסוף Google Cloud , כלי שורת הפקודה gcloud,‏ API בארכיטקטורת REST או RPC.

המסוף

כדי ליצור רמת גישה בהתאמה אישית באמצעות מסוף Google Cloud :

  1. פותחים את הדף Access Context Manager במסוף Google Cloud .

    פתיחת הדף של Access Context Manager

  2. אם מתבקשים, בוחרים את הארגון.

  3. בחלק העליון של הדף Access Context Manager, לוחצים על New.

  4. בחלונית New Access Level:

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

    2. בקטע Create Conditions in (יצירת תנאים ב), בוחרים באפשרות Advanced Mode (מצב מתקדם).

    3. בקטע תנאים, מזינים את הביטויים לרמת הגישה המותאמת אישית. התנאי חייב להניב ערך בוליאני יחיד.

      לדוגמאות ולמידע נוסף על התמיכה ב-Common Expression Language‏ (CEL) ועל רמות גישה בהתאמה אישית, קראו את המפרט של רמות גישה בהתאמה אישית.

    4. לוחצים על Save.

gcloud

כדי ליצור רמת גישה בהתאמה אישית באמצעות כלי שורת הפקודה gcloud, משתמשים בפקודה gcloud access-context-manager levels create.

gcloud access-context-manager levels create LEVEL_NAME \
--title=TITLE \
--custom-level-spec=FILE \
--description=DESCRIPTION \
--policy=POLICY_NAME

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

  • ‫LEVEL_NAME: שם ייחודי לרמת הגישה. השם צריך להתחיל באות ולכלול רק אותיות, מספרים וקווים תחתונים. השם יכול להכיל עד 50 תווים.

  • ‫TITLE: השם הקצר והקריא לאנשים של רמת הגישה.

  • ‫FILE: קובץ YAML שמכיל את ביטוי ה-CEL שלכם בפורמט של זוג יחיד של מפתח/ערך: expression: "CEL_EXPRESSION".

    לדוגמאות ולמידע נוסף על תמיכה ב-Common Expression Language‏ (CEL) ורמות גישה בהתאמה אישית, ראו מפרט רמת גישה בהתאמה אישית.

  • ‫DESCRIPTION: תיאור קריא לאנשים של רמת הגישה.

  • ‫POLICY_NAME: השם המספרי של מדיניות בקרת הגישה של הארגון.

אפשר גם לכלול את הדגלים הרחבים של gcloud.

קובץ YAML של custom-level-spec

כשמשתמשים בכלי שורת הפקודה gcloud כדי ליצור רמת גישה בהתאמה אישית, צריך לספק קובץ YAML לאפשרות custom-level-spec. קובץ ה-YAML מגדיר ביטוי CEL שמוביל לערך בוליאני יחיד. קובץ ה-YAML צריך להכיל צמד מפתח/ערך אחד בפורמט expression: "CEL_EXPRESSION". הערך של expression חייב להיות מחרוזת.

קובץ YAML לדוגמה

expression: "device.encryption_status == DeviceEncryptionStatus.ENCRYPTED && (origin.region_code in ['US'] || device.is_admin_approved_device)"

פקודה לדוגמה

gcloud access-context-manager levels create Custom_Trust \
    --custom-level-spec=customspec.yaml \
    --description="Custom access level for corp." \
    --title="Custom Trust Level" \
    --policy=1521580097614100

REST

כדי ליצור רמת גישה בהתאמה אישית באמצעות API בארכיטקטורת REST, משתמשים ב-method‏ accessPolicies.accessLevels.create.

גוף הבקשה

בגוף הבקשה של הקריאה, כוללים מופע של האובייקט AccessLevel.

{
  "name": string,
  "title": string,
  "description": string,
  "custom": {
    "expr": {
      "expression": string,
      "title": string,
      "description": string
    }
  }
}

בשדה custom, יוצרים אובייקט שכולל את ביטויי ה-CEL של רמת הגישה בהתאמה אישית. הביטוי המלא חייב להחזיר ערך בוליאני. השדות title ו-description הם אופציונליים.

דוגמה

{
  "name": "example_custom_level",
  "title": "Example custom level",
  "description": "An example custom access level.",
  "custom":  {
    "expr": {
      "expression": "device.is_corp_owned == true || (device.os_type != OsType.OS_UNSPECIFIED && device.is_admin_approved_device == true)",
      "title": "Check for known devices",
      "description": "Permits requests from corp-owned devices and admin-approved devices with a known OS."
    }
  }
}

RPC

כדי ליצור רמת גישה בהתאמה אישית באמצעות RPC, צריך להפעיל את CreateAccessLevel.

בשדה access_level, צריך לכלול מופע של AccessLevel.

שדות
name
סוג מחרוזת
תיאור

חובה.

שם המשאב של רמת הגישה. ‫POLICY_ID הוא השם המספרי של מדיניות הגישה של הארגון. השדה SHORT_NAME חייב להתחיל באות, ולכלול רק אותיות, מספרים וקווים תחתונים.

פורמט:

            accessPolicies/policy_id/accessLevels/short_name
            
title
סוג מחרוזת
תיאור

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

description
סוג מחרוזת
תיאור

תיאור של רמת הגישה.

custom
סוג מחרוזת
תיאור

ביטויי CEL לרמת הגישה המותאמת אישית. הביטוי המלא חייב להניב ערך בוליאני.

דוגמאות לרמות גישה בהתאמה אישית

בקטע הזה מפורטות דוגמאות לרמות גישה בהתאמה אישית.

הגבלת הגישה על סמך פרויקט המקור

אתם יכולים להגביל את הגישה למשאבים כך שרק בקשות שמגיעות מ Google Cloud פרויקטים ספציפיים ומפרויקטים קשורים של דיירים יקבלו אישור. הגבלת הגישה לפי פרויקט שימושית לאבטחת אינטראקציות של Workload Identity, שהן זהויות לא אנושיות ששייכות לפרויקט ב- Google Cloud . זהויות Workload Identity כוללות חשבונות שירות, זהויות Workload Identity Federation, זהויות מנוהלות של עומסי עבודה וזהויות Agent Identity.

הביטוי הבא מעניק גישה אם הבקשה מגיעה מ-projects/123456789:

originatesFromProjects(origin, ["projects/123456789"])

הגבלת הגישה של Workload Identity לפרויקט הרשת שלו

אפשר להגביל Workload Identity כך שהיא תוכל לשלוח רק בקשות מרשתות שמשויכות ל Google Cloud פרויקט שבבעלותו Workload Identity. הפרויקט יכול להיות פרויקט ברמה העליונה או פרויקט דייר (tenant) של הפרויקט ברמה העליונה. הגבלת הגישה לפי פרויקט שימושית לאבטחת האינטראקציות של Workload Identity. בניגוד ל-originatesFromProjects, לא צריך לציין את מספרי הפרויקטים בביטוי, וכך אפשר להשתמש באותה רמת גישה בכמה פרויקטים.

הביטוי הבא מעניק גישה אם פרויקט הרשת שממנו מגיעה הבקשה (או פרויקטים קשורים של דיירים) תואם לפרויקט שבבעלותו הזהות של כוח העבודה שקוראת ל-API:

request.auth.matchesNetworkProject(origin)