השתקת ממצאים ב-Security Command Center

בדף הזה מוסבר איך לצמצם את נפח הממצאים שמתקבלים ב-Security Command Center באמצעות השתקה של ממצאים.

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

שירותי הזיהוי של Security Command Center מספקים הערכות אבטחה רחבות של הפריסה שלכם ב- Google Cloud , אבל יכול להיות שתגלו שממצאים מסוימים לא מתאימים או לא רלוונטיים לארגון או לפרויקטים שלכם. בנוסף, נפח גדול של ממצאים יכול להקשות על אנליסטים בתחום האבטחה לזהות ולטפל ביעילות בסיכונים הקריטיים ביותר. השתקת ממצאים חוסכת לכם זמן כי אתם לא צריכים לבדוק ממצאים שקשורים לנכסים מבודדים או לנכסים שנמצאים בפרמטרים עסקיים מקובלים, או להגיב להם.

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

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

הרשאות

כדי להשתיק ממצאים, צריך אחד מתפקידי ניהול הזהויות והרשאות הגישה (IAM) הבאים ברמת הארגון, התיקייה או הפרויקט:

  • צפייה בכללים להשתקת ממצאים:
    • צפייה ב-Security Center Admin (roles/securitycenter.adminViewer)
    • בעל הרשאת צפייה בהגדרות מרכז האבטחה (roles/securitycenter.settingsViewer)
    • צפייה בהגדרות השתקה של מרכז האבטחה (roles/securitycenter.muteConfigsViewer)
  • צפייה, יצירה, עדכון ומחיקה של כללי השתקה:
    • אדמין ב-Security Center (roles/securitycenter.admin)
    • עריכה של אדמין ב-Security Center (roles/securitycenter.adminEditor)
    • עורך ההגדרות של מרכז האבטחה (roles/securitycenter.settingsEditor)
    • עורך ההגדרות להשתקה במרכז האבטחה (roles/securitycenter.muteConfigsEditor)
  • השתקת ממצאים באופן ידני:
    • עריכת ממצאים במרכז האבטחה (roles/securitycenter.findingsEditor)

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

  • הרשאות קריאה של כלל להשתקת ממצאים
    • securitycenter.muteconfigs.get
    • securitycenter.muteconfigs.list
  • הרשאות כתיבה של כלל להשתקת ממצאים
    • securitycenter.muteconfigs.create
    • securitycenter.muteconfigs.update
    • securitycenter.muteconfigs.delete
  • איך מוצאים הרשאות כתיבה
    • securitycenter.findings.setMute
    • securitycenter.findings.bulkMuteUpdate

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

מידע נוסף על התפקידים ב-Security Command Center זמין במאמר בנושא בקרת גישה.

יצירה וניהול של כללים להשתקה

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

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

כללי השתקה סטטיים ודינמיים

ב-Security Command Center יש תמיכה בהגדרות סטטיות ודינמיות של כללים להשתקת ממצאים. אפשר להשתמש בכללי השתקה סטטיים ודינמיים בו-זמנית, אבל לא מומלץ לעשות את זה. כללי השתקה סטטיים מבטלים כללי השתקה דינמיים כשהם מוחלים על אותה תוצאת סריקה. כתוצאה מכך, כללי השתקה דינמיים לא יפעלו כמצופה, וזה עלול ליצור בלבול כשמנהלים את הממצאים. לכן מומלץ להשתמש רק בסוג אחד של כלל להשתקת מודעות.

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

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

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

כללים סטטיים להשתקת ממצאים

  • כללים סטטיים להשתקת ממצאים פועלים ללא הגבלת זמן. אם ממצא תואם להגדרת ההשתקה הקבועה, Security Command Center מגדיר באופן אוטומטי את המאפיין mute של הממצא לערך MUTED עד שתשנו אותו באופן ידני.
  • לכללי השתקה סטטיים אין השפעה על ממצאים קיימים, אלא אם הם נוצרו באמצעות מסוף Google Cloud . במקרה כזה, הכלל ישתיק באופן רטרואקטיבי ממצאים קיימים. אחרת, הם חלים רק על ממצאים שנוצרו או עודכנו אחרי שהוגדר הכלל. אם רוצים להשתיק גם ממצאים קיימים דומים בלי להשתמש במסוף Google Cloud , אפשר להשתמש באותם מסננים כדי להשתיק ממצאים בכמות גדולה.
  • כללי השתקה סטטיים מקבלים עדיפות על פני כללי השתקה דינמיים. לכן, כל הממצאים החדשים שתואמים לכלל להשתקת ממצאים סטטי מוגדר נחשבים כמושתקים, גם אם הם תואמים גם לכלל להשתקת ממצאים דינמי מוגדר.

כללים דינמיים להשתקת ממצאים

  • כללי השתקה דינמיים יכולים לפעול על ממצא באופן זמני עם זמן תפוגה, או ללא הגבלת זמן אם לא מוגדר זמן תפוגה. כשממצא קיים או חדש תואם להגדרת ההשתקה הדינמית, Security Command Center מגדיר באופן אוטומטי את המאפיין mute של הממצא לערך MUTED עד לתאריך התפוגה שצוין או עד שיחולו שינויים בממצא או בהגדרה עצמה. כשכלל להשתקת ממצאים דינמי פג תוקף, Security Command Center מסיר את הכלל מהממצא. אם הממצא לא תואם לאף כלל אחר של השתקה דינמית, הנכס mute מאופס אוטומטית לערך UNDEFINED.
  • כללי השתקה דינמיים חלים באופן אוטומטי על ממצאים קיימים שתואמים להגדרה שלכם, וגם על ממצאים שנוצרו או עודכנו לאחרונה.
  • העדיפות של כללי השתקה דינמיים נמוכה יותר, והם מוחלפים בכללי השתקה סטטיים אם שני סוגי הכללים חלים על ממצא.

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

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

היקף הכללים להשתקת ממצאים

כשיוצרים מסננים, חשוב לקחת בחשבון את ההיקף של כלל להשתקת ממצאים.

לדוגמה, אם מסנן נכתב כדי להשתיק ממצאים ב-Project A, אבל המסנן עצמו נוצר ב-Project B, יכול להיות שהמסנן לא יתאים לאף ממצא.

באופן דומה, אם מופעלת שמירת נתונים באזור גיאוגרפי, ההיקף של כלל להשתקת ממצאים מוגבל למיקום של Security Command Center שבו נוצר כלל להשתקת ממצאים. לדוגמה, אם יוצרים כלל השתקה במיקום ארצות הברית (us), כלל ההשתקה לא ישתיק ממצאים שמאוחסנים במיקום האיחוד האירופי (eu).

מידע נוסף על יצירת מסננים זמין במאמר בנושא סינון התראות.

הגבלות על כללים להשתקת ממצאים

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

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

ב-Security Command Center Premium אפשר לתת תפקידים ברמת הארגון, התיקייה והפרויקט. ב-Security Command Center Standard אפשר להעניק תפקידים רק ברמת הארגון. מידע נוסף מופיע במאמר בקרת גישה.

‫Security Command Center משתמש בממצאים פעילים ובממצאים מושתקים כדי לחשב את אחוזי התאימות לאמצעי הבקרה בדף תאימות ובדוחות התאימות. השתקת ממצא לא גורמת להחרגה שלו מהדף תאימות או מדוחות התאימות.

מיקום הנתונים וכללי השתקה

אם data residency מופעל, ההגדרות שמגדירות את כללי ההשתקה – muteConfig resources – כפופות לבקרות של data residency ונשמרות במיקום ב-Security Command Center שאתם בוחרים.

כדי להחיל כלל השתקה על הממצאים במיקום מסוים ב-Security Command Center, צריך ליצור את כלל ההשתקה באותו מיקום שבו נמצאים הממצאים שעליהם רוצים להחיל את הכלל.

המסננים שמשמשים בכללי השתקה יכולים להכיל נתונים שחלים עליהם אמצעי בקרה על מיקום הנתונים, ולכן חשוב לציין את המיקום הנכון לפני שיוצרים אותם. ב-Security Command Center אין הגבלה על המיקום שבו אפשר ליצור כללי השתקה או ייצוא של נתונים לסטרימינג.

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

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

הנחיות לשימוש ב-Security Command Center כשמפעילים את התכונה 'שמירת נתונים באזור מסוים' מופיעות במאמר נקודות קצה אזוריות של Security Command Center.

יצירת כלל להשתקת ממצאים

בארגון אפשר ליצור עד 1,000 כללים להשתקה.

מומלץ להשתמש בכללי השתקה דינמיים בלבד בהגדרות של כללי ההשתקה, כי הם גמישים יותר מכללי השתקה סטטיים. להשוואה בין סוגים של כללים להשתקת ממצאים, ראו סוגים של כללים להשתקת ממצאים.

כדי ליצור כלל להשתקה, לוחצים על הכרטיסייה של ההליך שרוצים להשתמש בו:

המסוף

הגדרת כלל להשתקת ממצאים

  1. נכנסים לדף Findings במסוף Google Cloud .

    כניסה לדף Findings

  2. בוחרים ארגון או פרויקט.

  3. לוחצים על אפשרויות השתקה ואז על ניהול כללי השתקה.

  4. לוחצים על יצירת כלל להשתקת ממצאים.

  5. מזינים מזהה כלל להשתקת ממצאים.

  6. מומלץ: מזינים תיאור שמספק הקשר להשתקת הממצאים.

  7. כדי לאשר את היקף כלל להשתקת ממצאים, בודקים את הערך של משאב האב.

אופציונלי: הוספת תאריך תפוגה

אפשר להוסיף תאריך תפוגה לכללי השתקה דינמיים.

  1. בוחרים באפשרות השתקת ממצאים תואמים באופן זמני.
  2. כדי להגדיר את תאריך התפוגה של כלל להשתקת ממצאים הדינמי, לוחצים על לוח השנה ובוחרים תאריך ושעה בעתיד, לפחות 24 שעות קדימה.

    אחרי פקיעת התוקף, כלל להשתקת ממצאים לא ישפיע יותר.

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

אם מוסיפים שאילתה, כלל להשתקת ממצאים חל רק על ממצאים שתואמים לשאילתה.

כדי להגביל את כלל ההשתקה באמצעות שאילתה, בקטע Findings query (שאילתת ממצאים), לוחצים על Add filter (הוספת מסנן).

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

  1. בתפריט Select filter, בוחרים מאפיין של ממצא או מקלידים את השם שלו בתיבה Search finding attributes. תוצג רשימה של מאפייני המשנה הזמינים.
  2. בוחרים מאפיין משנה. מוצג שדה בחירה שבו אפשר ליצור את הצהרת השאילתה באמצעות מאפיין המשנה שבחרתם, אופרטור שאילתה וערך אחד או יותר למאפיין המשנה.
  3. בוחרים את האופרטור וערך אחד או יותר של מאפיין המשנה בחלונית. מידע נוסף על אופרטורים של שאילתות ועל הפונקציות שבהן הם משתמשים זמין במאמר בנושא אופרטורים של שאילתות בתפריט הוספת מסננים.

    אם רוצים להתחיל מחדש, לוחצים על איפוס.

  4. לוחצים על אישור.

    התפריט נסגר והשאילתה מתעדכנת.

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

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

