פרסונות ותפקידי IAM ללא שרת

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

פרסונה מי הם בארגון מה הם צריכים מ-IAM
מפתח Spark הגורם שבונה את הפלטפורמה והגורם שמשתמש בה. כתיבה והרצה של משימות PySpark ו-Spark, פיתוח במחברות ובסשנים, קריאה וכתיבה של מערכי נתונים, ומעקב אחר עומסי העבודה ופתרון בעיות שקשורות אליהם. זה כולל מהנדסי נתונים, מדעני נתונים ומפתחים. הרשאות להגשת עומסי עבודה, להרצה, למעקב ולפתרון בעיות, ולקריאה ולכתיבה של הנתונים שהעבודות שלהם נוגעות בהם.
אדמין של Spark הבעלים והמנהל של הפלטפורמה. הגדרת הפרויקט, קביעת אופן האימות של עומסי העבודה, צירוף מפתחי Spark, ניהול חשבונות שירות משותפים ואכיפת אמצעי הגנה וגישה עם הרשאות מינימליות בארגון. נקרא גם אדמין הפלטפורמה. הרשאות למתן גישה לאחרים, להגדרת זהות ההרצה (פרטי כניסה של משתמש קצה או חשבון שירות משותף) ולניהול משאבים ללא שרתים ברמת הפרויקט.
צופה פיקטיבי הצופה והבודק של הפלטפורמה. מעקב אחרי השלמת משימות, היסטוריית ביצוע, מדדים ולוחות בקרה בלי לשלוח או לשנות עומסי עבודה. כולל אנליסטים, מנהלי פרויקטים, FinOps ומבקרים בתחום התאימות. הרשאות קריאה בלבד לצפייה בחבילות, בהפעלות, בפעולות ובמרכזי בקרה של סטטוס.

בחירת גרסת זמן ריצה

גרסת זמן הריצה המומלצת תלויה בגרסת Apache Spark שבה מורצות עומסי העבודה שלכם.

  • ‫Runtime 3.x (מומלץ): משתמש ב-Spark 4 וכולל תהליך פשוט יותר של תחילת העבודה ושימוש. כברירת מחדל, עומסי עבודה מורצים כמשתמש ששולח את הבקשה עם פרטי הכניסה של משתמש הקצה (EUC), ולכן צריך להעניק למשתמש תפקיד IAM יחיד. אדמינים יכולים להגדיר חשבונות שירות מותאמים אישית לעומסי עבודה לשימוש מתקדם יותר.

  • זמן ריצה 2.x: משתמש ב-Spark 3.5 ומשתמש בחשבונות נפרדים לשליחת נתונים ולעומס עבודה. כברירת מחדל, הזהות של השולח היא זהות המשתמש, וחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine הוא זהות עומס העבודה. אדמינים יכולים להגדיר חשבונות שירות בהתאמה אישית של עומסי עבודה כדי לשלוט בגישה בצורה מדויקת יותר.

מידע נוסף זמין במאמר בנושא מהדורות של זמן ריצה של Managed Service for Apache Spark.

השוואה בין תכונות

שדרוגים של זמן הריצה 3.x משדרגים את הרכיבים והיכולות של 2.x ומספקים הגדרה פשוטה יותר:

יכולות ותהליכי עבודה זמן ריצה 3.x (מומלץ) זמן ריצה 2.x
גרסת Apache Spark Spark 4 ‫Spark 3.5 (וגרסאות קודמות 3.x)
פיתוח אינטראקטיבי סשנים של Spark Connect (לקוח Spark אינטראקטיבי בתקן התעשייה) סשנים של Jupyter
עומסי עבודה באצווה של R sparklyr קבוצות SparkR
זהות הביצוע פרטי כניסה של משתמשי קצה (EUC)1 חשבון שירות 1
נפח אחסון להכנת משרות לא נדרש (מנוהל באופן פנימי) קטגוריות זמניות של Cloud Storage
פורמט פלט של יומן פורמט JSON מובנה (jsonPayload) פורמט טקסט פשוט (textPayload)

‫1 Runtime 3.x ברירת המחדל היא פרטי הכניסה של משתמש הקצה (EUC) של השולח, אלא אם מצוין חשבון שירות מותאם אישית עבור עומס העבודה או הסשן. זמן הריצה 2.x מוגדר כברירת מחדל לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine, אלא אם מצוין חשבון שירות מותאם אישית לעומס העבודה או להפעלה.

תפקידים נפוצים בנתונים ובשירותים

בדרך כלל, Managed Service for Apache Spark קורא מתוך שירותים אחרים שלGoogle Cloud וכותב לתוכם. בקטע הזה מפורטים תפקידים שמשויכים לשירותים שנעשה בהם שימוש נפוץ.

  • ‫Runtime 3.x (זהות ברירת המחדל של EUC): מעניקים תפקידים למפתח Spark (משתמש או קבוצה).
  • ‫Runtime 2.x: הקצאת תפקידים לחשבון השירות של עומס העבודה (חשבון השירות שמוגדר כברירת מחדל ב-Compute Engine או חשבון שירות מותאם אישית של עומס העבודה).
