Directory service
יש לערוך ערך זה. הסיבה היא: ניסוחים לא אנציקלופדיים, חוסר קישורים פנימיים.
| ||
יש לערוך ערך זה. הסיבה היא: ניסוחים לא אנציקלופדיים, חוסר קישורים פנימיים. |
Directory service (אנגלית: שירותי מדריך או שירותי ספרייה) הוא תוכנה המשמשת לאגירה, הפצה וחיפוש של מידע משותף ברשת מחשבים. סוגי המידע העיקריים המנוהלים על ידי התוכנה כוללים מספרי טלפון וכתובות דואר אלקטרוני של משתמשים, כתובות הרשת של מדפסות ומחשבים, סיסמאות של משתמשי מחשב, הרשאות, קונפיגורציות של יישומים מבוזרים ומפתחות ציבוריים.
Directory service הוא למעשה מסד נתונים שרשומה בו יכולה להתייחס לאובייקטים כלשהו כגון אדם, מקום, שירות, או מחשב. כדי לסייע בארגון המידע, רוב שירותי הספרייה אוגרים את המידע בצורת עץ היררכי.
בתחום הנדסת התוכנה, ספרייה (Directory) מאוד דומה בהגדרתה למילון (Dictionary) היא מאפשרת חיפוש שם (Name) ומידע אודות אותו שם. כמו שלמילה במילון יכולות להיות כמה הגדרות מילוניות, ב-Directory, ניתן לשייך נתונים שונים ורבים לאותה מילה.
בנוסף, כמו שמילה יכולה להיות חלק ממשפט ולהשפיע על משמעות המשפט, שם ב-Directory יכול להכיל סוגי מידע שונים ואם נשתמש בתיאור הבסיסי הזה כדי להסביר מה היא Directory, נוכל לומר ש"שירות ספרייה" (Directory Service) היא בעצם תוכנה אשר מאכסנת, מארגנת ומאפשרת גישה למידע אשר אגור בתוך ספרייה (Directory).
ספריות יכולות להיות מאוד קטנות ולהכיל רק כמות קטנה מאוד של נתונים והגדרות נתונים, או גדולות מאוד ולהכיל כמות אין סופית של צמתי נתונים (Data Node) והגדרות נתונים (Data Type). לדוגמה, במאגר של מספרי טלפון, צמתי הנתונים יהיו שמות האנשים בעוד שסוג הנתונים יהיה מספרי הטלפון. דוגמה נוספת היא מערכת ה-DNS, בה צמתי הנתונים הם שמות דומיין (Domain) או כתובות אינטרנט.
בספרייה אשר תשמש את מערכת ההפעלה של המחשב שלכם, צמתי הנתונים ייצגו משאבים אשר מנוהלים על ידי מערכת ההפעלה, כולל שמות משתמשים, שמות מחשבים, מדפסות ומשאבים משותפים אחרים. מאז המצאת האינטרנט, נעשה שימוש בסוגי ספריות שונות אולם אנחנו נתבסס על אלו אשר התבססו על פרוטוקול ה-X.500.
שירות הספרייה הפשוט ביותר נקרא שירות שמות (Naming Service) ומטרתו היא למפות שמות של משאבי רשת לכתובות הרשת שלהם. בשימוש בסוג זה של ספרייה, המשתמש לא צריך לזכור את כתובת הרשת המלאה של כל משאב ומשאב ויכול להשתמש בשם קצר כדי לאתר את המשאב.
אנו מתייחסים לכל משאב ברשת כאובייקט (Object) בספרייה. מידע אודות אותו משאב ספציפי נשמר בצורה של מאפיינים (Attributes) של אותו אובייקט. ניתן להגביל את הגישה למידע של אובייקטים על ידי מתן הרשאות (Permissions) לאותו אובייקט.
ספריות מתוחכמות יותר עוצבו כדי שיכילו נתונים נוספים מעבר לאובייקטים כדוגמת שירותים (Services), התקנים (Devices), הגדרת תפקיד (Entitlements), הגדרות (Preferences), תוכן (Content) ועוד. את השימוש בספריות מעין אלו ניתן למצוא במערכות אשר מטפלות בתחום ניהול הזהויות (Identity Management).
שירות ספריות מגדיר את ה-namespace של הרשת, Namespace הוא מעין מכל וירטואלי אשר מחזיק אובייקט/ים ושומר מידע אודות יחסי הגומלין ביניהם.
תהליך העיצוב של ספרייה (Directory) מתבסס, בדרך כלל, על סדרה של חוקים אשר קובעים כיצד משאבי רשת יקבלו שם וכיצד יזהו אותם. אחד החוקים הבסיסיים ביותר קובע שכל השמות חייבים להיות ייחודיים וחד משמעיים. בפרוטוקולי ה-X.500 וה-LDAP, השם של האובייקט נקרא Distinguished Name או DN בקיצור. ה-DN משמש להצבעה על אוסף מאפיינים (Attributes) אשר ביחד מרכיבים רשומה אחת (שם) בתוך הספרייה.
שירות ספרייה הוא שירות שיתוף מידע תשתיתי אשר משמש לאיתור, ניהול וארגון של אובייקטים של משאבי רשת כגון תיקיות, קבצים, מדפסות, משתמשים, קבוצות, התקנים, מספרי טלפון ועוד. השירות מהווה חלק חשוב ביותר במערכת ההפעלה של הרשת (Network Operation System – NOS). במקרים קיצוניים יותר, שירות הספרייה משמש במאגר המידע העיקרי של Service Delivery Platform (או SDP בקיצור). לדוגמה, חיפוש אחר "מחשבים" תוך שימוש בשירותי ספרייה יכול לספר מידע אודות המחשבים עצמם וכיצד ניתן לגשת אליהם. ל-"שכפול נתונים" (Replication) ו"הפצת נתונים" (Distribution) יש משמעות מיוחדת בתהליך התכנון והניהול של שירותי הספרייה. המושג "שכפול נתונים" מתאר מצב בו ה-Namespace של ספרייה אחת מועתק (Copy) לשרת ספרייה אחר כדי לעמוד בתסריטים בהם אחד השרתים מפסיק לעבוד או כדי לשפר ביצועיים. תהליך העתקת ה-Namespace מנוהל על ידי אותה סמכות (Authority). "הפצת נתונים" (Distribution) הוא תהליך בו שרתי ספרייה רבים, המחזיקים Namespaces שונים מאוחדים יחדיו לספרייה אחת כאשר כל Namespace אחראי על סמכויות שונות.
השוואה בין שירותי ספרייה למסדי נתונים יחסיים
ישנם כמה מאפיינים אשר מבדילים בין שירותי ספרייה רגילים למסדי נתונים יחסיים. יש יוצאים מן הכלל, אך באופן כללי ניתן למצוא את ההבדלים הבאים:
- המידע בתוך ספרייה נקרא יותר פעמים מאשר שכותבים אותו, דבר אשר הופך סוגיות כגון טרנזקציות (Transactions) ואחזור נתונים (Rollback) לפחות חשובות.
- ניתן לשכפל את המידע אם הפעולה עוזרת לשיפור הביצועים.
- מאחר שעיצוב מודל הנתונים בצורה היררכית יכול להיות מסובך ועלות העיבוד שלו יקרה, שירותי ספרייה מסוימים יחפשו אובייקטים תוך שימוש במאפיינים (Attributes) שלהם ואז יציגו את הנתונים לפי דרישה.
- שירותי ספריות רגילים לא תומכים ביחסי רבים-לרבים (Many-to-Many) ולכן הם משתמשים ב-Distinguished Names (DN) או מזהים אחרים. הדבר דומה לשימוש ב-Foreign Key במסדי נתונים יחסיים.
- במקום, ההיררכיות שתוארו בפרוטוקול ה-X.500 נחשבו לבעיות ביחס לעיצוב הנתונים במאגרי נתונים יחסיים. אולם, מודלים של מבנה נתונים מסוג אובייקטים במאגרי מידע, מבוססי Java מודרניים המשתמשים בתכנון מונחה עצמים (Object Oriented) ו-XML מוכיחים שהספריות מתפתחות בשונ לתכנון המקורי שלהן.
- הסכמות (Schemas) ספריות מוגדרות שמכילות משפחות של אובייקטים (Object Class), מאפיינים (Attributes) ו-Namespaces. כאשר הגדרת ה-objectClass מכילה את המאפיינים הבאים:
- חייב (Must) – המאפיין שחייב להופיע תמיד בכל ההופעות של ה-objectClass.
- אפשרי (May) – מאפיין אשר ניתן להגדיר אותו אולם גם ניתן לתת ערך ריק (Null) דומה למאגרי מידע רציונליים.
- מאפיינים יכולים להכיל כמה ערכים (Multi Valued) דבר המאפשר שימוש שונה. לדוגמה מאפיין יכול להכיל שם מחשב ואת המספר הסידורי שלו ברמה אחת של עץ הנתונים ורשימת מספרי טלפונים ברמה אחרת.
- השימוש במאפיינים ו-objectClasses מוסדר על ידי שימוש במספרים חד-חד ערכיים המסופקים על ידי ארגון ה-IANA. לכן, חברות המפתחות אפליקציות המבוססות על מודל הספרייה, ישאפו להשתמש במאפיינים שכבר הוגדרו כבר כדי לחסוך עלויות.
- מאפיינים מקושרים ל-Namespaces. כלומר כל objectClass יורש את המאפיינים של ה-objectClass מעליו (ולבסוף את המאפיינים של ה-objectClass הרמה העליונה ביותר דבר אשר מוסיף מאפיינים נוספים.
- שירותי ספרייה רבים נמצאים בשימוש בתכנון אבטחת המידע בארגונים גדולים ולכם יש להם זיקה רבה למאפיינים חשובים כגון שליטה בגישה למידע (Access Control).
השונה בין שירותי ספרייה למסדי נתונים יחסיים
מבחינה ארכיטקטורית, ההבדל העיקרי בין שני סוגי מאגרי המידע האלו הוא שאפליקציה אשר מתבססת על מאגר מידע יחסי מתוכננת להשתמש במודל מידע מסוים יחידני (יחסי), בעוד שספרייה מחזיקה "מזהים" מיוחדים עבור אובייקטים אפליקציות שונות יכולות להשתמש בהם באופן שונה. השימוש בשירות ספרייה (Directory Services) יתבצע בארגונים המכילים משאבי רשת רבים שצריך לנהל אותם וזאת במטרה לחסוך עלויות וליעל את העבודה. בין הדוגמאות למשאבי רשת מסוג זה ניתן למצוא חשבונות משתמש, פנקסי כתובות, רשימות כוח אדם, הגדרות, תפקידים, מוצרים ושירותים, התקנים, פרופילים, מדיניות, מספרי טלפון וכדומה.
מסיבות מובנות, תהליך עיצוב הספריות ומאגרי המידע היחסיים שונים מאוד האחד מהשני. מודלים של תכנון נתונים במאגרי מידע יחסיים נוטים יותר להיות בנויים עבור דרישות החברה ותהליכי העבודה שלה כגון הצגה מותאמת אישית של נתונים, גישה מהירה, והאפשרות לגשת לנתונים בכל מקום ברשת. לעומת זאת, התפקיד של מודל בניית הנתונים הוא לאפשר שימוש תוך הסבר מינימאלי וכאן נכנס ההבדל המהותי בקנה המידה. ניתן למצוא אינדיקציה טובה בתהליך העיצוב של מאגרי מידע יחסיים בכמות המאגרים העצומה אשר בשימוש בשוק למטרות שונות. לעומת זאת, חברות שרוצות לנהל זהויות בתוך הארגון שלהם ולחשוף שירותים שונים ללקוחות יעדיפו את מבנה הספריות.
דוגמאות שונות לשימוש בשירותי ספרייה
שירותי הספרייה היוו חלק מיוזמת ה-Open Systems Interconnection (או OSI). בשנות ה-80 של המאה שעבר, ארגון ה-ITU וארגון ה-ISO הציגו את פרוטוקול ה-X.500 אשר היווה את הבסיס לכל שירותי הספרייה הקיימים כיום. המטרה הראשונה של הפרוטוקול הייתה שימוש בהעברת הודעות אלקטרוניות בתוך הרשת הארגונים וחיפוש משאבי רשת תוך שימוש בשמות. פרוטוקול ה-LDAP מבוסס על הגדרות מבנה הספרייה ב-X.500 אולם משתמש בהגדרות פרוטוקול ה-TCP/IP וקידוד מחרוזות תווים המגודרים בפרוטוקול ה-DAP מה שמקשר אותו יותר לעולם האינטרנט. לאורך השנים ניתן למצוא יישומים שונים של שירותי הספרייה מחברות שונות בהם ניתן למצוא מערכות מפורסמות כגון ה- DNS, Active Directory, Novell's eDirectory, Sun NIS ועוד.