ניהול של ACL בטבלה בקטלוג REST של Iceberg ב-Lakehouse

Lakehouse for Apache Iceberg תומך בבקרת גישה ברמת הטבלה לטבלאות Apache Iceberg ב-Cloud Storage שמשתמשות בקטלוג זמן הריצה של Lakehouse.

הקטלוג של Lakehouse runtime מנהל את המטא-נתונים של הטבלה, ומדיניות ניהול הזהויות והרשאות הגישה (IAM) מגדירה את ההרשאות. ‫CLI של gcloud מספק את הפקודות שנדרשות כדי לקבל ולהגדיר את מדיניות ה-IAM הזו.

לפני שמתחילים

  1. מוודאים שהחיוב מופעל בפרויקט Google Cloud .

  2. מפעילים את BigLake API.

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    להפעלת ה-API

  3. מתקינים ומפעילים את Google Cloud SDK.
  4. מוודאים שיש לכם נקודת קצה ומרחב שמות קיימים של קטלוג REST של Apache Iceberg.
  5. מוודאים שיש לכם טבלת Iceberg Lakehouse קיימת בקטלוג ובמרחב השמות שצוינו.

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות לניהול רשימות בקרת גישה (ACL) לטבלאות Iceberg, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

  • הכל: BigLake Admin (roles/biglake.admin) מופעל בפרויקט

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

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

איך זה עובד

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

תפקידי IAM רלוונטיים

אפשר להקצות את תפקידי ה-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 על טבלאות.

קבלת מדיניות IAM

כדי לראות את מדיניות ה-IAM הנוכחית בטבלת Iceberg של Lakehouse, משתמשים בפקודה gcloud biglake iceberg tables get-iam-policy.

  1. כדי לקבל את מדיניות ה-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.
  2. הפקודה מפיקה את מדיניות ה-IAM בפורמט YAML, שבו מוצגים קישורי התפקידים והחברים הנוכחיים.

הגדרת מדיניות IAM

כדי לעדכן את מדיניות ה-IAM בטבלת Iceberg של Lakehouse, משתמשים בפקודה gcloud biglake iceberg tables set-iam-policy. הפקודה הזו משתמשת בקובץ JSON או YAML מקומי שמכיל את המדיניות שרוצים להחיל.

  1. יוצרים קובץ מדיניות מקומי בפורמט 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
    }
    
  2. כדי להגדיר את מדיניות 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 .

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