שירות או API תפקיד מטרה
Cloud Storage roles/storage.objectViewer
roles/storage.objectAdmin
קריאת נתוני קלט וסקריפטים שהועלו.
כתיבת נתוני פלט.
הקטלוג של BigLake ושל Lakehouse בזמן ריצה roles/biglake.viewer
roles/biglake.editor
roles/biglake.admin
אפשר לשלוח שאילתות ולנהל פורמטים של טבלאות פתוחות, כמו Apache Iceberg ו-Delta Lake, באמצעות קטלוג REST של BigLake‏ (Lakehouse REST Catalog‏ (LRC)).
Bigtable roles/bigtable.reader
roles/bigtable.user
קריאת טבלאות Bigtable.
קריאה וכתיבה של נתוני Bigtable.
Dataproc Metastore (DPMS) roles/metastore.metadataViewer
roles/metastore.editor
קריאת מטא-נתונים של Hive.
ניהול סכימות וטבלאות של מטא-נתונים.

DPMS הוא מאגר מטא-נתונים מדור קודם. מומלץ ללקוחות להשתמש בקטלוג REST של BigLake Lakehouse‏ (LRC).

ב-BigQuery יש הרבה תפקידי IAM פרטניים ורשימות ACL ברמת המשאב. מידע נוסף זמין במאמר תפקידים והרשאות של IAM ב-BigQuery.

הקצאת תפקידים

בקטע הבא מפורטות הוראות למתן תפקידים לכל אחת מהדמויות שמשויכות להגדרה, לשליחה ולמעקב של עומסי עבודה של אצווה ושל סשנים אינטראקטיביים בגרסאות 3.x ו-2.x של Managed Service for Apache Spark serverless.

‫Runtime 3.x

כברירת מחדל, עומסי העבודה של 3.x מורצים עם פרטי הכניסה של משתמש הקצה (EUC) של המשתמש ששולח את הבקשה. האדמינים מקצים למשתמש תפקיד יחיד, ולא נדרשים חשבונות שירות משותפים או דליים זמניים. אדמינים יכולים להגדיר חשבונות שירות בהתאמה אישית כשנדרשות זהויות שירות ייעודיות.

מפתח

מפתח Spark (זמן ריצה 3.x)

מפתחי Spark יכולים להשתמש ב-3.x בזמן ריצה עם פרטי הכניסה של המשתמש כדי לפתח, לשלוח, לעקוב אחרי עומסי עבודה של Spark ולפתור בעיות בהם, וגם כדי לגשת לנתונים ישירות.

  1. צריך לבקש את תפקיד העריכה ב-Serverless. צריך לבקש מהאדמין להעניק לכם את ההרשאה roles/dataproc.serverlessEditor בפרויקט.

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/dataproc.serverlessEditor"
    

    התפקיד הזה מאפשר לשלוח, לנטר, לפתור בעיות ולבטל עומסי עבודה של Spark batch וסשנים אינטראקטיביים של Spark Connect.

  2. גישה לנתונים ולשירותים. מכיוון שעומס העבודה מופעל בשם הזהות שלכם, הזהות צריכה לקבל גישה לשירותים ולמערכי הנתונים שאפליקציית Spark ניגשת אליהם (ראו תפקידים נפוצים של נתונים ושירותים).

    לדוגמה, נותנים לעצמכם הרשאת קריאה לקטגוריית קלט של Cloud Storage:

    gcloud storage buckets add-iam-policy-binding gs://INPUT_BUCKET \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/storage.objectViewer"
    
  3. שליחת עומס עבודה לבדיקה. כדי לוודא שההגדרה תקינה, שולחים עומס עבודה של מקבץ בדיקה.

    gcloud dataproc batches submit spark \
      --region=REGION \
      --version=3.0 \
      --class=org.apache.spark.examples.SparkPi \
      --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
      -- 1000
    

    הערות:

    • אם זו הפעם הראשונה שאתם שולחים עומס עבודה של 3.x באמצעות אישורי משתמש קצה (EUC), תתבקשו לתת הסכמה חד-פעמית ל-OAuth. נותנים את ההסכמה ואז שולחים מחדש את עומס העבודה.

    • אם בפרויקט שלכם אין רשת VPC‏ (default), צריך להשתמש בדגל subnet או בשדה כדי לציין את רשת המשנה האזורית (ראו הגדרת רשת ב-Managed Service for Apache Spark serverless).

    • דוגמה מקיפה להרצת עומסי עבודה של PySpark ולהגדרת ההרשאות הנדרשות ב-Cloud Storage, ב-BigLake וב-BigQuery מופיעה במאמר שינוי נתונים וכתיבה לטבלת Apache Iceberg.

חשבונות שירות מותאמים אישית של עומסי עבודה (זמן ריצה 3.x)

