הורדת הגדרות של פרטי כניסה והענקת גישה

בדף הזה מוסבר איך להגדיר את עומסי העבודה כדי לגשת למשאבים Google Cloudבאמצעות איחוד שירותי אימות הזהות של עומסי עבודה, וגישה ישירה למשאבים או התחזות לחשבון שירות.

הוראות מפורטות לתרחישי שימוש ספציפיים זמינות במדריכי ההגדרה של AWS ו-Azure,‏ Active Directory,‏ GitHub,‏ GitLab וצינורות פריסה אחרים ו-Kubernetes.

מתן הרשאה לעומס העבודה החיצוני לגשת למשאבים של Google Cloud

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

גישה ישירה למשאבים

אפשר להעניק גישה לזהות מאוחדת ישירות למשאבים באמצעות מסוף Google Cloud או ה-CLI של gcloud.

המסוף

כדי להשתמש במסוף Google Cloud כדי להעניק תפקידי IAM ישירות למשאב, צריך לעבור לדף של המשאב ואז להעניק את התפקיד. בדוגמה הבאה מוסבר איך לעבור לדף Cloud Storage ולהעניק את התפקיד 'צפייה באובייקט אחסון' (roles/storage.objectViewer) ישירות בקטגוריה של Cloud Storage לזהות מאוחדת.

  1. במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.

    כניסה לדף Buckets

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

  3. לוחצים על הכרטיסייה Permissions בחלק העליון של הדף.

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

    מופיעה תיבת הדו-שיח Add principals.

  5. בשדה New principals, מזינים את הזהות (או הזהויות) שצריכה גישה לקטגוריה.

    לפי נושא

    principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT
    

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

    • ‫PROJECT_NUMBER: מספר הפרויקט
    • ‫POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה
    • ‫SUBJECT: הנושא האישי שמופה מה-IdP, לדוגמה: administrator@example.com

    לפי קבוצה

    principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP
    

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

    • ‫PROJECT_NUMBER: מספר הפרויקט
    • ‫WORKLOAD_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה
    • ‫GROUP: הקבוצה שממופה מה-IdP. לדוגמה: administrator-group@example.com

    לפי תכונה

    principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
    

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

    • ‫PROJECT_NUMBER: מספר הפרויקט
    • ‫WORKLOAD_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה
    • ‫ATTRIBUTE_NAME: אחד מהמאפיינים שמופו מה-IdP
    • ‫ATTRIBUTE_VALUE: הערך של המאפיין
  6. בוחרים תפקיד (או תפקידים) בתפריט הנפתח Select a rol. התפקידים שבחרתם יופיעו בחלונית עם תיאור קצר של ההרשאות שהם מעניקים.

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

gcloud

כדי להשתמש ב-CLI של gcloud כדי להקצות תפקידי IAM למשאב בפרויקט, מבצעים את הפעולות הבאות:

  1. מקבלים את מספר הפרויקט שבו מוגדר המשאב.

    gcloud projects describe $(gcloud config get-value core/project) --format=value\(projectNumber\)
    
  2. הענקת גישה למשאב.

    כדי להשתמש ב-CLI של gcloud כדי להעניק את התפקיד Storage Object Viewer ‏(roles/storage.objectViewer) לזהויות חיצוניות שעומדות בקריטריונים מסוימים, מריצים את הפקודה הבאה.

    לפי נושא

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"

    לפי קבוצה

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"

    לפי תכונה

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"

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

    • ‫BUCKET_ID: הקטגוריה שרוצים לתת לה גישה
    • ‫PROJECT_NUMBER: מספר הפרויקט שמכיל את מאגר הזהויות של עומסי העבודה.
    • ‫POOL_ID: מזהה מאגר הזהויות של עומסי העבודה
    • ‫SUBJECT: הערך הצפוי של המאפיין שמיפיתם ל-google.subject
    • ‫GROUP: הערך הצפוי של המאפיין שמיפיתם ל-google.groups
    • ‫ATTRIBUTE_NAME: השם של המאפיין בהתאמה אישית במיפוי המאפיינים שלכם
    • ‫ATTRIBUTE_VALUE: הערך של המאפיין בהתאמה אישית במיפוי המאפיינים שלכם

    אפשר להקצות תפקידים לכל Google Cloud משאב שתומך במדיניות הרשאות של IAM.

התחזות לחשבון שירות

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

    1. מפעילים את ממשקי ה-API של IAM,‏ Security Token Service ו-Service Account Credentials, אם הם עדיין לא מופעלים.

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

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

      הפעלת ממשקי ה-API

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

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

  2. כדי לאפשר לזהות המאוחדת להתחזות לחשבון השירות, מבצעים את הפעולות הבאות:

המסוף

כדי להשתמש במסוף Google Cloud כדי להעניק תפקידי IAM לזהות מאוחדת עם חשבון שירות, מבצעים את הפעולות הבאות:

