חשבונות שירות של Managed Service for Apache Spark

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

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

הסכמה של משתמשים קיימים ב-Managed Service for Apache Spark: משתמשים קיימים ב-Managed Service for Apache Spark נכון ל-3 באוגוסט 2020 יכולים להביע הסכמה לדרישת האבטחה הזו (ראו אבטחת Managed Service for Apache Spark,‏ Dataflow ו-Cloud Data Fusion).

מהם חשבונות שירות?

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

חשבונות שירות של שירות אשכולות מנוהל ל-Apache Spark

לחשבונות השירות הבאים צריכות להיות ההרשאות הנדרשות לביצוע פעולות ב-Managed Service for Apache Spark בפרויקט שבו נמצא האשכול שלכם.

חשבון שירות של מכונה וירטואלית ב-Managed Service for Apache Spark

המכונות הווירטואליות באשכול Managed Service for Apache Spark משתמשות בחשבון שירות לפעולות של מישור הנתונים ב-Managed Service for Apache Spark. חשבון השירות של Compute Engine שמוגדר כברירת מחדל,‏ project_number-compute@developer.gserviceaccount.com, משמש כחשבון השירות של המכונה הווירטואלית, אלא אם מציינים חשבון שירות מותאם אישית כשיוצרים אשכול. לחשבון השירות של מכונת ה-VM צריך להיות התפקיד Managed Service for Apache Spark Worker, שכולל את ההרשאות הנדרשות לפעולות במישור הנתונים של Managed Service for Apache Spark. מידע נוסף זמין במאמר תפקידים ב-Managed Service for Apache Spark.

צפייה בתפקידים של חשבון שירות במכונה וירטואלית

כדי לראות את התפקידים שהוענקו לחשבון השירות של מכונת ה-VM של Managed Service for Apache Spark:

  1. נכנסים לדף IAM במסוף Google Cloud .

    כניסה לדף IAM

  2. לוחצים על Include Google-provided role grants (הכללת תפקידים שהוענקו על ידי Google).

  3. בודקים את התפקידים שמופיעים בחשבון השירות של המכונה הווירטואלית. בתמונה הבאה מוצג התפקיד הנדרש Dataproc Worker שמופיע בחשבון השירות שמשמש כברירת המחדל של Compute Engine ‏ (project_number-compute@developer.gserviceaccount.com), ש-Managed Service for Apache Spark משתמש בו כברירת מחדל כחשבון השירות של מכונת ה-VM.

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

חשבון שירות של סוכן שירות Managed Service for Apache Spark

‫Managed Service for Apache Spark יוצר את חשבון השירות של סוכן השירות, ‏service-project_number@dataproc-accounts.iam.gserviceaccount.com, ומקצה לחשבון השירות את התפקיד Managed Service for Apache Spark Service Agent בפרויקט Google Cloud . חשבון השירות הזה מבצע פעולות של מישור הבקרה של Managed Service for Apache Spark, כמו יצירה, עדכון ומחיקה של מכונות וירטואליות באשכול. כשיוצרים אשכול, אי אפשר להחליף את חשבון השירות הזה בחשבון שירות מותאם אישית של מכונה וירטואלית.

הענקת תפקיד לחשבון שירות של סוכן שירות ברשת VPC משותפת

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

יצירת אשכול עם חשבון שירות מותאם אישית של מכונה וירטואלית

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

שלבים מקדימים

  1. יוצרים את חשבון השירות המותאם אישית של מכונת ה-VM בפרויקט שבו ייצור האשכול.

  2. מעניקים לחשבון השירות של המכונה הווירטואלית המותאמת אישית את התפקיד Managed Service for Apache Spark Worker בפרויקט, וכל תפקיד נוסף שנדרש לעבודות, כמו התפקידים Reader ו-Writer של BigQuery (ראו תפקידים של Managed Service for Apache Spark).

    דוגמה ל-CLI של gcloud:

    • הפקודה לדוגמה הבאה מעניקה לחשבון השירות של המכונה הווירטואלית בהתאמה אישית בפרויקט האשכול את התפקיד Dataproc Worker ברמת הפרויקט:
    gcloud projects add-iam-policy-binding CLUSTER_PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role="roles/dataproc.worker"
     
    • כדאי לשקול שימוש בתפקיד בהתאמה אישית: במקום להעניק לחשבון השירות את התפקיד המוגדר מראש Dataproc Worker ‏ (roles/dataproc.worker), אפשר להעניק לחשבון השירות תפקיד בהתאמה אישית שמכיל הרשאות של התפקיד Worker, אבל מגביל את ההרשאות storage.objects.*.
      • התפקיד המותאם אישית צריך לתת לחשבון השירות של המכונה הווירטואלית לפחות את ההרשאות storage.objects.create,‏ storage.objects.get ו-storage.objects.update לאובייקטים במאגרי הזמני וההכנה של Managed Service for Apache Spark ולכל מאגר נוסף שנדרש לעבודות שירוצו באשכול.

יצירת האשכול

  • יוצרים את האשכול בפרויקט.

מסוףGoogle Cloud

