במאמר הזה מתוארים תרחישי שימוש בבקרת גישה מבוססת-הקשר, כולל כללי מדיניות שמשתמשים ברמות גישה מותאמות אישית. בדוגמאות האלה, יוצרים רמות גישה בהתאמה אישית במצב מתקדם באמצעות Common Expression Language (CEL).
אם אתם מעדיפים, אתם יכולים גם להשתמש בפונקציות ובפקודות מאקרו כשאתם יוצרים רמות גישה מותאמות אישית באמצעות ביטויי CEL.
דוגמאות לרמות גישה שפותחו במצב בסיסי (באמצעות הממשק של בקרת הגישה מבוססת-הקשר) זמינות במאמר דוגמאות לבקרת גישה מבוססת-הקשר במצב בסיסי.
דוגמאות לאימות
אפשר לאפשר גישה למשתמשים על סמך עוצמת פרטי הכניסה שלהם
כדי לשפר את אבטחת הגישה לאפליקציות שמכילות נתונים רגישים, אתם יכולים לקבוע איך המשתמש מאומת במערכת כדי להחליט אם הוא יקבל גישה לאפליקציה.
לדוגמה, אפשר לאפשר למשתמשים שמחוברים רק באמצעות סיסמה לגשת רק לאפליקציות שלא מכילות מידע רגיש, בעוד שלמשתמשים שמחוברים באמצעות מפתח אבטחה פיזי כגורם אימות שני אפשר לאפשר לגשת לאפליקציות הארגוניות הרגישות ביותר.
רמת הגישה הזו משתמשת במאפיינים של request.auth כדי לוודא שהמשתמשים נכנסים לחשבון באמצעות סיסמה ומפתח חומרה לאימות דו-שלבי, ויכולים לגשת לאפליקציות רגישות.
request.auth.claims.crd_str.pwd == true && request.auth.claims.crd_str.hwk == true
אפשר גישה למשתמשים עם פרטי כניסה חזקים לאימות
אדמינים רוצים לאכוף גישה למשאבים ארגוניים רק אחרי שהמשתמש מאומת באמצעות פרטי כניסה חזקים. בדוגמה הבאה נעשה שימוש במאפיינים levels ו-request.auth באופן הבא:
- אם המשתמש מגיע ממכשיר ארגוני, כל שיטת MFA תספיק (השיטות יכולות להיות התראה בדחיפה, מפתח אבטחה פיזי או מפתח אבטחה בתוכנה, או סיסמה חד-פעמית), למעט SMS.
- אם המשתמש מגיע ממכשיר שלא שייך לארגון, הוא חייב להשתמש במפתח אבטחה פיזי או וירטואלי
// Require basic MFA (not SMS) on corporate devices and security key (hardware or software) if not
levels.Require_Secure_Device &&
(
(
levels.Require_Corporate_Device &&
request.auth.claims.crd_str.mfa &&
!request.auth.claims.crd_str.sms
) ||
(
!levels.Require_Corporate_Device &&
(
request.auth.claims.crd_str.hwk || request.auth.claims.crd_str.swk
)
)
)
אישור גישה לאפליקציות רק מסשנים שקשורים ל-DBSC
מוגבל לאפליקציות אינטרנט למחשב ולא רלוונטי לאפליקציות לנייד או לממשקי API
כדי לשפר את אבטחת הגישה לאפליקציות שמכילות מידע אישי רגיש, אתם יכולים לדרוש אישורים של סשן שקשור למכשיר (DBSC). תכונת DBSC מקשרת את הסשן של המשתמש למכשיר שלו כשהוא משתמש בדפדפן Chrome ב-Windows, מה שיכול להפחית באופן משמעותי את הסיכון לחטיפת סשן.
רמת הגישה הזו משתמשת במאפיין request.auth כדי לוודא שהסשנים של המשתמש מקושרים למכשיר ספציפי. אם כן, הגישה לאפליקציה תינתן. אם לא (כלומר, הסשן לא קשור ל-DBSC), הגישה תידחה.
כדי למנוע שגיאות, מפעילים את DBSC בכל חשבונות המשתמשים שחלים עליהם רמת הגישה הזו. פרטים נוספים זמינים במאמר בנושא הפעלת DBSC.
לפני שמפעילים את המצב הפעיל, צריך להגדיר את רמת הגישה למצב מעקב. במצב מעקב, אפשר לבדוק את ההשפעה של אכיפת רמת הגישה בלי לשבש את גישת המשתמשים.
אפשר להשתמש בביטוי ה-CEL הזה כדי ליצור רמת גישה מותאמת אישית:
request.auth.sessionBoundToDevice(origin) == true
אפשר להשתמש בביטוי CEL הזה כדי לאכוף DBSC רק במכשירי Windows עם דפדפן Chrome בגרסה 136 ואילך:
!(device.os_type == OsType.DESKTOP_WINDOWS && device.chrome.versionAtLeast("136.0.0")) || request.auth.sessionBoundToDevice(origin) == true
דוגמאות למכשירים
מתן גישה ממכשיר על סמך אותות שדווחו על ידי שותף ב-BeyondCorp Alliance
אתם יכולים להשתמש באותות מהמכשיר שדווחו על ידי שותף ב-BeyondCorp Alliance. בדוגמה הזו, נעשה שימוש ב-Lookout Software כאפליקציה.
רמת הגישה הזו משתמשת במאפיין המכשיר כדי לוודא שמכשיר שמשמש לגישה ל-Google Workspace מדווח על ידי Lookout כעומד בדרישות המדיניות, וציון התקינות שלו הוא 'טוב מאוד'.
device.vendors["Lookout"].is_compliant_device == true && device.vendors["Lookout"].device_health_score == DeviceHealthScore.VERY_GOODאישור גישה רק מדפדפן Chrome מנוהל עם העדכונים האחרונים
רמת הגישה הזו משתמשת במאפיין המכשיר כדי לוודא שהמשתמשים משתמשים בגרסה העדכנית של דפדפן Chrome מנוהל, ומאפשרת גישה רק דרך דפדפן כזה.
device.chrome.management_state == ChromeManagementState.CHROME_MANAGEMENT_STATE_BROWSER_MANAGED && device.chrome.versionAtLeast("94.0.4606.81")מתן גישה באמצעות אישור ארגוני
אתם יכולים להשתמש באישורים ארגוניים למכשירים ברמות גישה מותאמות אישית כדי לקבוע אם מכשיר הוא נכס בבעלות החברה. ברמת הגישה הזו נעשה שימוש במאפיין המכשיר לאימות הנכס. מידע נוסף ודוגמאות זמינים במאמר בנושא הגדרת תנאים לאישור ארגוני.
יכולים להיות כמה אישורים במכשיר. אישורים של Enterprise משמשים לרמת גישה בהתאמה אישית באמצעות פקודת המאקרו exists(). לדוגמה:
device.certificates.exists(cert, predicate)
בדוגמה הזו, cert הוא מזהה פשוט לשימוש במשתנה predicate כדי לבצע קישור לאישור הארגוני של המכשיר. מאקרו exists() משלב תוצאות של פרדיקטים לכל רכיב עם האופרטור or (||). פקודות מאקרו מחזירות את הערך true אם לפחות אישור אחד עומד בביטוי התנאי.
בטבלה הבאה מפורטים מאפיינים שאפשר להשתמש בהם כדי ליצור ביטויי CEL לשימוש ברמות גישה בהתאמה אישית. חשוב לזכור שהשוואות של מחרוזות הן תלויות אותיות רישיות.
| מאפיין | תיאור | דוגמה לביטוי התנאי (כאשר cert הוא מזהה של פקודות מאקרו) |
|---|---|---|
| is_valid |
הערך הוא True אם האישור תקף ולא פג תוקפו. |
cert.is_valid |
| cert_fingerprint | טביעת האצבע של האישור (SHA256 ללא ריפוד בקידוד Base64) |
cert.cert_fingerprint == origin. clientCertFingerprint() |
| root_ca_fingerprint | טביעת האצבע של אישור ה-CA הבסיסי ששימש לחתימת האישור הזה (SHA256 ללא ריפוד בקידוד base64) |
cert.root_ca_fingerprint == "the_fingerprint" |
| מנפיק הכרטיס |
שם המנפיק כדי למצוא את שם הגורם שהנפיק את האישור, מריצים את הפקודה הבאה באישור: $ openssl x509 -in ca_1.crt -noout מחרוזת המנפיק שמשמשת ברמת הגישה היא ההיפוך של הפלט, והתו '/' מוחלף בפסיק. לדוגמה: EMAILADDRESS=test_inter1@beyondcorp.in, CN=inter_1, OU=BCEDemo_1, O=BCEDemo, L=NCR, ST=UP, C=IN |
cert.issuer == "EMAILADDRESS=test_inter1 @beyondcorp.in, CN=inter_1, OU=BCEDemo_1, O=BCEDemo, L=NCR, ST=UP, C=IN" |
| subject | שם הנושא של האישור (שמות מורחבים מלאים) |
cert.subject == "CA_SUB" |
| serial_number |
המספר הסידורי של האישור |
cert.serial_number == "123456789" |
| template_id | מזהה התבנית של תבנית האישור של תוסף X.509 לאישור (מחרוזת) |
cert.template_id == "1.3.6.1.4.1.311.21. 8.15608621.11768144. 5720724. 16068415.6889630.81. 2472537.7784047" |
דוגמאות למדיניות נפוצה:
אימות שלמכשיר יש אישור ארגוני תקף שנחתם על ידי אישור הבסיס של החברה
device.certificates.exists(cert, cert.is_valid && cert.root_ca_fingerprint == "ROOT_CA_FINGERPRINT")
אימות הגורם שהנפיק את האישור הארגוני במכשיר
device.certificates.exists(cert, cert.is_valid && cert.issuer == "EMAILADDRESS=test_inter1@beyondcorp.in, CN=inter_1, OU=BCEDemo_1, O=BCEDemo, L=NCR, ST=UP, C=IN")
מתן גישה למכשירים שבהם מופעלת הצפנת דיסק ונעילת מסך
בדוגמה הזו נעשה שימוש במאפיין device כדי לדרוש הפעלה של הצפנת דיסק ונעילת מסך. בנוסף, אדמינים צריכים לאשר את המכשיר.
כברירת מחדל, כל המכשירים שנוצרו על ידי Endpoint Verification (אימות בנקודת קצה) מאושרים. עם זאת, יש מקרים שבהם כדאי לחסום מכשיר, למשל אם הוא אבד. במקרים כאלה, לא תרצו שהמכשירים האלה יוכלו לגשת למשאבים של החברה.
בדוגמאות אחרות לרמות גישה במסמך הזה, נניח שרמת הגישה הזו נקראת Require_Secure_Device.
// Require disk encryption and screen lock enabled
// This is applicable across all major platforms (Windows, Mac, Linux, CrOS, iOS, Android)
// This foundational and should be depended upon by all other access levels
device.encryption_status == DeviceEncryptionStatus.ENCRYPTED &&
device.is_secured_with_screenlock &&
device.is_admin_approved_device
מתן גישה למכשירים באמצעות דפדפן Chrome עם דרישות אבטחה בסיסיות
בדוגמה הזו, רמת הגישה משתמשת במאפיין device כדי לדרוש דפדפן Chrome עם דרישות אבטחה בסיסיות.
// Require Chrome to be managed at profile or browser level, must have
// security event reporting enabled and must be version 97 or greater
levels.Require_Secure_Device &&
(
device.chrome.management_state == ChromeManagementState.CHROME_MANAGEMENT_STATE_BROWSER_MANAGED ||
device.chrome.management_state == ChromeManagementState.CHROME_MANAGEMENT_STATE_PROFILE_MANAGED
) &&
device.chrome.is_security_event_analysis_enabled &&
device.chrome.versionAtLeast("97")
מתן גישה למכשירים באמצעות דפדפן Chrome עם דרישות אבטחה
בדוגמה הזו נעשה שימוש במאפיין device כדי לדרוש שהמשתמש יגיע מדפדפן או מפרופיל Chrome מנוהלים, ושמחברי ההגנה על נתונים מפני איומים של Chrome יהיו מופעלים. בדוגמה נעשה שימוש במאפיין levels כדי להפנות לרמת הגישה Require Managed Chrome שתוארה קודם. בדוגמה הבאה, רמת הגישה התלויה נקראת Require_Managed_Chrome.
// Require managed chrome (dependent on "Require_Managed_Chrome" access level)
// and require content inspection for downloads as well as URL check enabled
levels.Require_Managed_Chrome &&
device.chrome.is_file_download_analysis_enabled &&
device.chrome.is_realtime_url_check_enabled
אישור גישה למכשירים בבעלות החברה
אחד מהתנאים לשליטה בגישה הוא לאפשר גישה רק כשהמכשיר מנוהל על ידי החברה או נמצא בבעלותה. יש הרבה דרכים לקבוע אם מכשיר נמצא בבעלות החברה או מנוהל על ידה, כולל:
- אם למכשיר יש מספר סידורי שתואם למספר שמופיע במערכת לניהול נכסים של החברה
- אם למכשיר יש אישור ארגוני תקף שהונפק על ידי החברה
אפשר להשתמש בשתי הגישות האלה ברמת גישה מותאמת אישית שמשתמשת ברמות ובמאפייני מכשיר כדי לקבוע אם המכשיר הוא בבעלות החברה או מנוהל על ידה.
// The device is a corporate if one of the following conditions is true:
// 1. אם המספר הסידורי תואם למה שהאדמין העלה
// 2. אם למכשיר יש אישור תקף שהונפק על ידי הארגון
levels.Require_Secure_Device &&
(
device.is_corp_owned_device ||
device.certificates.exists(cert, cert.is_valid && cert.root_ca_fingerprint == "SOME_ROOT_CA_FINGERPRINT")
)
טביעת האצבע היא הגיבוב SHA256 בקידוד base64 (בפורמט בינארי) של האישור בקידוד DER, ללא ריפוד. אפשר ליצור את המחרוזת מהאישור בפורמט PEM באמצעות התהליך הבא עם openssl:
$ openssl x509 -in cert.pem -out cert.der -outform DER
$ openssl dgst -sha256 -binary cert.der > digest.sha
$ openssl base64 -in digest.sha
הגישה מותרת רק אם נתוני המכשיר מ-CrowdStrike עדכניים
- חותמת זמן של הנפקה (iat)
- חותמת זמן לציון תוקף (exp)
רמת הגישה משתמשת במאפיין המכשיר כדי לוודא שהנתונים של CrowdStrike עדכניים. שימו לב: ב-Chrome Enterprise Premium יש עיכוב מובנה של 90 דקות בצריכת הערכה חדשה מ-Falcon ZTA, ולכן לא מומלץ להשתמש במשכי זמן של פחות משעה.
// Ensure one of these conditions is true for data from Crowdstrike:
// Must meet one of these conditions
// 1. המכשיר הוערך במהלך היום האחרון
// 2. ההערכה לא פגה (עברו שבועיים מאז iat האחרון)
"CrowdStrike" ב-device.vendors וגם (
request.time - timestamp(device.vendors["CrowdStrike"].data["iat"]) < duration("1d") או
timestamp(device.vendors["CrowdStrike"].data["exp"]) - request.time > duration("0m")
)
מתן גישה כש-BeyondCorp Alliance מחשיב מכשיר כעומד בדרישות
Chrome Enterprise Premium פועל עם הרבה שותפים במערכת האקולוגית של BeyondCorp Alliance כדי לשלב את האותות וההקשר של המכשירים שלהם בפתרון Chrome Enterprise Premium. שותפים יכולים לשתף כל מספר של מאפיינים עם Chrome Enterprise Premium, ואחד מהם הוא המאפיין is_compliant_device. בדוגמה הבאה נעשה שימוש במאפיין device כדי להראות איך אפשר לבדוק אם אחד מהשותפים ב-BeyondCorp Alliance משולב עם Chrome Enterprise Premium, ולשקול אם המכשיר תואם.
המאקרו exists מרחיב את הביטוי עבור כל אחד מהשותפים ב-BeyondCorp Alliance עם האופרטור || (או).
// Check to see if any of the BCA partners consider the device to be compliant
["CrowdStrike", "Tanium", "PANW", "Check Point", "Lookout"].exists(
v, v in device.vendors && device.vendors[v].is_compliant_device
)
אישור גישה כשהסטטוס של ההפעלה המאומתת ב-Android הוא ירוק
בדוגמה הזו נעשה שימוש במאפייני המכשיר כדי לוודא שבמכשירים מופעלת גרסה בטוחה של Android.
ההפעלה המאומתת בודקת אם הקוד שמופעל מגיע ממקור מהימן (בדרך כלל יצרני מכשירים), ולא מתוקף או מקובץ פגום. פרטים נוספים זמינים במאמר בנושא אתחול מאומת.
// Require green Android verified boot status
device.android_device_security.verified_boot == true
מתן גישה למכשירים שעוברים בדיקות תאימות ל-CTS
בדוגמה הזו נעשה שימוש במאפייני מכשיר כדי לדרוש מהמכשירים לעבור בדיקות תאימות של חבילת בדיקות התאימות (CTS). פרטים נוספים מופיעים במאמר בנושא חבילת בדיקות התאימות.
// Require devices to pass CTS compliance checks
device.android_device_security.cts_profile_match == true
מתן גישה למכשירים שבהם מופעלת התכונה 'אימות אפליקציות' של Google Play Protect
בדוגמה הזו נעשה שימוש במאפייני המכשיר כדי לדרוש שבמכשירים תהיה מופעלת התכונה אימות אפליקציות ב-Google Play Protect.
התכונה 'אימות אפליקציות' סורקת אפליקציות כדי לזהות איומים כשהן מותקנות ממקורות אחרים מלבד Google Play. בנוסף, הוא סורק את המכשירים מעת לעת כדי לאתר אפליקציות שעלולות להזיק. התכונה 'אימות אפליקציות' מופעלת כברירת מחדל. במכשירים עם ניהול מתקדם, אתם יכולים לציין אם המשתמשים יכולים להשבית את ההגדרה. מידע נוסף זמין במאמר בנושא החלת הגדרות על מכשירי Android ניידים.
// Require devices to have Google Play Protect Verify Apps enabled
device.android_device_security.verify_apps_enabled == true
חסימת הגישה למכשירים שמותקנות בהם אפליקציות שעלולות להזיק
בדוגמה הזו נעשה שימוש במאפייני מכשיר כדי לחסום את הגישה למכשירים שמותקנות בהם אפליקציות שעלולות להזיק (PHA). לפעמים האפליקציות האלה נקראות תוכנות זדוניות. פרטים נוספים זמינים במאמר בנושא אפליקציות שעלולות להזיק (PHA).
// Deny access to devices that have potentially harmful appsandroid_device_security.has_potentially_harmful_apps != true
דוגמאות לגישה מבוססת-זמן
מתן גישה לעובדים במשמרות רק במהלך שעות המשמרת שלהם
ארגונים רוצים לוודא שעובדים במשמרות יוכלו לגשת למשאבים ארגוניים רק במהלך שעות המשמרת שלהם. רמות הגישה הבאות משתמשות במאפיין levels כדי להגדיר 3 משמרות בימים שני עד שישי.
// Shift 1 - Monday to Friday, midnight to 8am
levels.Require_Secure_Device &&
request.time.getDayOfWeek("America/Los_Angeles") >= 1 &&
request.time.getDayOfWeek("America/Los_Angeles") <= 5 &&
request.time.timeOfDay("America/Los_Angeles").between('00:00:00', '08:00:00')
// Shift 2 - Monday to Friday, 8am to 4pm
levels.Require_Secure_Device &&
request.time.getDayOfWeek("America/Los_Angeles") >= 1 &&
request.time.getDayOfWeek("America/Los_Angeles") <= 5 &&
request.time.timeOfDay("America/Los_Angeles").between('08:00:00', '16:00:00')
// Shift 3 - Monday to Friday, 4pm to midnight
levels.Require_Secure_Device &&
request.time.getDayOfWeek("America/Los_Angeles") >= 1 &&
request.time.getDayOfWeek("America/Los_Angeles") <= 5 &&
request.time.timeOfDay("America/Los_Angeles").between('16:00:00', '00:00:00')
// Allow shift workers to access resources from Monday to Friday between 9 AM to 5 PM, except for July fourth.
levels.Require_Secure_Device &&
request.time.getDayOfWeek("America/Los_Angeles") >= 1 &&
request.time.getDayOfWeek("America/Los_Angeles") <= 5 &&
!(
request.time.getMonth("America/Los_Angeles") == 6 &&
request.time.getDayOfMonth("America/Los_Angeles") == 3
) &&
request.time.timeOfDay("America/Los_Angeles").between('09:30:00', '17:00:00')
מתן גישה זמנית
לפעמים ארגונים רוצים לאפשר גישת Break Glass במקרה חירום, כשלאדמין אין גישה למכשיר מאובטח אבל הוא צריך גישת חירום למשך זמן קצר.
במקרה כזה, יוצרים רמת גישה עם הגבלות על זמן ומיקום באמצעות המאפיין levels, ומקצים אותה לאדמין הספציפי. כשמקצים את רמת הגישה הזו, היא תקפה רק במהלך הזמן שצוין. אחרי שתקופת הזמן הזו תסתיים, הגישה של האדמין תהיה שוב תלויה בדרישות הקיימות.
// Allow temporary access to resources on March 1, 2022, between 10 PM to midnight,
// and this access must come from within the US region.
levels.Require_Secure_Device &&
request.time.between('2022-03-01T23:00:00+08:00', '2022-03-02T23:59:59+08:00') &&
origin.region_code == "US"
// Note that the end time is exclusive, so the above potentially has 2 seconds that
// the users may not have access. אפשרות נוספת היא להשתמש ב
// !between('00:00:01','16:00:00')
דוגמה לשילוב תנאים משתי רמות
הגדרת רמת גישה חדשה על ידי שילוב תנאים משתי רמות גישה
רמת הגישה הזו משתמשת במאפייני רמות, ודורשת שהמשתמשים יעמדו בתנאים המשולבים של שתי רמות גישה. בדוגמה הזו, access_level_name_1 ו-access_level_name_2 מתייחסים לשם פנימי.
levels.access_level_name_1 && levels.access_level_name_2
Google, Google Workspace וסימנים וסמלי לוגו קשורים הם סימנים מסחריים של Google LLC. כל שמות החברות והמוצרים האחרים הם סימנים מסחריים של החברות שאליהן הם משויכים.