Lakehouse for Apache Iceberg תומך בבקרת גישה ברמת הקטלוג, ברמת מרחב השמות וברמת הטבלה לטבלאות Apache Iceberg ב-Cloud Storage שמשתמשות בקטלוג זמן הריצה של Lakehouse.
קטלוג זמן הריצה של Lakehouse מנהל את המטא-נתונים, ומדיניות ניהול הזהויות והרשאות הגישה (IAM) מגדירה את ההרשאות. אפשר להשתמש במסוףGoogle Cloud או ב-CLI של gcloud כדי לקבל ולהגדיר את כללי המדיניות האלה של IAM.
לפני שמתחילים
-
מפעילים את BigLake API.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק 'שימוש בשירות'' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים - מתקינים ומפעילים את Google Cloud SDK.
- מוודאים שיש לכם נקודת קצה ומרחב שמות קיימים של קטלוג Apache Iceberg REST.
- מוודאים שיש לכם טבלת Iceberg Lakehouse קיימת בקטלוג ובמרחב השמות שצוינו.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לניהול רשימות של בקרת גישה (ACL) לקטלוגים, למרחבי שמות ולטבלאות של Iceberg, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
-
הכל:
אדמין BigLake (
roles/biglake.admin) בפרויקט
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
איך זה עובד
כללי המדיניות ב-IAM מגדירים לאילו חשבונות משתמשים יש תפקידים והרשאות ספציפיים למשאב. כדי לנהל את הגישה למשאבים, צריך לקבל את המדיניות הזו ולהגדיר אותה.
היקף התפקידים ב-IAM
אפשר להעניק תפקידי IAM ברמות שונות של היררכיית המשאבים:
- ברמת הפרויקט: מעניק גישה לכל משאבי Lakehouse בפרויקט.
- רמת הקטלוג: מעניקה גישה למשאבים ששייכים לקטלוג שצוין.
- רמת מרחב השמות: מעניקה גישה למשאבים ששייכים למרחב השמות שצוין.
- ברמת הטבלה: מעניקה גישה רק לטבלה שצוינה.
תפקידי IAM רלוונטיים
ברשימה הבאה מפורטים כמה מתפקידי ה-IAM הנפוצים שאפשר להקצות למשאבי Lakehouse. רשימה מלאה של התפקידים הזמינים וההרשאות שמשויכות אליהם מופיעה במאמר תפקידי IAM ב-Lakehouse.
-
roles/biglake.admin: מספק גישה מלאה לכל המשאבים של Lakehouse. -
roles/biglake.editor: מספק גישת קריאה וכתיבה לכל משאבי Lakehouse. -
roles/biglake.viewer: מספק גישת קריאה בלבד לכל המשאבים של Lakehouse. -
roles/biglake.metadataViewer: מספק גישה לקריאת מטא-נתונים בלבד לכל המשאבים ב-Lakehouse.
שיטות מומלצות
- הרשאות מינימליות: מעניקים למשתמשים ולחשבונות שירות רק את ההרשאות הדרושות.
- שימוש ב-ETags: כשמשתמשים ב-
set-iam-policy, צריך תמיד לכלול אתetagמקריאתget-iam-policyהאחרונה בקובץ המדיניות כדי למנוע החלפות לא מכוונות. - רישום ביומן הביקורת: מוודאים שיומני הביקורת של Cloud מופעלים כדי לעקוב אחרי שינויים במדיניות IAM.
- ניהול גרסאות: אחסון קובצי המדיניות במערכת לניהול גרסאות.
החלת תפקידים ברשימת ACL על קטלוגים
בקטע הבא מוסבר איך להחיל רשימות ACL על קטלוגים.
gcloud
קבלת מדיניות IAM
כדי לראות את מדיניות ה-IAM הנוכחית בקטלוג Lakehouse Iceberg, משתמשים בפקודה gcloud alpha biglake iceberg catalogs
get-iam-policy.
כדי לקבל את מדיניות ה-IAM, מריצים את הפקודה הבאה:
gcloud alpha biglake iceberg catalogs get-iam-policy CATALOG_NAME \ --project=PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
-
CATALOG_NAME: השם של נקודת הקצה של קטלוג Apache Iceberg REST. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud.
-
הפקודה מפיקה את מדיניות ה-IAM בפורמט YAML, שבו מוצגים קישורי התפקידים והחברים הנוכחיים.
הגדרת מדיניות IAM
כדי לעדכן את מדיניות ה-IAM בקטלוג Lakehouse Iceberg, משתמשים בפקודה gcloud alpha biglake iceberg catalogs set-iam-policy.
הפקודה הזו משתמשת בקובץ JSON או YAML מקומי שמכיל את המדיניות שרוצים להחיל.
יוצרים קובץ מדיניות מקומי בפורמט JSON או YAML. קובץ המדיניות צריך להכיל את הקישורים ואת
etag. הערךetagמספק בקרה אופטימית על פעולות שמתבצעות בו-זמנית, כדי למנוע החלפה של שינויים. כדי לקבל אתetagהנוכחי, מריצים קודם את הפקודהget-iam-policy.הדוגמה הבאה מציגה קובץ מדיניות בשם
policy.json:{ "bindings": [ { "role": "roles/biglake.viewer", "members": [ "user:test-user@example.com" ] }, { "role": "roles/biglake.editor", "members": [ "user:someone@example.com" ] } ], "etag": "BwYXa9UuR8w=", "version": 3 }כדי להגדיר את מדיניות IAM, מריצים את הפקודה הבאה:
gcloud alpha biglake iceberg catalogs set-iam-policy CATALOG_NAME POLICY_FILE \ --project=PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
-
CATALOG_NAME: השם של נקודת הקצה של קטלוג Apache Iceberg REST.
-