הסבר על מאפיינים לתנאים ב-IAM

במאמר הזה מתוארים מאפיינים שנתמכים בביטוי תנאי.

מאפייני תנאים נתמכים

בקטעים הבאים מופיע סיכום של המאפיינים הנתמכים ופירוט של השירותיםCloud de Confiance by S3NS שמזהים כל מאפיין.

מאפייני המשאבים

המאפיינים הבאים קשורים למשאב שלגביו נשלחת הבקשה.

מאפיין סיכום השימוש שירותים Cloud de Confiance נתמכים
מאפיין שירות המשאב

ניהול הגישה לפי השירות שנמצא בשימוש. Cloud de Confiance

אפשר להשתמש במאפיין הזה בקישורים של תפקידים בכללי מדיניות הרשאה.

  • BigQuery
  • BigQuery Reservation API
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Google Kubernetes Engine
  • Network Security Integration
  • Cloud NGFW
  • מנהל המשאבים
מאפיין סוג המשאב

ניהול הגישה לפי סוג המשאב.

אפשר להשתמש במאפיין הזה בקישורים של תפקידים בכללי מדיניות הרשאה.

  • BigQuery
  • BigQuery Reservation API
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Google Kubernetes Engine
  • Cloud NGFW
  • Network Security Integration
  • מנהל המשאבים
מאפיין שם המשאב

ניהול הגישה לפי שם המשאב.

אפשר להשתמש במאפיין הזה בקישורים של תפקידים בכללי מדיניות הרשאה.

  • BigQuery
  • BigQuery Reservation API
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Google Kubernetes Engine
  • Cloud NGFW
  • Network Security Integration
תגי משאבים

ניהול הגישה לפי התגים המצורפים למשאב.

אפשר להשתמש במאפיין הזה במקומות הבאים:

  • קישורי תפקידים במדיניות הרשאות
  • כללי דחייה במדיניות דחייה

כל Cloud de Confiance השירותים (מידע נוסף מופיע במאמר תמיכה בתנאים שעברו בירושה)

אפשר לקרוא פרטים נוספים על מאפייני משאבים בקטע מאפייני משאבים שבדף הזה.

מאפייני הבקשות

המאפיינים הבאים קשורים לפרטי הבקשה.

מאפיין סיכום השימוש שירותים Cloud de Confiance נתמכים

מאפייני API

ניהול הגישה לפי נתונים של שירות או ממשק API ספציפיים של Cloud de Confiance.

אפשר להשתמש במאפיין הזה בקישורים של תפקידים בכללי מדיניות הרשאה.

  • Cloud Key Management Service
  • Cloud Storage
  • Compute Engine
  • ניהול זהויות והרשאות גישה
  • מנהל המשאבים

מאפייני תאריך/שעה

הגדרת גישה עם תאריך תפוגה, מתוזמנת או לזמן מוגבל למשאבי Cloud de Confiance .

אפשר להשתמש במאפיינים האלה בקישורים של תפקידי מדיניות הרשאות.

כל Cloud de Confiance השירותים (מידע נוסף מופיע במאמר תמיכה בתנאים שעברו בירושה)

מאפיינים של כלל העברה

מציינים את הסוגים של כללי ההעברה שחשבון המשתמש יכול ליצור. לדוגמה, תוכלו לאפשר לחשבון משתמש ליצור כללי העברה למאזני עומסים פנימיים של Cloud de Confiance by S3NS , שמטפלים בתעבורת הנתונים שמגיעה מתוך רשת Cloud de Confiance , אבל לא למאזני עומסים חיצוניים של Cloud de Confiance שמטפלים בתעבורת נתונים שמגיעה מהאינטרנט.

אפשר להשתמש במאפיינים האלה בקישורים של תפקידי מדיניות הרשאות.

אפשר לקרוא פרטים נוספים על מאפייני בקשות בקטע מאפייני בקשות שבדף הזה.

תמיכה בתנאים שעברו בירושה

בנוסף להוספת תנאים למדיניות ההרשאות של משאבים ספציפיים לשירות, אפשר להוסיף קישורי תפקידים מותנים למשאבים ברמת הארגון, התיקייה או הפרויקט. כשמוסיפים קישורי תפקידים מותנים ברמת משאב המכיל, משאבים אחרים יורשים אותם דרך היררכיית המשאבים. תנאים שעוברים בירושה שימושיים כשבמשאב מסוים אי אפשר להשתמש בתנאים במדיניות ההרשאות או כשאין לו מדיניות הרשאות.

כשמשתמשים במאפיינים ברמת הארגון, התיקייה או הפרויקט, חשוב לזכור שרוב המאפיינים זמינים רק לסוגי משאבים ספציפיים. אם חלק מתנאי מסוים ישתמש במאפיין שלא זמין למשאב, החלק הזה של התנאי אף פעם לא יפורש כמתן גישה. לדוגמה, התנאי 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 אפשר להגדיר תנאי לפיCloud de Confiance השירות שנמצא בשימוש. לדוגמה, תוכלו להגדיר תנאי שמגביל את הגישה של משתמש למשאבים שמשתמשים בשירות cloudresourcemanager.googleapis.com. במאמר ערכי שירות של משאבים תוכלו למצוא רשימה של הערכים שנתמכים.

