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

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

עקבו אחר היעד לאחר הפרסום

קחו מארח Linux עם Docker שמפרסם את פורט 80 של מכל בפורט 8080 של המארח. עמית מתחבר לכתובת הרשת של המארח בפורט 8080, המארח מקבל את החיבור, ותרגום יעד כותב אותו מחדש לעבר כתובת הגשר של המכל, בדרך כלל משהו כמו 172.17.0.2 בפורט 80.

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

לכן התיעוד של הרשת מונה את מכלי Docker בין המשאבים שהרשאת הרשת המקומית שולטת בהם ב-Linux. ההרשאה אינה שם נרדף לרשומה רגילה ברשימת ההיתרים של VPN, ושתי הבקרות אינן מחליפות זו את זו. האחת מחליטה אם עמית רשאי להגיע למשאבים מקומיים בכלל; האחרת מחליטה אילו יעדים נושאת מסלול מנהור.

החליטו כמה גישה מקומית מעניקה הרשאה

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

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

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

בחנו את ההרשאה, לא רק את כתובת ה-URL

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

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

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

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

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

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

מאמרים קשורים