שמירת הכלל להשתקת ממצאים

לוחצים על Save. Google Cloud במסוף מוצגת רשימה של כללי ההשתקה.

gcloud

  1. במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. כדי ליצור כללי השתקה, מריצים את הפקודה gcloud scc muteconfigs create:

    gcloud scc muteconfigs create CONFIG_ID \
      --PARENT=PARENT_ID \
      --location=LOCATION \
      --description="RULE_DESCRIPTION" \
      --filter="FILTER" \
      --type=MUTE_TYPE \
      --expiry-time=TIMESTAMP

    מחליפים את מה שכתוב בשדות הבאים:

    • CONFIG_ID: השם של כלל ההשתקה. המזהה צריך להכיל תווים אלפאנומריים ומקפים, והאורך שלו צריך להיות בין תו אחד ל-63 תווים.
    • PARENT: ההיקף בהיררכיית המשאבים שאליו חל כלל להשתקת ממצאים, organization, folder או project.
    • PARENT_ID: המזהה המספרי של הארגון, התיקייה או הפרויקט ברמת ההורה, או המזהה האלפאנומרי של הפרויקט ברמת ההורה.
    • LOCATION: המיקום של Security Command Center שבו רוצים ליצור כלל להשתקת ממצאים. אם מופעלת שמירת נתונים באזור מסוים, צריך להשתמש בערך eu, sa או us. אחרת, צריך להשתמש בערך global.
    • RULE_DESCRIPTION: תיאור של כלל ההשתקה, באורך של עד 1,024 תווים.
    • FILTER: הביטוי שאתם מגדירים כדי לסנן את הממצאים. לדוגמה, כדי להשתיק ממצאים של OPEN_FIREWALL, המסנן יכול להיות FILTER="category=\"OPEN_FIREWALL\"".
    • MUTE_TYPE: סוג כלל ההשתקה שרוצים ליצור. סוגי הכללים להשתקת ממצאים שניתן להשתמש בהם הם DYNAMIC ו-STATIC. סוג כלל להשתקת ממצאים מוגדר כ-STATIC כברירת מחדל. אי אפשר לשנות את הסוג של כלל להשתקת ממצאים אחרי שיוצרים אותו.
    • TIMESTAMP: רלוונטי רק אם יוצרים כלל להשתקת ממצאים דינמי. מחרוזת של תאריך ושעה שמציינת מתי פג התוקף של כלל להשתקת ממצאים הדינמי. הערך חייב להיות לפחות יום אחד בעתיד, אחרת הבקשה תידחה. מידע על פורמטים של שעות זמין במאמר gcloud topic datetimes. כשכלל השתקה דינמי פג תוקף, הוא מוסר מכל הממצאים שתואמים לו. אם רוצים שכלל להשתקת ממצאים דינמי יפעל ללא הגבלת זמן על ממצאים תואמים, צריך להשמיט את השדה הזה.

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

Terraform

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

resource "google_scc_v2_organization_mute_config" "default" {
  mute_config_id    = "my-config"
  organization = "123456789"
  location     = "global"
  description  = "My custom Cloud Security Command Center Finding Organization mute Configuration"
  filter = "severity = \"HIGH\""
  type = "STATIC"
}

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

resource "google_folder" "folder" {
  parent       = "organizations/123456789"
  display_name = "folder-name"
}

resource "google_scc_v2_folder_mute_config" "default" {
  mute_config_id    = "my-config"
  folder = google_folder.folder.folder_id
  location     = "global"
  description  = "My custom Cloud Security Command Center Finding Folder mute Configuration"
  filter = "severity = \"HIGH\""
  type = "STATIC"
}

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

resource "google_scc_v2_project_mute_config" "default" {
  mute_config_id    = "my-config"
  project = "my-project-name"
  location     = "global"
  description  = "My custom Cloud Security Command Center Finding Project mute Configuration"
  filter = "severity = \"HIGH\""
  type = "STATIC"
}

המשך


import (
	"context"
	"fmt"
	"io"

	securitycenter "cloud.google.com/go/securitycenter/apiv2"
	"cloud.google.com/go/securitycenter/apiv2/securitycenterpb"
)

// createMuteRule: Creates a mute configuration under a given scope that will mute
// all new findings that match a given filter.
// Existing findings will not be muted.
func createMuteRule(w io.Writer, parent string, muteConfigId string) error {
	// parent: Use any one of the following options:
	//             - organizations/{organization_id}
	//             - folders/{folder_id}
	//             - projects/{project_id}
	// parent := fmt.Sprintf("projects/%s", "your-google-cloud-project-id")
	// muteConfigId: Set a random id; max of 63 chars.
	// muteConfigId := "random-mute-id-" + uuid.New().String()
	ctx := context.Background()
	client, err := securitycenter.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("securitycenter.NewClient: %w", err)
	}
	defer client.Close()

	muteConfig := &securitycenterpb.MuteConfig{
		Description: "Mute low-medium IAM grants excluding 'compute' ",
		// Set mute rule(s).
		// To construct mute rules and for supported properties, see:
		// https://cloud.google.com/security-command-center/docs/how-to-mute-findings#create_mute_rules
		Filter: "severity=\"LOW\" OR severity=\"MEDIUM\" AND " +
			"category=\"Persistence: IAM Anomalous Grant\" AND " +
			"-resource.type:\"compute\"",
		Type: securitycenterpb.MuteConfig_STATIC,
	}

	req := &securitycenterpb.CreateMuteConfigRequest{
		Parent:       parent,
		MuteConfigId: muteConfigId,
		MuteConfig:   muteConfig,
	}

	response, err := client.CreateMuteConfig(ctx, req)
	if err != nil {
		return fmt.Errorf("failed to create mute rule: %w", err)
	}
	fmt.Fprintf(w, "Mute rule created successfully: %s", response.Name)
	return nil
}

Java


import com.google.cloud.securitycenter.v2.LocationName;
import com.google.cloud.securitycenter.v2.MuteConfig;
import com.google.cloud.securitycenter.v2.MuteConfig.MuteConfigType;
import com.google.cloud.securitycenter.v2.SecurityCenterClient;
import java.io.IOException;
import java.util.UUID;

public class CreateMuteRule {

  public static void main(String[] args) throws IOException {
    // TODO: Replace the following variables.
    // projectId: Google Cloud Project id.
    String projectId = "google-cloud-project-id";

    // Specify the location of the mute config.
    String location = "global";

    // muteConfigId: Set a random id; max of 63 chars.
    String muteConfigId = "random-mute-id-" + UUID.randomUUID();

    createMuteRule(projectId, location, muteConfigId);
  }

  // Creates a mute configuration in a project under a given location.
  public static void createMuteRule(String projectId, String location, String muteConfigId)
      throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (SecurityCenterClient client = SecurityCenterClient.create()) {

      MuteConfig muteConfig =
          MuteConfig.newBuilder()
              .setDescription("Mute low-medium IAM grants excluding 'compute' ")
              // Set mute rule(s).
              // To construct mute rules and for supported properties, see:
              // https://cloud.google.com/security-command-center/docs/how-to-mute-findings#create_mute_rules
              .setFilter(
                  "severity=\"LOW\" OR severity=\"MEDIUM\" AND "
                      + "category=\"Persistence: IAM Anomalous Grant\" AND "
                      + "-resource.type:\"compute\"")
              .setType(MuteConfigType.STATIC)
              .build();

      // You can also create mute rules in an organization/ folder.
      // Construct the parameters according to the parent resource.
      //  * Organization -> client.createMuteConfig(OrganizationLocationName.of(...
      //  * Folder -> client.createMuteConfig(FolderLocationName.of(...
      MuteConfig response = client.createMuteConfig(
          LocationName.of(projectId, location), muteConfig, muteConfigId);
      System.out.println("Mute rule created successfully: " + response.getName());
    }
  }
}

Python

def create_mute_rule(parent_path: str, location_id: str, mute_config_id: str) -> Dict:
    """
    Creates a mute configuration under a given scope that will mute
    all new findings that match a given filter.
    Existing findings will NOT BE muted.
    Args:
        parent_path: use any one of the following options:
                     - organizations/{organization_id}
                     - folders/{folder_id}
                     - projects/{project_id}
        location_id: Gcp location id; example: 'global'
        mute_config_id: Set a unique id; max of 63 chars.
    Returns:
        Dict: returns the mute rule details
    """

    from google.cloud import securitycenter_v2

    client = securitycenter_v2.SecurityCenterClient()

    mute_config = securitycenter_v2.MuteConfig()
    mute_config.description = "Mute low-medium IAM grants excluding 'compute' "
    # Set mute rule(s).
    # To construct mute rules and for supported properties, see:
    # https://cloud.google.com/security-command-center/docs/how-to-mute-findings#create_mute_rules
    mute_config.filter = (
        'severity="LOW" OR severity="MEDIUM" AND '
        'category="Persistence: IAM Anomalous Grant" AND '
        '-resource.type:"compute"'
    )
    mute_config.type = "STATIC"

    request = securitycenter_v2.CreateMuteConfigRequest()
    request.parent = parent_path + "/locations/" + location_id
    request.mute_config_id = mute_config_id
    request.mute_config = mute_config

    mute_config = client.create_mute_config(request=request)
    print(f"Mute rule created successfully: {mute_config.name}")
    return mute_config

REST

ב-Security Command Center API, משתמשים ב-method‏ muteConfigs.create כדי ליצור כלל להשתקת ממצאים. גוף הבקשה הוא מופע של MuteConfig:

POST https://securitycenter.googleapis.com/v2/PARENT/PARENT_ID/locations/LOCATION/muteConfigs?muteConfigId=MUTE_CONFIG_ID -d

  {
    "description": "RULE_DESCRIPTION",
    "filter": "FILTER",
    "type": "MUTE_TYPE",
    "expiryTime": "TIMESTAMP"
  }

