Obervability
שירותים
AudiTrace
משאבים▾
צור קשר
עברית ▾
הזמן בדיקה ללא עלות
מתוך האודיט · Pipelines
מידע אישי בלוגים: 50 מקורות, כ־30.7 מיליון רשומות ביום
לא דליפה. חשיפה — כתובות אימייל שמגיעות בטקסט גלוי למאגר שניתן לתשאול, בקצב שאף אחד לא מדד, ובלי כלל masking לפניהן.
פורסם ב־16 בספטמבר 2026
הגרסה השקטה של בעיית פרטיות
שום דבר לא דלף. לא היה תוקף, אף bucket לא היה ציבורי, וכל גישה עברה אימות ונרשמה. מה שהאודיט מצא צר יותר ורגיל יותר: 50 מקורות לוגים שלחו רשומות שמכילות כתובות אימייל בטקסט גלוי, כ־30.7 מיליון רשומות ביום, אל מאגר שכל מי שיש לו הרשאת שאילתות יכול לחפש בו.
זו לא כותרת בעיתון. זה כן מידע אישי שמעובד בלי שאף אחד החליט לעבד אותו, נשמר לכל משך הזמן שה־bucket קובע, וניתן לחיפוש על ידי אוכלוסייה רחבה יותר מכפי שמישהו חשב עליה — וזו ההגדרה של הבעיה שרגולטורים באמת נתקלים בה.
למה זו כמעט תמיד ברירת המחדל
לוגים של אפליקציות נכתבים לצורך דיבוג, וכתובת אימייל היא מפתח הדיבוג השימושי ביותר שקיים. אף אחד לא מוסיף אותה לשורת log כהחלטה על עיבוד מידע; מוסיפים אותה כי החלופה היא פניית תמיכה שאי אפשר לקשר לחשבון.
ingest הוא המקום שבו זה הופך להחלטה של הפלטפורמה ולא של מפתח — וקונפיגורציית ה־ingest בדרך כלל נקבעת פעם אחת, עבור המקורות הראשונים, ואחר כך נורשת על ידי כל מקור שנוסף אחריהם בלי שנבדקה שוב.
מה הבדיקה עושה ומה היא לא עושה
היא סופרת התאמות לתבנית בכל מקור ומדווחת על המקור ועל הקצב. היא לא שולפת את הערכים שהותאמו, לא שומרת אותם, לא משדרת אותם, והדוח לא מצטט אף אחד מהם. ממצא שהיה חייב לצטט את המידע כדי להוכיח שהמידע קיים היה בעיה גרועה יותר מזו שהוא מתאר.
היא גם לא אומרת לכם אם יש לכם בעיה משפטית. אנחנו לא עורכי דין והדוח לא מציע חוות דעת; הוא קובע מה מגיע, לאן ובאיזה קצב, וזה הקלט שהיועץ המשפטי שלכם לענייני פרטיות צריך ואין לו כרגע.
צורת השאילתה
ספירת ההתאמות בכל מקור בלי לקרוא אותן — זו הלוגיקה שמאחורי הממצא:
DQL
fetch logs, from: -24h
| filter matchesPhrase(content, "@")
| filter matchesValue(content, "*@*.*")
| summarize records = count(), by: {dt.source_entity}
| sort records desc
התיקון נמצא במעלה הזרם, והוא זול
כלל masking ב־ingest עוצר מידע אישי חדש מלנחות באחסון שניתן לתשאול, והוא חל מהרגע שבו הוא נשמר. זו הבקרה הזולה ביותר בפלטפורמה וזו שהכי הרבה פעמים חסרה, כי היא מגנה מפני משהו שמעולם לא השתבש באופן גלוי.
מה ש־masking לא עושה זה שום דבר לגבי הרשומות ששמורות כבר — זו שאלה של retention, והיא נוחתת בדומיין אחר של האודיט עם החלטה אחרת וקשה יותר שנלווית אליה. תקנו קודם את הזרימה פנימה; זה החצי שאפשר לתקן היום.
הממצא שמאחורי המאמר
Log sources with email addresses in cleartext
היקף
50 sources · ~30.7M/day
השפעה
GDPR exposure
השורה התחתונה
מידע אישי בלוגים הוא בדרך כלל לא כשל בזהירות. הוא היעדרו של כלל שאף אחד מעולם לא התבקש לכתוב.
עוד מהסדרה
שאלה של 91,576 דולר: שרתי Full-Stack שאין עליהם מה לנטר
מתוך האודיט · FinOps
ה־bucket ב־Grail שאף אחד לא בחר: 462 יום retention
מתוך האודיט · Grail
1,617 חלונות תחזוקה: איך ההתראות משתתקות בלי שאף אחד החליט
מתוך האודיט · Alerting
מה באמת נוחת על חשבונית DPS
מתוך האודיט · FinOps
לגלות מה ה־tenant שלכם אומר.
ריצה אחת בקריאה בלבד, 71 בדיקות, והמקור שמאחורי כל ממצא. הדוח נשאר אצלכם כך או כך.
לקבוע אודיט
AudiTrace
גלו מה ה־Obervability שלכם באמת עושה.
ה־Audit הוא ריצה אחת. הממצאים — פגישה אחת. מה שתעשו איתם — בידיים שלכם.
מומחי Dynatrace מוסמכים
+1
שירותים
שירותים
AudiTrace
סיפור לקוח
מדריכים
אודיט ל־Dynatrace
ייעול עלויות Dynatrace
מקרה לקוח
מאמרים
יצירת קשר
צור קשר
hello@obzervability.com
© 2026 Obervability · כל הזכויות שמורות.
פרטיות
תנאי שימוש
נגישות
Obervability
{{ t.navServices }}
AudiTrace
{{ resLabel }}▾
{{ t.navContact }}
{{ footGuideAudit }}
{{ footGuideCost }}
{{ footGuideCase }}
{{ footGuideArticles }}
{{ langLabel }} ▾
English
{{ altLabel }}
{{ t.heroKicker }}
{{ t.heroTitle }}
{{ t.heroSub }}
{{ t.heroCta1 }}
{{ t.heroCta2 }}
{{ t.badge }}
71
{{ t.stripChecks }}
19
{{ t.stripDomains }}
21
{{ t.stripRem }}
0
{{ t.stripWrite }}
{{ t.svcTitle }}
{{ t.s1t }}
{{ t.s1d }}
{{ t.s2t }}
{{ t.s2d }}
{{ t.s3t }}
{{ t.s3d }}
{{ t.caseKicker }}
{{ t.caseTitle }}
{{ t.caseCtx }}
{{ t.caseNote }}
{{ t.svcKick }}
{{ t.svcTitle2 }}
{{ t.svcSub }}
{{ t.heroCta1 }}
{{ t.svcCta2 }}
71
{{ t.svcL1 }}
$114–178k
{{ t.svcL2 }}
0
{{ t.svcL3 }}
{{ t.svcTracksT }}
{{ t.svcTracksD }}
{{ k.t }}
{{ k.g }}
{{ k.d }}
{{ t.fcTitle }}
{{ t.svcFindD }}
{{ f.t }}
{{ f.d }}
{{ t.svcEngT }}
{{ t.colEng }}
{{ t.colTrack }}
{{ t.colShape }}
{{ e.n }}
{{ e.k }}
{{ e.s }}
{{ t.svcCtaT }}
{{ t.svcCtaD }}
{{ g.kicker }}
{{ g.title }}
{{ g.sub }}
{{ g.cta1 }}
{{ g.cta2 }}
{{ g.s1h }}
{{ p.t }}
{{ g.s2h }}
{{ g.s2sub }}
{{ c.t }}
{{ c.d }}
{{ g.s3h }}
{{ g.s3sub }}
{{ g.s4h }}
{{ g.s4sub }}
{{ g.tableNote }}
{{ g.s5h }}
{{ g.s5sub }}
{{ k.t }}
{{ k.d }}
{{ g.s6h }}
{{ c.t }}
{{ c.d }}
{{ g.faqH }}
{{ f.q }}
{{ f.a }}
{{ g.closerT }}
{{ g.closerD }}
{{ g.cta1 }}
{{ g.closerCta }}
{{ g.kicker }}
{{ g.title }}
{{ g.sub }}
{{ g.cta1 }}
{{ g.cta2 }}
{{ g.s1h }}
{{ p.t }}
{{ g.s2h }}
{{ g.s2sub }}
{{ g.tableNote }}
{{ g.s3h }}
{{ c.t }}
{{ c.d }}
{{ g.s4h }}
{{ c.t }}
{{ c.d }}
{{ g.faqH }}
{{ f.q }}
{{ f.a }}
{{ g.closerT }}
{{ g.closerD }}
{{ g.cta1 }}
{{ g.closerCta }}
{{ dom.kicker }}
{{ dom.title }}
{{ dom.lede }}
{{ dom.ctaBook }}
{{ dom.ctaChecks }}
{{ dom.hReads }}
{{ r.t }}
{{ r.d }}
{{ dom.hWhy }}
{{ p.t }}
{{ dom.findLabel }}
{{ dom.findName }}
{{ dom.lblScale }}
{{ dom.findScale }}
{{ dom.lblImpact }}
{{ dom.findImpact }}
{{ dom.findNote }}
{{ dom.hFaqs }}
{{ f.q }}
{{ f.a }}
{{ dom.hOther }}
{{ dom.otherSub }}
{{ dom.closerT }}
{{ dom.closerD }}
{{ dom.ctaBook }}
{{ dom.closerCta }}
{{ c.kicker }}
{{ c.title }}
{{ c.sub }}
{{ c.cta1 }}
{{ c.cta2 }}
{{ f.n }}
{{ f.l }}
{{ c.s1h }}
{{ c.s1sub }}
{{ c.tableNote }}
{{ c.s2h }}
{{ p.t }}
{{ c.s3h }}
{{ a.t }}
{{ a.d }}
{{ c.s4h }}
{{ f.q }}
{{ f.a }}
{{ c.closerT }}
{{ c.closerD }}
{{ c.cta1 }}
{{ c.closerCta }}
{{ art.kicker }}
{{ art.title }}
{{ art.dek }}
{{ art.dateLine }}
{{ s.h }}
{{ p.t }}
DQL
{{ s.code }}
{{ art.findLabel }}
{{ art.findName }}
{{ art.scaleLabel }}
{{ art.findScale }}
{{ art.impactLabel }}
{{ art.findImpact }}
{{ art.takeawayLabel }}
{{ art.takeaway }}
{{ art.moreLabel }}
{{ art.ctaTitle }}
{{ art.ctaSub }}
{{ art.ctaBtn }}
AudiTrace
{{ artIndexKicker }}
{{ artIndexTitle }}
{{ artIndexSub }}
{{ t.privTitle }}
{{ t.privUpdated }}
{{ s.h }}
{{ s.b }}
{{ t.termsTitle }}
{{ t.termsUpdated }}
{{ s.h }}
{{ s.b }}
{{ t.a11yTitle }}
{{ t.a11yUpdated }}
{{ s.h }}
{{ s.b }}
{{ c.t }}
{{ c.d }}
{{ t.pTitle }}
{{ p.t }}
{{ p.d }}
{{ p.fig }}
{{ t.hTitle }}
{{ s.n }}
{{ s.t }}
{{ s.d }}
{{ t.way1k }}
{{ t.way1t }}
{{ t.way1d }}
{{ t.way2k }}
{{ t.way2t }}
{{ t.way2d }}
{{ t.waysNote }}
{{ t.fcTitle }}
{{ i.t }}
{{ i.d }}
{{ t.prDelTitle }}
{{ d.t }}
{{ d.d }}
{{ t.dTitle }}
{{ t.dSub }}
{{ t.secTitle }}
{{ b.t }}
{{ b.d }}
{{ n.t }}
{{ t.oTitle }}
{{ o.k }}
{{ o.t }}
{{ o.d }}
{{ o.p }}
{{ t.faqTitle }}
{{ q.q }}
{{ q.a }}
{{ t.cTitle }}
{{ t.cSub }}
{{ t.badge }}
{{ t.fSentT }}
{{ t.fSentD }}
{{ ccDial }}
{{ formErrMsg }}
{{ t.footColServices }}
{{ t.navServices }}
AudiTrace
{{ t.navCase }}
{{ t.footColGuides }}
{{ footGuideAudit }}
{{ footGuideCost }}
{{ footGuideCase }}
{{ footGuideArticles }}
{{ t.footColReach }}
{{ t.navContact }}
hello@obzervability.com
© 2026 Obzervability · {{ t.footRights }}
{{ t.navPrivacy }}
{{ t.navTerms }}
{{ t.navA11y }}