סקירה כללית של מודולים בהתאמה אישית ל-Event Threat Detection

בדף הזה יש סקירה כללית על מודולים בהתאמה אישית ל-Event Threat Detection.

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

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

איך פועלים מודולים מותאמים אישית ל-Event Threat Detection

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

תבניות של מודולים מותאמים אישית נכתבות ב-JSON ומאפשרות להגדיר פרמטרים של זיהוי שקובעים אילו אירועים ברשומות של יומן צריכים להפעיל ממצאים. לדוגמה, גלאי Malware: Bad IPהמוכלל בודק את יומני הזרימה של ענן וירטואלי פרטי (VPC) כדי למצוא הוכחות לחיבורים לכתובות IP חשודות ידועות. עם זאת, אתם יכולים להפעיל ולשנות את Configurable Bad IP המודול המותאם אישית עם רשימה של כתובות IP חשודות שאתם מתחזקים. אם ביומנים שלכם מצוין חיבור לאחת מכתובות ה-IP שסיפקתם, נוצר ממצא והוא נכתב ב-Security Command Center.

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

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

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

מודולים ותבניות בהתאמה אישית

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

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

קטגוריית התוצאות סוג המודול סוגים של מקורות יומנים תיאור
כתובת IP לא תקינה שניתן להגדיר CONFIGURABLE_BAD_IP VPC flow logs
Firewall Rules logs
זיהוי חיבור לכתובת IP ספציפית
תבנית: כתובת IP גרועה שניתן להגדיר
{
  "metadata": {
    "severity": "SEVERITY",
    "description": "DESCRIPTION",
    "recommendation": "RECOMMENDATION"
  },
  "ips": [
    "IP_ADDRESS_1",
    "IP_ADDRESS_2"
  ]
}

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

  • SEVERITY: רמת החומרה של הממצאים שיופקו על ידי המודול הזה. הערכים התקפים הם LOW,‏ MEDIUM,‏ HIGH ו-CRITICAL.
  • DESCRIPTION: תיאור של האיום שהמודול המותאם אישית מזהה. התיאור הזה משמש לאכלוס המאפיין explanation של כל ממצא שנוצר על ידי המודול הזה.
  • RECOMMENDATION: הסבר על השלבים המומלצים שצוותי האבטחה יכולים לבצע כדי לפתור את הבעיה שזוהתה. ההסבר הזה משמש לאכלוס המאפיין nextSteps של כל ממצא שנוצר על ידי המודול הזה.
  • IP_ADDRESS_1: כתובת IPv4 או IPv6 שאפשר לנתב באופן ציבורי, או בלוק CIDR למעקב – לדוגמה, 192.0.2.1 או 192.0.2.0/24.
  • IP_ADDRESS_2: אופציונלי. כתובת IPv4 או IPv6 או בלוק CIDR שניתן לניתוב ציבורי למעקב – לדוגמה, 192.0.2.1 או 192.0.2.0/24.
דומיין רע שאפשר להגדיר CONFIGURABLE_BAD_DOMAIN יומנים של Cloud DNS מזהה חיבור לשם דומיין שצוין
תבנית: דומיין רע שאפשר להגדיר
{
  "metadata": {
    "severity": "SEVERITY",
    "description": "DESCRIPTION",
    "recommendation": "RECOMMENDATION"
  },
  "domains": [
    "DOMAIN_1","DOMAIN_2"
  ]
}

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

  • SEVERITY: רמת החומרה של הממצאים שיופקו על ידי המודול הזה. הערכים התקפים הם LOW,‏ MEDIUM,‏ HIGH ו-CRITICAL.
  • DESCRIPTION: תיאור של האיום שהמודול המותאם אישית מזהה. התיאור הזה משמש לאכלוס המאפיין explanation של כל ממצא שנוצר על ידי המודול הזה.
  • RECOMMENDATION: הסבר על השלבים המומלצים שצוותי האבטחה יכולים לבצע כדי לפתור את הבעיה שזוהתה. ההסבר הזה משמש לאכלוס המאפיין nextSteps של כל ממצא שנוצר על ידי המודול הזה.
  • DOMAIN_1: שם הדומיין שרוצים לעקוב אחריו. לדוגמה, example.com. הערך localhost אסור. שמות דומיין ב-Unicode וב-Punycode עוברים נורמליזציה. לדוגמה, 例子.example ו-xn--fsqu00a.example שקולים.
  • DOMAIN_2: אופציונלי. שם דומיין למעקב – לדוגמה, example.com. הערך localhost אסור. שמות דומיין ב-Unicode וב-Punycode מנורמלים. לדוגמה, 例子.example ו-xn--fsqu00a.example הן כתובות שוות.
