ניהול רשימות בקרת גישה (ACL) של נקודות קצה בקטלוג REST של Apache Iceberg

ב-Borderless Lakehouse יש תמיכה בבקרת גישה ברמת הקטלוג, מרחב השמות והטבלה, לטבלאות Apache Iceberg ב-Cloud Storage שמשתמשות בקטלוג ייעודי לזמן ריצה של Lakehouse.

הקטלוג הייעודי לזמן ריצה של Lakehouse מנהל את המטא-נתונים, וכללי המדיניות של ניהול הזהויות והרשאות הגישה (IAM) מגדירים את ההרשאות. אפשר להשתמש במסוףGoogle Cloud או ב-CLI של gcloud כדי לקבל ולהגדיר את כללי מדיניות ה-IAM האלה.

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

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

  2. מפעילים את BigLake API, אם הוא עדיין לא מופעל.

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

    כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    להפעלת ה-API

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

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

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

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

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

איך זה עובד

מדיניות 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.

שיטות מומלצות

  • הרשאות מינימליות: הענקת ההרשאות הנדרשות בלבד למשתמשים ולחשבונות שירות.
  • שימוש בתגי ישות (Etag): כשמשתמשים ב-set-iam-policy, תמיד צריך לכלול בקובץ המדיניות את ה-etag מקריאה אחרונה ל-get-iam-policy כדי למנוע החלפה לא מכוונת.
  • רישום ביומן הביקורת: ודאו שיומני הביקורת של Cloud מופעלים כדי לעקוב אחרי שינויים במדיניות IAM.
  • ניהול גרסאות: אחסון קובצי המדיניות במערכת לניהול גרסאות.

החלת תפקידי ACL על קטלוגים

בקטע הבא מוסבר איך להחיל רשימות ACL על קטלוגים.

gcloud

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

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

  1. כדי לקבל את מדיניות ה-IAM, מריצים את הפקודה הבאה:

    gcloud biglake iceberg catalogs get-iam-policy CATALOG_NAME \
        --project=PROJECT_ID
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫CATALOG_NAME: השם של נקודת הקצה של קטלוג REST של Apache Iceberg.
    • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud.
  2. הפקודה מפיקה את מדיניות ה-IAM בפורמט YAML, שבו מוצגים קישורי התפקידים והחברים הנוכחיים.

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

כדי לעדכן את מדיניות ה-IAM בקטלוג של Lakehouse Iceberg, משתמשים בפקודה gcloud biglake iceberg catalogs 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.editor",
          "members": [
            "user:someone@example.com"
          ]
        }
      ],
      "etag": "BwYXa9UuR8w=",
      "version": 3
    }
    
  2. כדי להגדיר את מדיניות ה-IAM, מריצים את הפקודה הבאה:

    gcloud biglake iceberg catalogs set-iam-policy CATALOG_NAME POLICY_FILE \
        --project=PROJECT_ID
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫CATALOG_NAME: השם של נקודת הקצה של קטלוג REST של Apache Iceberg.
    • ‫POLICY_FILE: הנתיב לקובץ המדיניות המקומי.
    • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud .

החלת תפקידי ACL על מרחבי שמות

בקטע הבא מוסבר איך להחיל רשימות ACL על מרחבי שמות.

במסוף Google Cloud לא מוצגות מדיניות IAM שעברו בירושה, ואי אפשר לנהל אותן.

המסוף

  1. פותחים את הדף Lakehouse במסוף Google Cloud .

    מעבר אל Lakehouse

  2. בוחרים קטלוג קיים או יוצרים קטלוג חדש אם אין לכם אחד.

  3. בטבלה Namespace details, בוחרים מרחב שמות ומרחיבים את אפשרויות התפריט ().

  4. לוחצים על ניהול הרשאות.

    מופיעה תיבת הדו-שיח הרשאות שיתוף.

  5. לוחצים על Add principal.

  6. בשדה New Principals, מזינים את החשבון הראשי שרוצים להקצות לו תפקידים.

  7. בשדה Select a role, בוחרים תפקיד שרוצים להקצות לחשבון הראשי.

  8. לוחצים על Save.

  9. לוחצים על Close.