מחליפים את מה שכתוב בשדות הבאים:

  • PARENT: משאב האב של כלל להשתקת ממצאים (organizations,‏ folders או projects)
  • PARENT_ID: המזהה של ארגון האב, התיקייה או הפרויקט
  • LOCATION: המיקום של Security Command Center שבו רוצים ליצור כלל להשתקת ממצאים. אם מופעלת שמירת נתונים באזור מסוים, צריך להשתמש בערך eu,‏ sa או us. אחרת, צריך להשתמש בערך global.
  • MUTE_CONFIG_ID: השם של כלל להשתקת ממצאים (בין 1 ל-63 תווים)
  • RULE_DESCRIPTION: תיאור של כלל ההשתקה (מקסימום: 1,024 תווים)
  • FILTER: הביטוי שאתם מגדירים כדי לסנן את הממצאים

    לדוגמה, כדי להשתיק ממצאים של OPEN_FIREWALL, המסנן יכול להיות "category=\"OPEN_FIREWALL\"".

  • MUTE_TYPE: סוג כלל ההשתקה שרוצים ליצור. סוגי הכללים להשתקת ממצאים שניתן להשתמש בהם הם DYNAMIC ו-STATIC. אי אפשר לשנות את הסוג של כלל השתקה אחרי שיוצרים אותו.

  • TIMESTAMP: רלוונטי רק אם יוצרים כלל להשתקת ממצאים דינמי. מחרוזת של תאריך ושעה שמציינת מתי פג התוקף של כלל להשתקת ממצאים הדינמי. הערך חייב להיות לפחות יום אחד בעתיד, אחרת הבקשה תידחה. מידע על פורמטים של שעות זמין במאמר gcloud topic datetimes. כשכלל השתקה דינמי פג תוקף, הוא מוסר מכל הממצאים שתואמים לו. אם רוצים שכלל להשתקת ממצאים דינמי יפעל ללא הגבלת זמן על ממצאים תואמים, צריך להשמיט את השדה הזה.

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

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

מאפייני ממצאים שלא נתמכים בכללי השתקה

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

מאפייני ממצאים שלא נתמכים

  • caiResource
  • canonicalName
  • createTime
  • description
  • eventTime
  • externalUri
  • gcpMetadata.folders1
  • libraryPaths
  • mute
  • muteAnnotation
  • muteInfo
  • muteInitiator
  • muteUpdateTime
  • name
  • nextSteps
  • originalProviderId
  • parent
  • processes.binaryPath
  • processes.libraryPaths
  • propertyDataTypes
  • resource.tags
  • resourceName
  • securityMarks
  • sourceProperties
  • state
  • workflowState
  • ‫1המאפיין gcpMetadata.folders מכיל שדות משנה שנתמכים במסנני השתקה.

הצגת רשימת הכללים להשתקת ממצאים

אפשר לרשום את כללי ההשתקה בארגון, בתיקייה או בפרויקט באמצעות המסוף, ה-CLI של gcloud או Security Command Center API. Google Cloud

היכולת שלכם לראות את רשימת כללי ההשתקה בהיקף מסוים תלויה בהרשאות שניתנו לתפקידים שלכם ב-IAM.

אם הפעלתם את התכונה 'מיקום הנתונים' ב-Security Command Center, ההיקף של פקודת הרשימה מוגבל גם למיקום שנבחר ב-Security Command Center.

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

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

המסוף

  1. במסוף Google Cloud , עוברים לכרטיסייה Mute rules בדף Settings של Security Command Center.

    מעבר לכללי השתקה

  2. אם צריך, בוחרים את Google Cloud הפרויקט או הארגון.

  3. בקטע Mute rules, מוצגים פרטים על כללי השתקה פעילים, כולל:

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

gcloud

  1. במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. כדי להציג רשימה של כללי השתקה, מריצים את הפקודה gcloud scc muteconfigs list:

    gcloud scc muteconfigs list --PARENT=PARENT_ID \
      --location=LOCATION

    מחליפים את מה שכתוב בשדות הבאים:

    • PARENT: organization,‏ folder או project של ההורה שלגביו רוצים להציג את כללי ההשתקה
    • PARENT_ID: המזהה של ארגון האב, התיקייה או הפרויקט
    • LOCATION: המיקום של Security Command Center שבו רוצים להציג את כללי ההשתקה. אם מופעלת שמירת נתונים באזור מסוים, צריך להשתמש בערך eu, sa או us. אחרת, צריך להשתמש בערך global.

המשך

import (
	"context"
	"fmt"
	"io"

	securitycenter "cloud.google.com/go/securitycenter/apiv2"
	"cloud.google.com/go/securitycenter/apiv2/securitycenterpb"
	"google.golang.org/api/iterator"
)

// listMuteRules lists mute configs at the organization level will return all the configs
// at the org, folder, and project levels.
// Similarly, listing configs at folder level will list all the configs
// at the folder and project levels.
func listMuteRules(w io.Writer, parent string) error {
	// Use any one of the following resource paths to list mute configurations:
	//         - organizations/{organization_id}
	//         - folders/{folder_id}
	//         - projects/{project_id}
	// parent := fmt.Sprintf("projects/%s", "your-google-cloud-project-id")
	ctx := context.Background()
	client, err := securitycenter.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("securitycenter.NewClient: %w", err)
	}
	defer client.Close()

	req := &securitycenterpb.ListMuteConfigsRequest{Parent: parent}

	// List all mute configs present in the resource.
	it := client.ListMuteConfigs(ctx, req)
	for {
		muteconfig, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return fmt.Errorf("it.Next: %w", err)
		}
		fmt.Fprintf(w, "Muteconfig Name: %s, ", muteconfig.Name)
	}
	return nil
}

Java


import com.google.cloud.securitycenter.v2.ListMuteConfigsRequest;
import com.google.cloud.securitycenter.v2.MuteConfig;
import com.google.cloud.securitycenter.v2.SecurityCenterClient;
import java.io.IOException;

public class ListMuteRules {

  public static void main(String[] args) throws IOException {
    // TODO: Replace variables enclosed within {}
    // projectId: Google Cloud Project id.
    String projectId = "google-cloud-project-id";

    // Specify the location to list mute configs.
    String location = "global";

    listMuteRules(projectId, location);
  }

  // Lists all mute rules present under the resource type in the given location.
  public static void listMuteRules(String projectId, String location) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (SecurityCenterClient client = SecurityCenterClient.create()) {

      // Parent can also be one of:
      //  * "organizations/{org_id}/locations/{location}"
      //  * "folders/{folder_id}/locations/{location}"
      ListMuteConfigsRequest listMuteConfigsRequest = ListMuteConfigsRequest.newBuilder()
          .setParent(String.format("projects/%s/locations/%s", projectId, location))
          .build();

      // List all mute configs present in the resource.
      for (MuteConfig muteConfig : client.listMuteConfigs(listMuteConfigsRequest).iterateAll()) {
        System.out.println(muteConfig.getName());
      }
    }
  }
}

Python

def list_mute_rules(parent: str, location_id: str) -> Dict:
    """
    Listing mute configs at organization level will return all the configs
    at the org, folder and project levels.
    Similarly, listing configs at folder level will list all the configs
    at the folder and project levels.
    Args:
        parent: Use any one of the following resource paths to list mute configurations:
                - organizations/{organization_id}
                - folders/{folder_id}
                - projects/{project_id}
        location_id: Gcp location id; example: 'global'
    Returns:
         Dict: returns the mute rule details
    """
    from google.cloud import securitycenter_v2

    client = securitycenter_v2.SecurityCenterClient()

    request = securitycenter_v2.ListMuteConfigsRequest()
    request.parent = parent + "/locations/" + location_id
    response = client.list_mute_configs(request)
    # List all Mute Configs present in the resource.
    for mute_config in response:
        print(mute_config.name)
    return response

REST

ב-Security Command Center API, משתמשים בשיטה muteConfigs.list כדי להציג את רשימת כללי ההשתקה:

GET https://securitycenter.googleapis.com/v2/PARENT/PARENT_ID/locations/LOCATION/muteConfigs

מחליפים את מה שכתוב בשדות הבאים:

  • PARENT: משאב האב של כלל להשתקת ממצאים (organizations,‏ folders או projects)
  • PARENT_ID: המזהה של ארגון האב, התיקייה או הפרויקט
  • LOCATION: המיקום של Security Command Center שבו רוצים להציג את כללי ההשתקה. אם מופעלת שמירת נתונים באזור מסוים, צריך להשתמש בערך eu, sa או us. אחרת, צריך להשתמש בערך global.

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

הצגת ההגדרה של כלל להשתקת ממצאים

אפשר לראות את ההגדרה של כלל להשתקת ממצאים באמצעות Google Cloud המסוף, ה-CLI של gcloud או Security Command Center API.

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

כדי לראות את ההגדרה של כלל השתקה, לוחצים על הכרטיסייה של ההליך שרוצים להשתמש בו:

המסוף

  1. במסוף Google Cloud , עוברים לכרטיסייה Mute rules בדף Settings של Security Command Center.

    לכללי השתקה

  2. אם צריך, בוחרים את Google Cloud הפרויקט או הארגון.

  3. בקטע כללי השתקה מוצגת רשימה של כללי השתקה.

  4. לוחצים על שם הכלל שרוצים להציג.

    ייפתח דף עם ההגדרה של כלל ההשתקה.

gcloud

  1. במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. כדי להציג את ההגדרה של כלל השתקה, מריצים את הפקודה gcloud scc muteconfigs get:

    gcloud scc muteconfigs get MUTE_CONFIG_ID \
      --PARENT=PARENT_ID --location=LOCATION

    מחליפים את מה שכתוב בשדות הבאים:

    • MUTE_CONFIG_ID: המזהה של כלל להשתקת ממצאים
    • PARENT: משאב האב של כלל להשתקת ממצאים (organization,‏ folder או project)
    • PARENT_ID: המזהה של הארגון, התיקייה או הפרויקט
    • LOCATION: the Security Command Center location in which to view the mute rule's configuration; if data residency is enabled, use eu, sa, or us; otherwise, use the value global

המשך

import (
	"context"
	"fmt"
	"io"

	securitycenter "cloud.google.com/go/securitycenter/apiv2"
	"cloud.google.com/go/securitycenter/apiv2/securitycenterpb"
)

// getMuteRule retrieves a mute configuration given its resource name.
func getMuteRule(w io.Writer, parent string, muteConfigId string) error {
	// Use any one of the following resource paths to get mute configuration:
	//         - organizations/{organization_id}
	//         - folders/{folder_id}
	//         - projects/{project_id}
	// parent := fmt.Sprintf("projects/%s", "your-google-cloud-project-id")
	//
	// Name of the mute config to retrieve.
	// muteConfigId := "mute-config-id"
	ctx := context.Background()
	client, err := securitycenter.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("securitycenter.NewClient: %w", err)
	}
	defer client.Close()

	req := &securitycenterpb.GetMuteConfigRequest{
		Name: fmt.Sprintf("%s/muteConfigs/%s", parent, muteConfigId),
	}

	muteconfig, err := client.GetMuteConfig(ctx, req)
	if err != nil {
		return fmt.Errorf("Failed to retrieve Muteconfig: %w", err)
	}
	fmt.Fprintf(w, "Muteconfig Name: %s ", muteconfig.Name)
	return nil
}

Java


import com.google.cloud.securitycenter.v2.MuteConfig;
import com.google.cloud.securitycenter.v2.MuteConfigName;
import com.google.cloud.securitycenter.v2.SecurityCenterClient;
import java.io.IOException;

public class GetMuteRule {

