Managed Service for Apache Spark Granular IAM

‫Managed Service for Apache Spark Granular IAM הוא תכונה שמאפשרת להעניק הרשאות ברמה של אשכול, משימות, פעולות, תבנית תהליך עבודה או מדיניות שינוי גודל אוטומטי.

דוגמה: אתם יכולים להעניק למשתמש אחד את התפקיד 'צפייה באשכול', שמאפשר למשתמש לצפות באשכול בתוך פרויקט, ולהעניק למשתמש אחר את התפקיד 'עריכת משימות', שמאפשר למשתמש לעדכן ולבטל את המשימה, וגם לצפות בה. כדי להבין אילו פקודות ספציפיות של Google Cloud CLI מופעלות על ידי כל תפקיד IAM פרטני של Managed Service for Apache Spark, אפשר לעיין במאמר בנושא פקודות SDK שמופעלות על ידי IAM פרטני.

תפקידים והרשאות מפורטים של IAM ב-Managed Service for Apache Spark

ב-Managed Service for Apache Spark Granular IAM אפשר להגדיר את התפקידים הבאים עם ההרשאות הבאות במשאבים של Managed Service for Apache Spark.

תפקידים באשכול

תפקיד הרשאות
צפייה dataproc.clusters.get
עריכה dataproc.clusters.get
dataproc.clusters.list
dataproc.clusters.delete
dataproc.clusters.update
dataproc.clusters.use
dataproc.clusters.start
dataproc.clusters.stop
בעלים dataproc.clusters.get
dataproc.clusters.list
dataproc.clusters.delete
dataproc.clusters.update
dataproc.clusters.use
dataproc.clusters.start
dataproc.clusters.stop
dataproc.clusters.setIamPolicy
dataproc.clusters.getIamPolicy

תפקידים שיש בהם משרות

תפקיד הרשאות
צפייה dataproc.jobs.get
עריכה dataproc.jobs.get
dataproc.jobs.cancel
dataproc.jobs.delete
dataproc.jobs.update
בעלים dataproc.jobs.get
dataproc.jobs.cancel
dataproc.jobs.delete
dataproc.jobs.update
dataproc.jobs.setIamPolicy
dataproc.jobs.getIamPolicy

תפקידים בתפעול

תפקיד הרשאות
צפייה dataproc.operations.get
עריכה dataproc.jobs.get
dataproc.operations.cancel
dataproc.operations.delete
בעלים dataproc.jobs.get
dataproc.operations.cancel
dataproc.operations.delete
dataproc.operations.setIamPolicy
dataproc.operations.getIamPolicy

תפקידים בתבנית של תהליך עבודה

תפקיד הרשאות
צפייה dataproc.workflowTemplates.get
עריכה dataproc.workflowTemplates.get
dataproc.workflowTemplates.delete
dataproc.workflowTemplates.update
בעלים dataproc.workflowTemplates.get
dataproc.workflowTemplates.delete
dataproc.workflowTemplates.update
dataproc.workflowTemplates.setIamPolicy
dataproc.workflowTemplates.getIamPolicy

תפקידים במדיניות של התאמה אוטומטית לעומס

תפקיד הרשאות
צפייה dataproc.autoscalingPolicies.get
עריכה dataproc.autoscalingPolicies.get
dataproc.autoscalingPolicies.use
dataproc.autoscalingPolicies.delete
dataproc.autoscalingPolicies.update
בעלים dataproc.autoscalingPolicies.get
dataproc.autoscalingPolicies.use
dataproc.autoscalingPolicies.delete
dataproc.autoscalingPolicies.update
dataproc.autoscalingPolicies.setIamPolicy
dataproc.autoscalingPolicies.getIamPolicy

שימוש ב-Managed Service for Apache Spark Granular IAM

בקטע הזה מוסבר איך להשתמש ב-IAM ברמת הגרנולריות ב-Managed Service for Apache Spark כדי להקצות תפקידים למשתמשים במשאב קיים של Managed Service for Apache Spark. מידע נוסף על עדכון והסרה של תפקידים בניהול הזהויות והרשאות הגישה (IAM) זמין במאמר ניהול הגישה לפרויקטים, לתיקיות ולארגונים.