סוג מכונה לא צפוי של Compute Engine CONFIGURABLE_ALLOWED_COMPUTE_ENGINE_INSTANCE_TYPE יומני ביקורת של Cloud:
יומני פעילות של אדמין
מזהה יצירה של מכונות Compute Engine שלא תואמות לסוג או להגדרה של מכונה שצוינו.
תבנית: סוג מכונה לא צפוי ב-Compute Engine
{
  "metadata": {
    "severity": "SEVERITY",
    "description": "DESCRIPTION",
    "recommendation": "RECOMMENDATION"
  },
  "instances": [
    {
      "series": "SERIES",
      "cpus": {
        "minimum": MINIMUM_NUMBER_OF_CPUS,
        "maximum": MAXIMUM_NUMBER_OF_CPUS
      },
      "ram_mb": {
        "minimum": MINIMUM_RAM_SIZE,
        "maximum": MAXIMUM_RAM_SIZE
      },
      "gpus": {
        "minimum": MINIMUM_NUMBER_OF_GPUS,
        "maximum": MAXIMUM_NUMBER_OF_GPUS
      },
      "projects": [
        "PROJECT_ID_1",
        "PROJECT_ID_2"
      ],
      "regions": [
        "REGION_1",
        "REGION_2"
      ]
    },
    {
      "series": " ... ",
      ...
      "regions": [ ... ]
    }
  ]
}

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

  • SEVERITY: רמת החומרה של הממצאים שיופקו על ידי המודול הזה. הערכים התקפים הם LOW,‏ MEDIUM,‏ HIGH ו-CRITICAL.
  • DESCRIPTION: תיאור של האיום שהמודול המותאם אישית מזהה. התיאור הזה משמש לאכלוס המאפיין explanation של כל ממצא שנוצר על ידי המודול הזה.
  • RECOMMENDATION: הסבר על השלבים המומלצים שצוותי האבטחה יכולים לבצע כדי לפתור את הבעיה שזוהתה. ההסבר הזה משמש לאכלוס המאפיין nextSteps של כל ממצא שנוצר על ידי המודול הזה.
  • SERIES: אופציונלי. סדרת המכונות של Compute Engine – לדוגמה, C2. אם השדה ריק, המודול מאפשר את כל הסדרות. מידע נוסף זמין במאמר השוואה בין משפחות של מכונות ומשאבים.
  • MINIMUM_NUMBER_OF_CPUS: אופציונלי. מספר המעבדים המינימלי שניתן להקצות. אם לא מצוין סכום מינימלי, אין סכום מינימלי. הערך לא יכול להיות שלילי.
  • MAXIMUM_NUMBER_OF_CPUS: אופציונלי. המספר המקסימלי של מעבדים שאפשר להקצות. אם הפרמטר לא מוגדר, אין מספר מקסימלי של תווים. הערך חייב להיות גדול מ-minimum או שווה לו, וקטן מ-1,000 או שווה לו.
  • MINIMUM_RAM_SIZE: אופציונלי. גודל ה-RAM המינימלי המותר, במגה-בייט. אם לא מצוין סכום מינימלי, אין סכום מינימלי.
  • MAXIMUM_RAM_SIZE: אופציונלי. גודל ה-RAM המקסימלי המותר, במגה-בייט. אם הפרמטר לא מופיע, אין מספר מקסימלי. הערך חייב להיות גדול מ-minimum או שווה לו, וקטן מ-10,000,000 או שווה לו.
  • MINIMUM_NUMBER_OF_GPUS: אופציונלי. המספר המינימלי של מעבדי GPU שצריך לאפשר. אם לא מצוין סכום מינימלי, אין סכום מינימלי. הערך לא יכול להיות שלילי.
  • MAXIMUM_NUMBER_OF_GPUS: אופציונלי. מספר ה-GPU המקסימלי שניתן לאפשר. אם הפרמטר לא מוגדר, אין מספר מקסימלי של תווים. הערך חייב להיות גדול מ-minimum או שווה לו, וקטן מ-100 או שווה לו.
  • PROJECT_ID_1: אופציונלי. מזהה הפרויקט שרוצים להחיל עליו את המודול הזה. לדוגמה: projects/example-project. אם השדה ריק או לא מוגדר, המודול חל על מופעים שנוצרו בכל הפרויקטים בהיקף הנוכחי.
  • PROJECT_ID_2: אופציונלי. מזהה הפרויקט שרוצים להחיל עליו את המודול הזה. לדוגמה: projects/example-project.
  • REGION_1: אופציונלי. אזור שבו רוצים להחיל את המודול הזה – לדוגמה, us-central1. אם השדה ריק או לא מוגדר, המודול חל על מקרים שנוצרו בכל האזורים.
  • REGION_2: אופציונלי. אזור שבו רוצים להחיל את המודול הזה – לדוגמה, us-central1.