  public static void main(String[] args) throws IOException {
    // TODO(Developer): Replace the following variables
    // projectId: Google Cloud Project id.
    String projectId = "google-cloud-project-id";

    // Specify the location of the mute config. If the mute config was
    // created with v1 API, it can be accessed with "global".
    String location = "global";

    // muteConfigId: Name of the mute config to retrieve.
    String muteConfigId = "mute-config-id";

    getMuteRule(projectId, location, muteConfigId);
  }

  // Retrieves a mute configuration given its resource name.
  public static MuteConfig getMuteRule(String projectId, String location, String muteConfigId)
      throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (SecurityCenterClient client = SecurityCenterClient.create()) {
      // Use appropriate `MuteConfigName` methods depending on the parent type.
      //  * organization -> MuteConfigName.ofOrganizationLocationMuteConfigName()
      //  * folder -> MuteConfigName.ofFolderLocationMuteConfigName()

      MuteConfigName muteConfigName = MuteConfigName.ofProjectLocationMuteConfigName(projectId,
          location, muteConfigId);
      return client.getMuteConfig(muteConfigName);
    }
  }
}

Python

def get_mute_rule(parent_path: str, location_id: str, mute_config_id: str) -> Dict:
    """
    Retrieves a mute configuration given its resource name.
    Args:
        parent_path: use any one of the following options:
                     - organizations/{organization_id}
                     - folders/{folder_id}
                     - projects/{project_id}
        location_id: Gcp location id; example: 'global'
        mute_config_id: Set a unique id; max of 63 chars.
    Returns:
         Dict: returns the mute rule details
    """
    from google.cloud import securitycenter_v2

    client = securitycenter_v2.SecurityCenterClient()

    request = securitycenter_v2.GetMuteConfigRequest()
    request.name = (
        parent_path + "/locations/" + location_id + "/muteConfigs/" + mute_config_id
    )

    mute_config = client.get_mute_config(request)
    print(f"Retrieved the mute rule: {mute_config.name}")
    return mute_config

REST

ב-Security Command Center API, משתמשים בשיטה muteConfigs.get כדי להחזיר את ההגדרה של כלל להשתקת ממצאים:

GET https://securitycenter.googleapis.com/v2/PARENT/PARENT_ID/locations/LOCATION/muteConfigs/CONFIG_ID

מחליפים את מה שכתוב בשדות הבאים:

  • PARENT: משאב האב של כלל להשתקת ממצאים (organizations,‏ folders או projects)
  • PARENT_ID: המזהה של הארגון, התיקייה או הפרויקט
  • LOCATION: the Security Command Center location in which to view the mute rule's configuration; if data residency is enabled, use eu, sa, or us; otherwise, use the value global
  • CONFIG_ID: המזהה המספרי של כלל להשתקת ממצאים

עדכון כללי ההשתקה

אפשר לעדכן את התיאור או את מסנן הממצאים של כלל להשתקת ממצאים באמצעות Google Cloud המסוף, ה-CLI של gcloud או Security Command Center API.

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

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

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

כדי לעדכן כלל להשתקה, לוחצים על הכרטיסייה של הפעולה שרוצים לבצע:

המסוף

  1. במסוף Google Cloud , עוברים לכרטיסייה Mute rules בדף Settings של Security Command Center.

    לכללי השתקה

  2. בוחרים את Google Cloud הפרויקט או הארגון שמהווים את משאב האב של כלל ההשתקה שרוצים לשנות.

  3. לוחצים על השם של כלל ההשתקה שרוצים לשנות.

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

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

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

  6. לוחצים על Save.

gcloud

  1. במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. כדי לעדכן את כללי ההשתקה, מריצים את הפקודה gcloud scc muteconfigs update:

    gcloud scc muteconfigs update MUTE_CONFIG_ID \
        --PARENT=PARENT_ID \
        --location=LOCATION \
        --description=RULE_DESCRIPTION \
        --filter=FILTER \
        --type=MUTE_TYPE \
        --expiry-time=TIMESTAMP
    

    מחליפים את מה שכתוב בשדות הבאים:

    • MUTE_CONFIG_ID: המזהה של כלל להשתקת ממצאים.
    • PARENT: משאב האב של כלל להשתקת ממצאים (organization,‏ folder או project).
    • PARENT_ID: המזהה של הארגון, התיקייה או הפרויקט.
    • LOCATION: המיקום של Security Command Center שבו רוצים לעדכן את כלל להשתקת ממצאים. אם מופעלת שמירת נתונים באזור מסוים, צריך להשתמש בערך eu, sa או us. אחרת, צריך להשתמש בערך global.
    • RULE_DESCRIPTION: תיאור של כלל ההשתקה (מקסימום 1,024 תווים).
    • FILTER: הביטוי שאתם מגדירים כדי לסנן את הממצאים.

      לדוגמה, כדי להשתיק ממצאים מסוג OPEN_FIREWALL, המסנן יכול להיות FILTER="category=\"OPEN_FIREWALL\"".

    • MUTE_TYPE: סוג כלל ההשתקה שרוצים לעדכן. סוגי הכללים להשתקת ממצאים שניתן להשתמש בהם הם DYNAMIC ו-STATIC. אחרי שיוצרים כלל להשתקת ממצאים, אי אפשר לשנות את הסוג שלו.

    • TIMESTAMP: רלוונטי רק אם מעדכנים כלל להשתקת ממצאים דינמי. מחרוזת של תאריך ושעה שמציינת מתי פג התוקף של כלל להשתקת ממצאים הדינמי. הערך חייב להיות לפחות יום אחד בעתיד, אחרת הבקשה תידחה. מידע על פורמטים של שעות זמין במאמר gcloud topic datetimes. כשכלל השתקה דינמי פג תוקף, הוא מוסר מכל הממצאים שתואמים לו. אם רוצים שכלל להשתקת ממצאים דינמי יפעל ללא הגבלת זמן על ממצאים תואמים, צריך להשמיט את השדה הזה.

המשך


import (
	"context"
	"fmt"
	"io"

	securitycenter "cloud.google.com/go/securitycenter/apiv2"
	"cloud.google.com/go/securitycenter/apiv2/securitycenterpb"
	"google.golang.org/protobuf/types/known/fieldmaskpb"
)

// updateMuteRule Updates an existing mute configuration.
// The following can be updated in a mute config: description and filter.
func updateMuteRule(w io.Writer, muteConfigName string) error {
	// Specify the name of the mute config to delete.
	// muteConfigName: Use any one of the following formats:
	//                 - organizations/{organization}/muteConfigs/{config_id}
	//                 - folders/{folder}/muteConfigs/{config_id}
	//                 - projects/{project}/muteConfigs/{config_id}
	// muteConfigName := fmt.Sprintf("projects/%s/muteConfigs/%s", "project-id", "mute-config")
	ctx := context.Background()
	client, err := securitycenter.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("securitycenter.NewClient: %w", err)
	}
	defer client.Close()

	updateMuteConfig := &securitycenterpb.MuteConfig{
		Name:        muteConfigName,
		Description: "Updated mute config description",
	}

	req := &securitycenterpb.UpdateMuteConfigRequest{
		MuteConfig: updateMuteConfig,
		// Set the update mask to specify which properties of the mute config should be
		// updated.
		// If empty, all mutable fields will be updated.
		// Make sure that the mask fields match the properties changed in 'updateMuteConfig'.
		// For more info on constructing update mask path, see the proto or:
		// https://cloud.google.com/security-command-center/docs/reference/rest/v1/folders.muteConfigs/patch?hl=en#query-parameters
		UpdateMask: &fieldmaskpb.FieldMask{
			Paths: []string{
				"description",
			},
		},
	}

	response, err := client.UpdateMuteConfig(ctx, req)
	if err != nil {
		return fmt.Errorf("mute rule update failed! %w", err)
	}
	fmt.Fprintf(w, "Mute rule updated %s", response.Name)
	return nil
}

Java


import com.google.cloud.securitycenter.v2.MuteConfig;
import com.google.cloud.securitycenter.v2.SecurityCenterClient;
import com.google.cloud.securitycenter.v2.UpdateMuteConfigRequest;
import com.google.protobuf.FieldMask;
import java.io.IOException;

public class UpdateMuteRule {

  public static void main(String[] args) throws IOException {
    // TODO: Replace the variables within {}
    // projectId: Google Cloud Project id.
    String projectId = "google-cloud-project-id";

    // Specify the location of the mute config to update. If the mute config was
    // created with v1 API, it can be accessed with "global".
    String location = "global";

    // muteConfigId: Name of the mute config to update.
    String muteConfigId = "mute-config-id";

    updateMuteRule(projectId, location, muteConfigId);
  }

  // Updates an existing mute configuration.
  // The following can be updated in a mute config: description and filter.
  public static void updateMuteRule(String projectId, String location, String muteConfigId)
      throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (SecurityCenterClient securityCenterClient = SecurityCenterClient.create()) {

      MuteConfig updateMuteConfig =
          MuteConfig.newBuilder()
              // Construct the name according to the parent type of the mute rule.
              // Parent can also be one of:
              //  * "organizations/{org_id}/locations/{location}/muteConfigs/{muteConfig_id}"
              //  * "folders/{folder_id}/locations/{location}/muteConfigs/{muteConfig_id}"
              .setName(String.format("projects/%s/locations/%s/muteConfigs/%s", projectId, location,
                  muteConfigId))
              .setDescription("Updated mute config description")
              .build();

      UpdateMuteConfigRequest updateMuteConfigRequest =
          UpdateMuteConfigRequest.newBuilder()
              .setMuteConfig(updateMuteConfig)
              // Make sure that the mask fields match the properties changed in
              // 'updateMuteConfig' object.
              // For more info on constructing update mask path, see the proto or:
              // https://cloud.google.com/security-command-center/docs/reference/rest/v2/folders.muteConfigs/patch?hl=en#query-parameters
              .setUpdateMask(FieldMask.newBuilder().addPaths("description").build())
              .build();

      MuteConfig response = securityCenterClient.updateMuteConfig(updateMuteConfigRequest);
      System.out.println(response);
    }
  }
}

Python

def update_mute_rule(parent_path: str, location_id: str, mute_config_id: str) -> Dict:
    """
    Updates an existing mute configuration.
    The following can be updated in a mute config: description, and filter/ mute rule.
    Args:
        parent: Use any one of the following resource paths to list mute configurations:
                - organizations/{organization_id}
                - folders/{folder_id}
                - projects/{project_id}
        location_id: Gcp location id; example: 'global'
        mute_config_id: Set a unique id; max of 63 chars.
    Returns:
         Dict: returns the mute rule details
    """
    from google.cloud import securitycenter_v2
    from google.protobuf import field_mask_pb2

    client = securitycenter_v2.SecurityCenterClient()

    update_mute_config = securitycenter_v2.MuteConfig()
    update_mute_config.name = (
        parent_path + "/locations/" + location_id + "/muteConfigs/" + mute_config_id
    )
    update_mute_config.description = "Updated mute config description"

    field_mask = field_mask_pb2.FieldMask(paths=["description"])

    request = securitycenter_v2.UpdateMuteConfigRequest()
    request.mute_config = update_mute_config
    # Set the update mask to specify which properties of the Mute Config should be updated.
    # If empty, all mutable fields will be updated.
    # Make sure that the mask fields match the properties changed in 'update_mute_config'.
    # For more info on constructing update mask path, see the proto or:
    # https://cloud.google.com/security-command-center/docs/reference/rest/v1/folders.muteConfigs/patch?hl=en#query-parameters
    request.update_mask = field_mask

    mute_config = client.update_mute_config(request)
    print(f"Updated mute rule : {mute_config}")
    return mute_config

