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

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

קראו את הקובץ שאתם עומדים להוסיף לאינדקס

התחילו מהבתים בפועל, כי פרופיל שמפנה לקבצים נפרדים נראה אחרת לגמרי מכזה שמטמיע אותם. חפשו את סמני בלוק PEM ואת התגיות המוטמעות בשם ca, cert, key, tls-auth ו-tls-crypt, ואותה סריקה תראה לכם את שני המקרים. מפתח פרטי מוצפן עדיין נחשב חומר רגיש, ומפתח tls-auth או tls-crypt משותף הוא אישור גם אם אינו הזהות של משתמש. הפעילו את אותה בדיקה על כל מה שמתווסף לאינדקס לצד הפרופיל, כולל ארכיונים ותסריטי התקנה שמפנים לקובץ אישורים.

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

החליטו מה המאגר רשאי להפיץ

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

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

אם החומר כבר נמצא בהיסטוריה

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

לשני יש רדיוס השפעה שונה מאוד, והתוכנית צריכה להצהיר איזה מהם אתם מבצעים לפני שתתחילו. אתרו את הקומיט שהכניס את החומר בחיפוש מסוג git log --all -S 'BEGIN PRIVATE KEY', כדי שהיקף הניקוי יהיה ידוע ולא משוער. שיבוט של עמית או פיצול עשויים כבר להחזיק באובייקט הישן, ולכן הביטול בא ראשון והניקוי שני.

נקו רק לאחר שהכלתם

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

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

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

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

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