אפשר להשתמש במאפיין resource.service בקישורים של תפקידים במדיניות הרשאה.

משתנה של מאפיין resource.service
סוג מאפיין

string

במאמר ערכי שירות של משאבים תוכלו למצוא רשימה של הערכים שנתמכים.

אופרטורים נתמכים ,
פרטים כשמשתמשים במאפיין resource.type בתנאים, צריך לבדוק בעזרת המאפיין אם יש שוויון מדויק () או אי שוויון מדויק (). יכול להיות שהשוואות אחרות, כמו בדיקה של קידומת או סיומת, יציגו תוצאות בלתי צפויות.
דוגמה

הפונקציה מחזירה את הערך true עבור המשאבים של Compute Engine:

resource.service == "compute.googleapis.com"
שירותים נתמכים
  • BigQuery
  • BigQuery Reservation API
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Google Kubernetes Engine
  • Network Security Integration
  • Cloud NGFW
  • מנהל המשאבים

מאפיין resource.type

המאפיין resource.type מאפשר להגדיר תנאי לפי סוג המשאב. לדוגמה, אפשר להגדיר תנאי שמגביל את הגישה של משתמש למשאבים מסוג storage.googleapis.com/Object. במאמר ערכים של סוגי משאבים תוכלו למצוא רשימה של ערכים נתמכים.

אם התנאי שלך יכלול את המאפיין resource.name, מומלץ מאוד להשתמש במאפיין resource.type כדי לקבוע את סוגי המשאבים שהתנאי יחול עליהם. אפשר לקרוא פרטים נוספים בקטע מאפיין resource.name שבדף הזה.

אפשר להשתמש במאפיין resource.type בקישורים של תפקידים במדיניות הרשאה.

משתנה של מאפיין resource.type
סוג מאפיין

string

במאמר ערכים של סוגי משאבים תוכלו למצוא רשימה של הערכים שנתמכים.

אופרטורים נתמכים ,
פרטים כשמשתמשים במאפיין resource.type בתנאים, צריך לבדוק בעזרת המאפיין אם יש שוויון מדויק () או אי שוויון מדויק (). יכול להיות שהשוואות אחרות, כמו בדיקה של קידומת או סיומת, יציגו תוצאות לא צפויות.
דוגמאות

הפונקציה מחזירה את הערך true, אלא אם המשאב הוא תמונה של Compute Engine:

resource.type != "compute.googleapis.com/Image"

הפונקציה מחזירה את הערך true רק אם המשאב הוא תמונה של Compute Engine או דיסק אחסון מתמיד (persistent disk):

(resource.type == "compute.googleapis.com/Image" ||
 resource.type == "compute.googleapis.com/Disk")
סוגי המשאבים שנתמכים
BigQuery
  • מערכי נתונים
  • מודלים
  • תרחישים
  • Tables
BigQuery Reservation API
  • משימות
  • הזמנות ב-BI
  • התחייבויות לקיבולת
  • מיקומים
  • הזמנות
Cloud Key Management Service
  • גרסאות של מפתחות הצפנה
  • מפתחות הצפנה
  • אוספי מפתחות
  • מיקומים
Cloud Logging
  • קטגוריות ביומן
  • תצוגות ביומן
Cloud NGFW
  • קבוצות של כתובות
Cloud SQL
  • הרצות גיבויים
  • מופעים
Cloud Storage
  • קטגוריות
  • תיקיות מנוהלות
  • Objects
Compute Engine
  • שירותים לקצה העורפי (גלובלי ואזורי)
  • חומות אש
  • כללי העברה (גלובלי ואזורי)
  • תמונות
  • תבניות של מכונה
  • מופעים
  • דיסקים לאחסון מתמיד (persistent disks) (אזורי ושל תחום מוגדר)
  • snapshots
  • שרתי proxy של HTTP(S) ביעד (גלובליים ואזוריים)
  • שרתי proxy של SSL ביעד
  • שרתי proxy של TCP ביעד
Cloud de Confiance by S3NS
  • מיקומים1
Google Kubernetes Engine
  • אשכולות
Firestore
  • מסדי נתונים
Network Security Integration
  • יירוט של קבוצות פריסה
  • חסימת פריסות
  • יירוט של קבוצות נקודות קצה
  • יירוט שיוכים של קבוצות נקודות קצה
  • קבוצות פריסה של שיקוף
  • שיקוף פריסות
  • קבוצות של נקודות קצה לשיקוף
  • שיקוף של שיוכי קבוצות של נקודות קצה
מנהל המשאבים
  • פרויקטים

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
סוג מאפיין

string

לכל סוג משאב יש פורמט ספציפי לשם המשאב. לרשימת הפורמטים, אפשר לעיין במאמר הפורמט של שם המשאב.

הפונקציות והאופרטורים שנתמכים startsWith(), endsWith(), extract(), ,
פרטים

השדה resource.name מכיל את שם המשאב היחסי של משאב היעד בבקשה. השם של המשאב היחסי הוא נתיב ב-URI ללא קו נטוי קדימה (/).