פקודת gcloud

  1. מקבלים את מדיניות ה-IAM של המשאב וכותבים אותה לקובץ JSON (המשתנה resource-type יכול להיות clusters,‏ jobs,‏ operations,‏ workflow-templates או autoscaling-policies):
    gcloud dataproc resource-type get-iam-policy  resource-id \
        --region=region \
        --format=json > iam.json
    
  2. התוכן של קובץ ה-JSON ייראה בערך כך:
    {
      "bindings": [
        {
          "role": "roles/editor",
          "members": [
            "user:mike@example.com",
            "group:admins@example.com",
            "domain:google.com",
            "serviceAccount:my-other-app@appspot.gserviceaccount.com"
          ]
        }
      ],
      "etag": "string"
    }
    
  3. באמצעות כלי לעריכת טקסט, מוסיפים אובייקט קישור חדש למערך הקישורים שמגדיר את המשתמשים ואת תפקיד הגישה למשאבים עבור המשתמשים האלה. לדוגמה, כדי לתת את התפקיד Viewer ‏ (roles/viewer) למשתמש sean@example.com, צריך לשנות את הדוגמה הקודמת ולהוסיף אליה אובייקט חדש של קישור (מופיע במודגש בדוגמה הבאה). הערה: חשוב להחזיר את הערך etag שקיבלתם מ-gcloud dataproc resource-type get-iam-policy. מידע נוסף על תגי ETag
    {
      "bindings": [
        {
          "role": "roles/editor",
          "members": [
            "user:mike@example.com",
            "group:admins@example.com",
            "domain:google.com",
            "serviceAccount:my-other-app@appspot.gserviceaccount.com"
          ]
        },
        {
          "role": "roles/viewer",
          "members": [
            "user:sean@example.com"
          ]
        }
      ],
      "etag": "value-from-get-iam-policy"
    }
    
  4. כדי לעדכן את המדיניות של האשכול עם מערך הקישורים החדש, מריצים את הפקודה הבאה (resource-type יכול להיות clusters,‏ jobs,‏ operations,‏ workflow-templates או autoscaling-policies):
    gcloud dataproc resource-type set-iam-policy resource-name \
        --region=region \
        --format=json iam.json
    
  5. הפקודה מחזירה את המדיניות המעודכנת:
    {
      "bindings": [
        {
          "role": "roles/editor",
          "members": [
            "user:mike@example.com",
            "group:admins@example.com",
            "domain:google.com",
            "serviceAccount:my-other-app@appspot.gserviceaccount.com"
          ]
        },
        {
          "role": "roles/viewer",
          "members": [
            "user:sean@example.com"
          ]
        }
      ],
      "etag": "string"
    }
    

