מכיל מאפיינים שקשורים לקריאה ל-API עצמו, שונים מהמשתמש, המכשיר או הרשת.
מאפיינים של origin
בקטע הזה מפורטים המאפיינים שנתמכים באובייקט origin.
מאפיינים
ip
סוג
מחרוזת
תיאור
כתובת ה-IP שממנה הגיעה הבקשה. אם לא ניתן לקבוע את כתובת ה-IP, הערך של origin.ip הוא שגיאה. מומלץ להשתמש ב-inIpRange כדי לבדוק אם כתובת ה-IP של המקור נמצאת בטווח כתובות IP ספציפי, במקום לבצע השוואה של מחרוזות.
לדוגמה:
inIpRange(origin.ip,["203.0.113.24"])
region_code
סוג
מחרוזת
תיאור
קוד ISO 3166-1 alpha-2 של המדינה או האזור שמהם נשלחה הבקשה. אם לא ניתן לקבוע את קוד האזור, הערך origin.region_code יקבל שגיאה.
בקטע הזה מפורטים המאפיינים שנתמכים באובייקט levels.
מאפיינים
LEVEL_NAME
סוג
בוליאני
תיאור
levels.LEVEL_NAME הוא השם של רמת גישה קיימת.
כשמשתמשים בה, צריך לעמוד גם בתנאים של רמת הגישה שצוינה, בנוסף לדרישות האחרות של רמת הגישה בהתאמה אישית.
לדוגמה:
levels.allow_corp_ips
כאשר allow_corp_ips הוא השם של רמת גישה.
מאפיין device
בקטע הזה מפורטים המאפיינים שנתמכים על ידי האובייקט device. אם לא נמצא מכשיר שמשויך למזהים שבבקשה, כל המאפיינים הבאים יחזירו שגיאה.
מאפיינים
encryption_status
סוג
טיפוסים בני מנייה (enum)
תיאור
תיאור של סטטוס ההצפנה של המכשיר.
ערכי טיפוסים בני מנייה (enum):
enumDeviceEncryptionStatus{// The encryption status of the device is not specified or not known.ENCRYPTION_UNSPECIFIED==0;// The device does not support encryption.ENCRYPTION_UNSUPPORTED==1;// The device supports encryption, but is currently unencrypted.UNENCRYPTED==2;// The device is encrypted.ENCRYPTED==3;}
enumOsType{// The operating system of the device is not specified or not known.OS_UNSPECIFIED==0;// A desktop Mac operating system.DESKTOP_MAC==1;// A desktop Windows operating system.DESKTOP_WINDOWS==2;// A desktop Linux operating system.DESKTOP_LINUX==3;// An Android operating system.ANDROID==4;// An iOS operating system.IOS==5;// A desktop ChromeOS operating system.DESKTOP_CHROME_OS==6;// A Googlebook operating system.GOOGLEBOOK_OS==8;}
האובייקט vendors משמש לגישה לנתונים שסופקו על ידי ספקי אבטחה וניהול נקודות קצה של צד שלישי. כל ספק יכול לאכלס שלושה מאפיינים משותפים ברמה העליונה: is_compliant_device, is_managed_device ו-device_health_score.
בנוסף, ספקים יכולים לספק מפתחות וערכים משלהם
שמפנים אליהם באמצעות המאפיין data.
המפתחות הזמינים למאפיין data משתנים
מספק לספק. חשוב לוודא שאתם עקביים כשאתם משווים את ערך המפתח בביטוי המדיניות. לדוגמה, אם אתם מצפים שהערך של המפתח יהיה מחרוזת או ערך בוליאני, ודאו שאתם משווים אותו למחרוזת או לערך בוליאני בביטוי המדיניות בהתאמה. חשוב לזכור: כשהערך הוא מספר שלם, צריך להשוות אותו למספר כפול בביטוי המדיניות.
כדי להפנות למצב המכשיר, משתמשים בפורמט key-acme, כאשר acme הוא מספר הלקוח של הארגון. אפשר למצוא את מספר הלקוח בכתובת ה-URL של GET https://www.googleapis.com/admin/directory/v1/customers/my_customer. שדה המזהה בתשובה מכיל את מספר הלקוח שמתחיל באות C. כדי למצוא את מספר הלקוח, משתמשים במחרוזת שאחרי האות C, לא כולל האות C.
ערכי טיפוסים בני מנייה (enum):
// Health score of the device as provided by the vendor (possibly third party).enumDeviceHealthScore{// The health score for the device is not specified or unknown.DEVICE_HEALTH_SCORE_UNSPECIFIED=0;// The health of the device is very poor.VERY_POOR=1;// The health of the device is poor.POOR=2;// The health of the device is ok.NEUTRAL=3;// The health of the device is good.GOOD=4;// The health of the device is very good.VERY_GOOD=5;}
הפונקציה בודקת אם אופרנד המחרוזת מתחיל בארגומנט התחילית.
לדוגמה:
"Sample string".startsWith("Sample")
endsWith()
סוג
string.(string) -> bool
תיאור
בודקת אם האופרנד של המחרוזת מסתיים בארגומנט הסיומת.
לדוגמה:
"Sample string".endsWith("string")
origin.clientCertFingerprint()
סוג
Origin.() -> string
תיאור
הפונקציה מחזירה את טביעת האצבע של האישור שמשויך למקור. אפשר להשתמש בזה בפקודות מאקרו כדי לבדוק אישורי מכשירים.
לדוגמה:
// Checks if the enterprise certificate associated with the origin matches the device.device.certificates.exists(cert,cert.is_valid && cert.cert_fingerprint==origin.clientCertFingerprint())
originatesFromProjects(origin, [PROJECT_LIST])
סוג
(Origin, list(string)) -> boolean
תיאור
בודקת אם הבקשה מגיעה מ Google Cloud פרויקט ספציפי או מפרויקטים קשורים של דיירים.
מגבלות: אפשר להשתמש רק במספרי פרויקטים (לדוגמה, "projects/1234567890"). אי אפשר להשתמש במזהי פרויקטים אלפאנומריים.
לדוגמה:
כדי לאפשר בקשות רק מהפרויקט projects/1234567890 או projects/9876543210:
הפונקציה בודקת אם הבקשה מגיעה מרשת שמשויכת לאותו Google Cloud פרויקט, או לפרויקט דייר משויך, שבבעלותו Workload Identity שקוראת לפונקציה.
זהות של Workload Identity היא זהות לא אנושית ששייכת לפרויקט ב- Google Cloud , כמו חשבון שירות, זהות של איחוד זהויות של עומסי עבודה (WIF), זהות מנוהלת של עומס עבודה או זהות של Agent Identity.
לדוגמה:
כדי לאשר בקשות רק כשפרויקט הרשת שממנו מגיעה הבקשה (או פרויקטי הדיירים שמשויכים אליו) תואם לפרויקט my-project, שהוא הבעלים של זהות עומס העבודה ששולח את הקריאה:
request.auth.matchesNetworkProject(origin)
פקודות מאקרו לביטויי CEL
אפשר להשתמש בפקודות המאקרו הבאות בביטויי CEL לרמות גישה מותאמות אישית:
מאקרו
תיאור
has(e.f)
בודקת אם שדה מסוים זמין. פרטים נוספים מופיעים במאמר בנושא בחירת שדות. דוגמה:
בדיקה אם תנאי מתקיים לגבי כל הרכיבים ברשימה e או המפתחות במפה e. כאן x הוא מזהה לשימוש ב-p שנקשר לאלמנט או למפתח. המאקרו all() משלב תוצאות של פרדיקטים לכל רכיב עם האופרטור and (&&). לכן, אם פרדיקט כלשהו מחזיר את הערך False, המאקרו מחזיר את הערך False ומתעלם משגיאות מפרדיקטים אחרים. דוגמה:
הפונקציה מחזירה את הערך False כי לא כל הרכיבים גדולים מ-1: [1,2,3].all(x, x > 1)
e.exists(x, p)
בדומה לפקודת המאקרו all(), אבל משלבת את תוצאות הניבוי עם האופרטור or (||). דוגמה:
הפונקציה מחזירה את הערך True כי יש לפחות רכיב אחד ברשימה שגדול מ-1: [1,2,3].exists(x, x > 1)
בדומה לפקודת המאקרו exists(), אבל מחזירה את הערך true רק אם הפרדיקט של רכיב אחד או מפתח אחד בדיוק מחזיר את הערך true, והשאר מחזירים את הערך false. כל שילוב אחר של תוצאות בוליאניות יחזיר False, וכל שגיאה בפרדיקט תגרום למאקרו להציג שגיאה. דוגמה:
הפונקציה הזו מחזירה את הערך False כי יותר מאלמנט אחד גדול מ-1: [1,2,3].exists_one(x, x > 1)
דוגמאות לביטויי CEL
בקטע הזה מופיעות דוגמאות לביטויי CEL שמשמשים ליצירת רמות גישה בהתאמה אישית.
[[["התוכן קל להבנה","easyToUnderstand","thumb-up"],["התוכן עזר לי לפתור בעיה","solvedMyProblem","thumb-up"],["סיבה אחרת","otherUp","thumb-up"]],[["התוכן קשה להבנה","hardToUnderstand","thumb-down"],["שגיאות בקוד לדוגמה או במידע","incorrectInformationOrSampleCode","thumb-down"],["חסרים לי פרטים או דוגמאות","missingTheInformationSamplesINeed","thumb-down"],["בעיה בתרגום","translationIssue","thumb-down"],["סיבה אחרת","otherDown","thumb-down"]],["עדכון אחרון: 2026-10-15 (שעון UTC)."],[],[]]