במאמר הזה מתוארים מאפיינים שנתמכים בביטוי תנאי.
מאפייני תנאים נתמכים
בקטעים הבאים מופיע סיכום של המאפיינים הנתמכים ופירוט של השירותים ב-Google Cloud שמזהים כל מאפיין.
מאפייני המשאבים
המאפיינים הבאים קשורים למשאב שלגביו נשלחת הבקשה.
| מאפיין | סיכום השימוש | שירותי Google Cloud נתמכים |
|---|---|---|
| מאפיין שירות המשאב |
ניהול הגישה לפי שירות Google Cloud שנמצא בשימוש. אפשר להשתמש במאפיין הזה בקישורי תפקידים של מדיניות הרשאה. |
|
| מאפיין סוג המשאב |
ניהול הגישה לפי סוג המשאב. אפשר להשתמש במאפיין הזה בקישורי תפקידים של מדיניות הרשאה. |
|
| מאפיין שם המשאב |
ניהול הגישה לפי שם המשאב. אפשר להשתמש במאפיין הזה בקישורי תפקידים של מדיניות הרשאה. |
|
| תגי משאבים |
ניהול הגישה לפי התגים המצורפים למשאב. אפשר להשתמש במאפיין הזה במקומות הבאים:
|
כל שירותי Google Cloud (מידע נוסף מופיע במאמר תמיכה בתנאים שעברו בירושה) |
אפשר לקרוא פרטים נוספים על מאפייני משאבים בקטע מאפייני משאבים שבדף הזה.
מאפייני חשבון משתמש
המאפיינים הבאים קשורים לחשבון המשתמש שממנו נשלחת הבקשה.
| מאפיין | סיכום השימוש | סוגי חשבונות משתמשים נתמכים |
|---|---|---|
|
להחיל כללי מדיניות על סמך סוג החשבון הראשי בבקשה. אפשר להשתמש במאפיין הזה בקישורי מדיניות של מדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB). |
|
|
|
להחיל כללי מדיניות על סמך הזהות של חשבון המשתמש בבקשה. אפשר להשתמש במאפיין הזה בקישורי מדיניות של מדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB). |
|
אפשר לקרוא פרטים נוספים על מאפייני חשבונות משתמשים בקטע מאפייני חשבונות משתמשים שבדף הזה.
מאפייני הבקשות
המאפיינים הבאים קשורים לפרטי הבקשה.
| מאפיין | סיכום השימוש | שירותי Google Cloud נתמכים |
|---|---|---|
|
ניהול הגישה לפי רמות גישה ספציפיות.
רמת גישה היא מאפיין שמחושב לפי מאפיינים גולמיים
של הבקשה והמבקש, כמו כתובת ה-IP המקורית, מאפייני
המכשיר והשעה ביום. לדוגמה,
ייתכן שרמת גישה אפשר להשתמש במאפיין הזה בקישורי תפקידים של מדיניות הרשאה. |
שרת proxy לאימות זהויות (IAP) |
|
|
ניהול הגישה לפי נתונים של שירות או ממשק API ספציפיים ב- Google Cloud. אפשר להשתמש במאפיין הזה בקישורי תפקידים של מדיניות הרשאה. |
שירותים מסוימים לא מזהים את כל מאפייני ה-API. לרשימת השירותים שמזהים כל מאפיין, אפשר לעיין במאמר מאפייני API. | |
|
הגדרת גישה עם תאריך תפוגה, מתוזמנת או לזמן מוגבל למשאבים של Google Cloud . אתם יכולים להשתמש במאפיינים האלה בקישורי תפקידים של מדיניות הרשאה. |
כל שירותי Google Cloud (מידע נוסף מופיע במאמר תמיכה בתנאים שעברו בירושה) |
|
|
ניהול הגישה לפי כתובת ה-IP של היעד ו/או היציאה של
הבקשה. לדוגמה, מופע של מכונה וירטואלית (VM) של Compute Engine
יכול לחשוף כתובת IP חיצונית, כמו משמש להעברת TCP של שרת Proxy לאימות זהויות (IAP). אתם יכולים להשתמש במאפיינים האלה בקישורי תפקידים של מדיניות הרשאה. |
שרת proxy לאימות זהויות (IAP) |
|
|
מציינים את הסוגים של כללי ההעברה שחשבון המשתמש יכול ליצור. לדוגמה, תוכלו לאפשר לחשבון משתמש ליצור כללי העברה למאזני עומסים פנימיים של Google Cloud , שמטפלים בתעבורת הנתונים שמגיעה מתוך רשת Google Cloud , אבל לא למאזני עומסים חיצוניים של Google Cloud שמטפלים בתעבורת נתונים שמגיעה מהאינטרנט. אתם יכולים להשתמש במאפיינים האלה בקישורי תפקידים של מדיניות הרשאה. |
|
|
|
ניהול הגישה לפי נתיב כתובת ה-URL או המארח של בקשה. לדוגמה,
תנאי יכול לציין
ש- אתם יכולים להשתמש במאפיינים האלה בקישורי תפקידים של מדיניות הרשאה. |
|
אפשר לקרוא פרטים נוספים על מאפייני בקשות בקטע מאפייני בקשות שבדף הזה.
תמיכה בתנאים שעברו בירושה
בנוסף להוספת תנאים למדיניות ההרשאות של משאבים מסוימים שספציפיים לשירות, אפשר להוסיף קישורי תפקידים מותנים למשאבים ברמת הארגון, התיקייה או הפרויקט. כשמוסיפים קישורי תפקידים מותנים ברמת המשאב של מאגר, משאבים אחרים יורשים אותם דרך היררכיית המשאבים. תנאים שעוברים בירושה שימושיים כשבמשאב מסוים אי אפשר להשתמש בתנאים במדיניות ההרשאות או כשאין לו מדיניות הרשאות.
כשמשתמשים במאפיינים ברמת הארגון, התיקייה או הפרויקט, חשוב לזכור שרוב המאפיינים זמינים רק לסוגי משאבים ספציפיים. אם חלק מתנאי מסוים ישתמש במאפיין שאינו זמין למשאב, החלק הזה של התנאי אף פעם לא יפורש כמתן גישה. לדוגמה, התנאי resource.name.endsWith == devResource אף פעם לא נותן גישה למשאב כלשהו של IAM, כי משאבי IAM לא מספקים את שם המשאב.
כדי למנוע את הבעיה, השתמשו במאפיינים של סוג המשאב ושירות המשאב כדי להגביל את היקף התנאי. לדוגמה, התנאי הבא מקבל את הערך true לכל סוגי המשאבים, מלבד למכונות של Compute Engine. לעומת זאת, במכונות של Compute Engine, התנאי בודק את שם המשאב:
resource.type != 'compute.googleapis.com/Disk' ||
resource.name.endsWith('devResource')
מאפייני המשאבים
המאפיינים של שירות המשאב, סוג המשאב ושם המשאב משמשים בדרך כלל לשינוי ההיקף של מתן הגישה שקישור התפקיד מאפשר. כשתפקיד מכיל הרשאות שחלות על מאפיינים שונים למשאבים ספציפיים, אפשר להשתמש בתנאים לפי משאב כדי להקצות קבוצת משנה של הרשאות תפקיד לסוגים או לשירותים ספציפיים.
מאפיין resource.service
בעזרת המאפיין resource.service אפשר להגדיר תנאי לפי שירותGoogle Cloud שנמצא בשימוש. לדוגמה, תוכלו להגדיר תנאי שמגביל את הגישה של משתמש למשאבים שמשתמשים בשירות cloudresourcemanager.googleapis.com. אפשר למצוא רשימה של הערכים שנתמכים
במאמר ערכי שירות של משאבים
אפשר להשתמש במאפיין resource.service בקישורי תפקידים של מדיניות הרשאה.
| משתנה של מאפיין | resource.service |
|---|---|
| סוג מאפיין |
במאמר ערכי שירות של משאבים תוכלו למצוא רשימה של הערכים שנתמכים. |
| אופרטורים נתמכים | , |
| פרטים |
כשמשתמשים במאפיין resource.type בתנאים,
צריך לבדוק בעזרת המאפיין אם יש שוויון מדויק () או
אי שוויון מדויק ().
יכול להיות שהשוואות אחרות, כמו בדיקה של קידומת או סיומת, יציגו
תוצאות בלתי צפויות.
|
| דוגמה |
הפונקציה מחזירה את הערך resource.service == "compute.googleapis.com" |
| שירותים נתמכים |
|
מאפיין resource.type
המאפיין resource.type מאפשר להגדיר תנאי לפי סוג
המשאב. לדוגמה, אפשר להגדיר תנאי שמגביל את הגישה של משתמש
למשאבים מסוג storage.googleapis.com/Object. במאמר ערכים של סוגי משאבים תוכלו למצוא רשימה של ערכים
נתמכים.
אם התנאי שלך יכלול את המאפיין resource.name, מומלץ מאוד
להשתמש במאפיין resource.type כדי לקבוע את סוגי המשאבים
שהתנאי יחול עליהם. אפשר לקרוא פרטים נוספים בקטע
מאפיין resource.name שבדף הזה.
אפשר להשתמש במאפיין resource.type בקישורי תפקידים של מדיניות הרשאה.
| משתנה של מאפיין | resource.type |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| סוג מאפיין |
במאמר ערכים של סוגי משאבים תוכלו למצוא רשימה של הערכים שנתמכים. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| אופרטורים נתמכים | , |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| פרטים |
כשמשתמשים במאפיין resource.type בתנאים,
צריך לבדוק בעזרת המאפיין אם יש שוויון מדויק () או
אי שוויון מדויק (). יכול להיות שהשוואות
אחרות, כמו בדיקה של קידומת או סיומת, יציגו
תוצאות לא צפויות.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| דוגמאות |
הפונקציה מחזירה את הערך resource.type != "compute.googleapis.com/Image"
הפונקציה מחזירה את הערך (resource.type == "compute.googleapis.com/Image" || resource.type == "compute.googleapis.com/Disk") |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| סוגי המשאבים שנתמכים |
1 ב-Cloud Key Management Service משמש סוג המשאב הזה כהורה של משאבים לאוסף מפתחות. |
מאפיין resource.name
בעזרת המאפיין resource.name אפשר להגדיר תנאי לפי כל שם המשאב או לפי חלק ממנו. אפשר למצוא רשימה של הפורמטים של שמות המשאבים במאמר פורמט השמות של המשאבים.
המאפיין resource.name זמין רק לסוגים מסוימים של משאבים. אפשר למצוא פירוט שלהם בטבלה שבקטע הזה. אנחנו ממליצים מאוד להגביל את הרלוונטיות של התנאי לסוג המשאב המיועד. אם לתפקיד יש הרשאות לסוג משאב שלא מספק את המאפיין resource.name, חשוב לוודא שהחלק בתנאי שבודק את resource.name לא מגביל את ההרשאות האלה.
אפשר לראות בדוגמה הבאה איך להבטיח התנהגות כזו. בדוגמה הזו, התנאי מאפשר גישה לכל סוגי המשאבים, מלבד קטגוריות של Cloud Storage ואובייקטים. לעומת זאת, עבור קטגוריות ואובייקטים, התנאי מאפשר גישה רק
לקטגוריה example-bucket ולאובייקטים שהיא מכילה:
(resource.type != 'storage.googleapis.com/Bucket' &&
resource.type != 'storage.googleapis.com/Object') ||
resource.name.startsWith('projects/_/buckets/example-bucket')
שימו לב שהחלק הראשון של התנאי בודק שהמשאב הוא לא
קטגוריה או אובייקט. אם למשאב יש סוג אחר, אז התנאי
כולו מקבל ערך true, ללא קשר לשם המשאב.
בנוסף, שימו לב שהתנאי בודק את המאפיין resource.type ולא את
המאפיין resource.service. יש כמה יתרונות בבדיקת
המאפיין resource.type:
- הוא מגביל את הבדיקה של
resource.nameלקבוצת המשאבים המתאימה. לדוגמה, אם אתם רוצים לתת גישה למכונות של Compute Engine בשם מסוים, כדאי להוציא את כל סוגי המשאבים מלבד מכונות של Compute Engine. - הוא ימנע את השינוי של היקף התנאי אם שירות מסוים יוסיף סוגים חדשים של משאבים בעתיד.
לבסוף, חשוב לשים לב שהתנאי כולל את הפונקציה startsWith() כדי להעריך
את שם המשאב, במקום לבדוק אם יש שוויון בעזרת האופרטור
. התנאי בודק את ההתחלה של שם המשאב,
ולכן הוא תואם לקטגוריה וגם לאובייקטים שבקטגוריה הזו. אם הוא היה בודק אם יש
שוויון, הוא היה תואם רק לקטגוריה.
אי אפשר להשתמש בתווים כלליים לחיפוש כמו * כדי להתאים לשמות שונים
של משאבים. לכן כדאי לשקול את החלופות הבאות:
אפשר להשתמש בפונקציה
extract()כדי לחלץ ערך משם משאב. לדוגמה, אפשר לחלץ מזהה פרויקט משם המשאב של מכונת VM ב-Compute Engine, ואז לכתוב ביטוי תנאי שמפנה למזהה הפרויקט.לפרטים נוספים אפשר לעיין בקטע חילוץ ערכים ממאפיינים שבדף זה.
אפשר להשתמש בפונקציה
startsWith()אוendsWith()כדי לכתוב תנאי שמעריך את ההתחלה או הסוף של שם המשאב.
אפשר להשתמש במאפיין resource.name בקישורי תפקידים של מדיניות הרשאה.
| משתנה של מאפיין | resource.name |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| סוג מאפיין |
לכל סוג משאב יש פורמט ספציפי לשם המשאב. לרשימת הפורמטים, אפשר לעיין במאמר הפורמט של שם המשאב. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| הפונקציות והאופרטורים שנתמכים |
startsWith(), endsWith(), extract(), ,
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| פרטים |
השדה
כדי להעריך את הפונקציה
כדי להעריך את הפונקציה
הפונקציה
האופרטורים |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| דוגמאות |
הפונקציה מחזירה את הערך resource.name != "projects/_/buckets/secret-bucket-123"
הפונקציה מחזירה את הערך
resource.name.startsWith("projects/project-123/zones/us-east1-b/instances/prod-")
הפונקציה מחזירה את הערך
resource.name.startsWith("projects/_/buckets/my_bucket/objects/test-object-")
הפונקציה מחזירה את הערך
resource.name.endsWith(".jpg")הפונקציה מחזירה את השם או המספר של הפרויקט, אם הוא מופיע:
resource.name.extract("projects/{project}/") |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| סוגי המשאבים שנתמכים |
|
תגי משאבים
הפונקציות של תגי המשאבים מאפשרות להגדיר תנאי לפי התגים שמצורפים למשאבים נתמכים או עוברים בירושה לצאצאים של המשאבים האלה. לדוגמה, אפשר להגדיר תנאי שמקצה תפקיד רק למשאבים שמצורף אליהם התג env: prod. למידע נוסף בנושא בקרה על הגישה באמצעות תגים, אפשר לעיין במאמר תגים ובקרת גישה.
כל תג מורכב ממפתח ומערך. יש כמה סוגים של מזהים לכל מפתח וערך:
-
מזהה קבוע שהוא מזהה ייחודי בכל העולם ולא ניתן לעשות בו שימוש חוזר. לדוגמה,
tagKeys/123456789012יכול להיות המזהה הקבוע של מפתח התג ו-tagValues/567890123456של ערך התג. -
שם מקוצר. השם המקוצר של כל מפתח צריך להיות ייחודי בפרויקט או בארגון שבהם המפתח מוגדר, והשם המקוצר של כל ערך צריך להיות ייחודי למפתח המשויך אליו. לדוגמה,
envיכול להיות השם המקוצר של מפתח התג, ו-prodשל ערך התג. -
שם ממרחב שמות: צירוף של מספר הארגון או מזהה הפרויקט והשם המקוצר של מפתח התג. לדוגמה,
123456789012/envיכול להיות השם ממרחב השמות של מפתח תג שנוצר לארגון. איך מוצאים את מזהה הארגון למפתח תג שנוצר לפרויקט יכול להיות השםmyproject/envבמרחב השמות. איך מזהים פרויקטים?
לקבלת הנחיות לבחירת סוג המזהה לשימוש בתנאים שלך, כדאי לעיין במאמר הגדרות ומזהים של תגים.
אתם יכולים להשתמש בתנאים שמבוססים על תגים כדי להתנות את הגישה לכל משאב. התנאי הזה כולל משאבים עם תגים משלהם, וגם משאבים שירשו תגים ממשאבים אחרים. במאמר ירושה של תגים מוסבר איך תגים עוברים בירושה בהיררכיית המשאבים.
עם זאת, באזורים מסוימים במסוף Google Cloud לא מזוהים קישורי תפקידים של מדיניות הרשאה עם תנאים שמבוססים על תגים. לכן, אם יש לכם תפקיד עם תנאי שמבוסס על תגים, יכול להיות שמסוף Google Cloud ימנע מכם לבצע פעולות מסוימות בטעות. אם נתקלתם בבעיה הזו, השתמשו בשיטה חלופית, כמו ה-CLI של gcloud, כדי לבצע את הפעולה.
אפשר להשתמש בתנאים שמבוססים על תגים במקרים הבאים:
- קישורי תפקידים במדיניות ההרשאות
- כללי הדחייה של מדיניות הדחייה
אפשר להשתמש בפונקציות הבאות כדי להגדיר תנאים לפי תגים:
| פונקציה | תיאור |
|---|---|
resource.hasTagKey(
bool
|
הפונקציה בודקת אם למשאב של הבקשה יש תג עם
המפתח שצוין. המערכת מחפשת את מפתח התג לפי השם שלו
ממרחב השמות. כדי לחפש מפתח תג באמצעות המזהה הקבוע שלו, אפשר להשתמש
בפונקציה
|
resource.hasTagKeyId(
bool
|
הפונקציה בודקת אם למשאב של הבקשה יש תג עם
המפתח שצוין. המערכת מחפשת את מפתח התג לפי המזהה הקבוע שלו.
כדי לחפש מפתח תג באמצעות השם שלו ממרחב השמות, אפשר להשתמש
בפונקציה
|
resource.matchTag(
bool
|
הפונקציה בודקת אם למשאב הבקשה יש תג עם
המפתח והערך שצוינו. המערכת מחפשת את המפתח לפי השם שלו
ממרחב השמות, ואת הערך לפי השם המקוצר שלו. כדי
לחפש מפתח תג וערך באמצעות המזהים הקבועים שלהם, אפשר להשתמש
בפונקציה
|
resource.matchTagId(
bool
|
הפונקציה בודקת אם למשאב הבקשה יש תג עם
המפתח והערך שצוינו. אפשר לחפש את המפתח והערך באמצעות
המזהים הקבועים שלהם. כדי לחפש מפתח תג באמצעות
השם שלו ממרחב השמות ואת הערך באמצעות השם המקוצרשלו
צריך להשתמש בפונקציה
|
מאפייני חשבון משתמש
מאפייני חשבון המשתמש מאפשרים לכתוב תנאים לפי חשבון המשתמש שהנפיק את הבקשה. בעזרת המאפיינים האלה אפשר לצמצם את חשבונות המשתמשים שעליהם נאכפת המדיניות.
אפשר להשתמש במאפיינים של חשבונות משתמשים בקישורי מדיניות של מדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB).
מאפיין principal.type
המאפיין principal.type מאפשר להגדיר תנאי לפי סוג חשבון המשתמש ששולח את הבקשה. לדוגמה, אתם יכולים להוסיף תנאי לקישור מדיניות של מדיניות PAB כדי לוודא שהמדיניות נאכפת רק על חשבונות שירות.
אפשר להשתמש במאפיינים של חשבונות משתמשים בקישורי מדיניות של מדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB).
| משתנה של מאפיין | principal.type |
|---|---|
| סוג מאפיין |
|
| אופרטורים נתמכים | , , in |
| סוגי חשבונות המשתמשים הנתמכים |
|
| דוגמאות |
הערך הוא
principal.type == "iam.googleapis.com/ServiceAccount"
התוצאה היא
principal.type == "iam.googleapis.com/AgentPoolIdentity"
הערך הוא
principal.type in ["iam.googleapis.com/WorkspaceIdentity", "iam.googleapis.com/WorkforcePoolIdentity"]
|
מאפיין principal.subject
בעזרת המאפיין principal.subject אפשר להגדיר תנאי לפי חשבון המשתמש ששולח את הבקשה. לדוגמה, אתם יכולים להוסיף תנאי לקישור מדיניות של מדיניות PAB כדי לוודא שהמדיניות נאכפת רק לגבי חשבונות משתמשים שכתובות האימייל שלהם מסתיימות ב-@example.com.
אם משתמשים במאפיין principal.subject בתנאי, מומלץ להשתמש גם במאפיין principal.type כדי לקבוע על אילו סוגים של חשבונות משתמשים התנאי יחול. הסיבה לכך היא שמזהי חשבונות המשתמשים לא בהכרח ייחודיים לסוגי חשבונות המשתמשים. לדוגמה, המזהה example-user@example.com יכול לזהות חשבון Google או משתמש במאגר זהויות של כוח עבודה.
אם משתמשים במאפיין principal.type בנוסף למאפיין principal.subject, אפשר לוודא שהתנאי יתאים רק לחשבונות משתמשים מהסוג הרצוי. לדוגמה, הביטוי הבא תואם לחשבונות Google שכתובות האימייל שלהם מסתיימות ב-@example.com:
principal.type == 'iam.googleapis.com/WorkspaceIdentity' &&
principal.subject.endsWith('@example.com')
אפשר להשתמש במאפיינים של חשבונות משתמשים בקישורי מדיניות של מדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB).
| משתנה של מאפיין | principal.subject |
|---|---|
| סוג מאפיין |
|
| אופרטורים נתמכים |
|
| נושאי חשבונות משתמשים נתמכים |
|
| דוגמה |
הפונקציה מחזירה את הערך
principal.subject.endsWith("@example.com")
הפונקציה מחזירה את הערך
principal.subject.startsWith("resources/aiplatform/")
הפונקציה מחזירה את הערך
principal.subject == "example-service-account@example-project.iam.gserviceaccount.com"
|
מאפייני הבקשות
מאפייני בקשה מאפשרים ליצור תנאים שמעריכים פרטים בנוגע לבקשה, כמו רמת הגישה, התאריך והשעה, כתובת ה-IP של היעד והיציאה (למנהור TCP של IAP) או המארח/הנתיב של כתובת אתר צפויה (ל-IAP ול-Cloud Run).
מאפיין רמות גישה
מאפיין רמות הגישה מאפשר למשתמשים להגדיר תנאי שבו בקשה צריכה להיות ברמת גישה אחת או יותר כדי לקבל הרשאה. אפשר להשתמש במאפיין רמות הגישה בקישורי תפקידים של מדיניות הרשאה.
המאפיין נגזר ממאפיינים של הבקשה, כמו
כתובת ה-IP של המקור, מאפייני המכשיר והשעה ביום. למשל,
ייתכן שרמת גישה בשם fullyTrusted דורשת שהמכשיר שממנו נשלחה
הבקשה יהיה בבעלות החברה ושתהיה לו נעילת מסך. רמת
הגישה של onNetwork יכולה לדרוש שהמכשיר שממנו נשלחה הבקשה יגיע
מטווח מסוים של כתובות IP. למידע נוסף על רמות גישה, אפשר לעיין במסמכים בנושא Access Context Manager.
מאפיין רמות גישה זמין רק כשמשתמשים בשרת proxy לאימות זהויות (IAP) כדי לגשת למופע של מנהרה, או כדי לגשת לאפליקציית אינטרנט שפועלת בשירותים לקצה העורפי של App Engine או Compute Engine. באופן ספציפי יותר, מאפיין רמות הגישה זמין רק לבקשות שבודקות אחת מההרשאות הבאות:
iap.tunnelInstances.accessViaIAPiap.webServiceVersions.accessViaIAP
אפשר להשתמש במאפיין רמות הגישה כשמקצים באופן מותנה את התפקידים המוגדרים מראש הבאים:
משתמש מנהרה באבטחת IAP (
roles/iap.tunnelResourceAccessor)מכיל הרשאה יחידה,
iap.tunnelInstances.accessViaIAP.משתמש של אפליקציית אינטרנט באבטחת IAP (
roles/iap.httpsResourceAccessor)מכיל הרשאה יחידה,
iap.webServiceVersions.accessViaIAP.
אפשר גם להשתמש במאפיין רמות הגישה כדי להקצות באופן מותנה תפקיד מותאם אישית שמכיל את ההרשאות האלה. התפקיד בהתאמה האישית לא יכול להכיל הרשאות אחרות.
מאפיין request.auth.access_levels
| משתנה של מאפיין | request.auth.access_levels |
|---|---|
| סוג מאפיין | <string>list |
| אופרטורים נתמכים | in |
| פרטים |
כדי לבדוק אם לבקשה יש רמת גישה ספציפית, השתמשו
באופרטור ACCESS_LEVEL_FULL_NAME in request.auth.access_levels השם המלא של רמת גישה מופיע בפורמט הבא: accessPolicies/POLICY_NUMBER/accessLevels/ACCESS_LEVEL |
| דוגמה |
הפונקציה מחזירה את הערך
"accessPolicies/199923665455/accessLevels/CorpNet"
in request.auth.access_levels |
| סוגי המשאבים שנתמכים | המאפיין זמין לבקשות שמשתמשות בשרת proxy לאימות זהויות (IAP) כדי לגשת למופע של מנהרה, לקבוצת יעדים של מנהרה, לאפליקציית אינטרנט שפועלת על איזון עומסים Google Cloud או לאפליקציית אינטרנט שפועלת על App Engine. |
מאפייני API
מאפייני ה-API עוזרים לנהל את הגישה לפי נתונים של שירות או ממשק API מסוימים ב-Google Cloud . אפשר להשתמש במאפייני API בקישורי תפקידים של מדיניות הרשאה.
לדוגמה, כשמשתמשים ב-Cloud Storage כדי
ליצור רשימת אובייקטים בקטגוריה, אפשר להשתמש בפרמטר prefix
בבקשה כדי לכלול רק אובייקטים שהשמות שלהם מתחילים בתחילית ספציפית.
אם משתמשים בגבולות הגישה של פרטי הכניסה כדי לצמצם את ההיקף של פרטי כניסה
לטווח קצר, אפשר ליצור גבול גישה של פרטי הכניסה. שמגביל את ההרשאות
לרישום אובייקטים על ידי בדיקת מאפיין ה-API
storage.googleapis.com/objectListPrefix. מאפיין ה-API הזה מכיל את הערך
של הפרמטר prefix מהבקשה.
בדפים הבאים מופיעות דוגמאות למקרים שבהם כדאי להשתמש במאפייני API בתנאי:
שירותים מסוימים לא מזהים מאפייני API. בקטעים הבאים מצוין אילו שירותים מזהים כל מאפיין API.
פונקציות למאפייני API
אפשר להשתמש בפונקציה הבאה כדי לעבוד עם מאפייני API:
| פונקציה | תיאור | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
api.getAttribute(
V<T>
|
הפונקציה מקבלת את מאפיין ה-API המבוקש.
|
||||||||||||
hasOnly(
bool |
הפונקציה בודקת שרשימה מכילה רק את הפריטים המורשים, או קבוצת משנה של
הפריטים האלה. אפשר לקרוא לפונקציה ברשימה שמוחזרת באמצעות
|
מאפייני API של Cloud Storage
Cloud Storage מספק את מאפיין ה-API הבא.
| משתנה של מאפיין | storage.googleapis.com/objectListPrefix |
|---|---|
| סוג מאפיין | string |
| פרטים |
בבקשה לרישום
אובייקטים בקטגוריה, המאפיין יכיל את הערך של הפרמטר
המאפיין לא מוגדר בסוגים אחרים של בקשות. |
| שירותים שמזהים את המאפיין הזה | Cloud Storage |
מאפייני API של IAM
IAM מספק את מאפיין ה-API הבא:
| משתנה של מאפיין | iam.googleapis.com/modifiedGrantsByRole |
|---|---|
| סוג מאפיין | list<string> |
| פרטים |
בבקשה להגדיר את מדיניות ההרשאה של משאב, המאפיין הזה מכיל את שמות התפקידים מקישור התפקידים שהבקשה משנה. המאפיין לא מוגדר בסוגים אחרים של בקשות. |
| סוגי המשאבים שמקבלים את המאפיין הזה |
סוגי המשאבים הבאים מקבלים תנאים עם
המאפיין
|
| שירותים שמזהים את המאפיין הזה |
השירותים הבאים מזהים את
המאפיין
|
מאפייני MCP API
Google Cloud מספק את המאפיינים הבאים לשליטה בגישה לשרתי MCP:
| משתנה של מאפיין | mcp.googleapis.com/tool.name |
|---|---|
| סוג מאפיין | string |
| פרטים |
בבקשות שניגשות לכלי MCP, המאפיין הזה מכיל את שם הכלי.
לדוגמה, אם הבקשה ניגשת לכלי BigQuery MCP המאפיין לא מוגדר בסוגים אחרים של בקשות. |
| שירותים שמזהים את המאפיין הזה | כל שירותי Google Cloud עם שרתי MCP מזהים את מאפיין ה-API הזה. כאן מפורטים המוצרים שתומכים בשרתי MCP. |
| משתנה של מאפיין | mcp.googleapis.com/tool.isReadOnly |
|---|---|
| סוג מאפיין | boolean |
| פרטים |
בבקשות שניגשות לכלי MCP, המאפיין הזה מציין אם הכלי הוא לקריאה בלבד. המאפיין לא מוגדר בסוגים אחרים של בקשות. |
| שירותים שמזהים את המאפיין הזה | כל שירותי Google Cloud עם שרתי MCP מזהים את מאפיין ה-API הזה. כאן מפורטים המוצרים שתומכים בשרתי MCP. |
מאפייני Vertex AI Agent Engine API
Vertex AI Agent Engine מספק את מאפייני ה-API הבאים לשירותי ניהול ההקשר של Memory Bank ו-Session:
| משתנה של מאפיין | aiplatform.googleapis.com/memoryScope |
|---|---|
| סוג מאפיין | map<string, string> |
| פרטים |
בבקשה לגשת למשאבים של Memory Bank או לשנות אותם, המאפיין מכיל את הערך של השדה המאפיין לא מוגדר בסוגים אחרים של בקשות. |
| שירותים שמזהים את המאפיין הזה | Vertex AI Agent Engine |
| משתנה של מאפיין | aiplatform.googleapis.com/sessionUserId |
|---|---|
| סוג מאפיין | string |
| פרטים |
בבקשה שניגשת למשאבי Session או משנה אותם, המאפיין מכיל את הערך של השדה המאפיין לא מוגדר בסוגים אחרים של בקשות. |
| שירותים שמזהים את המאפיין הזה | Vertex AI Agent Engine |
מאפיין תאריך/שעה
המאפיין "תאריך/שעה" משמש להגדרת גישה עם תאריך תפוגה, מתוזמנת או לזמן מוגבל למשאבים ב- Google Cloud . אפשר להשתמש במאפייני תאריך/שעה בקישורי תפקידים של מדיניות הרשאה.
המאפיין נתמך בכל השירותים וסוגי המשאבים של Google Cloud . בקטע תמיכה בתנאים שעברו בירושה שבדף הזה, מוסבר איך מחילים תנאים של תאריך/שעה על משאבים שלא תומכים בהם ישירות.
המאפיין request.time מכיל את חותמת הזמן של הבקשה. אפשר
להשוות את חותמת הזמן הזו לחותמת זמן אחרת, או לטווח זמן מסוים.
בקטעים הבאים מפורטות הפונקציות שבהן אפשר להשתמש כדי להגדיר תנאים לפי חותמות זמן וטווחי זמן.
יצירה, השוואה ושינוי של חותמות זמן וטווחי זמן
| פונקציה או אופרטור | תיאור |
|---|---|
date(
Timestamp |
הפונקציה ממירה תאריך מ-
|
duration(
Duration |
הפונקציה ממירה את משך הזמן מ-
|
timestamp(
Timestamp |
הפונקציה ממירה
|
, , , |
האופרטור משווה בין שני ערכים של
|
|
הפונקציה מחברת או מחסרת
|
חילוץ מידע מחותמת זמן
הפונקציות בקטע הזה מאפשרות לחלץ מידע מחותמת זמן, כמו למשל, היום בשבוע שבו נמצאת חותמת הזמן.
בתנאי IAM, כל חותמות הזמן הן לפי שעון UTC. עם זאת, יכול להיות שתרצו לחלץ מידע לפי אזור זמן אחר. לדוגמה, יכול להיות שתרצו לדעת אם חותמת זמן לפי שעון UTC נמצאת ביום שני לפי אזור הזמן בברלין שבגרמניה.
כדי לציין אזור זמן אחר, מכניסים את אזור הזמן לפונקציה. משתמשים
בשם או בסטייה משעון UTC
ממסד הנתונים של אזור הזמן של
IETF. לדוגמה, אפשר להשתמש ב-Europe/Berlin או ב-+01:00
לציון שעון מרכז אירופה (CET).
| הפונקציות והאופרטורים שנתמכים | תיאור |
|---|---|
Timestamp.getDate(
int
|
הפונקציה מקבלת את היום בחודש מה-
|
Timestamp.getDayOfMonth(
int
|
הפונקציה מקבלת את היום בחודש מה-
|
Timestamp.getDayOfWeek(
int
|
הפונקציה מקבלת את היום בשבוע מה-
|
Timestamp.getDayOfYear(
int
|
הפונקציה מקבלת את היום בשנה מה-
|
Timestamp.getFullYear(
int
|
הפונקציה מקבלת את השנה מה-
|
Timestamp.getHours(
int
|
הפונקציה מקבלת את השעה ביום מה-
אפשר לשלב את הפונקציה הזו עם
|
Timestamp.getMilliseconds(
int
|
הפונקציה מקבלת את מספר אלפיות השנייה מה-
|
Timestamp.getMinutes(
int
|
הפונקציה מקבלת את מספר הדקות אחרי השעה מה-
|
Timestamp.getMonth(
int
|
הפונקציה מקבלת את החודש בשנה מה-
|
Timestamp.getSeconds(
int
|
הפונקציה מקבלת את מספר השניות מה-
|
, , , |
האופרטור משווה את הפלט של שתי פונקציות בטבלה הזו. |
מאפייני IP/יציאה של יעד
מאפיין ה-IP/יציאה של יעד מאפשר למשתמשים לנהל את הגישה לפי כתובת ה-IP הפנימית של היעד והיציאה של הבקשה. אפשר להשתמש במאפייני כתובת ה-IP או היציאה של היעד בקישורי תפקידים של מדיניות הרשאה.
לדוגמה, יכול להיות שמכונת VM של Compute Engine תקצה את כתובת ה-IP החיצונית ואת היציאה 132.168.42.21:3001 לכתובת ה-IP הפנימית וליציאה 10.0.0.1:2300 בשביל שימוש כללי. לעומת זאת, יכול להיות שכתובת ה-IP הפנימית והיציאה
10.0.0.1:22 יהיו זמינות באופן פנימי לשימוש מנהלי בלבד. אפשר
להשתמש במאפייני ה-IP או היציאה של היעד כדי להקצות רמות גישה שונות
לפי כתובת ה-IP הפנימית והיציאה.
מידע נוסף על העברת TCP מופיע במאמר משאבי עזרה בנושא שרת proxy לאימות זהויות (IAP).
מאפיין destination.ip
| משתנה של מאפיין | destination.ip |
|---|---|
| סוג מאפיין | string |
| אופרטורים נתמכים | , |
| פרטים |
המשתנה |
| דוגמאות |
הפונקציה מחזירה את הערך destination.ip == "10.0.0.1"
הפונקציה מחזירה את הערך destination.ip != "10.0.0.1" |
| סוגי המשאבים שנתמכים | המאפיין זמין לבקשות שמשתמשות בשרת proxy לאימות זהויות (IAP) כדי לגשת למופע מנהרה |
מאפיין destination.port
| משתנה של מאפיין | destination.port |
|---|---|
| סוג מאפיין | int |
| אופרטורים נתמכים | , , , , , |
| פרטים |
המשתנה |
| דוגמאות |
הפונקציה מחזירה את הערך destination.port == 21
הפונקציה מחזירה את הערך destination.port < 3001 |
| סוגי המשאבים שנתמכים | המאפיין זמין לבקשות שמשתמשות בשרת proxy לאימות זהויות (IAP) כדי לגשת למופע מנהרה |
מאפיינים של כלל העברה
בעזרת המאפיינים של כללי ההעברה אפשר לציין את הסוגים של כללי ההעברה שחשבון משתמש יכול ליצור. לדוגמה, תוכלו לאפשר לחשבון משתמש ליצור כללי העברה למאזני עומסים Google Cloudפנימיים, שמטפלים בתעבורת הנתונים שמגיעה מתוך רשת Google Cloud , אבל לא למאזני עומסים חיצוניים של Google Cloudשמטפלים בתעבורת נתונים שמגיעה מהאינטרנט. אפשר להשתמש במאפיינים של כללי העברה בקישורי תפקידים של מדיניות הרשאה.
המאפיינים של כללי ההעברה לא משפיעים על היכולת של Cloud Load Balancing ליצור רכיבים אחרים של מאזן עומסים ב- Google Cloud , כמו שירותים לקצה העורפי, שרתי proxy לחלוקת העומס, בדיקות תקינות ומפות URL.
פונקציות נתמכות
| פונקציה | תיאור |
|---|---|
compute.isForwardingRule
bool
|
הפונקציה בודקת אם הבקשה יוצרת כלל העברה.
|
compute.matchLoad
bool
|
האפליקציה בודקת אם הבקשה משפיעה על אחד מהסוגים של סכמת איזון עומסים. במאמר שימוש בתנאי IAM במאזני העומסים ב- Google Cloud מפורט מידע על המזהה של כל סכמת איזון עומסים.
|
סוגי המשאבים שנתמכים
המאפיין הזה זמין לבקשות ליצור את סוגי המשאבים הבאים:
| שירות | סוגי המשאבים |
|---|---|
| Cloud Load Balancing | כללי העברה |
| Cloud VPN | כללי העברה (גלובלי ואזורי) |
| Compute Engine | כללי העברה (להעברת פרוטוקול) |
| Cloud Service Mesh1 | כללי העברה |
1 עושה שימוש במאפייני המשאבים עבור Compute Engine.
מאפיין מארח/נתיב של כתובת URL
המאפיין נתיב/מארח של כתובת ה-URL מאפשר למשתמשים לנהל את הגישה לפי נתיב כתובת ה-URL והמארח של בקשה. לדוגמה, תנאי יכול לציין
ש-https://example.com היא האפליקציה הראשית שאליה יכול לגשת דומיין כללי של
משתמשים, אבל https://hr.example.com/admin ישמש לגישה לדף מסוים באפליקציה בתוך חלק שרק לאדמינים של משאבי אנוש יש גישה אליו.
אפשר להשתמש במאפיין מארח/נתיב כתובת ה-URL בקישורי תפקידים של מדיניות הרשאה.
מאפיין request.path
| משתנה של מאפיין | request.path |
|---|---|
| סוג מאפיין | string |
| הפונקציות והאופרטורים שנתמכים | , startsWith(), endsWith() |
| פרטים |
לא מומלץ להשתמש באופרטור עם
המאפיין הזה. במקום לבדוק אי-שוויון, כמו
ב-request.path != "/admin", כדאי לבדוק את תחילית המאפיין,
כמו ב-!request.path.startsWith("/admin"). באמצעות בדיקת
התחילית, אפשר להגן על נתיבי כתובות ה-URL בתוך ההיררכיה של
/admin, כמו ב-/admin/payroll/.
|
| דוגמאות |
האופרטור מחזיר את הערך request.path == "/admin" request.path == "/admin/payroll"
הפונקציה מחזירה את הערך request.path.startsWith("/admin")
הפונקציה מחזירה את הערך request.path.endsWith("/payroll.js") |
| סוגי המשאבים שנתמכים |
|
מאפיין request.host
| משתנה של מאפיין | request.host |
|---|---|
| סוג מאפיין | string |
| הפונקציות והאופרטורים שנתמכים | , endsWith() |
| פרטים |
לא מומלץ להשתמש בפונקציה .startsWith() או
באופרטור עם המאפיין הזה. יכול להיות שהפונקציות
והאופרטורים יציגו תוצאות בלתי צפויות.
|
| דוגמאות |
הפונקציה מחזירה את הערך request.host == "www.example.com" request.host == "hr.example.com"
הפונקציה מחזירה את הערך request.host.endsWith("example.com") |
| סוגי המשאבים שנתמכים |
|
חילוץ ערכים ממאפיינים
אפשר להשתמש בפונקציה extract() כדי לחלץ ערך ממאפיין. לדוגמה,
אפשר לחלץ חלק שרירותי משם משאב, ולאחר מכן לכתוב
ביטוי תנאי שמפנה לטקסט שחילצת.
כדי להשתמש בפונקציה extract(), צריך לספק תבנית חילוץ שמציינת
את החלק של המאפיין לחילוץ. לדוגמה, אם רוצים
לחלץ מזהה פרויקט משם המשאב של מכונת
VM של Compute Engine, אפשר להשתמש בתבנית projects/{project}/.
תבנית חילוץ מכילה את החלקים הבאים:
מזהה, מוקף בסוגריים מסולסלים, שמזהה את מחרוזת המשנה שצריך לחלץ.
כדאי לבחור מזהה קצר ומשמעותי כדי להבהיר איזה ערך רוצים לחלץ. אפשר להשתמש באותיות רישיות ובאותיות קטנות מ-
AעדZ, ספרות וקווים תחתונים (_).בתבנית
projects/{project}/, המזהה הואproject.אופציונלי: תחילית, שצריכה להופיע לפני מחרוזת המשנה לחילוץ.
בתבנית
projects/{project}/, התחילית היאprojects/.אופציונלי: סיומת, שצריכה להופיע אחרי מחרוזת המשנה לחילוץ.
בתבנית
projects/{project}/, הסיומת היא/.
הפונקציה extract() מחלצת חלקים שונים מהמאפיין בהתאם
למבנה של תבנית החילוץ, שיכולה לכלול תחילית, סיומת או את שניהם:
| כוללת תחילית | כוללת סיומת | הערך שחולץ |
|---|---|---|
| — | — | המאפיין כולו |
| — | התווים שאחרי המופע הראשון של התחילית, או מחרוזת ריקה אם אין תווים אחרי התחילית | |
| — | התווים שלפני המופע הראשון של הסיומת, או מחרוזת ריקה אם אין תווים לפני הסיומת | |
| התווים שבין המופע הראשון של התחילית לבין המופע העוקב הראשון של הסיומת, או מחרוזת ריקה אם אין תווים בין התחילית לסיומת. |
אם מציינים תחילית או סיומת שלא מופיעות במאפיין, או אם
הסיומת תופיע רק לפני התחילית, הפונקציה extract() תחזיר מחרוזת
ריקה.
בדוגמאות הבאות אפשר לראות את הפלט מכמה תבניות
חילוץ שונות. הדוגמאות האלה מתייחסות לשם משאב של אובייקט
ב-Cloud Storage, projects/_/buckets/acme-orders-aaa/objects/data_lake/orders/:
| תבנית חילוץ | פלט |
|---|---|
/order_date={date}/ |
2019-11-03 |
buckets/{name}/ |
acme-orders-aaa |
/orders/{empty}order_date |
string ריק |
{start}/objects/data_lake |
projects/_/buckets/acme-orders-aaa |
orders/{end} |
order_date=2019-11-03/aef87g87ae0876 |
{all} |
projects/_/buckets/acme-orders-aaa/objects/data_lake/orders/ |
/orders/{none}/order_date= |
string ריק |
/orders/order_date=2019-11-03/ |
string ריק |
כשמחלצים מחרוזת שמייצגת תאריך, אפשר להשתמש
בפונקציות ואופרטורים של תאריך/שעה שמופיעים בדף הזה כדי להמיר את
הערך שחולץ ל-Timestamp. במאמר
הגדרת גישה לפי משאבים מופיעות דוגמאות לכך.