אוטומציה של הרשאות קטלוג Unity של Azure Databricks ברמת הטבלאות

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

במאמרים אחרים שלי ב-DZone, דיברתי על מהו Databricks Unity Catalog, כיצד דגם ההרשאות עובד ב-Unity Catalog, רמת הסכימה, וסקריפט לאוטומציה של ניהול ההרשאות ברמות הקטלוג והסכימה

. במאמר זה, אני מתכוון לספק את הסקריפט שיאפשר לאוטומציה של ניהול ההרשאות ברמת טבלאות ב-Unity Catalog.

הרשאות ברמת טבלאות ב-Unity Catalog

Unity Catalog privilege model

ב-Unity Catalog (Databricks), החלת הרשאות ברמת הטבלה נחוצה כאשר רוצים לשלוט בגישה לטבלאות או תצוגות ספציפיות, במקום להחליט על הרשאות לכל האובייקטים בתוך סכימה. הרשאות ברמת טבלאות מועילות בתרחישים הבאים:

1. בקרת גישה גרנולרית

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

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

2. הגנה על נתונים רגישים

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

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

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

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

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

4. עמידה ברגולציות ממשלתיות על נתונים

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

5. טיפול בצרכי גישה מעורבים בתוך סכימה

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

הרשאות שניתן ליישם ברמת הטבלה 

  • SELECT: מעניק גישה לקריאה לטבלה, מאפשר למשתמשים לשאילת אותה.
  • MODIFY: מעניק אפשרות להוסיף, למחוק ולשנות נתונים לאו מאובייקט.
  • APPLY TAG: מעניק אפשרות להחיל תגיות על אובייקט.
  • ALL PRIVILEGES: מעניק את כל ההרשאות.

סקריפט אוטומציה

דרישות מוקדמות

  • קטלוג Unity כבר הוגדר.
  • יישות(ים) מקושר(ים) עם מרחב העבודה של Databricks.
  • המשתמש שמריץ את סקריפט הרשאה מכיל הרשאות מתאימות על הטבלה(ות), הסכימה והקטלוג.

שלב 1: צור פנקס והכרז על המשתנים 

צור פנקס במרחב העבודה של Databricks. כדי ליצור פנקס במרחב העבודה שלך, לחץ על "+" חדש בסרגל הצד, ואז בחר פנקס

פנקס ריק נפתח במרחב העבודה. וודא שהשפה שנבחרת היא Python.

העתק והדבק את קטע הקוד שלמטה לתוך תא המחברת והרץ את תא הקוד.

Python

 

שלב 2: הגדר את הקטלוג והסכמה

העתק, הדבק והרץ את קטע הקוד למטה בתא חדש או בתא קיים והרץ את תא הקוד.

Python

 

שלב 3: עבור דרך העקרונות וההרשאות והחל גראנט בקטלוג, הסכמה וטבלאות

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

Python

 

אימות

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

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

SQL

 

מסקנה

אוטומציה של ניהול זכויות ב־Databricks Unity Catalog ברמת הטבלה עוזרת לוודא גישה עקבית ויעילה ביישום ההרשאות ברמה הנמוכה ביותר ב־Unity Catalog. הקוד שסופק מדגים דרך מעשית להקצאת זכויות רבות ברמת הטבלה עבור פרינסיפלים רבים וטבלאות שונות בקטלוג ובסכמה אחת. בקטלוג שבו ישנם מאות טבלאות וצורך בהענקת הרשאות שונות לפרינסיפלים שונים, האוטומציה הנ"ל ממעיטה משמעותית בשגיאות ידניות ובמאמץ.

Source:
https://dzone.com/articles/automate-databricks-unity-catalog-permissions-at-table-level