משתמשים בחשבון שירות מותאם אישית עם זמן ריצה 3.x כשהארגון דורש שהעומסים יפעלו תחת זהות ייעודית שניתן לבדוק, במקום תחת פרטי הכניסה של משתמש הקצה (ראו שיטות מומלצות לשימוש בחשבונות שירות ב-IAM).

  1. קבלת הרשאה להרצת עומסי עבודה בתור חשבון השירות המותאם אישית. צריך לבקש מהאדמין להעניק לכם הרשאה roles/iam.serviceAccountUser בחשבון השירות המותאם אישית.

    gcloud iam service-accounts add-iam-policy-binding \
      WORKLOAD_SA_EMAIL \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/iam.serviceAccountUser"
    
  2. מציינים את השירות המותאם אישית.

    gcloud dataproc batches submit spark \
      --region=REGION \
      --service-account=WORKLOAD_SA_EMAIL \
      --version=3.0 \
      --class=org.apache.spark.examples.SparkPi \
      --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
      -- 1000
    
  3. הענקת גישה למערך הנתונים. כשמשתמשים בחשבון שירות בהתאמה אישית, צריך להעניק תפקידים ברמת הנתונים ישירות ל-WORKLOAD_SA_EMAIL (ראו תפקידים נפוצים של נתונים ושירותים).

מנהל מערכת

אדמין של Spark‏ (runtime 3.x)

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

עומסי העבודה משתמשים אוטומטית בתת-הרשת של ה-VPC שצוין בשם default. אם בפרויקט שלכם אין רשת default או שאתם משתמשים ב-VPC מותאם אישית, תוכלו לקרוא את המאמר בנושא הגדרת רשת serverless ב-Managed Service for Apache Spark כדי להגדיר ולציין רשת משנה לעומסי עבודה ולסשנים.

הפעלת זמן ריצה 3.x עם פרטי כניסה של משתמשי קצה (מומלץ)

זו ההגדרה עם ההרשאות המינימליות והכי פחות תחזוקה. כל מפתח Spark מריץ עומסי עבודה בתור זהות המשתמש שלו, והאדמינים לא צריכים להגדיר ולנהל חשבונות שירות של עומסי עבודה.

  1. לתת גישה ל-roles/dataproc.serverlessEditor למפתחי Spark.

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/dataproc.serverlessEditor"
    
  2. הענקת הרשאה roles/dataproc.serverlessViewer לצופים עם הרשאת קריאה בלבד.

    כדאי להקצות את התפקיד הזה למבקרים, למשתמשים בלוח הבקרה ולחברי צוות שצריכים לעקוב אחרי סטטוס העבודה והיומנים בלי לשלוח או לשנות עומסי עבודה.

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="user:VIEWER_EMAIL" \
      --role="roles/dataproc.serverlessViewer"
    
  3. מוודאים למפתח יש גישה לנתונים.

    כברירת מחדל, עומסי עבודה של 3.x בזמן ריצה פועלים כמשתמש ששולח את הבקשה. להעניק תפקידים עם גישה לנתונים, כמו roles/storage.objectViewer או roles/storage.objectAdmin, למפתח Spark או לקבוצת Google שכוללת מפתחי Spark (ראו תפקידים נפוצים עם גישה לנתונים ולשירותים).

הפעלת חשבונות שירות מותאמים אישית של עומסי עבודה (זמן ריצה 3.x)

משתמשים בחשבון שירות בהתאמה אישית עם זמן ריצה 3.x כשרוצים שעומסי עבודה יפעלו תחת זהות ייעודית שניתן לבדוק אותה, במקום תחת פרטי כניסה של משתמש קצה (ראו שיטות מומלצות לשימוש בחשבון שירות ב-IAM).

  1. מקצים את ההרשאה roles/iam.serviceAccountUser לחשבון השירות המותאם אישית של עומס העבודה.

    gcloud iam service-accounts add-iam-policy-binding \
      WORKLOAD_SA_EMAIL \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/iam.serviceAccountUser"
    
  2. מקצים את התפקיד roles/dataproc.serverlessNode לחשבון השירות המותאם אישית של עומס העבודה.

    התפקיד הזה מאפשר לחשבון השירות לנהל מאגרי צמתים של מחשוב ולתקשר עם אפליקציות Spark במהלך ביצוע עומסי העבודה:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:WORKLOAD_SA_EMAIL" \
      --role="roles/dataproc.serverlessNode"
    
  3. הענקת גישה לנתוני האפליקציה.

    נותנים לחשבון השירות של עומס העבודה תפקידים ברמת הנתונים כדי שהוא יוכל לקרוא ולכתוב מערכי נתונים של אפליקציות (ראו תפקידים נפוצים של נתונים ושירותים). אם עומסי העבודה משתמשים בסקריפטים מדורגים או בקובצי JAR בהתאמה אישית, צריך גם להעניק הרשאת קריאה לקטגוריות המתאימות ב-Cloud Storage.

הפעלת חשבונות שירות מותאמים אישית של שולחי בקשות (זמן ריצה 3.x)

