הגדרת DBeaver/DataGrip לגישה אוניברסלית למסדי נתונים

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

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

הגדרת DBeaver לגישה למאגרי נתונים שונים

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

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

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

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

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

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

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

מה נותן פרופיל חיבור אחיד למאגרי נתונים

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

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

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

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

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

הגדרת DBeaver למצבי גישה שונים

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

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

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

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

סדר העבודה: מביקורת החיבורים ועד למסירה

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

  1. ביקורת חיבורים. אוספים פרופילים ממכונות המהנדסים, מחרוזות חיבור בקונפיגים של שירותים ובסקריפטים, סיסמאות שהתפזרו בהתכתבויות. בתוצאה — רשימת מקורות עם ציון מי ולשם מה ניגש אליהם.
  2. סכמת גישה. ממיינים את המקורות לפי מסלולים ותפקידים: למי נדרשת צפייה ולמי — עריכה. בנפרד מתעדים היכן נמצאים הסודות ומי מנפיק אותם.
  3. הגדרה על סביבת הטסט. מרכיבים ב-DBeaver פרופילי חיבור, דרייברים, פסקי זמן ומנהרות על העתק של הסכמה הפעילה: אותן טבלאות ואותן הרשאות כמו בפרודקשן, אבל בלי סיכון.
  4. בדיקה על סביבת הטסט. שוברים בכוונה: מנתקים את המנהרה, מחליפים סיסמה, מכבים צומת. בודקים אם הלקוח מתחבר מחדש ואם המהנדס מקבל שגיאה מובנת במקום תקיעה.
  5. נוהל חיבור. מתארים כיצד לפתוח חיבור חדש, אילו הרשאות ברירת מחדל יש לפרודקשן, כיצד לבקש הרשאה מורחבת ומה לעשות עם עזיבת עובד.
  6. מסירת תיעוד. מוסרים הוראות התקנה לסביבת העבודה, ייצוא פרופילים, תבניות ומפת מקורות — הצוות פותח חיבורים בעצמו.

ערכת קונפיגורציות, סכמות ונוהלי גישה

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

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

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

מקרה בוחן: מעבר מחיבורים ידניים לפרופיל משותף

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

אדם חדש בצוות בזבז על הגישה העובדת הראשונה בין שעתיים לשלוש, ומחצית מהשאלות בצ'אט המשותף החלו ב«ולאן מתחברים».

מה היה לפני

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

מה שינו ומה קיבלו

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

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

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

מה לעשות אם הגישה למאגרים כבר ניתנה ידנית?

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

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

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

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

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

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

שאלות נפוצות על גישה למאגרים והרשאות

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

האם יהיה צורך להעביר סיסמאות בצ'אט?

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

כיצד מפרידים הרשאות בין תפקידים?

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

מה עם מקורות נתונים נדירים?

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

כיצד מעבירים את הסביבה לאדם חדש?

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

נדון במשימה ונחזור עם תוכנית עבודה

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

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

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

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