‫API בארכיטקטורת REST

  1. שולחים בקשת resource-type ("clusters" or "jobs" or "operations" or "workflowTemplates" or "autoscalingPolicies") getIamPolicy כדי לקבל את מדיניות ה-IAM של המשאב.

    דוגמה ל-getIamPolicy של Cluster:

    GET https://dataproc.googleapis.com/v1/projects/projectName/regions/region/clusters/clusterName:getIamPolicy
    
  2. התוכן של קובץ ה-JSON ייראה בערך כך:
    {
      "bindings": [
        {
          "role": "roles/editor",
          "members": [
            "user:mike@example.com",
            "group:admins@example.com",
            "domain:google.com",
            "serviceAccount:my-other-app@appspot.gserviceaccount.com"
          ]
        }
      ],
      "etag": "string"
    }
    
  3. באמצעות עורך טקסט, יוצרים את אובייקט המדיניות הבא בפורמט JSON כדי לכלול את מערך הקישורים שקיבלתם משירות Managed Service for Apache Spark. חשוב להחזיר את הערך של etag שקיבלתם בתגובת getIamPolicy (ראו תיעוד בנושא etag). עכשיו מוסיפים אובייקט binding חדש למערך bindings שמגדיר את המשתמשים ואת תפקיד הגישה לאשכול עבור המשתמשים האלה. לדוגמה, כדי לתת את התפקיד Viewer ‏ (roles/viewer) למשתמש sean@example.com, צריך לשנות את הדוגמה שלמעלה ולהוסיף אליה אובייקט חדש של קישור (מוצג במודגש למטה).
    {
      "policy": {
        "version": "",
        "bindings": [
          {
            "role": "roles/editor",
            "members": [
              "user:mike@example.com",
              "group:admins@example.com",
              "domain:google.com",
              "serviceAccount:my-other-app@appspot.gserviceaccount.com"
            ]
          },
          {
            "role": "roles/viewer",
            "members": [
              "user:sean@example.com"
            ]
          }
        ],
        "etag": "value-from-getIamPolicy"
      }
    }
    
  4. מגדירים את המדיניות המעודכנת במשאב באמצעות בקשת setIamPolicy.

    Cluster setIamPolicy דוגמה:

    POST https://dataproc.googleapis.com/v1/projects/projectName/regions/region/clusters/clusterName:setIamPolicy
    
    Request body
    {
      "policy": {
        "version": "",
        "bindings": [
          {
            "role": "roles/editor",
            "members": [
              "user:mike@example.com",
              "group:admins@example.com",
              "domain:google.com",
              "serviceAccount:my-other-app@appspot.gserviceaccount.com"
            ]
          },
          {
            "role": "roles/viewer",
            "members": [
              "user:sean@example.com"
            ]
          }
        ],
        "etag": "value-from-getIamPolicy"
      }
    }
    
  5. התוכן של תגובת ה-JSON ייראה בערך כך:

    תשובה

    {
      "bindings": [
        {
          "role": "roles/editor",
          "members": [
            "user:mike@example.com",
            "group:admins@example.com",
            "domain:google.com",
            "serviceAccount:my-other-app@appspot.gserviceaccount.com"
          ]
        },
        {
          "role": "roles/viewer",
          "members": [
            "user:sean@example.com"
          ]
        }
      ],
      "etag": "string"
    }
    

המסוף

עוברים לדף Managed Service for Apache Spark Clusters במסוף Google Cloud , ואז לוחצים על התיבה שמימין לשם האשכול כדי לפתוח את החלונית Permissions/Labels (אם החלונית לא מוצגת, לוחצים על SHOW INFO PANEL בפינה השמאלית העליונה של הדף). בכרטיסייה Permissions (הרשאות), בוחרים את התפקיד Managed Service for Apache Spark (שירות מנוהל ל-Apache Spark), מוסיפים כתובת חשבון אחת או יותר בתיבה Add principals (הוספת חשבונות ראשיים) ולוחצים על Add (הוספה).

פקודות SDK שמופעלות על ידי IAM מפורט

בקטע הזה מתוארות הפקודות של gcloud dataproc שמופעלות במשאבים של Managed Service for Apache Spark על ידי כל תפקיד IAM עם הרשאות גרנולריות.

אשכולות

תפקיד IAM פקודה
צפייה gcloud dataproc clusters describe cluster-name
עריכה gcloud dataproc clusters describe cluster-name
gcloud dataproc clusters list
gcloud dataproc clusters delete cluster-name
gcloud dataproc clusters diagnose cluster-name
gcloud dataproc clusters update cluster-name
gcloud beta dataproc clusters start cluster-name
gcloud beta dataproc clusters stop cluster-name
בעלים gcloud dataproc clusters describe cluster-name
gcloud dataproc clusters list
gcloud dataproc clusters delete cluster-name
gcloud dataproc clusters diagnose cluster-name
gcloud dataproc clusters update cluster-name
gcloud beta dataproc clusters start cluster-name
gcloud beta dataproc clusters stop cluster-name
gcloud dataproc clusters get-iam-policy cluster-name
gcloud dataproc clusters set-iam-policy cluster-name

תעסוקה

תפקיד IAM פקודה
צפייה gcloud dataproc jobs describe job-id
עריכה gcloud dataproc jobs delete job-id
gcloud dataproc jobs describe job-id
gcloud dataproc jobs kill job-id
gcloud dataproc jobs update job-id
gcloud dataproc jobs wait job-id
בעלים gcloud dataproc jobs delete job-id
gcloud dataproc jobs describe job-id
gcloud dataproc jobs kill job-id
gcloud dataproc jobs update job-id
gcloud dataproc jobs wait job-id
gcloud dataproc jobs get-iam-policy job-id
gcloud dataproc jobs set-iam-policy job-id