כדי להעריך את הפונקציה startsWith() ביחס ל-resource.name הפונקציה הזו משתמשת בליטרל של מחרוזת התחילית.

כדי להעריך את הפונקציה endsWith() ביחס ל-resource.name הפונקציה הזו משתמשת בליטרל של מחרוזת הסיומת.

הפונקציה extract() משתמשת בתבנית חילוץ כדי לחלץ חלק מ-resource.name. אפשר לקרוא פרטים נוספים בקטע חילוץ ערכים משמות משאבים שבדף הזה.

האופרטורים ו- מושווים ל-resource.name כולו, או לחלק שחולץ מתוך resource.name.

דוגמאות

הפונקציה מחזירה את הערך true, אלא אם שם המשאב מזהה קטגוריה של Cloud Storage בשם secret-bucket-123:

resource.name != "projects/_/buckets/secret-bucket-123"

הפונקציה מחזירה את הערך true אם שם המשאב מתחיל בתחילית שצוינה ובפורמט של מכונות VM של Compute Engine:

resource.name.startsWith("projects/project-123/zones/us-east1-b/instances/prod-")

הפונקציה מחזירה את הערך true אם שם המשאב מתחיל בתחילית שצוינה, בפורמט של הקטגוריות של Cloud Storage:

resource.name.startsWith("projects/_/buckets/my_bucket/objects/test-object-")

הפונקציה מחזירה את הערך true אם שם המשאב מסתיים בסיומת שצוינה, לדוגמה סיומת הקובץ של אובייקט ב-Cloud Storage:

resource.name.endsWith(".jpg")

הפונקציה מחזירה את השם או המספר של הפרויקט, אם הוא מופיע:

resource.name.extract("projects/{project}/")
סוגי המשאבים שנתמכים
BigQuery
  • מערכי נתונים
  • מודלים
  • תרחישים
  • Tables
BigQuery Reservation API
  • משימות
  • הזמנות ב-BI
  • התחייבויות לקיבולת
  • מיקומים
  • הזמנות
Cloud Key Management Service
  • מפתחות הצפנה
  • גרסאות של מפתחות הצפנה
  • אוספי מפתחות
Cloud Logging
  • קטגוריות ביומן
  • תצוגות ביומן
Cloud NGFW
  • קבוצות של כתובות
Cloud SQL
  • הרצות גיבויים
  • מופעים
Cloud Storage
  • קטגוריות
  • תיקיות מנוהלות
  • Objects
Compute Engine
  • שירותים לקצה העורפי (גלובלי ואזורי)
  • חומות אש
  • כללי העברה (גלובלי ואזורי)
  • תמונות
  • תבניות של מכונה
  • מופעים
  • דיסקים לאחסון מתמיד (persistent disks) (אזורי ושל תחום מוגדר)
  • snapshots
  • שרתי proxy של HTTP(S) ביעד (גלובליים ואזוריים)
  • שרתי proxy של SSL ביעד
  • שרתי proxy של TCP ביעד
Google Kubernetes Engine
  • אשכולות
Network Security Integration
  • יירוט של קבוצות פריסה
  • חסימת פריסות
  • יירוט של קבוצות נקודות קצה
  • יירוט שיוכים של קבוצות נקודות קצה
  • קבוצות פריסה של שיקוף
  • שיקוף פריסות
  • קבוצות של נקודות קצה לשיקוף
  • שיקוף של שיוכי קבוצות של נקודות קצה

תגי משאבים

הפונקציות של תגי המשאבים מאפשרות להגדיר תנאי לפי התגים שמצורפים למשאבים נתמכים או עוברים בירושה למשאבים צאצאים. לדוגמה, אפשר להגדיר תנאי שמקצה תפקיד רק למשאבים שמצורף אליהם התג env: prod. למידע נוסף על בקרה על הגישה באמצעות תגים, אפשר לעיין במאמר בנושא תגים ובקרת גישה.

כל תג מורכב ממפתח ומערך. יש כמה סוגים של מזהים לכל מפתח וערך:

  • מזהה קבוע שהוא מזהה ייחודי בכל העולם ולא ניתן לעשות בו שימוש חוזר. לדוגמה, tagKeys/123456789012 יכול להיות המזהה הקבוע של מפתח התג ו-tagValues/567890123456 של ערך התג.
  • שם מקוצר. השם המקוצר של כל מפתח צריך להיות ייחודי בפרויקט או בארגון שבו המפתח מוגדר, והשם המקוצר של כל ערך צריך להיות ייחודי למפתח המשויך אליו. לדוגמה, env יכול להיות השם המקוצר של מפתח התג, ו-prod של ערך התג.
  • שם ממרחב שמות: צירוף של מספר הארגון או מזהה הפרויקט והשם המקוצר של מפתח התג. לדוגמה, 123456789012/env יכול להיות השם ממרחב השמות של מפתח התג שנוצר לארגון. איך מוצאים את מזהה משאב הארגון לדוגמה, myproject/env יכול להיות השם ממרחב השמות של מפתח התג שנוצר לפרויקט. איך מוצאים את מזהה הפרויקט

לקבלת הנחיות לבחירת סוג המזהה לשימוש בתנאים שלך, כדאי לעיין במאמר הגדרות ומזהים של תגים.

