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
- מקבלים את מדיניות ה-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
- התוכן של קובץ ה-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" } - באמצעות כלי לעריכת טקסט, מוסיפים אובייקט קישור חדש למערך הקישורים שמגדיר את המשתמשים ואת תפקיד הגישה למשאבים עבור המשתמשים האלה. לדוגמה, כדי לתת את התפקיד 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" } - כדי לעדכן את המדיניות של האשכול עם מערך הקישורים החדש, מריצים את הפקודה הבאה (resource-type יכול להיות clusters, jobs, operations, workflow-templates או autoscaling-policies):
gcloud dataproc resource-type set-iam-policy resource-name \ --region=region \ --format=json iam.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" }
API בארכיטקטורת REST
- שולחים בקשת 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
- התוכן של קובץ ה-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" } - באמצעות עורך טקסט, יוצרים את אובייקט המדיניות הבא בפורמט 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" } } - מגדירים את המדיניות המעודכנת במשאב באמצעות בקשת
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" } } - התוכן של תגובת ה-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-namegcloud dataproc clusters listgcloud dataproc clusters delete cluster-namegcloud dataproc clusters diagnose cluster-namegcloud dataproc clusters update cluster-namegcloud beta dataproc clusters start cluster-namegcloud beta dataproc clusters stop cluster-name |
| בעלים | gcloud dataproc clusters describe cluster-namegcloud dataproc clusters listgcloud dataproc clusters delete cluster-namegcloud dataproc clusters diagnose cluster-namegcloud dataproc clusters update cluster-namegcloud beta dataproc clusters start cluster-namegcloud beta dataproc clusters stop cluster-namegcloud dataproc clusters get-iam-policy cluster-namegcloud dataproc clusters set-iam-policy cluster-name |
תעסוקה
| תפקיד IAM | פקודה |
|---|---|
| צפייה | gcloud dataproc jobs describe job-id |
| עריכה | gcloud dataproc jobs delete job-idgcloud dataproc jobs describe job-idgcloud dataproc jobs kill job-idgcloud dataproc jobs update job-idgcloud dataproc jobs wait job-id |
| בעלים | gcloud dataproc jobs delete job-idgcloud dataproc jobs describe job-idgcloud dataproc jobs kill job-idgcloud dataproc jobs update job-idgcloud dataproc jobs wait job-idgcloud dataproc jobs get-iam-policy job-idgcloud dataproc jobs set-iam-policy job-id |
תפעול
| תפקיד IAM | פקודה |
|---|---|
| צפייה | gcloud dataproc operations describe operation-id |
| עריכה | gcloud dataproc operations delete operation-idgcloud dataproc operations describe operation-idgcloud dataproc operations cancel operation-id |
| בעלים | gcloud dataproc operations delete operation-idgcloud dataproc operations describe operation-idgcloud dataproc operations cancel operation-idgcloud dataproc operations get-iam-policy operation-idgcloud dataproc operations set-iam-policy operation-id |
תבניות של תהליכי עבודה
| תפקיד IAM | פקודה |
|---|---|
| צפייה | gcloud dataproc workflow-templates describe template-id |
| עריכה | gcloud dataproc workflow-templates delete template-idgcloud dataproc workflow-templates describe template-idgcloud dataproc workflow-templates remove-job template-idgcloud dataproc workflow-templates run template-id |
| בעלים | gcloud dataproc workflow-templates delete template-idgcloud dataproc workflow-templates describe template-idgcloud dataproc workflow-templates remove-job template-idgcloud dataproc workflow-templates run template-idgcloud dataproc workflow-templates get-iam-policy template-idgcloud dataproc workflow-templates set-iam-policy template-id |
מדיניות בנושא התאמה אוטומטית לעומס
| תפקיד IAM | פקודה |
|---|---|
| צפייה | gcloud dataproc autoscaling-policies describe policy-id |
| עריכה | gcloud dataproc autoscaling-policies delete policy-idgcloud dataproc autoscaling-policies describe policy-idgcloud dataproc autoscaling-policies update policy-idgcloud dataproc clusters create cluster-name --autoscaling-policy policy-id |
| בעלים | gcloud dataproc autoscaling-policies delete policy-idgcloud dataproc autoscaling-policies describe policy-idgcloud dataproc autoscaling-policies update policy-idgcloud dataproc clusters create cluster-name --autoscaling-policy policy-idgcloud dataproc autoscaling-policies get-iam-policy policy-idgcloud dataproc autoscaling-policies set-iam-policy policy-id |
שליחת עבודות עם IAM ברמת גרנולריות גבוהה
כדי לאפשר לחשבון משתמש (משתמש, קבוצה או חשבון שירות) לשלוח משימות לאשכול מסוים באמצעות IAM גרנולרי ב-Managed Service for Apache Spark, בנוסף להענקת תפקיד עריכה למשתמש באשכול, צריך להגדיר הרשאות נוספות ברמת הפרויקט. כדי לאפשר לגורם ראשי לשלוח משימות באשכול מסוים של Managed Service for Apache Spark, צריך לבצע את השלבים הבאים:
- יוצרים קטגוריה של Cloud Storage שהאשכול יכול להשתמש בה כדי להתחבר ל-Cloud Storage.
- מוסיפים את חשבון המשתמש למדיניות ברמת הקטגוריה, בוחרים את התפקיד 'צפייה באובייקט אחסון' עבור חשבון המשתמש (ראו
roles/storage.objectViewer), שכולל את ההרשאות הבאות:storage.objects.getstorage.objects.list
- כשיוצרים את האשכול, מעבירים את שם הקטגוריה שיצרתם לאשכול באמצעות הפרמטר
--bucket(ראוgcloud dataproc clusters create --bucket). - אחרי שיוצרים את האשכול, מגדירים מדיניות באשכול שמעניקה לישות (principal) תפקיד עריכה או בעלות (ראו שימוש ב-IAM מפורט ב-Managed Service for Apache Spark).
- יוצרים תפקיד ב-IAM בהתאמה אישית עם ההרשאות הבאות:
dataproc.jobs.createdataproc.jobs.get
- בוחרים או מוסיפים את החשבון הראשי בדף IAM במסוף Google Cloud , ואז בוחרים את התפקיד המותאם אישית כדי להקצות אותו לחשבון הראשי.