אתם יכולים להשתמש ברמות גישה בהתאמה אישית ב-Access Context Manager כדי לשלוט בגישה למשאביGoogle Cloud באמצעות ביטויים בוליאניים שנכתבו בקבוצת משנה של Common Expression Language (CEL). אתם יכולים להעריך מאפייני בקשה – כמו פרויקט הרשת המקורי, כתובת ה-IP, הזהות ונתוני המכשיר משירותי אבטחה של צד שלישי – כדי לאכוף דרישות גישה מפורטות ומבוססות-הקשר.
כדי להשתמש במאפייני מכשיר בביטויים של רמות גישה בהתאמה אישית, צריך מינוי בתשלום. פרטים נוספים על יצירת ביטויי CEL זמינים במפרט של רמת גישה בהתאמה אישית. אחרי שיוצרים רמת גישה בהתאמה אישית, אפשר לנהל אותה באותו אופן שבו מנהלים רמת גישה בסיסית.
לפני שמתחילים
- יוצרים מדיניות גישה לארגון.
יצירת רמת גישה בהתאמה אישית
אפשר ליצור רמת גישה מותאמת אישית באמצעות מסוף Google Cloud , כלי שורת הפקודה gcloud, API בארכיטקטורת REST או RPC.
המסוף
כדי ליצור רמת גישה בהתאמה אישית באמצעות מסוף Google Cloud :
פותחים את הדף Access Context Manager במסוף Google Cloud .
אם מתבקשים, בוחרים את הארגון.
בחלק העליון של הדף Access Context Manager, לוחצים על New.
בחלונית New Access Level:
בתיבה שם רמת הגישה מזינים את השם של רמת הגישה. הכותרת חייבת להיות באורך של עד 50 תווים, להתחיל באות ויכולה להכיל רק מספרים, אותיות, קווים תחתונים ורווחים.
בקטע Create Conditions in (יצירת תנאים ב), בוחרים באפשרות Advanced Mode (מצב מתקדם).
בקטע תנאים, מזינים את הביטויים לרמת הגישה המותאמת אישית. התנאי חייב להניב ערך בוליאני יחיד.
לדוגמאות ולמידע נוסף על התמיכה ב-Common Expression Language (CEL) ועל רמות גישה בהתאמה אישית, קראו את המפרט של רמות גישה בהתאמה אישית.
לוחצים על 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
|
|
||||
title
|
|
||||
description
|
|
||||
custom
|
|
||||
דוגמאות לרמות גישה בהתאמה אישית
בקטע הזה מפורטות דוגמאות לרמות גישה בהתאמה אישית.
הגבלת הגישה על סמך פרויקט המקור
אתם יכולים להגביל את הגישה למשאבים כך שרק בקשות שמגיעות מ 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)