סקירה כללית בנושא הקצאת הרשאות

הקצאת הרשאות לקטלוג של Lakehouse בזמן ריצה מאפשרת להעניק הרשאות גישה לאחסון ולהחיל הרשאות פרטניות על קובצי הנתונים. היכולת הזו היא חלק מ-Lakehouse for Apache Iceberg, והיא מאפשרת לכם לנהל מדיניות של ניהול זהויות והרשאות גישה (IAM) ברמת הטבלה, עבור טבלאות שמאוחסנות ב-Cloud Storage.

אתם יכולים להשתמש ב-gcloud CLI כדי לקבל ולהגדיר את כללי המדיניות האלה ולשלוט בגישה למשאבים.

איך פועל תהליך הקצאת הרשאות

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

  1. בקשה: משתמש שולח שאילתת SQL למנוע נתמך (לדוגמה, Apache Spark או BigQuery).
  2. חיפוש מטא-נתונים: המנוע שולח בקשה לקטלוג של זמן הריצה של Lakehouse כדי לפתור את הבעיה בטבלה.
  3. אימות ומדיניות: הקטלוג מאמת את המשתמש ובודק את הרשאות ה-IAM שלו במשאבי Lakehouse של Google Cloud.
  4. תגובה: מכיוון שהפעלתם את האפשרות למכירת פרטי כניסה, הקטלוג מחזיר את המטא-נתונים ואת אסימון האחסון לזמן קצר (פרטי כניסה לאחסון עם היקף מצומצם) למנוע.
  5. קריאה: המנוע משתמש באסימון הזה כדי לקרוא את הקבצים הספציפיים המורשים ישירות מ-Cloud Storage.
  6. חישוב: המנוע מעבד את הנתונים ומחזיר את התוצאות.

מנועי חיפוש נתמכים

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

  • מנועי קוד פתוח: מנועים נתמכים כמו Apache Spark ו-Trino משתמשים באסימוני אחסון לטווח קצר שמונפקים על ידי הקטלוג. אפליקציית הלקוח צריכה לציין תמיכה בהקצאת אישורים בכותרת X-Iceberg-Access-Delegation.
  • BigQuery: ב-BigQuery נעשה שימוש בהרשאות שנמכרו לגישה ל-Cloud Storage במקום בהרשאות של משתמשי קצה.

הרשאות נדרשות בחשבון שירות

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

  • חשבון שירות של קטלוג זמן הריצה של Lakehouse שהוקצה אוטומטית: צריך לתת לחשבון הזה את התפקיד 'משתמש באובייקט אחסון' (roles/storage.objectUser) בכל הקטגוריות המשויכות של Cloud Storage. לחשבון הזה אין גישה. בלי הגישה הזו, פרטי הכניסה שמוקצים לא יכולים לקרוא או לכתוב נתונים באחסון. אם משתמשים במסוף Google Cloud, לחיצה על הגדרת הרשאות של דלי מאמתת את התפקיד הזה. ב-CLI של gcloud, ב-Terraform או ב-API, צריך להקצות את התפקיד הזה באופן ידני.
  • חשבונות שירות של מנוע שאילתות: חשבונות שירות שמריצים משימות של מנוע שאילתות (כמו Managed Service for Apache Spark,‏ Managed Service for Apache Spark או Dataflow) צריכים את התפקיד BigLake Editor ‏ (roles/biglake.editor) ברמת הפרויקט כדי לקבל פרטי כניסה שנמכרים עם היקף כתיבה.

המאמרים הבאים