משתמשים בחשבון שירות מותאם אישית לשליחה כשמערכות אוטומטיות (כמו Managed Service for Apache Airflow,‏ Cloud Scheduler או צינורות CI או CD) שולחות עומסי עבודה ללא משתמש אנושי אינטראקטיבי.

  • בתרחיש הזה, חשבון השירות של השולח מריץ את הפקודה gcloud שמתחילה את העבודה. דוגמה לשימוש ב-gcloud:

    gcloud dataproc batches submit spark \
      --service-account=WORKLOAD_SA_EMAIL \
      ...
    
  • חשבון השירות של עומס העבודה מריץ את קוד Spark בצמתי החישוב וניגש למערכי נתונים של אפליקציות.

    1. מקצים את ההרשאה roles/dataproc.serverlessEditor לחשבון השירות המותאם אישית של השולח.
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:SUBMITTER_SA_EMAIL" \
      --role="roles/dataproc.serverlessEditor"
    

    כשמשתמשים ב-3.x בזמן ריצה עם חשבון שירות מותאם אישית של השולח, צריך חשבון שירות מותאם אישית של עומס העבודה כדי להריץ את עומס העבודה. זמן הריצה לא יכול לחזור לפרטי כניסה של משתמש קצה (EUC) כי אין משתמש קצה אינטראקטיבי. העבודה צריכה לפעול כחשבון שירות של עומס עבודה שצוין (--service-account).

  1. מקצים את ההרשאה roles/iam.serviceAccountUser לחשבון השירות המותאם אישית של עומס העבודה.

    gcloud iam service-accounts add-iam-policy-binding \
      WORKLOAD_SA_EMAIL \
      --member="serviceAccount:SUBMITTER_SA_EMAIL" \
      --role="roles/iam.serviceAccountUser"
    
  2. מגדירים את חשבון השירות המותאם אישית של עומס העבודה. הקצאת תפקידים של נתוני אפליקציות ושל roles/dataproc.serverlessNode ל-WORKLOAD_SA_EMAIL.

הפניה לתפקידי אדמין ב-Spark (זמן ריצה 3.x)

בטבלה הבאה מפורטים התפקידים שצריך להקצות באמצעות זמן הריצה 3.x.

השולח/ת Workload Identity מענק לשולח מתן הרשאה לחשבון שירות של עומס עבודה
משתמש קצה (ברירת מחדל) משתמש קצה (EUC) roles/dataproc.serverlessEditor (+ תפקידי נתונים של המשתמש) (none—no SA used)
משתמש קצה SA בהתאמה אישית ‫roles/dataproc.serverlessEditor + roles/iam.serviceAccountUser ב-SA בהתאמה אישית ‫roles/dataproc.serverlessNode + תפקידי נתונים
קהל דומה בהתאמה אישית (אוטומציה) SA בהתאמה אישית ‫roles/dataproc.serverlessEditor + roles/iam.serviceAccountUser ב-SA בהתאמה אישית ‫roles/dataproc.serverlessNode + תפקידי נתונים

צפייה

Spark viewer (runtime 3.x)

כצופים ב-Spark, אתם יכולים לראות עומסי עבודה של אצווה, סשנים אינטראקטיביים, מדדי ביצוע, יומנים ולוחות בקרה של סטטוסים בלי לשלוח או לשנות עומסי עבודה.

צריך לבקש מהאדמין להעניק לכם roles/dataproc.serverlessViewer.

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:VIEWER_EMAIL" \
  --role="roles/dataproc.serverlessViewer"

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

הרשאות מפורטות

הרשאות מפורטות (runtime 3.x)

בקטע הזה מפורטות ההרשאות ב-IAM שכלולות בתפקידי IAM שמשויכים לזמן ריצה 3.x.

תפקיד עורך ללא שרת (roles/dataproc.serverlessEditor)

התפקיד הזה עם ההרשאות שלו מספק גישת קריאה וכתיבה לזמן ריצה 3.x לעומסי עבודה של אצווה ללא שרתים ולסשנים אינטראקטיביים.

הרשאה תיאור
dataproc.batches.create ליצור ולשלוח עומסי עבודה חדשים של אצווה.
dataproc.batches.get קבלת סטטוס ופרטים של עומסי עבודה באצווה.
dataproc.batches.list הצגת רשימה של כל עומסי העבודה של אצווה בפרויקט או באזור.
dataproc.batches.delete מחיקת חבילות שהושלמו או שהסתיימו.
dataproc.batches.cancel ביטול של עומס עבודה (workload) באצווה שפועלת.
dataproc.sessions.create יצירת סשנים אינטראקטיביים של Spark Connect.
dataproc.sessions.get קבלת סטטוס ופרטים של סשן.
dataproc.sessions.list הצגת רשימה של כל הסשנים בפרויקט או באזור.
dataproc.sessions.delete מחיקת סשנים שהסתיימו.
dataproc.sessions.terminate סיום סשן אינטראקטיבי שפועל.
dataproc.operations.get בדיקת סטטוס של פעולה אסינכרונית (נדרשת על ידי gcloud CLI).

תפקיד של צומת ללא שרת (roles/dataproc.serverlessNode)