gcloud

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

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

  1. כדי לקבל את מדיניות ה-IAM, מריצים את הפקודה הבאה:

    gcloud biglake iceberg namespaces get-iam-policy NAMESPACE_NAME \
        --catalog=CATALOG_NAME \
        --project=PROJECT_ID
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫NAMESPACE_NAME: השם של מרחב השמות של היעד בקטלוג.
    • ‫CATALOG_NAME: השם של נקודת הקצה של קטלוג REST של Apache Iceberg.
    • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud.
  2. הפקודה מפיקה את מדיניות ה-IAM בפורמט YAML, שבו מוצגים קישורי התפקידים והחברים הנוכחיים.

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

כדי לעדכן את מדיניות ה-IAM במרחב שמות של Lakehouse Iceberg, משתמשים בפקודה gcloud biglake iceberg namespaces 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.editor",
          "members": [
            "user:someone@example.com"
          ]
        }
      ],
      "etag": "BwYXa9UuR8w=",
      "version": 3
    }
    
  2. כדי להגדיר את מדיניות ה-IAM, מריצים את הפקודה הבאה:

    gcloud biglake iceberg namespaces set-iam-policy NAMESPACE_NAME POLICY_FILE \
        --catalog=CATALOG_NAME \
        --project=PROJECT_ID
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫NAMESPACE_NAME: השם של מרחב השמות של היעד בקטלוג.
    • ‫POLICY_FILE: הנתיב לקובץ המדיניות המקומי.
    • ‫CATALOG_NAME: השם של נקודת הקצה של קטלוג REST של Apache Iceberg.
    • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud .

החלת תפקידי ACL על טבלאות

בקטע הבא מוסבר איך להחיל רשימות ACL על טבלאות.

במסוף Google Cloud לא מוצגות מדיניות IAM שעברו בירושה, ואי אפשר לנהל אותן.

המסוף

  1. פותחים את הדף Lakehouse במסוף Google Cloud .

    מעבר אל Lakehouse

  2. בוחרים קטלוג קיים או יוצרים קטלוג חדש אם אין לכם אחד.

  3. בטבלה Namespace details, לוחצים על השם של מרחב השמות שמכיל את הטבלה.

  4. בדף Table details, בוחרים טבלה ומרחיבים את אפשרויות התפריט ().

  5. לוחצים על ניהול הרשאות.

    מופיעה תיבת הדו-שיח הרשאות שיתוף.

  6. לוחצים על Add principal.

  7. בשדה New Principals, מזינים את החשבון הראשי שרוצים להקצות לו תפקידים.

  8. בשדה Select a role, בוחרים תפקיד שרוצים להקצות לחשבון הראשי.

  9. לוחצים על Save.

  10. לוחצים על Close.

gcloud

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

כדי לראות את מדיניות ה-IAM הנוכחית בטבלת Lakehouse Iceberg, משתמשים בפקודה 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: השם של טבלת היעד ב-Apache Iceberg.
    • ‫CATALOG_NAME: השם של נקודת הקצה של קטלוג REST של Apache Iceberg.
    • ‫NAMESPACE_NAME: השם של מרחב השמות בקטלוג.
    • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud.
  2. הפקודה מפיקה את מדיניות ה-IAM בפורמט YAML, שבו מוצגים קישורי התפקידים והחברים הנוכחיים.

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

כדי לעדכן את מדיניות ה-IAM בטבלת Apache 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.editor",
          "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: השם של טבלת היעד ב-Apache Iceberg.
    • ‫POLICY_FILE: הנתיב לקובץ המדיניות המקומי.
    • ‫CATALOG_NAME: השם של נקודת הקצה של קטלוג REST של Apache Iceberg.
    • ‫NAMESPACE_NAME: השם של מרחב השמות בקטלוג.
    • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud .

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