גיבוי של המכולה או של הקבצים שבתוכה? הכריעו לפי צורת השחזור
גיבוי ברמת תמונה וגיבוי ברמת קבצים משחזרים דברים שונים ותלויים במפתחות שונים. התאימו את האובייקט השמור לשחזור שבאמת דרוש לכם.
אפשר לגבות מכולה מוצפנת כאובייקט אחד, או לעגן אותה ולגבות את הקבצים שבתוכה. שניהם עוברים את ה-VPN בלי בעיה, ושם נגמר הדמיון. הם משחזרים דברים שונים, תלויים במפתחות שונים, תופסים כמויות שונות של אחסון, ונכשלים בדרכים שונות כשמישהו צריך את הנתונים חזרה. בחרו קודם את אובייקט השחזור, אחר כך את התעבורה, ואחר כך את הצפנת העותק השמור. הרשימה שלמטה הולכת לפי הסדר הזה, כי כמעט כל מחלוקת על גיבויים היא למעשה מחלוקת על איזו משלוש ההחלטות האלה התקבלה ראשונה.
שני אובייקטים, שתי צורות שחזור
גיבוי ברמת תמונה משחזר מכולה: מקבלים בחזרה את הכרך המוצפן, ועדיין זקוקים לחומר השחזור שלו כדי לפתוח אותו. גיבוי ברמת קבצים משחזר קבצים ועצי תיקיות, וההצפנה שמגנה עליהם היא תכונה של מאגר הגיבויים ולא של המכולה המקורית. העתקה פשוטה לתיקייה מרוחקת היא מקרה שלישי, והיא יורשת את ההגנה שיש לאותה תיקייה במקרה.
| Object | What a restore gives you | Where the encryption question lands |
|---|---|---|
| Encrypted container image | The volume, still locked | The container format and its recovery key material |
| Mounted files into a backup tool | Selected files and metadata | The backup repositorys own keys and design |
| Plain copy to a remote folder | Whatever the copy process kept | Whatever protects that storage afterwards |
השורה האמצעית היא זו שאנשים קוראים לא נכון. היא יכולה להיות תכנון טוב לגמרי: תוכנת הגיבוי קוראת טקסט גלוי באופן מקומי וכותבת מאגר מוצפן ומאומת. אז הביטחון נשען על התוכנה ועל פרטי ההתחברות שלה, לא על סיסמת המכולה המקורית, ואסור לתאר את השניים כאילו היו אותו אמצעי בקרה.
בדיקה 1: מה השחזור חייב לשחזר?
שאלו את השאלה בצורת שחזור, לא בצורת גיבוי. אם הדרישה היא “להחזיר את השירות הזה למארח אחר”, תמונה יחד עם חומר השחזור שלה היא תשובה עקבית. אם הדרישה היא “להחזיר את הגיליון הפיננסי של מרץ”, שחזור תמונה של כמה גיגה-בייט רק כדי לחלץ קובץ אחד הוא דרך יקרה לענות. שתיהן שחזורים לגיטימיים, והן אינן תקציבים ניתנים להחלפה. תוכנית שמזכירה רק אחת מהן תיבחן בסופו של דבר על ידי האחרת.
רשמו את יעד השחזור בתוכנית: כרך שלם, עץ תיקיות או קבצים בודדים. אחר כך ציינו אילו מטא-נתונים חייבים לנסוע איתם, כי בעלות, הרשאות, תכונות מורחבות וחותמות זמן הם חלק משחזור ברמת קבצים ולעיתים קרובות הולכים לאיבוד בתהליכי עבודה מבוססי העתקה שנראו מספיקים בזמן הבדיקות.
החליטו גם מי מבצע את השחזור. מאגר ברמת קבצים שכל מפעיל יכול לעגן הוא מודל גישה שונה מתמונה שמחייבת נוכחות של בעל המפתח, ואף אחד מהם אינו טוב יותר אוטומטית. מה שחשוב הוא שהבחירה תהיה מכוונת וכתובה.
בדיקה 2: מה מגן על העותק השמור?
ה-VPN מגן על קטע תעבורה. אין לו מה לומר על העותק השמור לאחר שההעברה מסתיימת, ו“זה עבר דרך המנהרה” אינה אמירה על יכולתו של מפעיל הגיבויים לקרוא את הנתונים שלכם. אם הצד המרוחק מופעל על ידי מישהו אחר, השאלה היא מה הם יכולים לקרוא, ולא אם הקישור היה מוצפן.
בתמונה זה אומר להגן על חומר המפתח של המכולה בנפרד מהתמונה עצמה. אובדן הכותרת הוא אובדן הכרך, לכן גבו את הכותרת במקום שבו התמונה אינה נמצאת:
cryptsetup luksHeaderBackup /dev/vg0/data --header-backup-file data-header.img
cryptsetup luksDump /dev/vg0/data | head -20
במאגר ברמת קבצים, ודאו שהכלי מצפין ומאמת תוכן ומטא-נתונים לפני שהם יוצאים מהמארח, וגלו מי מחזיק במפתחות. תיעוד התכנון של Restic מבהיר שהוא מניח מארח מקור מהימן ושהצפנה אינה מונעת ממי שיש לו גישה לאחסון למחוק גיבויים. שתי ההסתייגויות חשובות: מאגר יכול להיות חסוי ועדיין להיהרס.
בדיקה 3: האם העותק עקבי?
גיבוי שלוכד מערכת קבצים משתנה הוא עותק, לא נקודת שחזור. בתמונה, השתמשו בשיטה הנתמכת של כלי הכרכים לתמונת מצב יציבה, שבדרך כלל פירושה פעולת תמונת מצב או ניתוק, ולא קריאת קובץ גדול בזמן שהוא משתנה:
lvcreate -L 5G -s -n data-snap /dev/vg0/data
cryptsetup open /dev/vg0/data-snap data-snap --readonly
בקבצים מעוגנים, השתמשו בנוהל העקביות הנתמך של היישום עבור מסדי נתונים פעילים ונתונים מתואמים אחרים. עותק ברמת מערכת קבצים ונקודת שחזור עקבית עם היישום הם תיאורים שונים, וההבדל נעשה גלוי רק כשמנסים להפעיל את היישום מהעותק המשוחזר.
החזיקו את חומר השחזור בנתיב מוגן ובלתי תלוי. אובדן המכונה המקורית לא אמור לגרום לאובדן פרטי ההתחברות היחידים שפותחים את הגיבוי שלה, וזה בדיוק מה שקורה כשקובץ המפתח יושב על הכרך שמגבים. בחנו את ההפרדה הזו במכוון: שחזרו במארח שמעולם לא ראה את המקור, בעזרת מה שהתוכנית אומרת שזמין בלבד.
בדיקה 4: האם זיהוי שינויים תקף לאובייקט הזה?
מכולה מוצפנת נראית לרוב כלי התעבורה כקובץ אחד גדול ואטום, ולכן עריכה קטנה בטקסט גלוי עלולה לגרום לקריאה חוזרת גדולה או להעלאה מלאה מחדש, בהתאם לכלי ולפורמט. חלוקה לגושים בגודל משתנה וסילוק כפילויות, כפי ש-restic מתעד, יכולות להפחית זאת, אבל זו תכונה של אותו כלי ולא של מכולות מוצפנות בכלל.
מדדו במקום להניח. השוו ריצה ראשונה לריצה שנייה לאחר שינוי קטן ובלתי מזיק, ותעדו את הבתים שהועברו וגם את הזמן שחלף. שמרו גיבוי ידוע כטוב בזמן הניסויים, כדי שבדיקה לא תכלה את נקודת השחזור היחידה שלכם.
אחר כך סיימו את הרשימה בבדיקה היחידה שמשנה: שחזור בלי המכונה המקורית. פתחו מכולה משוחזרת, או שחזרו קבצים נבחרים עם המטא-נתונים שלהם, וודאו שהיישום או המשתמש יכול להשתמש בתוצאה. העברה מהירה ומוצפנת היטב שאינה יכולה לענות לבדיקה הזו היא עותק של הנתונים שלכם, לא גיבוי שלהם.