אתם יכולים להשתמש בתנאים מבוססי-תגים כדי להתנות את הגישה לכל משאב. התנאי הזה כולל משאבים עם תגים משלהם, וגם משאבים שמקבלים בירושה תגים ממשאבים אחרים. מידע נוסף על ירושת תגים דרך היררכיית המשאבים

עם זאת, באזורים מסוימים במסוף Cloud de Confiance לא מזוהים קישורי תפקידים במדיניות הרשאה עם תנאים מבוססי-תגים. לכן, אם יש לכם תפקיד עם תנאי מבוסס-תג, יכול להיות ש Cloud de Confiance המסוף ימנע מכם לבצע פעולות מסוימות באופן שגוי. אם נתקלים בבעיה הזו, צריך להשתמש בשיטה חלופית, כמו ה-CLI של gcloud, כדי לבצע את הפעולה.

אפשר להשתמש בתנאים מבוססי-תגים במקומות הבאים:

  • קישורי תפקידים במדיניות הרשאות
  • כללי דחייה במדיניות דחייה

אפשר להשתמש בפונקציות הבאות כדי להגדיר תנאים לפי תגים:

פונקציה תיאור
resource.hasTagKey(
  keyName: string
)
  bool

הפונקציה בודקת אם למשאב של הבקשה יש תג עם המפתח שצוין. המערכת מחפשת את מפתח התג לפי השם שלו ממרחב השמות. כדי לחפש מפתח תג באמצעות המזהה הקבוע שלו, אפשר להשתמש בפונקציה resource.hasTagKeyId().

פרמטר
keyName: השם ממרחב השמות של מפתח התג, עם המזהה המספרי של הארגון והקו הנטוי קדימה כתחילית. לדוגמה, 123456789012/env.
דוגמה

הפונקציה מחזירה את הערך true אם המשאב לבקשה מכיל תג עם המפתח env:

resource.hasTagKey('123456789012/env')
resource.hasTagKeyId(
  keyId: string
)
  bool

הפונקציה בודקת אם למשאב של הבקשה יש תג עם המפתח שצוין. המערכת מחפשת את מפתח התג לפי המזהה הקבוע שלו. כדי לחפש מפתח תג באמצעות השם שלו ממרחב השמות, אפשר להשתמש בפונקציה resource.hasTagKey().

פרמטר
keyId: המזהה הקבוע של מפתח התג. לדוגמה, tagKeys/123456789012.
דוגמה

הפונקציה מחזירה את הערך true אם המשאב לבקשה מכיל תג עם המפתח tagKeys/123456789012:

resource.hasTagKeyId('tagKeys/123456789012')
resource.matchTag(
  keyName: string,
  valueShortName: string
)
  bool

הפונקציה בודקת אם למשאב הבקשה יש תג עם המפתח והערך שצוינו. המערכת מחפשת את המפתח לפי השם שלו ממרחב השמות, ואת הערך לפי השם המקוצר שלו. כדי לחפש מפתח תג וערך באמצעות המזהים הקבועים שלהם, אפשר להשתמש בפונקציה resource.matchTagId().

פרמטרים
  • keyName: השם ממרחב השמות של מפתח התג, עם המזהה המספרי של הארגון וקו נטוי קדימה כתחילית. לדוגמה: 123456789012/env.
  • valueShortName: השם המקוצר של ערך התג. לדוגמה: prod.
דוגמה

הפונקציה מחזירה את הערך true אם משאב הבקשה מכיל תג עם המפתח 123456789012/env ועם הערך prod:

resource.matchTag('123456789012/env', 'prod')
resource.matchTagId(
  keyId: string,
  valueId: string
)
  bool

הפונקציה בודקת אם למשאב הבקשה יש תג עם המפתח והערך שצוינו. אפשר לחפש את המפתח והערך באמצעות המזהים הקבועים שלהם. כדי לחפש מפתח תג באמצעות השם שלו ממרחב השמות ואת הערך באמצעות השם המקוצרשלו צריך להשתמש בפונקציה resource.matchTag().

פרמטרים
  • keyId: המזהה הקבוע של מפתח התג. לדוגמה, tagKeys/123456789012.
  • valueId: המזהה הקבוע של ערך התג. לדוגמה, tagValues/567890123456.
דוגמה

הפונקציה מחזירה את הערך true אם המשאב של הבקשה מכיל תג עם המפתח tagKeys/123456789012 ועם הערך tagValues/567890123456:

resource.matchTagId('tagKeys/123456789012', 'tagValues/567890123456')

מאפייני הבקשות

מאפייני בקשה מאפשרים ליצור תנאים שמעריכים פרטים בנוגע לבקשה, כמו התפקידים ששונו על ידי הבקשה או התאריך והשעה של הבקשה.

מאפייני API

מאפייני ה-API עוזרים לנהל את הגישה לפי נתונים של שירות או ממשק API מסוימים Cloud de Confiance . אפשר להשתמש במאפייני API בקישורים של תפקידים בכללי מדיניות הרשאה.

