הגדרת זהות שירות למשימות

למשימת Cloud Run יש זהות שירות שמשמשת כחשבון מאומת לגישה ל- Cloud de Confiance by S3NS APIs ממכולת של מופע Cloud Run. מידע נוסף על זהות שירות זמין במדריך מבוא לזהות שירות.

איך משתמשים בזהות בשירות

ב-Cloud Run, זהות השירות היא חשבון שירות שהוא גם משאב וגם חשבון משתמש.

  • זהות שירות בתור משאב: כדי לצרף חשבון שירות בתור זהות השירות, לחשבון הפריסה צריכה להיות גישה למשאב של זהות השירות. פעולות מסוימות, כמו יצירה או עדכון של משימה, מחייבות שלחשבון הפריסה יהיו הרשאות במשאב של זהות השירות.
  • זהות השירות כחשבון משתמש: כדי לגשת ל-API‏ Cloud de Confiance ממשימת Cloud Run, צריך להעניק לזהות השירות את התפקידים או ההרשאות הנדרשים לפעולות שרוצים שהמשימה תבצע.

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

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

אתם או האדמין שלכם צריכים להקצות תפקידים והרשאות IAM לחשבון הפריסה ולזהות השירות.

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

כדי לקבל את ההרשאות שדרושות לצירוף חשבון שירות כזהות השירות למשימה, אתם או האדמין שלכם צריכים להקצות לחשבון הפריסה את התפקיד משתמש בחשבון שירות (roles/iam.serviceAccountUser) בחשבון השירות שמשמש כזהות השירות.

התפקיד המוגדר מראש הזה כולל את ההרשאה iam.serviceAccounts.actAs, שנדרשת כדי לצרף חשבון שירות למשימה. יכול להיות שתוכלו לקבל את ההרשאה הזו גם באמצעות הגדרה של תפקידים בהתאמה אישית או שימוש בתפקידים אחרים שמוגדרים מראש.

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

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

כדי לאפשר לזהות השירות לגשת ל- Cloud de Confiance API מ-Cloud Run, אתם או האדמין שלכם צריכים להעניק לזהות השירות את ההרשאות או התפקידים שנדרשים לפעולות שאתם רוצים לבצע. כדי לגשת לספריות לקוח ספציפיות של Cloud, אפשר לעיין Cloud de Confiance במסמכי העזרה של Cloud de Confiance השירות.

אם עבודת Cloud Run לא ניגשת לשירותים אחרים של Cloud de Confiance , לא צריך להעניק לזהות השירות תפקידים או הרשאות, ואפשר להשתמש בחשבון השירות שמוגדר כברירת מחדל שהוקצה לפרויקט.

קבלת המלצות ליצירת חשבונות שירות ייעודיים

כשיוצרים חשבון שירות חדש במסוף Cloud de Confiance , השלב האופציונלי 'הענקת גישה לחשבון השירות הזה לפרויקט' מיועד לכל גישה נוספת שנדרשת. לדוגמה, שירות אחד של Cloud Run יכול להפעיל שירות פרטי אחר של Cloud Run, או לגשת למסד נתונים של Cloud SQL. בשני המקרים נדרשים תפקידי IAM ספציפיים. מידע נוסף מופיע במאמר בנושא ניהול גישה.

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

הגדרת הזהות בשירות

כדי להגדיר את זהות השירות ב-Cloud Run או לציין אותה, משתמשים במסוף Cloud de Confiance , ב-CLI של gcloud או ב-API (YAML) כשיוצרים ומריצים משימה חדשה:

המסוף

  1. נכנסים לדף Jobs ב-Cloud Run במסוף Cloud de Confiance by S3NS :

    כניסה לדף Cloud Run jobs

  2. לוחצים על Deploy container (פריסת מאגר תגים) כדי למלא את דף ההגדרות הראשוניות של המשימה. אם אתם מגדירים משימה קיימת, בוחרים את המשימה ולוחצים על View and edit job configuration (הצגה ועריכה של הגדרת המשימה).

  3. לוחצים על Containers, Connections, Security (מאגרי תגים, חיבורים, אבטחה) כדי להרחיב את דף מאפייני העבודה.

  4. לוחצים על הכרטיסייה אבטחה.

  5. לוחצים על התפריט Service account ובוחרים חשבון שירות קיים, או לוחצים על Create a new service account אם צריך.

  6. לוחצים על יצירה או על עדכון.