ההרשאות האלה מאפשרות ניהול של מאגר צמתים ותקשורת פנימית של Spark לחשבונות שירות של עומסי עבודה בהתאמה אישית של זמן ריצה 3.x.

התפקידים האלה עם ההרשאות שלהם נדרשים כשמשתמשים בחשבון שירות מותאם אישית של עומס עבודה עם זמן ריצה 3.x. עומסי עבודה שפועלים עם 3.x פרטי כניסה של משתמשי קצה (EUC) שמוגדרים כברירת מחדל לא משתמשים בחשבון שירות של עומס עבודה.

הרשאה תיאור
dataproc.batches.sparkApplicationWrite תקשורת של אפליקציית Spark לעומסי עבודה באצווה.
dataproc.sessions.sparkApplicationWrite תקשורת של אפליקציית Spark בסשנים אינטראקטיביים.
dataprocrm.nodePools.create יוצרים מאגרי צמתים של מחשוב.
dataprocrm.nodePools.delete מחיקת מאגרי צמתים של מחשוב.
dataprocrm.nodePools.resize התאמה דינמית של העומס במאגרי הצמתים.
dataprocrm.nodePools.get קריאת הסטטוס של מאגר הצמתים.
dataprocrm.nodePools.list הצגת רשימה של מאגרי צמתים.
dataprocrm.nodePools.update עדכון ההגדרה של מאגר הצמתים.
dataprocrm.nodePools.deleteNodes הסרה של צמתים ספציפיים ממאגר.
dataprocrm.nodes.list הצגת רשימה של הצמתים במאגר.
dataprocrm.nodes.delete מחיקת צמתים אחרי השלמת המשימה.
dataprocrm.nodes.get קריאת סטטוס הצומת.
dataprocrm.nodes.heartbeat דיווח על תקינות הצומת ועל פעימות הלב.
dataprocrm.nodes.mintOAuthToken יצירת טוקנים מסוג OAuth לפעולות בצמתים.
dataprocrm.operations.get בדיקת הסטטוס של פעולת התשתית.

תפקיד צופה ב-Serverless (roles/dataproc.serverlessViewer)

התפקיד הזה עם ההרשאות שלו נדרש כשמשתמשים בזמן ריצה 3.x עם חשבון שירות מותאם אישית לשליחת בקשות. הם מספקים גישת קריאה בלבד לזמן ריצה של 3.x עומסי עבודה של אצוות ללא שרתים, הפעלות אינטראקטיביות וסטטוס פעולה.

הרשאה תיאור
dataproc.batches.get קריאת הסטטוס והפרטים של עומס העבודה באצווה.
dataproc.batches.list הצגת רשימה של עומסי עבודה של אצווה.
dataproc.sessions.get קריאה של סטטוס השיעור והפרטים שלו.
dataproc.sessions.list הצגת רשימת הסשנים.
dataproc.operations.get קריאת סטטוס הפעולה.
dataproc.operations.list הצגת רשימה של פעולות.

תפקיד להענקת הרשאות לחשבון שירות (roles/iam.serviceAccountUser)

מאפשר למשתמש או למערכת אוטומטית לצרף ולהריץ עומסי עבודה בתור חשבון שירות מותאם אישית. עומס העבודה מופעל עם ההרשאות והגישה למשאבים שניתנו לחשבון השירות הזה, ולא עם פרטי הכניסה של משתמש הקצה (EUC) של המשתמש ששלח את הבקשה.

הרשאה תיאור
iam.serviceAccounts.actAs מאפשר לשולח להריץ עומסי עבודה בתור חשבון השירות שצוין.

זמן ריצה 2.x

כברירת מחדל, עומסי עבודה של 2.x בזמן ריצה פועלים כחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine. השולח (המשתמש או המערכת האוטומטית) פועל בתור החשבון הזה כשהוא מריץ עומסי עבודה או סשנים.

מפתח

מפתח Spark (זמן ריצה 2.x)

מפתחי Spark שמשתמשים ב-runtime 2.x יכולים לפתח, לשלוח ולנטר עומסי עבודה של Spark, לפתור בעיות ולגשת לנתונים. מכיוון שעומס העבודה פועל כחשבון שירות ולא כזהות המשתמש שלכם, אדמין מקצה לכם את התפקיד 'עורך IAM' ואת התפקיד 'משתמש בחשבון שירות' כדי להריץ עומסי עבודה כחשבון השירות של עומס העבודה.

  1. שולחים בקשה לקבלת הרשאת עריכה. בקשו מהאדמין להקצות לכם את ההרשאה roles/dataproc.editor בפרויקט:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/dataproc.editor"
    
  2. שליחת בקשה להרשאת העברה. צריך לבקש מהאדמין להעניק לכם את ההרשאה roles/iam.serviceAccountUser בחשבון השירות של עומס העבודה.

    חשבון השירות שמוגדר כברירת מחדל לעומס העבודה הוא חשבון השירות של Compute Engine שמוגדר כברירת מחדל,‏ PROJECT_NUMBER-compute@developer.gserviceaccount.com:

    gcloud iam service-accounts add-iam-policy-binding \
      PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/iam.serviceAccountUser"
    
  3. קבלת גישה לקטגוריית ההמתנה. למשתמש ששולח את הסקריפט בזמן הריצה 2.x צריכה להיות הרשאה להעלות סקריפטים וקבצי JAR, ולחשבון השירות של עומס העבודה צריכה להיות הרשאה לנהל קבצים ויומנים זמניים. ההרשאות האלה כלולות בתפקיד roles/storage.objectAdmin.

    # Grant submitter access to upload staged files
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/storage.objectAdmin"
    
    # Grant workload service account access for staging, temporary files, and logs
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
      --role="roles/storage.objectAdmin"
    
  4. שליחת עומס עבודה של אצווה לבדיקה. כדי לוודא שההגדרה תקינה, שולחים עומס עבודה של מקבץ בדיקה.

    gcloud dataproc batches submit spark \
      --region=REGION \
      --version=2.2 \
      --class=org.apache.spark.examples.SparkPi \
      --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
      -- 1000
    

    הערות:

חשבונות שירות מותאמים אישית של עומסי עבודה (זמן ריצה 2.x)

משתמשים בחשבון שירות בהתאמה אישית אם הארגון דורש שעומסי עבודה יפעלו תחת זהות ייעודית שניתן לבדוק אותה, במקום תחת חשבון השירות שמוגדר כברירת מחדל ב-Compute Engine (ראו שיטות מומלצות לשימוש בחשבונות שירות ב-IAM).

  1. קבלת הרשאה להרצת עומסי עבודה בתור חשבון השירות המותאם אישית. צריך לבקש מהאדמין להעניק לכם את ההרשאה roles/iam.serviceAccountUser בחשבון השירות המותאם:

    gcloud iam service-accounts add-iam-policy-binding \
      WORKLOAD_SA_EMAIL \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/iam.serviceAccountUser"
    
  2. מציינים את חשבון השירות המותאם אישית באמצעות הדגל --service-account כששולחים עומסי עבודה.

    gcloud dataproc batches submit spark \
      --region=REGION \
      --service-account=WORKLOAD_SA_EMAIL \
      --version=2.2 \
      --class=org.apache.spark.examples.SparkPi \
      --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
      -- 1000
    
  3. גישה למערכי נתונים: אם לעומס העבודה אין גישה למערכי נתונים, צריך להקצות לחשבון השירות המותאם אישית של עומס העבודה (לא לחשבון המשתמש) את תפקידי הגישה הנדרשים לנתונים (ראו תפקידים נפוצים לגישה לנתונים ולשירותים).

מנהל מערכת

אדמין של Spark‏ (runtime 2.x)

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

עומסי העבודה משתמשים אוטומטית בתת-הרשת של ה-VPC שצוין בשם default. אם בפרויקט שלכם אין רשת default או שאתם משתמשים ב-VPC מותאם אישית, תוכלו לקרוא את המאמר בנושא הגדרת רשת serverless ב-Managed Service for Apache Spark כדי להגדיר ולציין רשת משנה לעומסי עבודה ולסשנים.

הפעלה של סביבת זמן ריצה 2.x שמוגדרת כברירת מחדל

בזמן ריצה שמוגדר כברירת מחדל 2.x, עומסי עבודה פועלים כחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine.

  1. נותנים למפתח הרשאה roles/dataproc.editor.

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/dataproc.editor"
    
  2. מקצים את התפקיד roles/iam.serviceAccountUser בחשבון השירות שמוגדר כברירת מחדל.

    gcloud iam service-accounts add-iam-policy-binding \
      PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/iam.serviceAccountUser"
    
  3. מקצים את ההרשאה roles/dataproc.worker לחשבון השירות של עומס העבודה.

    התפקיד הזה מאפשר לחשבון השירות לרשום את הסוכן של המכונה הווירטואלית, להשכיר ולבצע משימות חישוב, ולשלוח יומנים ומדדים אל Cloud Logging ו-Cloud Monitoring:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
      --role="roles/dataproc.worker"
    
  4. מקצים את ההרשאה roles/storage.objectAdmin לאחסון בקטגוריית הביניים.

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
      --role="roles/storage.objectAdmin"
    
  5. נותנים לחשבון השירות של עומס העבודה גישה למערך הנתונים.

    מקצים לחשבון השירות של עומס העבודה תפקידים ברמת הנתונים כדי לאפשר לו לגשת למערכי נתונים של אפליקציית Spark (ראו תפקידים נפוצים של נתונים ושירותים).

הפעלת חשבונות שירות מותאמים אישית של עומסי עבודה (זמן ריצה מגרסה 2.x)