תמונת מקור לא צפויה של Compute Engine CONFIGURABLE_ALLOWED_COMPUTE_ENGINE_SOURCE_IMAGE יומני ביקורת של Cloud:
יומני פעילות של אדמין
מזהה יצירה של מכונת Compute Engine עם תמונה או משפחת תמונות שלא תואמת לרשימה שצוינה
תבנית: תמונת מקור לא צפויה של Compute Engine
{
  "metadata": {
    "severity": "SEVERITY",
    "description": "DESCRIPTION",
    "recommendation": "RECOMMENDATION"
  },
  "patterns": [
    {

      "pattern": "PATTERN_1",
      "name": "NAME_1"
    },
    {
      "pattern": "PATTERN_2",
      "name": "NAME_2"
    }
  ]
}

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

  • SEVERITY: רמת החומרה של הממצאים שיופקו על ידי המודול הזה. הערכים התקפים הם LOW,‏ MEDIUM,‏ HIGH ו-CRITICAL.
  • DESCRIPTION: תיאור של האיום שהמודול המותאם אישית מזהה. התיאור הזה משמש לאכלוס המאפיין explanation של כל ממצא שנוצר על ידי המודול הזה.
  • RECOMMENDATION: הסבר על השלבים המומלצים שצוותי האבטחה יכולים לבצע כדי לפתור את הבעיה שזוהתה. ההסבר הזה משמש לאכלוס המאפיין nextSteps של כל ממצא שנוצר על ידי המודול הזה.
  • PATTERN_1: ביטוי רגולרי של RE2 לבדיקת תמונות, לדוגמה, debian-image-1. אם נעשה שימוש בתמונה כדי ליצור מכונת Compute Engine והשם של התמונה לא תואם לאף אחד מהביטויים הרגולריים שצוינו, נוצרת ממצא.
  • NAME_1: שם תיאורי לדפוס הזה, לדוגמה first-image.
  • PATTERN_2: אופציונלי. ביטוי רגולרי נוסף של RE2 לבדיקת תמונות – לדוגמה, debian-image-2.
  • NAME_2: אופציונלי. שם תיאורי לדפוס השני – לדוגמה, second-image.
אזור לא צפוי של Compute Engine CONFIGURABLE_ALLOWED_COMPUTE_ENGINE_REGION יומני ביקורת של Cloud:
יומני פעילות של אדמין
מזהה יצירה של מכונת Compute Engine באזור שלא מופיע ברשימה שצוינה
תבנית: אזור לא צפוי של Compute Engine
{
  "metadata": {
    "severity": "SEVERITY",
    "description": "DESCRIPTION",
    "recommendation": "RECOMMENDATION"
  },
  "regions": [
    {
      "region": "REGION_1"
    },
    {
      "region": "REGION_2"
    }
  ]
}

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

  • SEVERITY: רמת החומרה של הממצאים שיופקו על ידי המודול הזה. הערכים התקפים הם LOW,‏ MEDIUM,‏ HIGH ו-CRITICAL.
  • DESCRIPTION: תיאור של האיום שהמודול המותאם אישית מזהה. התיאור הזה משמש לאכלוס המאפיין explanation של כל ממצא שנוצר על ידי המודול הזה.
  • RECOMMENDATION: הסבר על השלבים המומלצים שצוותי האבטחה יכולים לבצע כדי לפתור את הבעיה שזוהתה. ההסבר הזה משמש לאכלוס המאפיין nextSteps של כל ממצא שנוצר על ידי המודול הזה.
  • REGION_1: שם האזור שרוצים לאפשר בו גישה. לדוגמה, us-west1. אם נוצרת מכונה של Compute Engine באזור שלא מצוין ברשימה, הכלי Event Threat Detection יוצר ממצא.
  • REGION_2: אופציונלי. שם האזור שרוצים לאשר – לדוגמה, us-central1. אם נוצרת מכונה של Compute Engine באזור שלא צוין ברשימה, Event Threat Detection יוצר ממצא.