gcloud

אפשר ליצור משימה חדשה ולציין חשבון שירות באמצעות הפקודה הבאה:

gcloud run jobs create JOB_NAME --service-account SERVICE_ACCOUNT

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

  • JOB_NAME: השם של השירות.
  • SERVICE_ACCOUNT: חשבון השירות שמשויך לזהות החדשה. הערך הזה הוא כתובת האימייל של חשבון השירות – לדוגמה, example@myproject.s3ns.iam.gserviceaccount.com.

כדי לעדכן משימה קיימת כך שתשתמש בחשבון שירות חדש, משתמשים בפקודה הבאה:

gcloud run jobs update JOB_NAME --image IMAGE_URL --service-account SERVICE_ACCOUNT

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

  • IMAGE_URL: הפניה לקובץ אימג' בקונטיינר, לדוגמה us-docker.pkg.dev/cloudrun/container/job:latest.
  • SERVICE_ACCOUNT: חשבון השירות שמשויך לזהות החדשה. הערך הזה הוא כתובת האימייל של חשבון השירות – לדוגמה, SERVICE_ACCOUNT_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com.

YAML

אם עדיין לא יצרתם חשבון שירות, אתם יכולים ליצור חשבון שירות שמנוהל על ידי המשתמש ב-IAM.

  1. אם אתם יוצרים משרה חדשה, דלגו על השלב הזה. אם אתם מעדכנים משימה קיימת, אתם צריכים להוריד את הגדרת ה-YAML שלה:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. מעדכנים את המאפיין serviceAccountName::

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB_NAME
    spec:
      template:
        spec:
          template:
            spec:
              serviceAccountName: SERVICE_ACCOUNT

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

    • JOB_NAME: השם של המשימה ב-Cloud Run.
    • SERVICE_ACCOUNT: חשבון השירות שמשויך לזהות החדשה. הערך הוא כתובת האימייל של חשבון השירות – לדוגמה, SERVICE_ACCOUNT_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com.
  3. מעדכנים את ההגדרה הקיימת של העבודה:

    gcloud run jobs replace job.yaml

Terraform

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

מוסיפים את השורות הבאות למשאב google_cloud_run_v2_job בתצורת Terraform:

resource "google_cloud_run_v2_job" "default" {
  name     = "JOB_NAME"
  location = "REGION"

  template {
    template {
      containers {
        image = "us-docker.pkg.dev/cloudrun/container/job"
        }
      service_account = "SERVICE_ACCOUNT"
      }
    }
  }

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

  • JOB_NAME: השם של המשימה ב-Cloud Run.
  • REGION: Cloud de Confiance האזור. לדוגמה: europe-west1.
  • SERVICE_ACCOUNT: חשבון השירות שמשויך לזהות החדשה. הערך הוא כתובת האימייל של חשבון השירות – לדוגמה, SERVICE_ACCOUNT_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com.

שימוש בחשבונות שירות בפרויקטים אחרים

