תגים מאפשרים להגדיר תנאי לאישור או לדחייה של כללי מדיניות אם תג ספציפי מצורף או לא מצורף למשאב. אתם יכולים להשתמש בתגים ובאכיפה מותנית של כללי מדיניות הארגון כדי לספק שליטה מרכזית במשאבים בהיררכיה.
לפני שמתחילים
מידע נוסף על תגים ועל אופן הפעולה שלהם זמין במאמר סקירה כללית על תגים.
הוראות מפורטות לשימוש בתגים זמינות במאמר יצירה וניהול של תגים.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לניהול מדיניות הארגון, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM Organization policy administrator (אדמין של מדיניות הארגון) (roles/orgpolicy.policyAdmin) בארגון.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
אפשר להוסיף תנאי IAM לקישור של תפקיד האדמין של מדיניות הארגון כדי להעביר את הניהול של מדיניות הארגון. כדי לשלוט במשאבים שבהם יש למשתמש הרשאה לנהל את מדיניות הארגון, אפשר להתנות את הקצאת התפקיד בתג מסוים. מידע נוסף על יצירת מדיניות ארגונית
תמיכה באילוצים של תגים
אתם יכולים לאכוף מדיניות ארגונית באופן מותנה באמצעות כל סוג של אילוץ, על ידי שימוש בתגים שמצורפים למשאבי ארגון, תיקייה ופרויקט. אפשר להשתמש בתגים שמצורפים ישירות למשאבי שירות נתמכים, כמו מכונות של Compute Engine, בתנאים של הגבלות מנוהלות או מותאמות אישית. מידע נוסף זמין במאמר בנושא שירותים שתומכים בתגים.
ההגבלות המנוהלות הקודמות הבאות תומכות בתנאים שכוללים תגים שמצורפים למשאבי שירות:
constraints/sql.restrictNoncompliantDiagnosticDataAccessconstraints/gcp.restrictCmekCryptoKeyProjectsconstraints/sql.restrictAuthorizedNetworksconstraints/gcp.resourceLocationsconstraints/gcp.restrictNonCmekServicesconstraints/sql.restrictNoncompliantResourceCreationconstraints/sql.restrictPublicIp
אילוצים מנוהלים מדור קודם שלא מופיעים ברשימה הזו לא תומכים בתנאים שכוללים תגים שמצורפים למשאבי שירות.
הגדרת מדיניות הארגון באמצעות תגים
כדי להשתמש בתגים כדי לקבוע איפה מדיניות הארגון צריכה לחול, צריך לציין תנאי בקובץ ה-YAML של מדיניות הארגון. אתם יכולים להגדיר את התנאי כך שיתאים לצמד מסוים של מפתח/ערך של תג, ולדרוש שיוגדר ערך תג מסוים כדי שמדיניות הארגון תיאכף.
אפשר גם להגדיר את התנאי כך שיתאים למפתח תג. כך תוכלו להפעיל או להשבית את האכיפה בכל המשאבים עם מפתח התג הזה, בלי קשר לערך התג שמצורף.
רוב כללי המדיניות של הארגון מוערכים ונאכפים כשיוצרים משאב או מעדכנים אותו. אפשר להשתמש בתגי חובה כדי לשלוט במשאבים בזמן שהם נוצרים.
דוגמה לכלל של רשימת מסננים
בדוגמה הבאה אפשר לראות איך מגדירים מדיניות ארגונית שמחילה את האילוץ gcp.resourceLocations מדור קודם. מדיניות הארגון הזו משתמשת בערכים מותנים וגם בערכים לא מותנים, שמוגדרים באותו קובץ מדיניות.
המסוף
כדי להגדיר את מדיניות הארגון:
במסוף Cloud de Confiance , נכנסים לדף מדיניות הארגון.
בכלי לבחירת פרויקטים, בוחרים את הפרויקט שרוצים להגדיר לו את מדיניות הארגון.
בדף מדיניות הארגון, בוחרים אילוץ מהרשימה. יופיע הדף Policy details של ההגבלה הזו.
כדי לעדכן את מדיניות הארגון של המשאב הזה, לוחצים על ניהול המדיניות.
בדף עריכת מדיניות, בוחרים באפשרות במקום המדיניות של המשאב הראשי.
בקטע Policy enforcement (אכיפת מדיניות), בוחרים באחת מאפשרויות האכיפה:
כדי למזג את מדיניות הארגון ולהעריך אותה, בוחרים באפשרות מיזוג עם ההורה. מידע נוסף על ירושה והיררכיית המשאבים זמין במאמר הערכה של היררכיה.
כדי לשנות מדיניות שעוברת בירושה ממשאב ראשי, בוחרים באפשרות החלפה.
לוחצים על הוספת כלל.
בקטע ערכי מדיניות, בוחרים אם מדיניות הארגון הזו צריכה לאפשר את כל הערכים, לדחות את כל הערכים או לציין קבוצה מותאמת אישית של ערכים.
- הערכים הספציפיים שהמדיניות מקבלת תלויים בשירות שעליו חלה המדיניות. רשימה של מגבלות והערכים שהן מקבלות מופיעה במאמר מגבלות שקשורות למדיניות הארגון.
אופציונלי: כדי להגדיר את מדיניות הארגון כתלויה בתג, לוחצים על הוספת תנאי.
בשדה Title, מזינים שם לתנאי.
בשדה תיאור, כותבים תיאור לתנאי. התיאור מספק הקשר לגבי התגים הנדרשים וההשפעה שלהם על המשאבים.
אתם יכולים להשתמש בכלי ליצירת תנאים כדי ליצור תנאי שדורש תג מסוים כדי שההגבלה תיכנס לתוקף.
בתיבה Condition type (סוג התנאי), בוחרים באפשרות Tag (תג).
בוחרים את האופרטור לתנאי.
כדי להתאים תג שלם, משתמשים באופרטור has value עם השם של התג במרחב השמות, או באופרטור has value ID עם מזהי המפתח והערך של התג.
כדי להתאים רק את מפתח התג, משתמשים באופרטור has key עם השם של מפתח התג ממרחב השמות, או באופרטור has key ID עם מזהה מפתח התג.
כדי ליצור כמה תנאים, לוחצים על הוספה. אם מוסיפים עוד תנאי, אפשר להגדיר את הלוגיקה של התנאי כך שכל התנאים יתקיימו. כדי לעשות את זה, מעבירים את המתג And למצב מופעל. אפשר להגדיר את הלוגיקה של התנאים כך שרק אחד מהתנאים יצטרך להתקיים. כדי לעשות את זה, לוחצים על המתג או.
כדי למחוק ביטוי, לוחצים על X הגדול משמאל לשדות של התנאי.
כשמסיימים לערוך את התנאים, לוחצים על שמירה.
אפשר להשתמש בעורך התנאים כדי ליצור ביטוי מותנה באופן פרוגרמטי. בנוסף, יוצג עיבוד פרוגרמטי של קבוצת התנאים הנוכחית.
ביטוי התנאי חייב לכלול 1 עד 10 ביטויי משנה, שמחוברים באמצעות האופרטורים
||או&&. כל ביטוי משנה חייב להיות אחת מהפונקציות הבאות:"resource.matchTag('KEY_NAME', 'VALUE_SHORT_NAME')"מחליפים את מה שכתוב בשדות הבאים:
KEY_NAMEבשם ממרחב השמות של מפתח התג. לדוגמה,123456789012/env.
VALUE_SHORT_NAMEמחליפים בשם המקוצר של ערך התג. לדוגמה,prod.
לדוגמה:
resource.matchTag('123456789012/environment, 'prod')"resource.matchTagId('KEY_ID', 'VALUE_ID')"מחליפים את מה שכתוב בשדות הבאים:
KEY_IDבמזהה הקבוע של מפתח התג. לדוגמה,tagKeys/123456789012.
VALUE_IDבמזהה הקבוע של ערך התג. לדוגמה,tagValues/567890123456.
לדוגמה:
resource.matchTagId('tagKeys/123456789012', 'tagValues/567890123456')"resource.hasTagKey('KEY_NAME')"מחליפים את
KEY_NAMEבשם עם מרחב השמות של מפתח התג. לדוגמה,123456789012/env.לדוגמה:
resource.matchTag('123456789012/environment, 'prod')"resource.hasTagKeyId('KEY_ID')"מחליפים את
KEY_IDבמזהה הקבוע של מפתח התג. לדוגמה,tagKeys/123456789012.לדוגמה:
resource.hasTagKeyId('tagKeys/123456789012')
- אפשר להשתמש בעורך התנאים כדי להחיל את האופרטור הלוגי
!. לדוגמה, השאילתה!resource.matchTag('ORGANIZATION_ID/location', 'us-west1')תחיל את המגבלה של מדיניות הארגון על כל משאב שלא כולל את התגus-west1.
כדי לאכוף את המדיניות, לוחצים על הגדרת מדיניות.
gcloud
כדי להגדיר את מדיניות הארגון, יוצרים קובץ YAML לאחסון מדיניות הארגון:
name: RESOURCE_TYPE/RESOURCE_ID/policies/gcp.resourceLocations
spec:
rules:
# As there is no condition specified, this allowedValue is enforced unconditionally.
- values:
allowedValues:
- us-east1-locations
# This condition applies to the values block.
- condition:
expression: "resource.matchTag('ORGANIZATION_ID/location', 'us-west1')"
values:
allowedValues:
- us-west1-locations
אפשר להתאים תג שלם לתנאי באמצעות האופרטור resource.matchTag עם השם של התג ממרחב השמות.
כדי להתאים רק את מפתח התג, משתמשים באופרטור resource.hasTagKey עם השם של מפתח התג ממרחב השמות. כדי להתאים לכל ערך תג עבור מפתח תג נתון, משתמשים באופרטור resource.hasTagKeyID עם מזהה מפתח התג.
מריצים את הפקודה set-policy:
gcloud org-policies set-policy POLICY_PATH
מחליפים את מה שכתוב בשדות הבאים:
POLICY_PATH: הנתיב המלא לקובץ ה-YAML של מדיניות הארגוןRESOURCE_TYPE:organizations, foldersאוprojects
RESOURCE_ID: מזהה הארגון, מזהה התיקייה, מזהה הפרויקט או מספר הפרויקט, בהתאם לסוג המשאב שצוין ב-RESOURCE_TYPE
ORGANIZATION_ID: ארגון ההורה של מפתח התג
במקרה של מדיניות הארגון הזו, האילוץ המנוהל מדור קודם gcp.resourceLocations נאכף על המשאב ועל כל משאבי הצאצאים שלו, עם allowedValues של us-east1-locations בלבד. כל אחד מהמשאבים האלה עם התג location: us-west1 יחול עליו האילוץ gcp.resourceLocations מדור קודם, עם הערכים allowedValues של us-east1-locations ו-us-west1-locations.
כך אפשר לאכוף קבוצות ערכים מותנות וגם לא מותנות במגבלה במדיניות ארגונית אחת.
דוגמה לכלל בוליאני
בדוגמה הבאה אפשר לראות איך מגדירים מדיניות ארגונית שמחילה את האילוץ compute.disableSerialPortAccess מדור קודם. מדיניות הארגון הזו מציינת שכל המשאבים יכולים לגשת ליציאות טוריות, אבל היא משתמשת בתנאי כדי להגביל את הגישה ליציאות טוריות רק למשאבים עם תג תואם.
המסוף
כדי להגדיר את מדיניות הארגון:
במסוף Cloud de Confiance , נכנסים לדף מדיניות הארגון.
בכלי לבחירת פרויקטים, בוחרים את הפרויקט שרוצים להגדיר לו את מדיניות הארגון.
בוחרים אילוץ מהרשימה בדף מדיניות הארגון. יוצג הדף Policy details של ההגבלה.
כדי לעדכן את מדיניות הארגון של המשאב הזה, לוחצים על ניהול המדיניות.
בדף עריכת מדיניות, בוחרים באפשרות במקום המדיניות של המשאב הראשי.
לוחצים על הוספת כלל.
בקטע Enforcement (אכיפה), בוחרים אם האכיפה של מדיניות הארגון הזו תהיה מופעלת או מושבתת.
אופציונלי: כדי להגדיר את מדיניות הארגון כתלויה בתג, לוחצים על הוספת תנאי. הערה: אם מוסיפים כלל מותנה למדיניות ארגונית, צריך להוסיף רק כלל לא מותנה אחד, אחרת אי אפשר לשמור את המדיניות.
בשדה Title, מזינים שם לתנאי.
בשדה תיאור, כותבים תיאור לתנאי. התיאור מספק הקשר לגבי התגים הנדרשים וההשפעה שלהם על המשאבים.
אתם יכולים להשתמש בכלי ליצירת תנאים כדי ליצור תנאי שדורש תג מסוים כדי שההגבלה תיכנס לתוקף.
בתיבה Condition type (סוג התנאי), בוחרים באפשרות Tag (תג).
בוחרים את האופרטור לתנאי.
כדי להתאים תג שלם, משתמשים באופרטור has value עם השם של התג במרחב השמות, או באופרטור has value ID עם מזהי המפתח והערך של התג.
כדי להתאים רק את מפתח התג, משתמשים באופרטור has key עם השם של מפתח התג ממרחב השמות, או באופרטור has key ID עם מזהה מפתח התג.
כדי ליצור כמה תנאים, לוחצים על הוספה. אם מוסיפים עוד תנאי, אפשר להגדיר את הלוגיקה של התנאי כך שכל התנאים יתקיימו. כדי לעשות את זה, מעבירים את המתג And למצב מופעל. אפשר להגדיר את הלוגיקה של התנאים כך שרק אחד מהתנאים יצטרך להתקיים. כדי לעשות את זה, לוחצים על המתג או.
כדי למחוק ביטוי, לוחצים על X הגדול משמאל לשדות של התנאי.
כשמסיימים לערוך את התנאים, לוחצים על שמירה.
במדיניות ארגון עם תנאי שנאכף צריך להיות רק כלל אחד ללא תנאי. לוחצים על Add rule (הוספת כלל) ומגדירים אם אכיפת מדיניות הארגון הזו תהיה מופעלת או מושבתת כברירת מחדל.
אפשר להשתמש בעורך התנאים כדי ליצור ביטוי מותנה באופן פרוגרמטי. בנוסף, יוצג עיבוד פרוגרמטי של קבוצת התנאים הנוכחית.
הביטוי המותנה חייב לכלול 1 עד 10 ביטויי משנה, שמחוברים באמצעות האופרטורים
||או&&. כל ביטוי משנה צריך להיות באחד מהפורמטים הבאים:"resource.matchTag('KEY_NAME', 'VALUE_SHORT_NAME')"מחליפים את מה שכתוב בשדות הבאים:
KEY_NAMEבשם ממרחב השמות של מפתח התג. לדוגמה,123456789012/env.
VALUE_SHORT_NAMEמחליפים בשם המקוצר של ערך התג. לדוגמה,prod.
"resource.matchTagId('KEY_ID', 'VALUE_ID')"מחליפים את מה שכתוב בשדות הבאים:
KEY_IDבמזהה הקבוע של מפתח התג. לדוגמה,tagKeys/123456789012.
VALUE_IDבמזהה הקבוע של ערך התג. לדוגמה,tagValues/567890123456.
- אפשר להשתמש בעורך התנאים כדי להחיל את האופרטור הלוגי
!. לדוגמה, השאילתה!resource.matchTag('ORGANIZATION_ID/location', 'us-west1')תחיל את המגבלה של מדיניות הארגון על כל משאב שלא כולל את התגus-west1.
כדי לסיים ולהחיל את מדיניות הארגון, לוחצים על שמירה.
gcloud
כדי להגדיר את מדיניות הארגון, יוצרים קובץ YAML לאחסון מדיניות הארגון:
name: RESOURCE_TYPE/RESOURCE_ID/policies/gcp.disableSerialPortAccess
spec:
rules:
- condition:
expression: "resource.matchTag('ORGANIZATION_ID/disableSerialAccess', 'yes')"
enforce: true
- enforce: false
אפשר להתאים תג שלם לתנאי באמצעות האופרטור resource.matchTag עם השם של התג ממרחב השמות.
כדי להתאים רק את מפתח התג, משתמשים באופרטור resource.hasTagKey עם השם של מפתח התג ממרחב השמות. כדי להתאים לכל ערך תג עבור מפתח תג נתון, משתמשים באופרטור resource.hasTagKeyID עם מזהה מפתח התג.
מריצים את הפקודה set-policy:
gcloud org-policies set-policy POLICY_PATH
מחליפים את מה שכתוב בשדות הבאים:
POLICY_PATH: הנתיב המלא לקובץ ה-YAML של מדיניות הארגוןRESOURCE_TYPE:organizations, foldersאוprojects
RESOURCE_ID: מזהה הארגון, מזהה התיקייה, מזהה הפרויקט או מספר הפרויקט
ORGANIZATION_ID: ארגון ההורה של מפתח התג
במדיניות הארגון הזו, האילוץ gcp.disableSerialPortAccess legacy managed נאכף על המשאב ועל כל משאבי הצאצאים שלו. כל המשאבים עם התג disableSerialAccess: yes נדחים על ידי מדיניות הארגון. כל משאב שלא כולל את התג
disableSerialAccess: yes לא כפוף לאילוץ המנוהל מדור קודם.
הוספת כללים למדיניות הארגון באופן מותנה
אתם יכולים להשתמש בתגים כדי להוסיף באופן מותנה כללי הגבלות למשאבים על סמך התגים שמצורפים אליהם. אתם יכולים להוסיף כמה תנאים לאותה מדיניות ארגון, וכך לקבל שליטה מדויקת במשאבים שאתם רוצים שהמדיניות תחול עליהם.
Common Expression Language (CEL) היא שפת הביטויים שמשמשת כדי לקבוע ביטויים מותנים. ביטוי מותנה מורכב מהצהרה או הצהרות שמחוברות על ידי אופרטורים לוגיים (&&, || או !). למידע נוסף, אפשר לעיין במפרט של CEL ובהגדרת השפה.
כדאי לשקול להשתמש במדיניות הארגון כדי להגביל את המיקומים שבהם אפשר ליצור משאבים, על סמך התגים שמוחלים על המשאבים האלה. כדי לעשות זאת, יוצרים מדיניות ארגון שמחילה את האילוץ gcp.resourceLocations של ניהול מדור קודם, ומשתמשים בתנאים כדי לצמצם את האכיפה למשאבים מסוימים בלבד.
מתחילים ביצירת קובץ זמני, /tmp/policy.yaml, שיכיל את מדיניות הארגון:
name: organizations/ORGANIZATION_ID/policies/gcp.resourceLocations
spec:
rules:
- condition:
expression: "resource.matchTag('ORGANIZATION_ID/location', 'us-east')"
values:
allowedValues:
- in:us-east1-locations
- condition:
expression: "resource.matchTag('ORGANIZATION_ID/location', 'us-west')"
values:
allowedValues:
- in:us-west1-locations
- values:
deniedValues:
- in:asia-south1-locations
מחליפים את ORGANIZATION_ID בארגון האב של מפתח התג.
בדוגמה הזו, כל משאב שמצורף אליו התג location: us-east יהיה מוגבל למיקומים בתוך קבוצת הערכים us-east1-locations. כל מקור מידע שמצורף אליו התג location: us-west יוגבל למיקומים בתוך קבוצת הערכים us-west1-locations. כל המשאבים בארגון ייחסמו ממיקומים שנמצאים בקבוצת הערכים asia-south1-locations.
לאחר מכן, מגדירים את המדיניות באמצעות הפקודה set-policy:
gcloud org-policies set-policy /tmp/policy.yaml
הגבלת משאבים ללא תגים
אתם יכולים להשתמש בתגים ובמדיניות ארגונית מותנית כדי להגביל משאבים שלא משתמשים בתג מסוים. אם מגדירים מדיניות ארגון במשאב שמגבילה שירותים, ומתנים את ההגבלה בנוכחות תג, אי אפשר להשתמש במשאבי צאצאים שנוצרו מהמשאב הזה אלא אם הם תויגו. כך, המשאבים צריכים להיות מוגדרים בהתאם לתוכנית השליטה לפני שאפשר להשתמש בהם.
כדי להגביל משאבים לא מתויגים בארגון, בתיקייה או בפרויקט, אפשר להשתמש באופרטור הלוגי ! בשאילתה מותנית כשיוצרים את מדיניות הארגון.
לדוגמה, כדי לאפשר שימוש ב-sqladmin.googleapis.com רק בפרויקטים עם התג sqladmin=enabled, אפשר ליצור מדיניות ארגון שדוחה את sqladmin.googleapis.com בפרויקטים בלי התג sqladmin=enabled.
יוצרים תג שמזהה אם הוחלה על המשאבים בקרה מתאימה. לדוגמה, אפשר ליצור תג עם המפתח
sqlAdminוהערךenabled, כדי לציין שצריך לאפשר למשאב הזה להשתמש ב-Cloud SQL Admin API. לדוגמה:
לוחצים על השם של התג החדש שנוצר. בשלבים הבאים תצטרכו את השם עם מרחב השמות של מפתח התג, שמופיע בקטע Tag key path, כדי ליצור תנאי.
יוצרים מדיניות ארגונית מסוג הגבלת השימוש ב-Service Usage ברמה של משאב הארגון כדי לדחות את הגישה אל Cloud SQL Admin API. לדוגמה:

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

!resource.matchTag("012345678901/sqlAdmin", "enabled")
מעכשיו, צריך לצרף את התג sqlAdmin=enabled לפרויקט או להעביר אותו בירושה ממנו, כדי שהמפתחים יוכלו להשתמש ב-Cloud SQL Admin API עם הפרויקט הזה.
אכיפה של תגים במשאבים
אפשר לאכוף תגים חובה במשאבים באמצעות מדיניות ארגונית בהתאמה אישית. כשמפעילים אכיפה של תגים חובה, אפשר ליצור רק משאבים שעומדים בדרישות של מדיניות התיוג של הארגון. כלומר, המשאבים משויכים לערכי התגים של מפתחות תגי החובה שצוינו במדיניות. מידע נוסף זמין במאמר בנושא הגדרת אילוץ בהתאמה אישית כדי לאכוף תגים.
העברה בירושה של מדיניות הארגון
אילוצים עם כללי רשימה שמופעלים באמצעות תגים מתמזגים עם מדיניות הארגון הקיימת, בהתאם לכללים הרגילים של ירושה. הכללים המותנים האלה חלים רק אם התנאי הוא True.
אילוצים עם כללים בוליאניים שמופעלים באמצעות תגים מבטלים את מדיניות הארגון הקיימת. בנוסף, מכיוון שלכללים בוליאניים יש רק שני מצבים, true או false, כל ההצהרות המותנות צריכות להיות ההפך מההצהרה הלא מותנית כדי למנוע מצב שבו כמה תגים סותרים זה את זה.
לדוגמה, נניח שיש מדיניות ארגון שאוכפת את האילוץ disableSerialPortAccess legacy managed. הערך ללא תנאי, שבו המערכת משתמשת אם אף תנאי לא מבטל אותו, הוא true. לכן, כל הצהרה מותנית אחרת במדיניות הזו צריכה להיות מוגדרת כ-False כדי שלא יהיה ניגוד.
המאמרים הבאים
מידע נוסף על השימוש בתגים זמין במאמר בנושא יצירה וניהול של תגים.
מידע נוסף על יצירה וניהול של אילוצים במדיניות הארגון זמין במאמר יצירת מדיניות הארגון.