במסמך הזה נסביר איך להעניק תפקידים והרשאות בניהול הזהויות והרשאות הגישה (IAM) כדי לתמוך בניתוב אירועים באמצעות Eventarc מ-Google Cloud וממקורות אחרים ליעדים ב-GKE, כולל נקודות הקצה הציבוריות של שירותים פרטיים וציבוריים שפועלים באשכול GKE.
הענקת הרשאות ברמת הפרויקט לחשבון הראשי שמפעיל את ממשקי ה-API של Eventarc (לדוגמה, יוצר טריגר Eventarc):
- התפקיד Eventarc Admin מאפשר לכם שליטה מלאה בכל המשאבים של Eventarc, כולל ציון חשבון שירות לטריגר כשאתם יוצרים אותו.
- התפקיד משתמש בחשבון שירות מאפשר לחשבון משתמש להתחזות לחשבון שירות ולהשתמש בו. חשבון השירות משויך לטריגר Eventarc ומייצג את הזהות של הטריגר.
מתן הרשאות להפעלת Eventarc לחשבון השירות של הטריגר:
- ההרשאה Eventarc Event Receiver מאפשרת לטריגר Eventarc לקבל אירועים מספקי אירועים. אין צורך להקצות את התפקיד אם אתם מעבירים אירועים ישירים מ-Cloud Pub/Sub.
- התפקיד Pub/Sub Subscriber מאפשר לטריגר Eventarc לצרוך הודעות מ-Pub/Sub ולצרף מינויים לנושא.
- התפקיד Monitoring Metric Writer מאפשר למעביר האירועים של Eventarc לכתוב מדדים באמצעות Cloud Monitoring ומערכות אחרות שמספקות מדדים.
מתן הרשאות לסוכני שירות של Google:
- אם אתם יוצרים טריגר לאירועים ישירים מ-Cloud Storage, צריך להעניק את התפקיד Pub/Sub Publisher.
- אם הפעלתם את סוכן השירות של Cloud Pub/Sub ב-8 באפריל 2021 או לפני כן, צריך להקצות את התפקיד יצירת אסימונים בחשבון שירות.
במאמר ניהול גישה מוסבר איך נותנים תפקידי IAM. יכול להיות שתוכלו לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
מתן הרשאות ברמת הפרויקט
אם אתם יוצרי הפרויקט, מוקצה לכם תפקיד הבעלים הבסיסי (roles/owner). כברירת מחדל, התפקיד הזה כולל את ההרשאות שנדרשות לגישה מלאה לרוב המשאביםGoogle Cloud . אחרת, אדמין צריך להקצות את התפקידים הנדרשים לחשבון המשתמש המתאים (שנקרא גם חבר) במשאב המתאים.
לדוגמה, חשבון משתמש יכול להיות חשבון Google (למשתמשי קצה) או חשבון שירות (לאפליקציות ולעומסי עבודה ממוחשבים). לכל חשבון משתמש יש מזהה משלו, שהוא בדרך כלל כתובת אימייל.
התפקיד Eventarc Admin (
roles/eventarc.admin) מאפשר שליטה מלאה בכל המשאבים של Eventarc.הקצאת התפקיד בפרויקט:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=roles/eventarc.admin
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
PRINCIPAL: מזהה של יוצר הטריגר. בדרך כלל בצורה הבאה:PRINCIPAL_TYPE:ID. לדוגמה:user:my-user@example.com. רשימה מלאה של הערכים האפשריים שלPRINCIPAL_TYPEזמינה במאמרי העזרה בנושא קישור מדיניות.
-
התפקיד 'משתמש בחשבון שירות' (
roles/iam.serviceAccountUser) מאפשר לחשבון משתמש להריץ פעולות בתור חשבון שירות.כשיוצרים טריגר של Eventarc, צריך את התפקיד הזה כדי שאפשר יהיה לשייך לחשבון שירות שמנוהל על ידי משתמש את הטריגר, שמייצג את הזהות שלו. מידע נוסף מופיע במאמר תפקידים לאימות חשבון שירות.
אפשר להעניק את התפקיד בפרויקט כדי לאפשר לחשבון המשתמש להתחזות לכמה חשבונות שירות, או להעניק את התפקיד בחשבון השירות כדי לאפשר לחשבון המשתמש להתחזות רק לחשבון שירות ספציפי.
הקצאת התפקיד בפרויקט:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=roles/iam.serviceAccountUser
אפשר גם להקצות את התפקיד לחשבון השירות:
gcloud iam service-accounts add-iam-policy-binding \ projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member=PRINCIPAL \ --role=roles/iam.serviceAccountUser
מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE_ACCOUNT_PROJECT_ID: Google Cloud מזהה הפרויקט שמכיל את חשבון השירות. -
SERVICE_ACCOUNT_NAME: השם של חשבון השירות. ## מתן הרשאות להפעלת Eventarc
-
כל טריגר של Eventarc משויך לחשבון שירות של IAM בזמן יצירת הטריגר. אתם יכולים לציין חשבון שירות שמנוהל על ידי משתמש, שישמש את הטריגר כזהות ברירת המחדל שלו. אם לא מציינים חשבון שירות במהלך יצירת הטריגר, הטריגר משתמש בחשבון השירות שמוגדר כברירת מחדל של Compute Engine לזהות שלו.
מומלץ ליצור חשבון שירות משלכם בניהול המשתמשים כדי לקבל יותר שליטה וגמישות בניהול הטריגר.
יוצרים חשבון שירות ורושמים את השם שלו:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE_ACCOUNT_NAME: השם של חשבון השירות. השם הזה מופיע כחלק מכתובת האימייל שמזהה את חשבון השירות. DESCRIPTION: תיאור אופציונלי של חשבון השירותDISPLAY_NAME: השם של חשבון השירות שיופיע ב Google Cloud מסוף
-
מקצים לחשבון השירות שמשויך לטריגר Eventarc את התפקיד 'מקבל אירועים ב-Eventarc' (
roles/eventarc.eventReceiver) בפרויקט, כדי שתהיה לו אפשרות לקבל אירועים מספקי אירועים.שימו לב שלא צריך להעניק את התפקיד Eventarc Event Receiver אם אתם מבצעים ניתוב של אירועים ישירים מ-Cloud Pub/Sub.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/eventarc.eventReceiver
מחליפים את
SERVICE_ACCOUNT_NAMEבשם של חשבון השירות שרשמתם בשלב הקודם.מקצים את התפקיד 'מינוי ל-Pub/Sub' (
roles/pubsub.subscriber) בפרויקט לחשבון השירות שמשויך לטריגר Eventarc, כדי שיוכל לצרוך הודעות מ-Pub/Sub ולצרף מינויים לנושא.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/pubsub.subscriber
מחליפים את
SERVICE_ACCOUNT_NAMEבשם של חשבון השירות שרשמתם קודם.נותנים לחשבון השירות שמשויך לטריגר Eventarc את התפקיד Monitoring Metric Writer (
roles/monitoring.metricWriter) בפרויקט, כדי שמעביר האירועים של Eventarc יוכל לכתוב מדדים באמצעות Cloud Monitoring ומערכות אחרות שמספקות מדדים.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.metricWriter
מתן הרשאות לסוכני שירות של Google
חלק מה Google Cloud שירותים כוללים סוכני שירות שמאפשרים לשירותים לגשת למשאבים שלכם. אם ממשק API דורש סוכן שירות, Google יוצרת את סוכן השירות אחרי שמפעילים את ממשק ה-API ומשתמשים בו.
אם יוצרים טריגר לאירועים ישירים מ-Cloud Storage, כדי לתמוך בפרסום הודעות בנושא, צריך להעניק את התפקיד 'פרסום הודעות ב-Pub/Sub' (
roles/pubsub.publisher) בפרויקט לסוכן השירות של Cloud Storage:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com \ --role=roles/pubsub.publisher
מחליפים את
PROJECT_NUMBERבמספר הפרויקט ב- Google Cloud. אפשר לראות את מספר הפרויקט בדף Welcome במסוף Google Cloud או על ידי הרצת הפקודה הבאה:gcloud projects describe PROJECT_ID --format='value(projectNumber)'
אם הפעלתם את סוכן השירות של Cloud Pub/Sub ב-8 באפריל 2021 או לפני כן, כדי לתמוך בבקשות push מאומתות של Pub/Sub, צריך להעניק את התפקיד 'יצירת אסימונים בחשבון שירות' (
roles/iam.serviceAccountTokenCreator) בפרויקט לסוכן השירות של Pub/Sub. אחרת, התפקיד הזה מוענק כברירת מחדל:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
המאמרים הבאים