בדפים הבאים מופיעות דוגמאות למקרים שבהם כדאי להשתמש במאפייני API בתנאי:

  • הגדרת מגבלות על הקצאת תפקידים
  • שירותים מסוימים לא מזהים מאפייני API. בקטעים הבאים מצוין אילו שירותים מזהים כל מאפיין API.

    פונקציות למאפייני API

    אפשר להשתמש בפונקציה הבאה כדי לעבוד עם מאפייני API:

    פונקציה תיאור
    api.getAttribute(
      attributeName: string,
      defaultValue: V<T>
    )
      V<T>

    הפונקציה מקבלת את מאפיין ה-API המבוקש.

    פרמטרים
    • attributeName: מאפיין ה-API שמקבלים. הערכים שנתמכים מופיעים בחלק מאפייני API של Cloud Storage ובחלק מאפייני API של IAM שבדף הזה.
    • defaultValue: ערך ברירת המחדל (V) שמשתמשים בו אם מאפיין ה-API לא זמין. הערך V הוא מסוג T, ו-T זהה לסוג הערך של מאפיין ה-API. לדוגמה, אם הערך של מאפיין ה-API הוא מחרוזת, אפשר להשתמש במחרוזת ריקה או במחרוזת placeholder, כמו undefined.

    דוגמה

    הפונקציה מחזירה את אחת מהאפשרויות הבאות:

    • לבקשות להענקת תפקיד או לביטול תפקיד, הפונקציה מחזירה רשימה של תפקידים שהבקשה שינתה.
    • לכל סוגי הבקשות האחרים, הפונקציה מחזירה רשימה ריקה.
    api.getAttribute("iam.googleapis.com/modifiedGrantsByRole", [])
    hasOnly(
      items: list<T>
    )
      bool

    הפונקציה בודקת שרשימה מכילה רק את הפריטים המורשים, או קבוצת משנה של הפריטים האלה. אפשר לקרוא לפונקציה ברשימה שמוחזרת באמצעות api.getAttribute().

    פרמטר
    items: רשימה של פריטים מסוג T. כל פריט הוא ערך שמאפיין ה-API מורשה להכיל.
    דוגמה

    הפונקציה בודקת אם הבקשה תקצה או תבטל תפקידים אחרים מלבד עריכה ב-Pub/Sub (roles/pubsub.editor) או פרסום הודעות ב-Pub/Sub (roles/pubsub.publisher):

    api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', [])
        .hasOnly(['roles/pubsub.editor', 'roles/pubsub.publisher'])

    למטה מוצגת התוצאה של ערכי בקשות שונים:

    תפקידים שהוקצו או בוטלו תוצאה
    אין תפקידים

    true

    אם שום תפקיד לא שונה, הערך api.getAttribute() מחזיר את ערך ברירת המחדל. במאפיין הזה, ערך ברירת המחדל הוא תמיד רשימה ריקה. מעצם הגדרתה, רשימה ריקה לא מכילה ערכים שלא מופיעים ברשימת ההיתרים.

    roles/pubsub.editor

    true

    התפקיד נמצא ברשימת ההיתרים.

    roles/pubsub.editor
    roles/pubsub.publisher

    true

    שני התפקידים נמצאים ברשימת ההיתרים

    roles/billing.admin

    false

    התפקיד לא נמצא ברשימת ההיתרים.

    roles/billing.admin
    roles/pubsub.editor

    false

    תפקיד אחד נמצא ברשימת ההיתרים, והאחר לא נמצא.

    מאפייני API של IAM

    IAM מספק את מאפיין ה-API הבא:

    משתנה של מאפיין iam.googleapis.com/modifiedGrantsByRole
    סוג מאפיין list<string>
    פרטים

    בבקשה להגדיר את מדיניות ההרשאה של משאב, המאפיין הזה מכיל את שמות התפקידים מקישור התפקידים שהבקשה משנה.

    המאפיין לא מוגדר בסוגים אחרים של בקשות.

    סוגי המשאבים שמקבלים את המאפיין הזה

    סוגי המשאבים הבאים מקבלים תנאים עם המאפיין modifiedGrantsByRole במדיניות ההרשאה שלהם:

    • פרויקטים
    • תיקיות
    • ארגונים
    שירותים שמזהים את המאפיין הזה

    השירותים הבאים מזהים את המאפיין modifiedGrantsByRole:

    • Cloud Key Management Service
    • Cloud Storage
    • Compute Engine
    • ניהול זהויות והרשאות גישה
    • מנהל המשאבים

    מאפיינים של Vertex AI Agent Engine API

    ‫Vertex AI Agent Engine מספק את מאפייני ה-API הבאים עבור שירותי ניהול ההקשר של Memory Bank ושל Session:

    משתנה של מאפיין aiplatform.googleapis.com/memoryScope
    סוג מאפיין map<string, string>
    פרטים

    בבקשה שכוללת גישה למשאבי Memory Bank או שינוי שלהם, המאפיין מכיל את הערך של השדה scope בזיכרון.

    המאפיין לא מוגדר בסוגים אחרים של בקשות.

    שירותים שמזהים את המאפיין הזה Vertex AI Agent Engine
    משתנה של מאפיין aiplatform.googleapis.com/sessionUserId
    סוג מאפיין string
    פרטים

    בבקשה שכוללת גישה למשאבי Session או שינוי שלהם, המאפיין הזה מכיל את הערך של השדה user_id ב-Session.

    המאפיין לא מוגדר בסוגים אחרים של בקשות.

    שירותים שמזהים את המאפיין הזה Vertex AI Agent Engine

    מאפיין תאריך/שעה

    המאפיין 'תאריך/שעה' משמש להגדרת גישה עם תאריך תפוגה, מתוזמנת או לזמן מוגבל Cloud de Confiance למשאבים. אפשר להשתמש במאפייני תאריך ושעה בקישורים של תפקידים במדיניות הרשאות.

    המאפיין הזה נתמך בכל השירותים וסוגי המשאבים של Cloud de Confiance . בקטע תמיכה בתנאים שעברו בירושה שבדף הזה, מוסבר איך מחילים תנאים של תאריך/שעה על משאבים שלא תומכים בהם ישירות.

    המאפיין request.time מכיל את חותמת הזמן של הבקשה. אפשר להשוות את חותמת הזמן הזו לחותמת זמן אחרת, או לטווח זמן מסוים.

    בקטעים הבאים מפורטות הפונקציות שבהן אפשר להשתמש כדי להגדיר תנאים לפי חותמות זמן וטווחי זמן.

    יצירה, השוואה ושינוי של חותמות זמן וטווחי זמן

    פונקציה או אופרטור תיאור
    date(
      value: string
    )
      Timestamp

    הפונקציה ממירה תאריך מ-string ל-Timestamp.

    פרמטר
    value: תאריך בפורמט YYYY-MM-DD, שבו YYYY הוא השנה, MM הוא שתי הספרות של החודש ו-DD הוא שתי הספרות של היום. הערך בשדה Timestamp שמתקבל מכיל את התאריך שצוין ואת השעה (00:00:00.000 UTC).
    דוגמה

    הפונקציה יוצרת Timestamp שמייצגת את התאריך 2023-02-01 ואת השעה 00:00:00.000 UTC:

    date("2023-02-01")
    duration(
      value: string
    )
      Duration

    הפונקציה ממירה את משך הזמן מ-string ל-Duration.

    פרמטר
    value: Duration בשניות, ואחריהן s.
    דוגמאות

    הפונקציה יוצרת טווח זמן שמייצג דקה וחצי:

    duration("90s")

    הפונקציה יוצרת טווח זמן שמייצג 30 ימים:

    duration("2592000s")
    timestamp(
      value: string
    )
      Timestamp

    הפונקציה ממירה string ל-Timestamp.

    פרמטר

    value: חותמת זמן לפי שעון UTC שתואמת ל- RFC 3339.

    דוגמה

    הפונקציה יוצרת חותמת זמן שמייצגת את ה-12 באפריל 2023, בשעה 23:20:50.52 לפי שעון UTC:

    timestamp("2023-04-12T23:20:50.52Z")
    , , ,

    האופרטור משווה בין שני ערכים של Timestamp.

    דוגמאות

    הפונקציה מחזירה את הערך true אם זמן הבקשה הוא לפני 12 באפריל 2022, בשעה 00:00:00 UTC:

    request.time < timestamp("2022-04-12T00:00:00.00Z")

    הפונקציה מחזירה את הערך true אם זמן הבקשה הוא לפני או שווה ל- 12 באפריל 2022, בשעה 00:00:00 UTC:

    request.time <= timestamp("2022-04-12T00:00:00.00Z")

    הפונקציה מחזירה את הערך true אם זמן הבקשה הוא אחרי 12 באפריל 2022, בשעה 00:00:00 UTC:

    request.time > timestamp("2022-04-12T00:00:00.00Z")

    הפונקציה מחזירה את הערך true אם זמן הבקשה הוא אחרי או שווה ל- 12 באפריל 2022, בשעה 00:00:00 UTC:

    request.time >= timestamp("2022-04-12T00:00:00.00Z")
    • timestamp + duration   Timestamp
    • timestamp - duration   Timestamp

    הפונקציה מחברת או מחסרת Duration מ-Timestamp.

    דוגמאות

    הפונקציה מחזירה את Timestamp שנמצאת 30 דקות אחרי 14:30:00 UTC ב-12 באפריל 2024:

    timestamp("2024-04-12T14:30:00.00Z") + duration("1800s")

    הפונקציה מחזירה את Timestamp שנמצאת 60 יום לפני 14:30:00 UTC ב-12 באפריל 2024:

    timestamp("2024-04-12T14:30:00.00Z") - duration("5184000s")

    חילוץ מידע מחותמת זמן

    הפונקציות בקטע הזה מאפשרות לחלץ מידע מחותמת זמן, כמו למשל, היום בשבוע שבו נמצאת חותמת הזמן.

    בתנאים של IAM, כל חותמות הזמן הן לפי שעון UTC. עם זאת, יכול להיות שתרצו לחלץ מידע לפי אזור זמן אחר. לדוגמה, יכול להיות שתרצו לדעת אם חותמת זמן לפי שעון UTC נמצאת ביום שני לפי אזור הזמן בברלין שבגרמניה.

    כדי לציין אזור זמן אחר, מכניסים את אזור הזמן לפונקציה. משתמשים בשם או בסטייה משעון UTC ממסד הנתונים של אזור הזמן של IETF. לדוגמה, אפשר להשתמש ב-Europe/Berlin או ב-+01:00 לציון שעון מרכז אירופה (CET).

    הפונקציות והאופרטורים שנתמכים תיאור
    Timestamp.getDate(
      timeZone: string
    )
      int

    הפונקציה מקבלת את היום בחודש מה-Timestamp. הערך מתקבל מאינדקס שמתחיל בספרה אחת. היום הראשון בחודש הוא 1.

    פרמטר
    timeZone: אזור הזמן שעבורו תחושב התוצאה. ברירת המחדל היא UTC.
    דוגמה

    הפונקציה מחזירה את הערך true אם הבקשה נשלחת אחרי היום ה-15 בחודש, לפי שעון UTC:

    request.time.getDate() > 15
    Timestamp.getDayOfMonth(
      timeZone: string
    )
      int

    הפונקציה מקבלת את היום בחודש מה-Timestamp. הערך מתקבל מאינדקס שמתחיל בספרה אפס. היום הראשון בחודש הוא 0.

    פרמטר
    timeZone: אזור הזמן שעבורו תחושב התוצאה. ברירת המחדל היא UTC.
    דוגמה

    הפונקציה מחזירה את הערך true אם הבקשה נשלחת אחרי היום ה-15 בחודש, לפי שעון UTC:

    request.time.getDayOfMonth() > 14
    Timestamp.getDayOfWeek(
      timeZone: string
    )
      int

    הפונקציה מקבלת את היום בשבוע מה-Timestamp. הערך מתקבל מאינדקס שמתחיל בספרה אפס. לדוגמה, יום ראשון הוא 0.

    פרמטר
    timeZone: אזור הזמן שעבורו תחושב התוצאה. ברירת המחדל היא UTC.
    דוגמה

    הפונקציה מחזירה את הערך true אם הבקשה נשלחת בין הימים שני עד שישי בברלין שבגרמניה:

    request.time.getDayOfWeek("Europe/Berlin") > 0 &&
        request.time.getDayOfWeek("Europe/Berlin") < 6
    Timestamp.getDayOfYear(
      timeZone: string
    )
      int

    הפונקציה מקבלת את היום בשנה מה-Timestamp. הערך מתקבל מאינדקס שמתחיל בספרה אפס. היום הראשון בשנה הוא 0.

    פרמטר
    timeZone: אזור הזמן שעבורו תחושב התוצאה. ברירת המחדל היא UTC.
    דוגמה

    הפונקציה מחזירה את הערך true אם הבקשה נשלחת במהלך 5 הימים הראשונים של השנה במאונטיין ויו, קליפורניה:

    request.time.getDayOfYear("America/Los_Angeles") >= 0 &&
        request.time.getDayOfYear("America/Los_Angeles") < 5
    Timestamp.getFullYear(
      timeZone: string
    )
      int

    הפונקציה מקבלת את השנה מה-Timestamp.

    פרמטר
    timeZone: אזור הזמן שעבורו תחושב התוצאה. ברירת המחדל היא UTC.
    דוגמה

    הפונקציה מחזירה את הערך true אם הבקשה נשלחת במהלך שנת 2023 במאונטיין ויו, קליפורניה:

    request.time.getFullYear("America/Los_Angeles") == 2023

    הפונקציה מחזירה את הערך true אם הבקשה נשלחת במהלך שנת 2022 לפי שעון UTC:

    request.time.getFullYear() == 2022
    Timestamp.getHours(
      timeZone: string
    )
      int

    הפונקציה מקבלת את השעה ביום מה-Timestamp. הערך מתקבל מאינדקס שמתחיל בספרה אפס. הערכים נעים בין 0 ל-23.

    אפשר לשלב את הפונקציה הזו עם getDayofWeek() כדי להקצות גישה רק במהלך שעות הפעילות המותרות לפי החוק המקומי.

    פרמטר
    timeZone: אזור הזמן שעבורו תחושב התוצאה. ברירת המחדל היא UTC.
    דוגמה

    הפונקציה מחזירה את הערך true אם הבקשה נשלחת בין השעות 09:00 ל-17:00 באמצע השבוע בברלין, גרמניה:

    request.time.getDayOfWeek("Europe/Berlin") >= 1 &&
        request.time.getDayOfWeek("Europe/Berlin") <= 5 &&
        request.time.getHours("Europe/Berlin") >= 9 &&
        request.time.getHours("Europe/Berlin") <= 17
    Timestamp.getMilliseconds(
      timeZone: string
    )
      int

    הפונקציה מקבלת את מספר אלפיות השנייה מה-Timestamp. הערך מתקבל מאינדקס שמתחיל בספרה אפס. הערכים נעים בין 0 ל-999.

    פרמטר
    timeZone: אזור הזמן שעבורו תחושב התוצאה. ברירת המחדל היא UTC.
    Timestamp.getMinutes(
      timeZone: string
    )
      int

    הפונקציה מקבלת את מספר הדקות אחרי השעה מה-Timestamp. הערך מתקבל מאינדקס שמתחיל בספרה אפס. הערכים נעים בין 0 ל-59.

    פרמטר
    timeZone: אזור הזמן שעבורו תחושב התוצאה. ברירת המחדל היא UTC.
    דוגמה

    הפונקציה מחזירה את הערך true אם הבקשה נשלחת בשעה 09:30 או מאוחר יותר בברלין, גרמניה:

    request.time.getHours("Europe/Berlin") >= 9 &&
        request.time.getMinutes("Europe/Berlin") >= 30
    Timestamp.getMonth(
      timeZone: string
    )
      int

    הפונקציה מקבלת את החודש בשנה מה-Timestamp. הערך מתקבל מאינדקס שמתחיל בספרה אפס. הערכים נעים בין 0 ל-11.

    פרמטר
    timeZone: אזור הזמן שעבורו תחושב התוצאה. ברירת המחדל היא UTC.
    דוגמה

    הפונקציה מחזירה את הערך true אם הבקשה נשלחת במהלך חודש אפריל במאונטיין ויו, קליפורניה:

    request.time.getMonth("America/Los_Angeles") == 3
    Timestamp.getSeconds(
      timeZone: string
    )
      int

    הפונקציה מקבלת את מספר השניות מה-Timestamp. הערך מתקבל מאינדקס שמתחיל בספרה אפס. הערכים נעים בין 0 ל-59.

    פרמטר
    timeZone: אזור הזמן שעבורו תחושב התוצאה. ברירת המחדל היא UTC.
    , , ,

    האופרטור משווה את הפלט של שתי פונקציות בטבלה הזו.

    מאפיינים של כלל העברה

    בעזרת המאפיינים של כללי ההעברה אפשר לציין את הסוגים של כללי ההעברה שחשבון משתמש יכול ליצור. לדוגמה, תוכלו לאפשר לחשבון משתמש ליצור כללי העברה למאזני עומסים פנימיים Cloud de Confiance by S3NS, שמטפלים בתעבורת הנתונים שמגיעה מתוך רשת Cloud de Confiance , אבל לא למאזני עומסים חיצוניים Cloud de Confianceשמטפלים בתעבורת נתונים שמגיעה מהאינטרנט. אפשר להשתמש במאפיינים של כלל העברה בקישורי תפקידים במדיניות הרשאה.

    ב-Cloud Load Balancing, המאפיינים של כללי ההעברה לא משפיעים על היכולת ליצור רכיבים אחרים של מאזן עומסים (LB) Cloud de Confiance , כמו שירותים לקצה העורפי, שרתי proxy ביעד, בדיקות תקינות ומיפוי של כתובות URL.

    פונקציות נתמכות

    פונקציה תיאור
    compute.isForwardingRuleCreationOperation()   bool

    הפונקציה בודקת אם הבקשה יוצרת כלל העברה.

    דוגמה
    אפשר לראות את הדוגמה של compute.matchLoadBalancingSchemes().
    compute.matchLoadBalancingSchemes(
      schemes: list<string>
    )
      bool

    האפליקציה בודקת אם הבקשה משפיעה על אחד מהסוגים של סכמת איזון עומסים. במאמר שימוש בתנאי IAM במאזני העומסים ב- Cloud de Confiance מפורט מידע על המזהה של כל סכמת איזון עומסים.

    פרמטר
    schemes: סכמות איזון העומסים שהבקשה יכולה להשפיע עליהן.
    דוגמה

    הפונקציה מחזירה את אחת מהאפשרויות הבאות:

    • אם הבקשה לא יוצרת כלל העברה, הפונקציה מחזירה את הערך true.
    • אם הבקשה כן יוצרת כלל העברה, הפונקציה מחזירה את הערך true רק אם כלל ההעברה משפיע על סכמת איזון עומסים של INTERNAL, על INTERNAL_MANAGED או על INTERNAL_SELF_MANAGED.
    !compute.isForwardingRuleCreationOperation() || (
      compute.isForwardingRuleCreationOperation() &&
      compute.matchLoadBalancingSchemes([
        'INTERNAL', 'INTERNAL_MANAGED', 'INTERNAL_SELF_MANAGED'
      ])
    )

    סוגי המשאבים שנתמכים

    המאפיין הזה זמין לבקשות ליצור את סוגי המשאבים הבאים:

    שירות סוגי המשאבים
    Cloud Load Balancing כללי העברה
    Cloud VPN כללי העברה (גלובלי ואזורי)
    Compute Engine כללי העברה (להעברת פרוטוקול)
    Cloud Service Mesh1 כללי העברה

    1 עושה שימוש במאפייני המשאבים עבור Compute Engine.

    חילוץ ערכים ממאפיינים

    אפשר להשתמש בפונקציה 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=2019-11-03/aef87g87ae0876:

    תבנית חילוץ פלט
    /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/order_date=2019-11-03/aef87g87ae0876
    /orders/{none}/order_date= string ריק
    /orders/order_date=2019-11-03/{id}/data_lake string ריק

    כשמחלצים מחרוזת שמייצגת תאריך, אפשר להשתמש בפונקציות ואופרטורים של תאריך/שעה שמופיעים בדף הזה כדי להמיר את הערך שחולץ ל-Timestamp. במאמר הגדרת גישה לפי משאבים מופיעות דוגמאות לכך.