REST

ב-Security Command Center API, משתמשים ב-method ‏muteConfigs.patch כדי לעדכן כלל להשתקת התראות. גוף הבקשה הוא מופע של MuteConfig:

PATCH https://securitycenter.googleapis.com/v2/PARENT/PARENT_ID/locations/LOCATION/muteConfigs/CONFIG_ID

  {
    "description": "RULE_DESCRIPTION",
    "filter": "FILTER",
    "type": "MUTE_TYPE",
    "expiryTime": "TIMESTAMP"
  }

מחליפים את מה שכתוב בשדות הבאים:

  • PARENT: משאב האב של כלל להשתקת ממצאים (organizations,‏ folders או projects)
  • PARENT_ID: המזהה של הארגון, התיקייה או הפרויקט
  • LOCATION: המיקום של Security Command Center שבו רוצים לעדכן את כלל להשתקת ממצאים. אם מופעלת שמירת נתונים באזור מסוים, צריך להשתמש בערך eu,‏ sa או us. אחרת, צריך להשתמש בערך global
  • CONFIG_ID: המזהה המספרי של כלל להשתקת ממצאים
  • RULE_DESCRIPTION: תיאור של כלל להשתקת ממצאים (עד 1,024 תווים)
  • FILTER: הביטוי שמגדירים כדי לסנן את הממצאים

    לדוגמה, כדי להשתיק ממצאים של OPEN_FIREWALL, המסנן יכול להיות "category=\"OPEN_FIREWALL\"".

  • MUTE_TYPE: סוג כלל ההשתקה שרוצים לעדכן. סוגי הכללים להשתקת ממצאים שניתן להשתמש בהם הם DYNAMIC ו-STATIC. אחרי שיוצרים כלל להשתקת ממצאים, אי אפשר לשנות את הסוג שלו.

  • TIMESTAMP: רלוונטי רק אם מעדכנים כלל להשתקת ממצאים דינמי. מחרוזת של תאריך ושעה שמציינת מתי פג התוקף של כלל ההשתקה הדינמי. הערך חייב להיות תאריך עתידי, אחרת הבקשה תידחה. מידע על פורמטים של שעות זמין במאמר gcloud topic datetimes. כשכלל להשתקת ממצאים דינמי פג תוקף, הוא מוסר מכל הממצאים התואמים. אם רוצים שכלל ההשתקה הדינמית יפעל ללא הגבלת זמן על ממצאים תואמים, לא צריך למלא את השדה הזה.

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

מחיקת כללי השתקה

אפשר למחוק כלל להשתקת ממצאים באמצעות Google Cloud המסוף,‏ ה-CLI של gcloud או Security Command Center API.

לפני שמוחקים כללי השתקה, חשוב להבין את הנקודות הבאות:

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

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

כדי למחוק כלל השתקה, לוחצים על הכרטיסייה של ההליך שרוצים להשתמש בו:

המסוף

  1. במסוף Google Cloud , עוברים לכרטיסייה Mute rules בדף Settings של Security Command Center.

    לכללי השתקה

  2. אם צריך, בוחרים את Google Cloud הפרויקט או הארגון.

  3. לוחצים על השם של כלל ההשתקה שרוצים למחוק.

  4. לוחצים על מחיקה.

  5. קוראים את ההודעה בתיבת הדו-שיח, ואם היא מקובלת עליכם, לוחצים על מחיקה.

gcloud

  1. במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. כדי למחוק כללי השתקה, מריצים את הפקודה gcloud scc muteconfigs delete:

    gcloud scc muteconfigs delete MUTE_CONFIG_ID \
      --PARENT=PARENT_ID --location=LOCATION

    מחליפים את מה שכתוב בשדות הבאים:

    • MUTE_CONFIG_ID: המזהה של הגדרת ההשתקה
    • PARENT: משאב האב של כלל להשתקת ממצאים (organization,‏ folder או project)
    • PARENT_ID: המזהה של הארגון, התיקייה או הפרויקט
    • LOCATION: the Security Command Center location in which to delete the כלל להשתקת ממצאים; if data residency is enabled, use eu, sa, or us; otherwise, use the value global
  3. מאשרים את הבקשה למחיקת כלל ההשתקה.

המשך


import (
	"context"
	"fmt"
	"io"

	securitycenter "cloud.google.com/go/securitycenter/apiv2"
	"cloud.google.com/go/securitycenter/apiv2/securitycenterpb"
)

// deleteMuteRule deletes a mute configuration given its resource name.
// Note: Previously muted findings are not affected when a mute config is deleted.
func deleteMuteRule(w io.Writer, parent string, muteConfigId string) error {
	// parent: Use any one of the following options:
	//             - organizations/{organization_id}
	//             - folders/{folder_id}
	//             - projects/{project_id}
	// parent := fmt.Sprintf("projects/%s", "your-google-cloud-project-id")
	//
	// muteConfigId: Specify the name of the mute config to delete.
	// muteConfigId := "mute-config-id"
	ctx := context.Background()
	client, err := securitycenter.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("securitycenter.NewClient: %w", err)
	}
	defer client.Close()

	req := &securitycenterpb.DeleteMuteConfigRequest{
		Name: fmt.Sprintf("%s/muteConfigs/%s", parent, muteConfigId),
	}

	if err := client.DeleteMuteConfig(ctx, req); err != nil {
		return fmt.Errorf("failed to delete Muteconfig: %w", err)
	}
	fmt.Fprintf(w, "Mute rule deleted successfully: %s", muteConfigId)
	return nil
}

Java


import com.google.cloud.securitycenter.v2.MuteConfigName;
import com.google.cloud.securitycenter.v2.SecurityCenterClient;
import java.io.IOException;

public class DeleteMuteRule {

  public static void main(String[] args) throws IOException {
    // TODO(Developer): Replace the following variables
    // projectId: Google Cloud Project id.
    String projectId = "google-cloud-project-id";

    // Specify the location of the mute config. If the mute config was
    // created with v1 API, it can be accessed with "global".
    String location = "global";

    // muteConfigId: Specify the name of the mute config to delete.
    String muteConfigId = "mute-config-id";

    deleteMuteRule(projectId, location, muteConfigId);
  }

  // Deletes a mute configuration given its resource name.
  // Note: Previously muted findings are not affected when a mute config is deleted.
  public static void deleteMuteRule(String projectId, String location, String muteConfigId)
      throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (SecurityCenterClient client = SecurityCenterClient.create()) {
      // Use appropriate `MuteConfigName` methods depending on the parent type.
      // folder -> MuteConfigName.ofFolderLocationMuteConfigName()
      // organization -> MuteConfigName.ofOrganizationLocationMuteConfigName()
      client.deleteMuteConfig(
          MuteConfigName.ofProjectLocationMuteConfigName(projectId, location, muteConfigId));

      System.out.println("Mute rule deleted successfully: " + muteConfigId);
    }
  }
}

Python

def delete_mute_rule(parent_path: str, location_id: str, mute_config_id: str) -> None:
    """
    Deletes a mute configuration given its resource name.
    Note: Previously muted findings are not affected when a mute config is deleted.
    Args:
         parent_path: use any one of the following options:
                     - organizations/{organization_id}
                     - folders/{folder_id}
                     - projects/{project_id}
        location_id: Gcp location id; example: 'global'
        mute_config_id: Set a unique id; max of 63 chars.
    Returns:
         None: returns none mute rule is deleted
    """
    from google.cloud import securitycenter_v2

    client = securitycenter_v2.SecurityCenterClient()

    request = securitycenter_v2.DeleteMuteConfigRequest()
    request.name = (
        parent_path + "/locations/" + location_id + "/muteConfigs/" + mute_config_id
    )

    client.delete_mute_config(request)
    print(f"Mute rule deleted successfully: {mute_config_id}")

REST

ב-Security Command Center API, משתמשים ב-method ‏muteConfigs.delete כדי למחוק כלל להשתקת ממצאים:

DELETE https://securitycenter.googleapis.com/v2/PARENT/PARENT_ID/locations/LOCATION/muteConfigs/CONFIG_ID

מחליפים את מה שכתוב בשדות הבאים:

  • PARENT: משאב האב של כלל להשתקת ממצאים (organizations,‏ folders או projects)
  • PARENT_ID: המזהה של הארגון, התיקייה או הפרויקט
  • LOCATION: the Security Command Center location in which to delete the כלל להשתקת ממצאים; if data residency is enabled, use eu, sa, or us; otherwise, use the value global
  • CONFIG_ID: המזהה המספרי של כלל להשתקת ממצאים

השתקת ממצא ספציפי

אפשר להשתיק ממצא ספציפי באופן סטטי באמצעות מסוףGoogle Cloud , ה-CLI של gcloud או Security Command Center API.

השתקת ממצא באופן סטטי לא משפיעה על הסטטוס שלו – פעיל או לא פעיל. אם משתיקים ממצא פעיל, המאפיין state נשאר ללא שינוי: state="ACTIVE". הממצא מוסתר, אבל הוא נשאר פעיל עד שהפגיעות, הטעות בהגדרה או האיום הבסיסיים נפתרים. בנוסף, השתקה סטטית של ממצא מבטלת את כל כללי ההשתקה הדינמיים שחלים על הממצא.

השתקת שילוב רעיל שזוהה סוגרת את המקרה המתאים של השילוב הרעיל.

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

קוד לדוגמה להשתקת ממצא מופיע במאמר השתקת ממצא.

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

המסוף

  1. במסוף Google Cloud , עוברים לדף Findings של Security Command Center.

    כניסה לדף Findings

  2. אם צריך, בוחרים את Google Cloud הפרויקט או הארגון.
  3. אם הממצא שרוצים להשתיק לא מופיע בחלונית Findings query results, בוחרים את הקטגוריה של הממצא בקטע Category בחלונית Quick filters.
  4. בוחרים את הממצא שרוצים להשתיק. אפשר לבחור ממצא אחד או יותר.
  5. בסרגל הפעולות Findings query results (תוצאות של שאילתת ממצאים), לוחצים על Mute options (אפשרויות השתקה) ואז על Apply mute override (החלת ביטול השתקה).

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

  6. בחלונית Finding query results בדף Findings, בעמודה Category, לוחצים על השם של ממצא ספציפי. נפתחת חלונית הפרטים של הממצא.

  7. לוחצים על יוצרים קמפיינים.

  8. בתפריט פעולה, בוחרים באפשרות החלת ביטול השתקה.

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