כדי לבודד עומסי עבודה, אפשר להשתמש בחשבון שירות מותאם אישית של עומס עבודה עם זמן ריצה 2.x במקום להשתמש בחשבון השירות שמוגדר כברירת מחדל של Compute Engine.

  1. מקצים למפתח את ההרשאה roles/iam.serviceAccountUser בחשבון השירות המותאם אישית.

    gcloud iam service-accounts add-iam-policy-binding \
      WORKLOAD_SA_EMAIL \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/iam.serviceAccountUser"
    
  2. מקצים את התפקיד roles/dataproc.worker לחשבון השירות המותאם אישית.

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:WORKLOAD_SA_EMAIL" \
      --role="roles/dataproc.worker"
    
  3. הענקת גישה לנתוני האפליקציה ולסביבת הבדיקה.

    מקצים תפקידים ברמת הנתונים ישירות לחשבון השירות המותאם אישית של עומס העבודה (ראו תפקידים נפוצים של נתונים ושירותים) ומקצים את התפקיד roles/storage.objectAdmin בדליים זמניים ובדליים של סביבת Staging.

הפעלת חשבונות שירות מותאמים אישית של שולחי בקשות (זמן ריצה 2.x)

משתמשים בחשבון שירות מותאם אישית לשליחה כשמערכות אוטומטיות (כמו Managed Service for Apache Airflow,‏ Cloud Scheduler או צינורות CI/CD) שולחות עומסי עבודה ללא משתמש אנושי אינטראקטיבי.

  1. מקצים את ההרשאה roles/dataproc.editor לחשבון השירות של השולח.

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:SUBMITTER_SA_EMAIL" \
      --role="roles/dataproc.editor"
    
  2. מקצים את התפקיד roles/iam.serviceAccountUser לחשבון השירות של עומס העבודה.

    gcloud iam service-accounts add-iam-policy-binding \
      WORKLOAD_SA_EMAIL \
      --member="serviceAccount:SUBMITTER_SA_EMAIL" \
      --role="roles/iam.serviceAccountUser"
    
  3. מגדירים את חשבון השירות של עומס העבודה. הענקת גישה ל-roles/dataproc.worker ולמערך הנתונים ל-WORKLOAD_SA_EMAIL.

הפניה לתפקידי אדמין ב-Spark (זמן ריצה 2.x)

בטבלה הבאה מפורטים תפקידי ה-IAM שצריך להקצות עם זמן ריצה 2.x.

השולח/ת Workload Identity מענק לשולח מתן הרשאה לחשבון שירות של עומס עבודה
משתמש קצה (ברירת מחדל) חשבון שירות שמוגדר כברירת מחדל ב-Compute Engine ‫roles/dataproc.editor + roles/iam.serviceAccountUser ב-SA שמוגדר כברירת מחדל ‫roles/dataproc.worker + roles/storage.objectAdmin + תפקידי נתונים
משתמש קצה SA בהתאמה אישית ‫roles/dataproc.editor + roles/iam.serviceAccountUser ב-SA בהתאמה אישית ‫roles/dataproc.worker + roles/storage.objectAdmin + תפקידי נתונים
קהל דומה בהתאמה אישית (אוטומציה) SA בהתאמה אישית ‫roles/dataproc.editor + roles/iam.serviceAccountUser ב-SA בהתאמה אישית ‫roles/dataproc.worker + roles/storage.objectAdmin + תפקידי נתונים

צפייה

Spark viewer (runtime 2.x)

כצופים ב-Spark, אתם יכולים לראות עומסי עבודה של אצווה, סשנים אינטראקטיביים, מדדי ביצוע, יומנים ולוחות בקרה של סטטוסים בלי לשלוח או לשנות עומסי עבודה.

צריך לבקש מהאדמין להעניק לכם roles/dataproc.viewer:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:VIEWER_EMAIL" \
  --role="roles/dataproc.viewer"

התפקיד הזה מעניק גישת קריאה בלבד למשאבים של Managed Service for Apache Spark, כמו אשכולות, משימות, חבילות, סשנים ופעולות.

הרשאות מפורטות

הרשאות מפורטות (גרסה 2.x של הרשאות בתחילת ההפעלה)

בקטע הזה מפורטות ההרשאות ב-IAM שכלולות בתפקידי IAM שמשויכים לזמן ריצה 2.x.

תפקיד עורך (roles/dataproc.editor)

התפקיד הזה מאפשר שליטה בעומסי עבודה (workloads) ובהפעלות (sessions) של 2.x serverless בזמן ריצה, וגם באשכולות ובמשימות של Managed Service for Apache Spark ב-Compute Engine.

