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

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

המודל המורכב הוא מסמך אחר

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

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

סודות יושבים ביותר מקומות מאשר בשדה המפתח

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

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

הצהרת סוד אינה הסוד

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

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

שמרו על הצורה כדי שהקובץ עדיין יאבחן

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

docker compose -f compose.yaml config > rendered.yaml
grep -nE 'PRIVATE_KEY|PASSWORD|TOKEN|PSK|PrivateKey|passphrase' rendered.yaml
wc -l rendered.yaml

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

אם חומר נחשף, החליפו אותו

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

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

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