נעשה שימוש בחשבון Breakglass CONFIGURABLE_BREAKGLASS_ACCOUNT_USED יומני ביקורת של Cloud:
יומני פעילות אדמין
יומני גישה לנתונים (אופציונלי)
זיהוי השימוש בחשבון גישה במצב חירום (breakglass)
תבנית: נעשה שימוש בחשבון Breakglass
{
  "metadata": {
    "severity": "SEVERITY",
    "description": "DESCRIPTION",
    "recommendation": "RECOMMENDATION"
  },
  "accounts": [
    "BREAKGLASS_ACCOUNT_1", "BREAKGLASS_ACCOUNT_2"
  ]
}

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

  • SEVERITY: רמת החומרה של הממצאים שיופקו על ידי המודול הזה. הערכים התקפים הם LOW,‏ MEDIUM,‏ HIGH ו-CRITICAL.
  • DESCRIPTION: תיאור של האיום שהמודול המותאם אישית מזהה. התיאור הזה משמש לאכלוס המאפיין explanation של כל ממצא שנוצר על ידי המודול הזה.
  • RECOMMENDATION: הסבר על השלבים המומלצים שצוותי האבטחה יכולים לבצע כדי לפתור את הבעיה שזוהתה. ההסבר הזה משמש לאכלוס המאפיין nextSteps של כל ממצא שנוצר על ידי המודול הזה.
  • BREAKGLASS_ACCOUNT_1: חשבון breakglass למעקב, לדוגמה test@example.com. ממצא נוצר אם החשבון הזה משמש לפעולה שמתועדת ברשומה של יומני ביקורת של Cloud.
  • BREAKGLASS_ACCOUNT_2: אופציונלי. חשבון breakglass למעקב – לדוגמה, test@example.com. ממצא נוצר אם החשבון הזה משמש לפעולה שמתועדת ברשומה של יומני ביקורת של Cloud.
הקצאת תפקיד לא צפויה CONFIGURABLE_UNEXPECTED_ROLE_GRANT יומני ביקורת של Cloud:
יומני פעילות של אדמין
זיהוי מתי תפקיד ספציפי מוענק למשתמש
תבנית: הענקת תפקיד בלתי צפויה
{
  "metadata": {
    "severity": "SEVERITY",
    "description": "DESCRIPTION",
    "recommendation": "RECOMMENDATION"
  },
  "roles": ["ROLE_1", "ROLE_2"]
}

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

  • SEVERITY: רמת החומרה של הממצאים שיופקו על ידי המודול הזה. הערכים התקפים הם LOW,‏ MEDIUM,‏ HIGH ו-CRITICAL.
  • DESCRIPTION: תיאור של האיום שהמודול המותאם אישית מזהה. התיאור הזה משמש לאכלוס המאפיין explanation של כל ממצא שנוצר על ידי המודול הזה.
  • RECOMMENDATION: הסבר על השלבים המומלצים שצוותי האבטחה יכולים לבצע כדי לפתור את הבעיה שזוהתה. ההסבר הזה משמש לאכלוס המאפיין nextSteps של כל ממצא שנוצר על ידי המודול הזה.
  • ROLE_1: תפקיד IAM למעקב. לדוגמה, roles/owner. ממצא נוצר אם התפקיד הזה מוקצה.
  • ROLE_2: אופציונלי. תפקיד IAM למעקב אחריו – לדוגמה, roles/editor. ממצא נוצר אם התפקיד הזה מוקצה.
