Lakehouse for Apache Iceberg תומך בבקרת גישה ברמת מרחב השמות וברמת הטבלה לטבלאות Apache Iceberg ב-Cloud Storage שמשתמשות בקטלוג זמן הריצה של Lakehouse.
קטלוג זמן הריצה של Lakehouse מנהל את המטא-נתונים, ומדיניות ניהול הזהויות והרשאות הגישה (IAM) מגדירה את ההרשאות. אפשר להשתמש במסוףGoogle Cloud או ב-CLI של gcloud כדי לקבל ולהגדיר את כללי המדיניות האלה של IAM.
לפני שמתחילים
-
מפעילים את BigLake API.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים - מתקינים ומפעילים את Google Cloud SDK.
- מוודאים שיש לכם נקודת קצה ומרחב שמות קיימים של קטלוג REST של Apache Iceberg.
- מוודאים שיש לכם טבלת Iceberg Lakehouse קיימת בקטלוג ובמרחב השמות שצוינו.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לניהול רשימות של בקרת גישה (ACL) למרחבי שמות ולטבלאות של Iceberg, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
-
הכל:
אדמין BigLake (
roles/biglake.admin) מופעל בפרויקט
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
איך זה עובד
כללי המדיניות ב-IAM מגדירים לאילו חשבונות משתמשים יש תפקידים והרשאות ספציפיים למשאב. כדי לנהל את הגישה למשאבים, צריך לקבל את המדיניות הזו ולהגדיר אותה.
תפקידי IAM רלוונטיים
ברשימה הבאה מפורטים כמה מתפקידי ה-IAM הנפוצים שאפשר להקצות למשאבי Lakehouse. רשימה מלאה של התפקידים הזמינים וההרשאות שמשויכות אליהם מופיעה במאמר תפקידי IAM ב-Lakehouse.
-
roles/biglake.admin: מספקת שליטה מלאה במשאבי Lakehouse. -
roles/biglake.user: מאפשרת לחשבונות ראשיים להשתמש במשאבי Lakehouse, כולל קריאה וכתיבה של נתוני טבלה. -
roles/biglake.viewer: מאפשר לחשבונות ראשיים לצפות במשאבי Lakehouse ולקרוא נתוני טבלה.
שיטות מומלצות
- הרשאות מינימליות: מעניקים למשתמשים ולחשבונות שירות רק את ההרשאות הדרושות.
- שימוש ב-ETags: כשמשתמשים ב-
set-iam-policy, צריך תמיד לכלול אתetagמקריאתget-iam-policyהאחרונה בקובץ המדיניות כדי למנוע החלפות לא מכוונות. - רישום ביומן הביקורת: מוודאים שיומני הביקורת של Cloud מופעלים כדי לעקוב אחרי שינויים במדיניות IAM.
- ניהול גרסאות: אחסון קובצי המדיניות במערכת לניהול גרסאות.
החלת תפקידים של רשימת ACL על מרחבי שמות
בקטע הבא מוסבר איך להחיל רשימות ACL על מרחבי שמות.
במסוף Google Cloud לא מוצגים כללי מדיניות של IAM שעברו בירושה, ואי אפשר לנהל אותם.
המסוף
במסוף Google Cloud , פותחים את הדף Lakehouse.
בוחרים קטלוג קיים או יוצרים קטלוג חדש אם אין לכם קטלוג.
בטבלה פרטי מרחב שמות, בוחרים מרחב שמות ומרחיבים את אפשרויות התפריט ().
לוחצים על ניהול הרשאות.
מופיעה תיבת הדו-שיח Share permissions (שיתוף הרשאות).
לוחצים על Add principal.
בשדה New Principals, מזינים את חשבון המשתמש שרוצים להקצות לו תפקידים.
בקטע Select a role (בחירת תפקיד), בוחרים תפקיד להקצאה לחשבון הראשי.
לוחצים על Save.
לוחצים על Close.
gcloud
קבלת מדיניות IAM
כדי לראות את מדיניות ה-IAM הנוכחית במרחב שמות של Lakehouse Iceberg, משתמשים בפקודה gcloud alpha biglake iceberg namespaces
get-iam-policy.
כדי לקבל את מדיניות ה-IAM, מריצים את הפקודה הבאה:
gcloud alpha biglake iceberg namespaces get-iam-policy NAMESPACE_NAME \ --catalog=CATALOG_NAME \ --project=PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
-
NAMESPACE_NAME: השם של מרחב השמות של היעד בקטלוג. -
CATALOG_NAME: השם של נקודת הקצה של קטלוג Apache Iceberg REST. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud.
-
הפקודה מפיקה את מדיניות ה-IAM בפורמט YAML, שבו מוצגים קישורי התפקידים והחברים הנוכחיים.
הגדרת מדיניות IAM
כדי לעדכן את מדיניות ה-IAM במרחב שמות של Lakehouse Iceberg, משתמשים בפקודה gcloud alpha biglake iceberg namespaces 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.user", "members": [ "user:someone@example.com" ] } ], "etag": "BwYXa9UuR8w=", "version": 3 }כדי להגדיר את מדיניות IAM, מריצים את הפקודה הבאה:
gcloud alpha biglake iceberg namespaces set-iam-policy NAMESPACE_NAME POLICY_FILE \ --catalog=CATALOG_NAME \ --project=PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
-
NAMESPACE_NAME: השם של מרחב השמות של היעד בקטלוג. -
POLICY_FILE: הנתיב לקובץ המדיניות המקומי. -
CATALOG_NAME: השם של נקודת הקצה של קטלוג Apache Iceberg REST. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
-
החלת תפקידים של רשימת ACL על טבלאות
בקטע הבא מוסבר איך להחיל רשימות ACL על טבלאות.
במסוף Google Cloud לא מוצגים כללי מדיניות של IAM שעברו בירושה, ואי אפשר לנהל אותם.
המסוף
במסוף Google Cloud , פותחים את הדף Lakehouse.
בוחרים קטלוג קיים או יוצרים קטלוג חדש אם אין לכם קטלוג.
בטבלה Namespace details (פרטי מרחב השמות), לוחצים על שם מרחב השמות שמכיל את הטבלה.
בדף פרטי הטבלה, בוחרים טבלה ומרחיבים את אפשרויות התפריט ().
לוחצים על ניהול הרשאות.
מופיעה תיבת הדו-שיח Share permissions (שיתוף הרשאות).
לוחצים על Add principal.
בשדה New Principals, מזינים את חשבון המשתמש שרוצים להקצות לו תפקידים.
בקטע Select a role (בחירת תפקיד), בוחרים תפקיד להקצאה לחשבון הראשי.
לוחצים על Save.
לוחצים על Close.
gcloud
קבלת מדיניות IAM
כדי לראות את מדיניות ה-IAM הנוכחית בטבלת Iceberg של Lakehouse, משתמשים בפקודה gcloud biglake iceberg tables
get-iam-policy.
כדי לקבל את מדיניות ה-IAM, מריצים את הפקודה הבאה:
gcloud biglake iceberg tables get-iam-policy TABLE_NAME \ --catalog=CATALOG_NAME \ --namespace=NAMESPACE_NAME \ --project=PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
-
TABLE_NAME: השם של טבלת Iceberg של Lakehouse היעד. -
CATALOG_NAME: השם של נקודת הקצה של קטלוג Apache Iceberg REST. -
NAMESPACE_NAME: השם של מרחב השמות בקטלוג. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud.
-
הפקודה מפיקה את מדיניות ה-IAM בפורמט YAML, שבו מוצגים קישורי התפקידים והחברים הנוכחיים.
הגדרת מדיניות IAM
כדי לעדכן את מדיניות ה-IAM בטבלת Iceberg של Lakehouse, משתמשים בפקודה gcloud biglake iceberg tables 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.user", "members": [ "user:someone@example.com" ] } ], "etag": "BwYXa9UuR8w=", "version": 3 }כדי להגדיר את מדיניות IAM, מריצים את הפקודה הבאה:
gcloud biglake iceberg tables set-iam-policy TABLE_NAME POLICY_FILE \ --catalog=CATALOG_NAME \ --namespace=NAMESPACE_NAME \ --project=PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
-
TABLE_NAME: השם של טבלת Iceberg של Lakehouse היעד. -
POLICY_FILE: הנתיב לקובץ המדיניות המקומי. -
CATALOG_NAME: השם של נקודת הקצה של קטלוג Apache Iceberg REST. -
NAMESPACE_NAME: השם של מרחב השמות בקטלוג. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
-