אם אתם מגדירים חשבון שירות מ Cloud de Confiance פרויקט אחר מהמשאב של Cloud Run, אתם צריכים לבצע את הפעולות הבאות:

  1. אתם או האדמין שלכם צריכים להקצות את התפקיד 'משתמש בחשבון שירות' (roles/iam.serviceAccountUser) בחשבון השירות שבו אתם משתמשים כזהות השירות.

    המסוף

    1. נכנסים לדף Service accounts במסוף Cloud de Confiance :

      כניסה לדף Service accounts

    2. בוחרים את כתובת האימייל בחשבון השירות שבה אתם משתמשים כזהות השירות.

    3. לוחצים על הכרטיסייה Principals with access (גורמים עם גישה).

    4. לוחצים על הלחצן Grant access.

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

    6. בתפריט הנפתח Select a role בוחרים בתפקיד Service Accounts > Service Account User.

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

    gcloud

    משתמשים בפקודה gcloud iam service-accounts add-iam-policy-binding ומחליפים את המשתנים המודגשים בערכים המתאימים:

    gcloud iam service-accounts add-iam-policy-binding \
        SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.s3ns.iam.gserviceaccount.com \
        --member="PRINCIPAL" \
        --role="roles/iam.serviceAccountUser"

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

    • SERVICE_ACCOUNT_NAME: השם של חשבון השירות שמצרפים אליו את משאב Cloud Run.
    • SERVICE_ACCOUNT_PROJECT_ID: מזהה הפרויקט שבו נמצא חשבון השירות.
    • PRINCIPAL: חשבון הפריסה שאליו מוסיפים את הקישור, בפורמט user|group|serviceAccount:email או domain:domain – לדוגמה:

      • user:test-user@gmail.com
      • group:admins@example.com
      • serviceAccount:test123@example.domain.com
      • domain:example.domain.com
  2. אתם או האדמין שלכם צריכים להעניק לסוכן השירות של משאב Cloud Run את התפקיד Service Account Token Creator (roles/iam.serviceAccountTokenCreator) בחשבון השירות שבו אתם משתמשים כזהות השירות. סוכן השירות פועל לפי הפורמט service-PROJECT_NUMBER@serverless-robot-prod.s3ns-system.iam.gserviceaccount.com.

    המסוף

    1. נכנסים לדף Service accounts במסוף Cloud de Confiance :

      כניסה לדף Service accounts

    2. בוחרים את כתובת האימייל בחשבון השירות שבה אתם משתמשים כזהות השירות.

    3. לוחצים על הכרטיסייה Permissions.

    4. לוחצים על הלחצן Grant access.

    5. מזינים את כתובת האימייל של סוכן השירות. לדוגמה: service-PROJECT_NUMBER@serverless-robot-prod.s3ns-system.iam.gserviceaccount.com.

    6. בתפריט הנפתח Select a role בוחרים בתפקיד Service Accounts > Service Account Token Creator.

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

    gcloud

    משתמשים בפקודה gcloud iam service-accounts add-iam-policy-binding:

    gcloud iam service-accounts add-iam-policy-binding \
        SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.s3ns.iam.gserviceaccount.com \
        --member="serviceAccount:service-CLOUD_RUN_RESOURCE_PROJECT_NUMBER@serverless-robot-prod.s3ns-system.iam.gserviceaccount.com" \
        --role="roles/iam.serviceAccountTokenCreator"

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

    • SERVICE_ACCOUNT_NAME: השם של חשבון השירות שמצרפים אליו את משאב Cloud Run.
    • SERVICE_ACCOUNT_PROJECT_ID: מזהה הפרויקט שבו נמצא חשבון השירות.
    • CLOUD_RUN_RESOURCE_PROJECT_NUMBER: מספר הפרויקט שבו נמצא Cloud Run.

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

  3. בפרויקט שמכיל את חשבון השירות הזה, צריך להגדיר את מדיניות הארגון iam.disableCrossProjectServiceAccountUsage כ-false או כלא נאכפת ברמת התיקייה, או להגדיר שהיא תועבר אוטומטית מההגדרות ברמת הפרויקט. כברירת מחדל, הערך הוא true.

    המסוף

    1. נכנסים לדף Organization policies במסוף Cloud de Confiance :

      מעבר למדיניות הארגון

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

    3. בוחרים במדיניות disable cross-project service account usage.

    4. לוחצים על ניהול המדיניות.

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

    6. לוחצים על Add a rule.

    7. בקטע אכיפה, בוחרים באפשרות השבתה.

    8. כדי לאכוף את המדיניות, לוחצים על הגדרת מדיניות.

    gcloud

    בפרויקט שבו נמצא חשבון השירות, מוודאים שהמגבלה iam.disableCrossProjectServiceAccountUsage במדיניות הארגון לא נאכפת. האילוץ הזה נאכף כברירת מחדל.

    כדי להשבית את אילוץ מדיניות הארגון הזה, מריצים את הפקודה:

    gcloud resource-manager org-policies disable-enforce iam.disableCrossProjectServiceAccountUsage
        --project=SERVICE_ACCOUNT_PROJECT_ID

    מחליפים את SERVICE_ACCOUNT_PROJECT_ID במזהה הפרויקט שמכיל את חשבון השירות.

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

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