אין תמיכה בהגדרת חשבון שירות של מכונה וירטואלית של Managed Service for Apache Spark במסוף. כדי להגדיר את היקף הגישה cloud-platform במכונות וירטואליות של אשכול כשיוצרים את האשכול:

  1. פותחים את הדף Create cluster.
  2. לוחצים על הגדרה נוספת כדי להרחיב את הקטע.
  3. עורכים את האבטחה.
  4. בחלונית שנפתחת, בקטע Project access, מסמנים את התיבה Enables the cloud-platform scope for this cluster.

‫CLI של gcloud

משתמשים בפקודה gcloud dataproc clusters create כדי ליצור אשכול עם חשבון שירות של מכונת VM בהתאמה אישית.

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --scopes=SCOPE

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

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

כשממלאים את GceClusterConfig כחלק מבקשת clusters.create API, צריך להגדיר את השדות הבאים:

יצירת אשכול עם חשבון שירות מותאם אישית של מכונה וירטואלית מפרויקט אחר

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

שלבים מקדימים

  1. בפרויקט של חשבון השירות (הפרויקט שבו נמצא חשבון השירות המותאם אישית של המכונה הווירטואלית):

    1. הפעלה של צירוף חשבונות שירות בין פרויקטים.

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

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

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

      להפעלת ה-API

  2. נותנים לחשבון האימייל שלכם (המשתמש שיוצר את האשכול) את התפקיד משתמש בחשבון שירות בפרויקט של חשבון השירות, או כדי לקבל שליטה מדויקת יותר, בחשבון השירות המותאם אישית של המכונה הווירטואלית בפרויקט של חשבון השירות.

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

    דוגמאות ל-CLI של gcloud:

    • הפקודה לדוגמה הבאה מעניקה למשתמש את התפקיד Service Account User ברמת הפרויקט:
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member=USER_EMAIL \
        --role="roles/iam.serviceAccountUser"
    

    הערות: USER_EMAIL: צריך לציין את כתובת האימייל בחשבון המשתמש בפורמט: user:user-name@example.com.

    • הפקודה לדוגמה הבאה מעניקה למשתמש את התפקיד Service Account User ברמת חשבון השירות:
    gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
        --member=USER_EMAIL \
        --role="roles/iam.serviceAccountUser"
    

    הערות: USER_EMAIL: צריך לציין את כתובת האימייל בחשבון המשתמש בפורמט: user:user-name@example.com.

  3. מקצים לחשבון השירות של המכונה הווירטואלית המותאמת אישית את התפקיד Managed Service for Apache Spark Worker בפרויקט של האשכול.

    דוגמה ל-CLI של gcloud:

    gcloud projects add-iam-policy-binding CLUSTER_PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
        --role="roles/dataproc.worker"
     
  4. מעניקים לחשבון השירות של סוכן השירות של Managed Service for Apache Spark בפרויקט של האשכול את התפקידים Service Account User ו-Service Account Token Creator בפרויקט של חשבון השירות, או בחשבון השירות של המכונה הווירטואלית המותאמת אישית בפרויקט של חשבון השירות, כדי לקבל שליטה מדויקת יותר. כך מאפשרים לחשבון השירות של סוכן השירות של Dataproc בפרויקט האשכול ליצור אסימונים לחשבון השירות המותאם אישית של מכונת Dataproc הווירטואלית בפרויקט חשבון השירות.

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

    דוגמאות ל-CLI של gcloud:

    • פקודות לדוגמה שמעניקות לחשבון השירות של סוכן השירות של Managed Service for Apache Spark בפרויקט של האשכול את התפקידים Service Account User ו-Service Account Token Creator ברמת הפרויקט:
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountUser"
     
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
    
    • הפקודות הבאות לדוגמה מעניקות לחשבון השירות של סוכן השירות Managed Service for Apache Spark בפרויקט של האשכול את התפקידים Service Account User ו-Service Account Token Creator ברמת חשבון השירות של מכונת ה-VM:
    gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountUser"
     
    gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
    
  5. מקצים לחשבון השירות של סוכן השירות של Compute Engine בפרויקט של האשכול את התפקיד יצירת אסימונים בחשבון שירות בפרויקט של חשבון השירות, או, כדי לקבל שליטה מדויקת יותר, בחשבון השירות המותאם אישית של המכונה הווירטואלית בפרויקט של חשבון השירות. כך מעניקים לחשבון השירות של סוכן השירות Compute Agent בפרויקט האשכול את היכולת ליצור אסימונים לחשבון השירות המותאם אישית של מכונת Dataproc הווירטואלית בפרויקט חשבון השירות.

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

    דוגמאות ל-CLI של gcloud:

    • הפקודה לדוגמה הבאה מעניקה לחשבון השירות של סוכן השירות של Compute Engine בפרויקט של האשכול את התפקיד 'יצירת אסימונים בחשבון שירות' ברמת הפרויקט:
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
     
    • הפקודה לדוגמה הבאה מעניקה לחשבון השירות של סוכן השירות של Compute Engine בפרויקט האשכול את התפקיד 'יצירת אסימונים בחשבון שירות' ברמת חשבון השירות של המכונה הווירטואלית:
    gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
     

יצירת האשכול

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