במאמר הזה מתוארים מאפיינים שנתמכים בביטוי תנאי.
מאפייני תנאים נתמכים
בקטעים הבאים מופיע סיכום של המאפיינים הנתמכים ופירוט של השירותיםGoogle Cloud שמזהים כל מאפיין.
מאפייני המשאבים
המאפיינים הבאים קשורים למשאב שלגביו נשלחת הבקשה.
| מאפיין | סיכום השימוש | שירותים Google Cloud נתמכים |
|---|---|---|
| מאפיין שירות המשאב |
ניהול הגישה לפי השירות שנמצא בשימוש. Google Cloud אפשר להשתמש במאפיין הזה בקישורים של תפקידים בכללי מדיניות הרשאה. |
|
| מאפיין סוג המשאב |
ניהול הגישה לפי סוג המשאב. אפשר להשתמש במאפיין הזה בקישורים של תפקידים בכללי מדיניות הרשאה. |
|
| מאפיין שם המשאב |
ניהול הגישה לפי שם המשאב. אפשר להשתמש במאפיין הזה בקישורים של תפקידים בכללי מדיניות הרשאה. |
|
| תגי משאבים |
ניהול הגישה לפי התגים המצורפים למשאב. אפשר להשתמש במאפיין הזה במקומות הבאים:
|
כל Google Cloud השירותים (מידע נוסף מופיע במאמר תמיכה בתנאים שעברו בירושה) |
אפשר לקרוא פרטים נוספים על מאפייני משאבים בקטע מאפייני משאבים שבדף הזה.
מאפיינים עיקריים
המאפיינים הבאים קשורים לחשבון המשתמש שעבורו נשלחה הבקשה.
| מאפיין | סיכום השימוש | סוגי ישויות נתמכים |
|---|---|---|
|
החלת מדיניות על סמך סוג החשבון הראשי בבקשה. אפשר להשתמש במאפיין הזה בקישורי מדיניות של מדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB). |
|
|
|
החלת מדיניות על סמך הזהות של חשבון המשתמש בבקשה. אפשר להשתמש במאפיין הזה בקישורי מדיניות של מדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB). |
|
אפשר לקרוא פרטים נוספים על מאפייני ישויות בקטע מאפייני ישויות שבדף הזה.
מאפייני הבקשות
המאפיינים הבאים קשורים לפרטי הבקשה.
| מאפיין | סיכום השימוש | שירותים Google Cloud נתמכים |
|---|---|---|
|
ניהול הגישה לפי רמות גישה ספציפיות.
רמת גישה היא מאפיין שמחושב לפי מאפיינים גולמיים
של הבקשה והמבקש, כמו כתובת ה-IP המקורית, מאפייני
המכשיר והשעה ביום. לדוגמה,
ייתכן שרמת גישה אפשר להשתמש במאפיין הזה בקישורים של תפקידים בכללי מדיניות הרשאה. |
שרת proxy לאימות זהויות (IAP) |
|
|
ניהול הגישה לפי נתונים של שירות או ממשק API ספציפיים של Google Cloud. אפשר להשתמש במאפיין הזה בקישורים של תפקידים בכללי מדיניות הרשאה. |
|
|
|
הגדרת גישה עם תאריך תפוגה, מתוזמנת או לזמן מוגבל למשאבי 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).
| משתנה של מאפיין | principal.type |
|---|---|
| סוג מאפיין |
|
| אופרטורים נתמכים | , , in |
| סוגים נתמכים של חשבונות משתמשים |
|
| דוגמאות |
הערך שמתקבל הוא
principal.type == "iam.googleapis.com/ServiceAccount"
הערך שמתקבל הוא
principal.type in ["iam.googleapis.com/WorkspaceIdentity", "iam.googleapis.com/WorkforcePoolIdentity"]
|
מאפיין principal.subject
בעזרת המאפיין principal.subject אפשר להגדיר תנאי לפי הגורם המבצע (principal) ששולח את הבקשה. לדוגמה, אפשר להוסיף תנאי לקישור מדיניות של מדיניות גבולות גישה לחשבון משתמש כדי לוודא שהמדיניות נאכפת רק לגבי חשבונות משתמשים שכתובות האימייל שלהם מסתיימות ב-@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 == "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> |
| פרטים |
בבקשה להגדיר את מדיניות ההרשאה של משאב, המאפיין הזה מכיל את שמות התפקידים מקישור התפקידים שהבקשה משנה. המאפיין לא מוגדר בסוגים אחרים של בקשות. |
| סוגי המשאבים שמקבלים את המאפיין הזה |
סוגי המשאבים הבאים מקבלים תנאים עם
המאפיין
|
| שירותים שמזהים את המאפיין הזה |
השירותים הבאים מזהים את
המאפיין
|
מאפיינים של 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, המאפיינים של כללי ההעברה לא משפיעים על היכולת ליצור רכיבים אחרים של מאזן עומסים (LB) 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. במאמר
הגדרת גישה לפי משאבים מופיעות דוגמאות לכך.