תפעול

תפקיד IAM פקודה
צפייה gcloud dataproc operations describe operation-id
עריכה gcloud dataproc operations delete operation-id
gcloud dataproc operations describe operation-id
gcloud dataproc operations cancel operation-id
בעלים gcloud dataproc operations delete operation-id
gcloud dataproc operations describe operation-id
gcloud dataproc operations cancel operation-id
gcloud dataproc operations get-iam-policy operation-id
gcloud dataproc operations set-iam-policy operation-id

תבניות של תהליכי עבודה

תפקיד IAM פקודה
צפייה gcloud dataproc workflow-templates describe template-id
עריכה gcloud dataproc workflow-templates delete template-id
gcloud dataproc workflow-templates describe template-id
gcloud dataproc workflow-templates remove-job template-id
gcloud dataproc workflow-templates run template-id
בעלים gcloud dataproc workflow-templates delete template-id
gcloud dataproc workflow-templates describe template-id
gcloud dataproc workflow-templates remove-job template-id
gcloud dataproc workflow-templates run template-id
gcloud dataproc workflow-templates get-iam-policy template-id
gcloud dataproc workflow-templates set-iam-policy template-id

מדיניות בנושא התאמה אוטומטית לעומס

תפקיד IAM פקודה
צפייה gcloud dataproc autoscaling-policies describe policy-id
עריכה gcloud dataproc autoscaling-policies delete policy-id
gcloud dataproc autoscaling-policies describe policy-id
gcloud dataproc autoscaling-policies update policy-id
gcloud dataproc clusters create cluster-name --autoscaling-policy policy-id
בעלים gcloud dataproc autoscaling-policies delete policy-id
gcloud dataproc autoscaling-policies describe policy-id
gcloud dataproc autoscaling-policies update policy-id
gcloud dataproc clusters create cluster-name --autoscaling-policy policy-id
gcloud dataproc autoscaling-policies get-iam-policy policy-id
gcloud dataproc autoscaling-policies set-iam-policy policy-id

שליחת עבודות עם IAM ברמת גרנולריות גבוהה

כדי לאפשר לחשבון משתמש (משתמש, קבוצה או חשבון שירות) לשלוח משימות לאשכול מסוים באמצעות IAM גרנולרי ב-Managed Service for Apache Spark, בנוסף להענקת תפקיד עריכה למשתמש באשכול, צריך להגדיר הרשאות נוספות ברמת הפרויקט. כדי לאפשר לגורם ראשי לשלוח משימות באשכול מסוים של Managed Service for Apache Spark, צריך לבצע את השלבים הבאים:

  1. יוצרים קטגוריה של Cloud Storage שהאשכול יכול להשתמש בה כדי להתחבר ל-Cloud Storage.
  2. מוסיפים את חשבון המשתמש למדיניות ברמת הקטגוריה, בוחרים את התפקיד 'צפייה באובייקט אחסון' עבור חשבון המשתמש (ראו roles/storage.objectViewer), שכולל את ההרשאות הבאות:
    1. storage.objects.get
    2. storage.objects.list
  3. כשיוצרים את האשכול, מעבירים את שם הקטגוריה שיצרתם לאשכול באמצעות הפרמטר --bucket (ראו gcloud dataproc clusters create --bucket).
  4. אחרי שיוצרים את האשכול, מגדירים מדיניות באשכול שמעניקה לישות (principal) תפקיד עריכה או בעלות (ראו שימוש ב-IAM מפורט ב-Managed Service for Apache Spark).
  5. יוצרים תפקיד ב-IAM בהתאמה אישית עם ההרשאות הבאות:
    1. dataproc.jobs.create
    2. dataproc.jobs.get
  6. בוחרים או מוסיפים את החשבון הראשי בדף IAM במסוף Google Cloud , ואז בוחרים את התפקיד המותאם אישית כדי להקצות אותו לחשבון הראשי.