הרשאה חובה בשימוש ב-serverless תיאור
dataproc.batches.create כן ליצור ולשלוח עומסי עבודה חדשים של אצווה.
dataproc.batches.get כן קבלת סטטוס ופרטים של עומסי עבודה באצווה.
dataproc.batches.list כן הצגת רשימה של כל עומסי העבודה של אצווה בפרויקט או באזור.
dataproc.batches.delete כן מחיקת חבילות שהושלמו או שהסתיימו.
dataproc.batches.cancel כן ביטול של עומס עבודה (workload) באצווה שפועלת.
dataproc.sessions.create כן ליצור סשנים אינטראקטיביים.
dataproc.sessions.get כן קבלת סטטוס ופרטים של סשן.
dataproc.sessions.list כן הצגת רשימה של כל הסשנים בפרויקט או באזור.
dataproc.sessions.delete כן מחיקת סשנים שהסתיימו.
dataproc.sessions.terminate כן סיום סשן אינטראקטיבי שפועל.
dataproc.operations.get כן בדיקת סטטוס של פעולה אסינכרונית (נדרשת על ידי gcloud CLI).
compute.networks.get כן הצגת תצורת רשת ה-VPC.
compute.networks.list כן מציגים רשימה של רשתות ורשתות משנה זמינות של VPC.
dataproc.clusters.* לא (באשכולות בלבד) יצירה, ניהול ושימוש באשכולות של Managed Service for Apache Spark שמבוססים על Compute Engine.
dataproc.jobs.* לא (באשכולות בלבד) שליחה וניהול של משימות באשכולות של Managed Service for Apache Spark שמבוססים על Compute Engine.
dataproc.autoscalingPolicies.* לא (באשכולות בלבד) מדיניות של שינוי גודל אוטומטי לאשכולות שמבוססים על Compute Engine.
dataproc.nodeGroups.* לא (באשכולות בלבד) קבוצות צמתים בהתאמה אישית באשכולות שמבוססים על Compute Engine.
dataproc.workflowTemplates.* לא (באשכולות בלבד) תבניות של תהליכי עבודה לאשכולות שמבוססים על Compute Engine.
compute.machineTypes.* לא (באשכולות בלבד) מטא-נתונים של סוג המכונה לאשכולות שמבוססים על Compute Engine.

תפקיד העובד (roles/dataproc.worker)

התפקיד הזה מספק הרשאות להרצת עומסי עבודה בזמן הריצה 2.x.

הרשאה תיאור
dataproc.agents.create רושמים את הסוכן של המכונה הווירטואלית במכונה הווירטואלית.
dataproc.agents.get קריאת מצב הסוכן.
dataproc.agents.update עדכון של מצב הסוכן.
dataproc.agents.delete לבטל את הרישום של הסוכן בסיום.
dataproc.tasks.lease השכרת משימות מחשוב להרצה.
dataproc.tasks.reportStatus דיווח על סטטוס הביצוע של המשימה.
storage.objects.create כתיבת נתונים במחסן ביניים, קבצים זמניים ויומנים.
storage.objects.delete ניקוי קבצים זמניים.
storage.objects.get לקרוא סקריפטים של אתחול וקבצים זמניים.
storage.objects.list הצגת תוכן של קטגוריה זמנית ושל קטגוריה בהמתנה.

תפקיד הצופה (roles/dataproc.viewer)

לתפקיד הזה מוקצית הרשאת קריאה בלבד לכל המשאבים של Managed Service for Apache Spark.

הרשאה חובה בשימוש ב-serverless תיאור
dataproc.batches.get כן קריאת הסטטוס והפרטים של עומס העבודה באצווה.
dataproc.batches.list כן הצגת רשימה של כל עומסי העבודה של אצווה בפרויקט או באזור.
dataproc.sessions.get כן קריאה של סטטוס השיעור והפרטים שלו.
dataproc.sessions.list כן הצגת רשימה של כל הסשנים בפרויקט או באזור.
dataproc.operations.get כן קריאת הסטטוס של פעולה אסינכרונית.
dataproc.operations.list כן הצגת רשימת הפעולות בפרויקט או באזור.
dataproc.clusters.get לא (באשכולות בלבד) צפייה בהגדרות ובסטטוס של האשכול.
dataproc.clusters.list לא (באשכולות בלבד) הצגת רשימה של אשכולות בפרויקט או באזור.
dataproc.jobs.get לא (באשכולות בלבד) צפייה בפרטי המשימה ובסטטוס שלה באשכולות.
dataproc.jobs.list לא (באשכולות בלבד) הצגת רשימת המשרות באשכולות.
dataproc.autoscalingPolicies.get לא (באשכולות בלבד) צפייה בפרטי המדיניות של שינוי הגודל האוטומטי.
dataproc.autoscalingPolicies.list לא (באשכולות בלבד) הצגת רשימת כללי המדיניות של התאמה אוטומטית לעומס.
dataproc.workflowTemplates.get לא (באשכולות בלבד) הצגת פרטי תבנית של תהליך עבודה.
dataproc.workflowTemplates.list לא (באשכולות בלבד) הצגת רשימה של תבניות של זרימות עבודה.

תפקיד להענקת הרשאות לחשבון שירות (roles/iam.serviceAccountUser)

מאפשר למשתמש או למערכת אוטומטית לצרף ולהריץ עומסי עבודה בתור חשבון השירות שמוגדר כברירת מחדל ב-Compute Engine או חשבון שירות בהתאמה אישית. עומס העבודה מופעל עם ההרשאות וגישת המשאבים שהוענקו לחשבון השירות הזה.

הרשאה תיאור
iam.serviceAccounts.actAs מאפשר לשולח להריץ עומסי עבודה בתור חשבון השירות שצוין.

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