תפקיד בהתאמה אישית עם הרשאה אסורה CONFIGURABLE_CUSTOM_ROLE_WITH_PROHIBITED_PERMISSION יומני ביקורת של Cloud:
יומני פעילות של אדמין
המערכת מזהה מתי נוצר או מתעדכן תפקיד בהתאמה אישית עם אחת מההרשאות שצוינו ב-IAM.
תבנית: תפקיד בהתאמה אישית עם הרשאה אסורה
{
  "metadata": {
    "severity": "SEVERITY",
    "description": "DESCRIPTION",
    "recommendation": "RECOMMENDATION"
  },
  "permissions": [
    "PERMISSION_1",
    "PERMISSION_2"
  ]
}

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

  • SEVERITY: רמת החומרה של הממצאים שיופקו על ידי המודול הזה. הערכים התקפים הם LOW,‏ MEDIUM,‏ HIGH ו-CRITICAL.
  • DESCRIPTION: תיאור של האיום שהמודול המותאם אישית מזהה. התיאור הזה משמש לאכלוס המאפיין explanation של כל ממצא שנוצר על ידי המודול הזה.
  • RECOMMENDATION: הסבר על השלבים המומלצים שצוותי האבטחה יכולים לבצע כדי לפתור את הבעיה שזוהתה. ההסבר הזה משמש לאכלוס המאפיין nextSteps של כל ממצא שנוצר על ידי המודול הזה.
  • PERMISSION_1: הרשאה ב-IAM שרוצים לעקוב אחריה, לדוגמה, storage.buckets.list. ‫Event Threat Detection יוצר ממצא אם תפקיד IAM בהתאמה אישית שכולל את ההרשאה הזו מוענק לחשבון משתמש.
  • PERMISSION_2: אופציונלי. הרשאה ב-IAM שרוצים לעקוב אחריה – לדוגמה, storage.buckets.get. ‫Event Threat Detection יוצר ממצא אם תפקיד IAM בהתאמה אישית שכולל את ההרשאה הזו מוענק לחשבון משתמש.
קריאה לא צפויה ל-Cloud API CONFIGURABLE_UNEXPECTED_CLOUD_API_CALL יומני ביקורת של Cloud:
יומני פעילות אדמין
יומני גישה לנתונים (אופציונלי)
הפונקציה מזהה מתי גורם ראשי שצוין קורא לשיטה שצוינה מול משאב שצוין. ממצא נוצר רק אם כל הביטויים הרגולריים תואמים לרשומה אחת ביומן.
תבנית: קריאה לא צפויה ל-Cloud API
{
  "metadata": {
    "severity": "SEVERITY",
    "description": "DESCRIPTION",
    "recommendation": "RECOMMENDATION"
  },
  "caller_pattern": "CALLER_PATTERN",
  "method_pattern": "METHOD_PATTERN",
  "resource_pattern": "RESOURCE_PATTERN"
}

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

  • SEVERITY: רמת החומרה של הממצאים שיופקו על ידי המודול הזה. הערכים התקפים הם LOW,‏ MEDIUM,‏ HIGH ו-CRITICAL.
  • DESCRIPTION: תיאור של האיום שהמודול המותאם אישית מזהה. התיאור הזה משמש לאכלוס המאפיין explanation של כל ממצא שנוצר על ידי המודול הזה.
  • RECOMMENDATION: הסבר על השלבים המומלצים שצוותי האבטחה יכולים לבצע כדי לפתור את הבעיה שזוהתה. ההסבר הזה משמש לאכלוס המאפיין nextSteps של כל ממצא שנוצר על ידי המודול הזה.
  • CALLER_PATTERN: ביטוי רגולרי של RE2 לבדוק חשבונות משתמשים. לדוגמה, .* תואם לכל חשבון משתמש.
  • METHOD_PATTERN: ביטוי רגולרי של RE2 לבדיקת שיטות, לדוגמה, ^cloudsql\\.instances\\.export$.
  • RESOURCE_PATTERN: ביטוי רגולרי של RE2 לבדיקת משאבים, לדוגמה, example-project.

תמחור ומכסה

התכונה הזו זמינה בחינם ללקוחות Security Command Center Premium.

מודולים מותאמים אישית של Event Threat Detection כפופים למגבלות מכסה.

מגבלת המכסה שמוגדרת כברירת מחדל ליצירת מודולים בהתאמה אישית היא 200.

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

סוג הקריאה ל-API הגבלה
Get, List ‫1,000 קריאות ל-API לדקה, לכל ארגון
יצירה, עדכון, מחיקה ‫60 קריאות ל-API לדקה, לכל ארגון

מגבלות גודל של מודולים

הגודל של כל מודול מותאם אישית של Event Threat Detection מוגבל ל-6 MB.

מגבלות קצב

אלה מגבלות השימוש שחלות:

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

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

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