gcloud

  1. במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. כדי להגדיר את מצב ההשתקה של ממצא ל-MUTED, משתמשים בפקודה set-mute ב-CLI של gcloud:

    gcloud scc findings set-mute FINDING_ID \
      --PARENT=PARENT_ID \
      --location=LOCATION \
      --source=SOURCE_ID \
      --mute=MUTED

    מחליפים את מה שכתוב בשדות הבאים:

    • FINDING_ID: המזהה של הממצא שרוצים להשתיק

      כדי לאחזר מזהי ממצאים, משתמשים ב-Security Command Center API כדי לרשום ממצאים. מזהה הממצא הוא החלק האחרון של מאפיין canonicalName, לדוגמה, projects/123456789012/sources/1234567890123456789/findings`/5ee30aa342e799e4e1700826de053aa9.

    • PARENT: משאב האב (project,‏ folder או organization), תלוי באותיות רישיות

    • PARENT_ID: המזהה של ארגון האב, התיקייה או הפרויקט

    • LOCATION: ה מיקום של Security Command Center שבו רוצים להשתיק את הממצא. אם מופעלת שמירת נתונים באזור מסוים, צריך להשתמש ב-eu,‏ sa או us. אחרת, צריך להשתמש בערך global.

    • SOURCE_ID: מזהה המקור

      הוראות לאחזור מזהה מקור מפורטות במאמר איך מאחזרים את מזהה המקור.

המשך

import (
	"context"
	"fmt"
	"io"

	securitycenter "cloud.google.com/go/securitycenter/apiv2"
	"cloud.google.com/go/securitycenter/apiv2/securitycenterpb"
)

// setMute mutes an individual finding.
// If a finding is already muted, muting it again has no effect.
// Various mute states are: MUTE_UNSPECIFIED/MUTE/UNMUTE.
func setMute(w io.Writer, findingPath string) error {
	// findingPath: The relative resource name of the finding. See:
	// https://cloud.google.com/apis/design/resource_names#relative_resource_name
	// Use any one of the following formats:
	//  - organizations/{organization_id}/sources/{source_id}/finding/{finding_id}
	//  - folders/{folder_id}/sources/{source_id}/finding/{finding_id}
	//  - projects/{project_id}/sources/{source_id}/finding/{finding_id}
	// findingPath := fmt.Sprintf("projects/%s/sources/%s/finding/%s", "your-google-cloud-project-id", "source", "finding-id")
	ctx := context.Background()
	client, err := securitycenter.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("securitycenter.NewClient: %w", err)
	}
	defer client.Close()

	req := &securitycenterpb.SetMuteRequest{
		Name: findingPath,
		Mute: securitycenterpb.Finding_MUTED}

	finding, err := client.SetMute(ctx, req)
	if err != nil {
		return fmt.Errorf("failed to set the specified mute value: %w", err)
	}
	fmt.Fprintf(w, "Mute value for the finding: %s is %s", finding.Name, finding.Mute)
	return nil
}

Java


import com.google.cloud.securitycenter.v2.Finding;
import com.google.cloud.securitycenter.v2.Finding.Mute;
import com.google.cloud.securitycenter.v2.SecurityCenterClient;
import com.google.cloud.securitycenter.v2.SetMuteRequest;
import java.io.IOException;

public class SetMuteFinding {

  public static void main(String[] args) throws IOException {
    // TODO: Replace the variables within {}
    // findingPath: The relative resource name of the finding. See:
    // https://cloud.google.com/apis/design/resource_names#relative_resource_name
    // Use any one of the following formats:
    //  - organizations/{org_id}/sources/{source_id}/locations/{location}/finding/{finding_id}
    //  - folders/{folder_id}/sources/{source_id}/locations/{location}/finding/{finding_id}
    //  - projects/{project_id}/sources/{source_id}/locations/{location}/finding/{finding_id}
    //
    String findingPath = "{path-to-the-finding}";

    setMute(findingPath);
  }

  // Mute an individual finding.
  // If a finding is already muted, muting it again has no effect.
  // Various mute states are: MUTE_UNSPECIFIED/MUTE/UNMUTE.
  public static Finding setMute(String findingPath) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (SecurityCenterClient client = SecurityCenterClient.create()) {

      SetMuteRequest setMuteRequest =
          SetMuteRequest.newBuilder()
              // Relative path for the finding.
              .setName(findingPath)
              .setMute(Mute.MUTED)
              .build();

      Finding finding = client.setMute(setMuteRequest);
      System.out.println(
          "Mute value for the finding " + finding.getName() + " is: " + finding.getMute());
      return finding;
    }
  }
}

Python

def set_mute_finding(finding_path: str) -> None:
    """
      Mute an individual finding.
      If a finding is already muted, muting it again has no effect.
      Various mute states are: MUTE_UNSPECIFIED/MUTE/UNMUTE.
    Args:
        finding_path: The relative resource name of the finding. See:
        https://cloud.google.com/apis/design/resource_names#relative_resource_name
        Use any one of the following formats:
        - organizations/{organization_id}/sources/{source_id}/finding/{finding_id},
        - folders/{folder_id}/sources/{source_id}/finding/{finding_id},
        - projects/{project_id}/sources/{source_id}/finding/{finding_id}.
    """
    from google.cloud import securitycenter_v2

    client = securitycenter_v2.SecurityCenterClient()

    request = securitycenter_v2.SetMuteRequest()
    request.name = finding_path
    request.mute = securitycenter_v2.Finding.Mute.MUTED

    finding = client.set_mute(request)
    print(f"Mute value for the finding: {finding.mute.name}")
    return finding

REST

ב-Security Command Center API, משתמשים ב-method‏ findings.setMute כדי להשתיק ממצא. גוף הבקשה הוא enum שמציין את מצב ההשתקה שיתקבל:

POST https://securitycenter.googleapis.com/v2/PARENT/PARENT_ID/sources/SOURCE_ID/locations/LOCATION/findings/FINDING_ID:setMute

{
  "mute": "MUTED"
}

מחליפים את מה שכתוב בשדות הבאים:

  • PARENT: משאב האב (organizations,‏ folders או projects).
  • PARENT_ID: המזהה של הארגון, התיקייה או הפרויקט ברמת ההורה.
  • LOCATION: ה מיקום של Security Command Center שבו רוצים להשתיק את הממצא. אם מופעלת שמירת נתונים באזור מסוים, צריך להשתמש ב-eu,‏ sa או us. אחרת, צריך להשתמש בערך global.
  • SOURCE_ID: המזהה המספרי של המקור.

    הוראות לאחזור מזהה מקור מפורטות במאמר איך מאחזרים את מזהה המקור.

  • FINDING_ID: המזהה של הממצא שרוצים להשתיק.

    כדי לאחזר מזהי ממצאים, משתמשים ב-Security Command Center API כדי לרשום ממצאים. מזהה הממצא הוא החלק האחרון של מאפיין canonicalName, לדוגמה, projects/123456789012/sources/1234567890123456789/findings/5ee30aa342e799e4e1700826de053aa9.

אחרי שמשתיקים ממצא, המאפיין mute שלו מוגדר לערך MUTED.

ביטול השתקה של ממצאים ספציפיים

אפשר לבטל את ההשתקה של ממצא ספציפי באופן סטטי באמצעות מסוף Google Cloud , ה-CLI של gcloud או Security Command Center API.

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

ממצאים שההשתקה שלהם בוטלה יושתקו שוב רק אם הם יושתקו ידנית. כללי השתקה שנוצרו באמצעות ה-CLI של gcloud או Security Command Center API לא ישפיעו על ממצאים שהמשתמשים ביטלו את ההשתקה שלהם.

לקוד לדוגמה לביטול ההשתקה של ממצא, ראו ביטול ההשתקה של ממצא.

המסוף

כדי לבטל השתקה של ממצא ספציפי באמצעות Google Cloud מסוף, לוחצים על הכרטיסייה של רמת השירות:

  1. במסוף Google Cloud , עוברים לדף Findings של Security Command Center.

    כניסה לדף Findings

  2. אם צריך, בוחרים את Google Cloud הפרויקט או הארגון. הדף ממצאים נפתח עם השאילתה שמוגדרת כברירת מחדל שמוצגת בקטע תצוגה מקדימה של השאילתה. השאילתה שמוגדרת כברירת מחדל מסננת ממצאים שהושתקו, ולכן צריך לערוך את השאילתה כדי שממצאים שהושתקו יופיעו בחלונית תוצאות השאילתה של הממצאים.
  3. משמאל לקטע תצוגה מקדימה של השאילתה, לוחצים על עריכת השאילתה כדי לפתוח את עורך השאילתות.
  4. בשדה עורך השאילתות, מחליפים את הצהרת ההשתקה הקיימת בהצהרה הבאה:
    mute="MUTED"
  5. לוחצים על אישור. הממצאים בחלונית Findings query results מתעדכנים וכוללים רק ממצאים שהושתקו.
  6. במקרה הצורך, מסננים ממצאים אחרים שהושתקו. לדוגמה, בחלונית Quick filters (מסננים מהירים) בקטע Category (קטגוריה), בוחרים את השם של הממצא שרוצים לבטל את ההשתקה שלו כדי לסנן את כל שאר הקטגוריות של הממצאים.
  7. בוחרים את הממצא שרוצים לבטל את ההשתקה שלו. אפשר לבחור ממצא אחד או יותר.
  8. בסרגל הפעולות Findings query results (תוצאות של שאילתת ממצאים), לוחצים על Mute Options (אפשרויות השתקה) ואז על Apply unmute override (החלת ביטול השתקה). המאפיין mute של הממצאים שנבחרו מוגדר לערך UNMUTED, והממצא מוסר מהחלונית תוצאות השאילתה של הממצאים. אפשרות אחרת היא לבטל את ההשתקה של ממצא מחלונית הפרטים שלו:
  9. בחלונית Finding query results בדף Findings, בעמודה Category, לוחצים על השם של ממצא ספציפי. נפתחת חלונית הפרטים של הממצא.
  10. לוחצים על יוצרים קמפיינים.
  11. בתפריט פעולה, בוחרים באפשרות החלת ביטול השתקה.

gcloud

  1. במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. כדי להגדיר את מצב ההשתקה של ממצא ל-UNMUTED, משתמשים בפקודה set-mute ב-CLI של gcloud:

    gcloud scc findings set-mute FINDING_ID \
      --PARENT=PARENT_ID \
      --location=LOCATION \
      --source=SOURCE_ID \
      --mute=UNMUTED

    מחליפים את מה שכתוב בשדות הבאים:

    • FINDING_ID: המזהה של הממצא שרוצים להשתיק

      כדי לאחזר מזהי ממצאים, משתמשים ב-Security Command Center API כדי לרשום ממצאים. מזהה הממצא הוא החלק האחרון של מאפיין canonicalName, לדוגמה, projects/123456789012/sources/1234567890123456789/findings/5ee30aa342e799e4e1700826de053aa9.

    • PARENT: משאב האב (project,‏ folder או organization), תלוי באותיות רישיות

    • PARENT_ID: המזהה של ארגון האב, התיקייה או הפרויקט

    • LOCATION: the Security Command Center location in which to unmute the finding; if data residency is enabled, use eu, sa, or us; otherwise, use the value global

    • SOURCE_ID: מזהה המקור

      הוראות לאחזור מזהה מקור מפורטות במאמר איך מאחזרים את מזהה המקור.

המשך


import (
	"context"
	"fmt"
	"io"

	securitycenter "cloud.google.com/go/securitycenter/apiv2"
	"cloud.google.com/go/securitycenter/apiv2/securitycenterpb"
)

// setUnmute unmutes an individual finding.
// Unmuting a finding that isn't muted has no effect.
// Various mute states are: MUTE_UNSPECIFIED/MUTE/UNMUTE.
func setUnmute(w io.Writer, findingPath string) error {
	// findingPath: The relative resource name of the finding. See:
	// https://cloud.google.com/apis/design/resource_names#relative_resource_name
	// Use any one of the following formats:
	//  - organizations/{organization_id}/sources/{source_id}/finding/{finding_id}
	//  - folders/{folder_id}/sources/{source_id}/finding/{finding_id}
	//  - projects/{project_id}/sources/{source_id}/finding/{finding_id}
	// findingPath := fmt.Sprintf("projects/%s/sources/%s/finding/%s", "your-google-cloud-project-id", "source", "finding-id")
	ctx := context.Background()
	client, err := securitycenter.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("securitycenter.NewClient: %w", err)
	}
	defer client.Close()

	req := &securitycenterpb.SetMuteRequest{
		Name: findingPath,
		Mute: securitycenterpb.Finding_UNMUTED}

	finding, err := client.SetMute(ctx, req)
	if err != nil {
		return fmt.Errorf("failed to set the specified mute value: %w", err)
	}
	fmt.Fprintf(w, "Mute value for the finding: %s is %s", finding.Name, finding.Mute)
	return nil
}

Java


import com.google.cloud.securitycenter.v2.Finding;
import com.google.cloud.securitycenter.v2.Finding.Mute;
import com.google.cloud.securitycenter.v2.SecurityCenterClient;
import com.google.cloud.securitycenter.v2.SetMuteRequest;
import java.io.IOException;

public class SetUnmuteFinding {

  public static void main(String[] args) throws IOException {
    // TODO: Replace the variables within {}
    // findingPath: The relative resource name of the finding. See:
    // https://cloud.google.com/apis/design/resource_names#relative_resource_name
    // Use any one of the following formats:
    //  - organizations/{org_id}/sources/{source_id}/locations/{location}/finding/{finding_id}
    //  - folders/{folder_id}/sources/{source_id}/locations/{location}/finding/{finding_id}
    //  - projects/{project_id}/sources/{source_id}/locations/{location}/finding/{finding_id}
    //
    String findingPath = "{path-to-the-finding}";

    setUnmute(findingPath);
  }

  // Unmute an individual finding.
  // Unmuting a finding that isn't muted has no effect.
  // Various mute states are: MUTE_UNSPECIFIED/MUTE/UNMUTE.
  public static Finding setUnmute(String findingPath) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (SecurityCenterClient client = SecurityCenterClient.create()) {

      SetMuteRequest setMuteRequest =
          SetMuteRequest.newBuilder()
              .setName(findingPath)
              .setMute(Mute.UNMUTED)
              .build();

      Finding finding = client.setMute(setMuteRequest);
      System.out.println(
          "Mute value for the finding " + finding.getName() + " is: " + finding.getMute());
      return finding;
    }
  }
}

Python

def set_unmute_finding(finding_path: str) -> None:
    """
      Unmute an individual finding.
      Unmuting a finding that isn't muted has no effect.
      Various mute states are: MUTE_UNSPECIFIED/MUTE/UNMUTE.
    Args:
        finding_path: The relative resource name of the finding. See:
        https://cloud.google.com/apis/design/resource_names#relative_resource_name
        Use any one of the following formats:
        - organizations/{organization_id}/sources/{source_id}/finding/{finding_id},
        - folders/{folder_id}/sources/{source_id}/finding/{finding_id},
        - projects/{project_id}/sources/{source_id}/finding/{finding_id}.
    """
    from google.cloud import securitycenter_v2

    client = securitycenter_v2.SecurityCenterClient()

    request = securitycenter_v2.SetMuteRequest()
    request.name = finding_path
    request.mute = securitycenter_v2.Finding.Mute.UNMUTED

    finding = client.set_mute(request)
    print(f"Mute value for the finding: {finding.mute.name}")
    return finding

REST

ב-Security Command Center API, משתמשים ב-method‏ findings.setMute כדי לבטל את ההשתקה של ממצא. גוף הבקשה הוא enum שמציין את מצב ההשתקה שיתקבל:

POST https://securitycenter.googleapis.com/v2/PARENT/PARENT_ID/sources/SOURCE_ID/locations/LOCATION/findings/FINDING_ID:setMute

{
  "mute": "UNMUTED"
}

מחליפים את מה שכתוב בשדות הבאים:

  • PARENT: משאב האב (organizations,‏ folders או projects)
  • PARENT_ID: המזהה של ארגון האב, התיקייה או הפרויקט
  • LOCATION: the Security Command Center location in which to unmute the finding; if data residency is enabled, use eu, sa, or us; otherwise, use the value global
  • SOURCE_ID: המזהה המספרי של המקור

    הוראות לאחזור מזהה מקור מפורטות במאמר איך מאחזרים את מזהה המקור.

  • FINDING_ID: המזהה של הממצא שרוצים להשתיק.

    כדי לאחזר מזהי ממצאים, משתמשים ב-Security Command Center API כדי לרשום ממצאים. מזהה הממצא הוא החלק האחרון של מאפיין canonicalName, לדוגמה, projects/123456789012/sources/1234567890123456789/findings/5ee30aa342e799e4e1700826de053aa9.

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

הסרת ביטול השתקה מממצאים ספציפיים

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

כדי להסיר את ההגדרה של השתקת ממצא ספציפי, אפשר להשתמש במסוף Google Cloud , ב-CLI של gcloud או ב-API של Security Command Center.

לפני שמסירים את ההגדרה לביטול ההשתקה של ממצא, חשוב להבין את הנקודות הבאות:

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

כדי להסיר את ההשתקה של ממצא מסוים:

המסוף

  1. במסוף Google Cloud , עוברים לדף Findings של Security Command Center.

    כניסה לדף Findings

  2. בוחרים את הפרויקט או הארגון. Google Cloud
  3. משמאל לקטע תצוגה מקדימה של השאילתה, לוחצים על עריכת השאילתה כדי לפתוח את עורך השאילתות.
  4. בשדה עורך השאילתות, מחליפים את הצהרת ההשתקה הקיימת בהצהרה הבאה:
    mute="MUTED" OR mute="UNMUTED"
  5. לוחצים על אישור. הממצאים בחלונית Findings query results מתעדכנים וכוללים ממצאים שהושתקו באופן סטטי וממצאים שההשתקה שלהם בוטלה.
  6. במידת הצורך, מסננים את הממצאים האחרים. לדוגמה, בחלונית Quick filters, בקטע Category, בוחרים את השם של הממצא שרוצים לאפס כדי לסנן את כל שאר הקטגוריות של הממצאים.
  7. בוחרים את הממצא שרוצים לאפס. אפשר לבחור ממצא אחד או יותר.
  8. בסרגל הפעולות תוצאות השאילתה של הממצאים, לוחצים על אפשרויות השתקה ואז על הסרת ביטולי השתקה. המאפיין mute של הממצאים שנבחרו מוגדר לערך UNDEFINED, והממצא מוסר מהחלונית תוצאות השאילתה של הממצאים. אפשרות אחרת היא לבטל את ההשתקה של ממצא מחלונית הפרטים שלו:
  9. בחלונית Finding query results בדף Findings, בעמודה Category, לוחצים על השם של ממצא ספציפי. נפתחת חלונית הפרטים של הממצא.
  10. לוחצים על יוצרים קמפיינים.
  11. בתפריט פעולה, בוחרים באפשרות הסרת ביטולי השתקה.

gcloud

  1. במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. כדי להגדיר את מצב ההשתקה של ממצא ל-UNDEFINED, משתמשים בפקודה set-mute ב-CLI של gcloud:

    gcloud scc findings set-mute FINDING_ID \
      --PARENT=PARENT_ID \
      --location=LOCATION \
      --source=SOURCE_ID \
      --mute=UNDEFINED

    מחליפים את מה שכתוב בשדות הבאים:

    • FINDING_ID: המזהה של הממצא שרוצים לאפס

      כדי לאחזר מזהי ממצאים, משתמשים ב-Security Command Center API כדי לרשום ממצאים. מזהה הממצא הוא החלק האחרון של מאפיין canonicalName, לדוגמה, projects/123456789012/sources/1234567890123456789/findings/5ee30aa342e799e4e1700826de053aa9.

    • PARENT: משאב האב (project,‏ folder או organization), תלוי באותיות רישיות

    • PARENT_ID: המזהה של ארגון האב, התיקייה או הפרויקט

    • LOCATION: המיקום של Security Command Center שבו רוצים להסיר את שינוי ברירת המחדל של ההשתקה של ממצא. אם מופעלת שמירת נתונים במיקום גיאוגרפי מסוים, צריך להשתמש בערך eu,‏ sa או us. אחרת, צריך להשתמש בערך global.

    • SOURCE_ID: מזהה המקור

      הוראות לאחזור מזהה מקור מפורטות במאמר קבלת מזהה המקור.

REST

ב-Security Command Center API, משתמשים ב-method ‏findings.setMute כדי לאפס את מצב ההשתקה של ממצא. גוף הבקשה הוא enum שמציין את מצב ההשתקה שיתקבל:

POST https://securitycenter.googleapis.com/v2/PARENT/PARENT_ID/sources/SOURCE_ID/locations/LOCATION/findings/FINDING_ID:setMute

{
  "mute": "UNDEFINED"
}

מחליפים את מה שכתוב בשדות הבאים:

  • PARENT: משאב האב (organizations,‏ folders או projects)
  • PARENT_ID: המזהה של ארגון האב, התיקייה או הפרויקט
  • LOCATION: המיקום של Security Command Center שבו רוצים להסיר את שינוי ברירת המחדל של ההשתקה של ממצא. אם מופעלת שמירת נתונים במיקום גיאוגרפי מסוים, צריך להשתמש בערך eu,‏ sa או us. אחרת, צריך להשתמש בערך global.
  • SOURCE_ID: המזהה המספרי של המקור

Java


import com.google.cloud.securitycenter.v2.Finding;
import com.google.cloud.securitycenter.v2.Finding.Mute;
import com.google.cloud.securitycenter.v2.SecurityCenterClient;
import com.google.cloud.securitycenter.v2.SetMuteRequest;
import java.io.IOException;

public class SetMuteUndefinedFinding {

  public static void main(String[] args) throws IOException {
    // TODO: Replace the variables within {}

    // findingPath: The relative resource name of the finding. See:
    // https://cloud.google.com/apis/design/resource_names#relative_resource_name
    // Use any one of the following formats:
    // - organizations/{organization_id}/sources/{source_id}/finding/{finding_id}
    // - folders/{folder_id}/sources/{source_id}/finding/{finding_id}
    // - projects/{project_id}/sources/{source_id}/finding/{finding_id}
    String findingPath = "{path-to-the-finding}";
    setMuteUndefined(findingPath);
  }

  // Reset mute state of an individual finding.
  // If a finding is already reset, resetting it again has no effect.
  // Various mute states are: MUTE_UNSPECIFIED/MUTE/UNMUTE/UNDEFINED.
  public static Finding setMuteUndefined(String findingPath) throws IOException {
    // Initialize client that will be used to send requests. This client only needs
    // to be created once, and can be reused for multiple requests.
    try (SecurityCenterClient client = SecurityCenterClient.create()) {

      SetMuteRequest setMuteRequest =
          SetMuteRequest.newBuilder()
              .setName(findingPath)
              .setMute(Mute.UNDEFINED)
              .build();

      Finding finding = client.setMute(setMuteRequest);
      System.out.println(
          "Mute value for the finding " + finding.getName() + " is: " + finding.getMute());
      return finding;
    }
  }
}

השתקה או איפוס של כמה ממצאים קיימים

אפשר לבצע את הפעולות הבאות להשתקת מספר ממצאים קיימים בבת אחת באמצעות הפקודה gcloud scc findings bulk-mute ב-CLI של gcloud או באמצעות ה-method‏ bulkMute של Security Command Center API:

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

  • הסרת ביטול ההשתקה ממספר ממצאים קיימים. כשמסירים את ההגדרה לביטול ההשתקה של ממצא, מאפסים את מצב ההשתקה מ-MUTED (השתקה סטטית) או מ-UNMUTED (ביטול השתקה סטטי) ל-UNDEFINED. היכולת הזו יכולה להיות שימושית אם אתם עוברים מכללי השתקה סטטיים לכללי השתקה דינמיים.

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

אם מופעלת תכונת שמירת הנתונים במיקום מסוים ב-Security Command Center, פעולות השתקה בכמות גדולה מוגבלות להיקף המיקום ב-Security Command Center שבו הן מבוצעות.

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

כדי להשתיק או לאפס ממצאים בכמות גדולה, לוחצים על הכרטיסייה של הפעולה שרוצים לבצע:

המסוף

במסוף Google Cloud אפשר להשתיק ממצאים בכמות גדולה רק על ידי יצירת כללי השתקה. במסוף Google Cloud , יצירת כללי השתקה משתיקה ממצאים קיימים ועתידיים.

gcloud

  1. במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. כדי להשתיק או לאפס כמה ממצאים בבת אחת, מריצים את הפקודה gcloud scc findings bulk-mute:

    gcloud scc findings bulk-mute \
      --PARENT=PARENT_ID \
      --location=LOCATION \
      --filter="FILTER" \
      --mute-state=MUTE_STATE

    מחליפים את מה שכתוב בשדות הבאים:

    • PARENT: ההיקף בהיררכיית המשאבים שאליו חל כלל להשתקת ממצאים, organization, folder או project.
    • PARENT_ID: המזהה המספרי של הארגון, התיקייה או הפרויקט ברמת ההורה, או המזהה האלפאנומרי של הפרויקט ברמת ההורה.
    • LOCATION: המיקום של Security Command Center שבו רוצים להשתיק או לאפס ממצאים בכמות גדולה. אם מופעלת תכונת שמירת נתונים במדינה מסוימת, צריך להשתמש בערך eu, sa או us. אחרת, צריך להשתמש בערך global.
    • FILTER: הביטוי שאתם מגדירים כדי לסנן את הממצאים.

      לדוגמה, כדי להשתיק את כל הממצאים הקיימים ברמת חומרה נמוכה OPEN_FIREWALL וPUBLIC_IP_ADDRESS בפרויקט internal-test, המסנן יכול להיות "category=\"OPEN_FIREWALL\" OR category=\"PUBLIC_IP_ADDRESS\" AND severity=\"LOW\" AND resource.projectDisplayName=\"internal-test\"".

    • MUTE_STATE: הערך שמציין אם הממצא מושתק באופן סטטי או לא. הערכים התקינים הם MUTED ו-UNDEFINED. ערך ברירת המחדל הוא MUTED. מגדירים את הערך הזה ל-UNDEFINED רק אם מאפסים את מצב ההשתקה של כמה ממצאים קיימים.

REST

ב-API של Security Command Center, משתמשים בשיטה findings.bulkMute כדי להשתיק כמה ממצאים קיימים או לאפס את מצב ההשתקה שלהם. גוף הבקשה מכיל את הביטוי שמשמש לסינון הממצאים:

POST https://securitycenter.googleapis.com/v2/PARENT/PARENT_ID/locations/LOCATION/findings:bulkMute

{
  "filter": "FILTER",
  "muteState": "MUTE_STATE"
}

מחליפים את מה שכתוב בשדות הבאים:

  • PARENT: משאב האב (organizations,‏ folders או projects).
  • PARENT_ID: המזהה של ארגון האב, התיקייה או הפרויקט.
  • LOCATION: המיקום של Security Command Center שבו רוצים להשתיק או לאפס ממצאים בכמות גדולה. אם מופעלת תכונת שמירת נתונים במדינה מסוימת, צריך להשתמש בערך eu, sa או us. אחרת, צריך להשתמש בערך global.
  • FILTER: הביטוי שאתם מגדירים כדי לסנן את הממצאים.

    לדוגמה, כדי להשתיק את כל הממצאים הקיימים ברמת חומרה נמוכה OPEN_FIREWALL וPUBLIC_IP_ADDRESS בפרויקט internal-test, המסנן יכול להיות "category=\"OPEN_FIREWALL\" OR category=\"PUBLIC_IP_ADDRESS\" AND severity=\"LOW\" AND resource.projectDisplayName=\"internal-test\"".

  • MUTE_STATE: הערך שמציין אם הממצא מושתק או לא. הערכים התקינים הם MUTED או UNDEFINED. ערך ברירת המחדל הוא MUTED. מגדירים את הערך הזה ל-UNDEFINED רק אם מאפסים את מצב ההשתקה של כמה ממצאים קיימים.

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

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

הצגת ממצאים שהושתקו במסוף Google Cloud

כדי לראות את הממצאים שהושתקו במסוף Google Cloud , צריך לערוך את שאילתת הממצאים כדי לבחור ממצאים שכוללים את ערך הנכס mute="MUTED".

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

state="ACTIVE"
AND mute="MUTED"

כדי להציג את כל הממצאים הפעילים, גם אלה שהושתקו וגם אלה שלא הושתקו, משמיטים את המאפיין mute מהשאילתה לחלוטין:

state="ACTIVE"

כברירת מחדל, בשאילתת הממצאים במסוף Google Cloud מוצגים רק ממצאים שלא הושתקו.

הצגת ממצאים שהושתקו לפי סוג כלל להשתקת ממצאים

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

מידע נוסף על הצגת ממצאים ספציפיים מופיע במאמר בנושא סינון ממצאים.

ממצאים של שאילתות שהושתקו על ידי כללי השתקה סטטיים

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

state="ACTIVE" AND
muteInfo.staticMute.applyTime>=TIMESTAMP AND
muteInfo.staticMute.state="MUTED"

מחליפים את TIMESTAMP במחרוזת של תאריך ושעה שמציינת את תחילת תקופת הזמן שרוצים לשלוח לגביה שאילתה. מידע על פורמטים של שעות זמין במאמר gcloud topic datetimes.

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

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

state="ACTIVE" AND
muteUpdateTime>=TIMESTAMP AND
contains(muteInfo.dynamicMuteRecords, muteConfig="PARENT_ID/muteConfigs/CONFIG_ID")

מחליפים את מה שכתוב בשדות הבאים:

  • TIMESTAMP: מחרוזת של תאריך ושעה שמציינת את תחילת התקופה שרוצים לשלוח לגביה שאילתה. מידע על פורמטים של שעות זמין במאמר gcloud topic datetimes.
  • PARENT_ID: המזהה של ארגון האב, התיקייה או הפרויקט, שצוין בפורמט של organizations/123, folders/456 או projects/789.
  • CONFIG_ID: השם של כלל ההשתקה. המזהה צריך להכיל תווים אלפאנומריים ומקפים, והוא יכול לכלול בין תו אחד ל-63 תווים.

מידע נוסף על עריכת שאילתות של ממצאים זמין במאמר בנושא יצירה או עריכה של שאילתת ממצאים במרכז הבקרה.

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

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

  • mute: מוגדר לערך UNDEFINED כשנוצרים ממצאים ושינויים בתרחישים הבאים:
    • MUTED: ממצא מושתק באופן ידני או באמצעות כלל להשתקת ממצאים.
    • UNMUTED: משתמש מבטל השתקה של ממצא.
  • muteUpdateTime: השעה שבה השתקה או ביטול השתקה של ממצא.
  • muteInitiator: המזהה של הישות המורשית או של כלל להשתקת ממצאים שהשתיק את הממצא.
  • muteInfo: השתקת מידע על הממצא, כמו סוג כלל להשתקת ממצאים (סטטי או דינמי) ואילו כללים להשתקת ממצאים הממצא תאם להם.
  • muteInfo.staticMute: מצב השתקה סטטי מבטל כל כלל השתקה דינמי שחל על הממצא הזה.
    • state: מצב השתקה סטטי שאפשר להגדיר על ידי השתקת הממצא ישירות או על ידי כלל השתקה סטטי.
    • applyTime: השעה שבה מצב ההשתקה הסטטי הוחל על הממצא.
  • muteInfo.dynamicMuteRecords: הרשומה של כלל להשתקת ממצאים דינמי שתואם לממצא.
    • muteConfig: שם המשאב היחסי של כלל ההשתקה, שמיוצג על ידי הגדרת ההשתקה שיצרה את הרשומה. לדוגמה, organizations/123/muteConfigs/examplemuteconfig.
    • matchTime: השעה שבה כלל להשתקת ממצאים דינמיים התאים לממצא.

הפסקה של ההתראות והייצוא של ממצאים מושתקים

אם מפעילים התראות על ממצאים, ממצאים חדשים או מעודכנים שהושתקו ועומדים בתנאי הסינון של ההתראות עדיין מיוצאים ל-Pub/Sub.

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

FILTER="state=\"ACTIVE\" AND -mute=\"MUTED\""

המאמרים הבאים

מידע נוסף על סינון התראות על ממצאים

דוגמאות נוספות למסננים