חשבון שירות באותו פרויקט

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

    1. עוברים לדף Workload Identity Pools.

      לדף Workload Identity Pools

    2. לוחצים על הענקת גישה.

    3. בתיבת הדו-שיח Grant access to service account, בוחרים באפשרות Grant access using Service Account impersonation.

    4. ברשימה Service accounts, בוחרים את חשבון השירות שאליו הזהויות החיצוניות יתחזו, ומבצעים את הפעולות הבאות:

    5. כדי לבחור אילו זהויות מהמאגר יכולות להתחזות לחשבון השירות, מבצעים את אחת מהפעולות הבאות:

      • כדי לאפשר רק לזהויות ספציפיות ממאגר הזהויות של עומסי העבודה להתחזות לחשבון השירות, בוחרים באפשרות Only identities matching the filter.

      • ברשימה שם מאפיין, בוחרים את המאפיין שרוצים לסנן לפיו.

      • בשדה Attribute value, מזינים את הערך הצפוי של המאפיין; לדוגמה, אם משתמשים במיפוי מאפיין google.subject=assertion.sub, מגדירים את Attribute name להיות subject ואת Attribute value לערך של ההצהרה sub באסימונים שהונפקו על ידי ספק הזהויות החיצוני.

    6. כדי לשמור את ההגדרות, לוחצים על Save ואז על Dismiss.

חשבון שירות בפרויקט אחר

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

    1. עוברים לדף Service Accounts.

      לדף Service accounts

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

    3. לוחצים על ניהול הגישה.

    4. לוחצים על Add principal.

    5. בשדה New principal, מזינים אחד ממזהי הגורמים המורשים הבאים של הזהויות במאגר שיתחזו לחשבון השירות.

      לפי נושא

      principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT
      

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

      • ‫PROJECT_NUMBER: מספר הפרויקט
      • ‫POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה
      • ‫SUBJECT: הנושא האישי שמופה מה-IdP, לדוגמה: administrator@example.com

      לפי קבוצה

      principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP
      

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

      • ‫PROJECT_NUMBER: מספר הפרויקט
      • ‫WORKLOAD_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה
      • ‫GROUP: הקבוצה שממופה מה-IdP. לדוגמה: administrator-group@example.com

      לפי תכונה

      principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
      

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

      • ‫PROJECT_NUMBER: מספר הפרויקט
      • ‫WORKLOAD_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה
      • ‫ATTRIBUTE_NAME: אחד מהמאפיינים שמופו מה-IdP
      • ‫ATTRIBUTE_VALUE: הערך של המאפיין

      לפי בריכה

      principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/*
      

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

      • ‫PROJECT_NUMBER: מספר הפרויקט
      • ‫WORKLOAD_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה
    6. ברשימת התפקידים Select a role (בחירת תפקיד), בוחרים את התפקיד Workload Identity User (משתמש ב-Workload Identity) ‏(roles/iam.workloadIdentityUser).

    7. כדי לשמור את ההגדרות, לוחצים על Save.

gcloud

כדי להקצות את התפקיד Workload Identity User ‏ (roles/iam.workloadIdentityUser) לחשבון משתמש מאוחד או לקבוצת חשבונות משתמשים מאוחדים, מריצים את הפקודה הבאה. מידע נוסף על מזהי ישויות מורשות של איחוד שירותי אימות הזהות של עומסי עבודה זמין במאמר סוגי חשבון משתמש.

לפי נושא

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
    --role=roles/iam.workloadIdentityUser \
    --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"

לפי קבוצה

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
    --role=roles/iam.workloadIdentityUser \
    --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"

לפי תכונה

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
    --role=roles/iam.workloadIdentityUser \
    --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"

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

  • SERVICE_ACCOUNT_EMAIL: כתובת האימייל של חשבון השירות
  • ‫PROJECT_NUMBER: מספר הפרויקט שמכיל את מאגר הזהויות של עומסי העבודה.
  • ‫POOL_ID: מזהה מאגר הזהויות של עומסי העבודה
  • ‫SUBJECT: הערך הצפוי של המאפיין שמיפיתם ל-google.subject
  • ‫GROUP: הערך הצפוי של המאפיין שמיפיתם ל-google.groups
  • ‫ATTRIBUTE_NAME: השם של המאפיין בהתאמה אישית במיפוי המאפיינים שלכם
  • ‫ATTRIBUTE_VALUE: הערך של המאפיין בהתאמה אישית במיפוי המאפיינים שלכם

הורדת ההגדרות

כדי שעומס העבודה יוכל לגשת לספריות לקוח, קודם צריך להוריד ולהגדיר Application Default Credentials ‏ (ADC) באופן הבא:

  1. במסוף Google Cloud , עוברים לדף Workload Identity Pools.

    לדף Workload Identity Pools
  2. בטבלה, בוחרים את המאגר כדי לעבור לדף הפרטים של המאגר.

  3. לוחצים על הענקת גישה.

  4. בוחרים באפשרות Grant access using federated identities (מתן גישה באמצעות זהויות מאוחדות) (מומלץ).

  5. כדי להוריד את Application Default Credential ‏ (ADC) כדי שעומס העבודה יוכל לגשת לספריות לקוח, צריך לבצע את הפעולות הבאות:

    1. לוחצים על הורדת ההגדרות.

    2. בתיבת הדו-שיח Configure your application, מבצעים את הפעולות הבאות:

      1. ברשימה הנפתחת ספק, בוחרים את הספק הרצוי.

      2. בשדה OIDC token path או SAML assertion path, מזינים את הנתיב שבו נמצא האסימון או טענת הנכונות.

      3. ברשימה הנפתחת סוג הפורמט, בוחרים את הפורמט.

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