CA משותף, דלתות נפרדות: שירות אחד לכל קובץ קבלה
תעודה שעוברת את בדיקות הרשות המשותפת אינה כרטיס כניסה לכל שירות. הקבלה צריכה להיות בקובץ נפרד לכל שירות, שהדמון דורש.
תעודה שמאומתת מול רשות משותפת עברה מבחן אמון, לא מבחן חברות. שתי ההחלטות האלה מתמזגות לעיתים קרובות מפני ששתיהן מתרחשות בזמן החיבור, והמיזוג נשאר בלתי נראה עד שמישהו שלא אמור להיות בשירות מתקבל אליו. התיקון אינו רשות שנייה; הוא החלטה שנייה, שנעשית לכל שירות ונרשמת במקום שבו הדמון קורא אותה. החזיקו את השתיים בנפרד ורוב הבלבול בתחום הזה נעלם.
שרשרת מהימנה אינה אומרת דבר על חברות בשירות
שני שירותים יכולים לקבל את אותה היררכיית הנפקה ועדיין להיות להם אוכלוסיות שונות. מחשב נייד אחד שייך לראשון ואסור לו להגיע לשני, בעוד לקוחות אחרים מאותה היררכיה אכן שייכים לשם. הסרת הרשות מאותו שירות תנעל את כל מי שמשתמש בו כדין, ולכן העבודה היא קבלה ולא אמון.
כדאי לדמיין שני מנעולים על דלת אחת. התעודה פותחת את המנעול החיצוני, והחלטה לפי שירות פותחת את הפנימי; אף אחד מהם לא מחליף את השני. שירות עם המנעול החיצוני בלבד אינו אוכף חברות בכלל, הוא רק מאמת זהות. כתבו את שתי ההחלטות לפני שמשנים משהו, מפני שמדיניות שקיימת רק בצורת חיבור עובד אינה ניתנת לביקורת. מה שלהלן עוסק במנעול הפנימי.
הפכו עקיפות אופציונליות לשער קבלה
תיקיית תצורת לקוח היא בדרך כלל נוחות: קבצים בתוכה עוקפים הגדרות של הלקוחות שהם מכנים, ולקוח בלי קובץ פשוט פועל עם ברירות המחדל של השרת. הנחיה אחת הופכת את הנוחות הזו לשער, כך שקובץ חסר פירושו שהחיבור נדחה.
client-config-dir /etc/openvpn/service-a/clients
ccd-exclusive
מהדורת הקהילה של OpenVPN 2.6 ccd-exclusive ב עמוד המדריך שלה מתעדת בדיוק את התנאי הזה, וחיפוש הקובץ הנקוב נשען על הזהות האפקטיבית של הלקוח. בניות אחרות ושרתים המנוהלים על ידי מוצרים עשויים להיות שונים, לכן אשרו את הגרסה המותקנת לפני הסתמכות על אותה סמנטיקה במקום אחר.
התייחסו לנתיב שלמעלה כדוגמה ובדקו את הפריסה שנפרסה בפועל, במקום ליצור תיקייה שמדריך המציא. השאירו את בדיקות התעודה הקיימות, בדיקות זהות השרת ואימות החשבון בדיוק כפי שהיו, מפני שהקטע מוסיף תנאי ואינו מסיר דבר. הכינו את השינוי לפני הייצור, מפני שדחייה שמועלית בנקודה הלא נכונה נראית כמו כשל תעודה ומפנה את החקירה לרשות. אחר כך אשרו ששורת היומן של לקוח שנדחה מציינת את קובץ התצורה החסר ולא את השרשרת.
תיקייה אחת לכל שירות, לא רשימה משותפת אחת
החברות שייכת לשירות שאוכף אותה, ולכן כל שירות מחזיק תיקייה משלו וקבצים משלו. הפניית שני שירותים לרשימה אחת גורמת להם לחלוק חברות בין אם מישהו התכוון לכך ובין אם לאו, והשינוי שנוצר קשה לתלות בהחלטה. הרשות המשותפת יכולה להישאר משותפת; קבצי הקבלה לא יכולים. החזקתם בנפרד פירושה גם שטעות בשירות אחד אינה יכולה להרחיב אחר בשקט.
רשומת DEFAULT היא המקרה שמטעה אנשים. היא מספקת הגדרות חלופיות כאשר לא נמצא קובץ נקוב, אבל היא אינה הקובץ הנקוב שהשער דורש, ולכן אינה יכולה לקבל לקוח בעצמה. בדקו לקוח שאין לו רשומה כלל ואשרו את הדחייה; אם הלקוח הזה מתקבל, החלופה מוחלת ו ccd-exclusive אינו בתוקף במופע הזה.
הזהות האפקטיבית קובעת איזה קובץ נקרא
החיפוש משתמש בזהות שאיתה הלקוח אומת בפועל, שהיא בדרך כלל השם הנפוץ של התעודה. כשהשרת גם מאמת שם משתמש וסיסמה וממפה את השם הזה לשם הנפוץ, הקובץ חייב להתאים לשם המשתמש המאומת במקום זאת. אי התאמה משאירה תיקייה מלאה בשמות קבצים סבירים שלעולם אינם נבחרים.
קריאה היא החצי השני. הדמון בדרך כלל מוותר על הרשאות לאחר ההפעלה, ולכן החשבון המוקטן זקוק להרשאת קריאה לתיקייה ולכל רשומה בה. לקוחות אסור שיוכלו ליצור רשומה משלהם דרך נתיב שניתן לכתוב בו, מפני שקבלה בשירות עצמי מבטלת את המנגנון כליל. בדקו את הרשאות העיגון והשיתוף ולא רק את מצב הקובץ, מפני שתיקייה שנראית סגורה לחשבון אחד יכולה להיות פתוחה לאחר. אחר כך אשרו איזה חשבון התהליך הרץ משתמש בו באמת, ולא איזה חשבון קובץ היחידה מזכיר. השניים זהים רק כששום דבר אחר לא שינה אותם.
צפו בדחייה, בקבלה ובביטול בנפרד
נסו זהות ששייכת לשירות ואשרו שהיא מתחברת. נסו תעודה תקפה בלי רשומה ואשרו שהיא נדחית. נסו זהות שהתקבלה לשירות האחר ואשרו שהיא אינה מתקבלת כאן. רשמו את מופע השירות ואת הזהות האפקטיבית לצד כל תוצאה, מפני שתוצאה בלי ההקשר הזה איש אחר לא יוכל לשחזר.
הסרה היא פעולה נפרדת מביטול. עריכת קובץ קבלה מסירה זכאות לשירות אחד בשעה שהזהות נשארת תקפה בכל מקום אחר, ואילו מפתח שנחשף דורש את תגובת הביטול של הארגון. החליטו מראש מה יקרה לסשנים שכבר פעילים, מפני ששום עריכת תיקייה או רשימת ביטול אינה מסיימת אותם מעצמה.
קבלה היא גם רק השער הראשון. הצטרפות לשירות אינה אומרת דבר על תת-הרשתות, מסדי הנתונים או ממשקי הניהול שמאחוריו, ומדיניות המשאבים הזו חייבת להיכתב ולהיבדק בנפרד.