כדי להפעיל את Service Control API לשירות מנוהל, למי שמבצע את הקריאה צריכות להיות בשירות את ההרשאות הבאות לניהול זהויות והרשאות גישה (IAM):
- ל-
services.checkנדרשת ההרשאהservicemanagement.services.check. - ל-
services.reportנדרשת ההרשאהservicemanagement.services.report. - ל-
services.allocateQuotaנדרשת ההרשאהservicemanagement.services.quota.
תפקידי ה-IAM roles/servicemanagement.serviceController, roles/owner ו-roles/editor כוללים את ההרשאות האלו, ואפשר להשתמש בכל אחד מהם כדי להעניק את ההרשאות. מומלץ להשתמש בתפקיד ה-IAM roles/servicemanagement.serviceController להרצת השירותים המנוהלים. אמנם roles/owner ו-roles/editor גם מעניקים את ההרשאות האלו, אבל מטעמי אבטחה התפקיד הצר עדיף יותר.
מודל של משאבים
IAM מחיל מדיניות על המשאבים כדי לקבוע מי יכול לבצע פעולות כלשהן לגבי המשאבים. כדי להעניק פונקציונליות, ב-Service Control API נעשה שימוש במשאבים הבאים:
- פרויקט לשירות מנוהל: פרויקט שירות מנוהל יכול להיות עם או בלי שירותים מנוהלים. פרויקט לשירות מנוהל הוא ההורה של השירותים בהיררכיה הזו.
- שירות מנוהל: שירות מנוהל יכול להיות עם או בלי צרכני שירותים.
- צרכן שירות: צרכן שירות מתייחס לGoogle Cloud פרויקט שבו השירות הופעל.
בקרת הגישה ב-IAM מוחלת על מודל המשאבים. אם מקצים תפקיד ברמת הפרויקט לשירות מנוהל, הוא משפיע על כל השירותים שבבעלות הפרויקט המנוהל. אם מקצים תפקיד ברמת השירות המנוהל, הוא משפיע על כל צרכני השירות של השירות המנוהל.
מטעמי אבטחה ובידוד, מומלץ מאוד ליצור רק שירות מנוהל אחד לכל פרויקט לשירות מנוהל. אחרת, אם לדוגמה בפרויקט לשירות מנוהל מוצתה המכסה לשליחת בקשות ל-Service Control API, הרבה שירותים מנוהלים יושפעו מכך.
אם אתם משתמשים בשירות רב-דיירים (multi-tenant), עליכם להקצות את התפקיד roles/servicemanagement.serviceController ברמת השירות המנוהל. לעומת זאת, אם אתם משתמשים בשירות של דייר יחיד, כלומר בשירות שבו לכל צרכן מוקצית מכונה נפרדת בשירות המנוהל, עליכם להקצות את התפקיד ברמת צרכן השירות. לגבי עיבוד נתוני רקע המשפיע על כל צרכני השירות, עליכם להקצות את התפקיד ברמת השירות המנוהל.
הקצאת תפקידים
כדי לקרוא ל-Service Control API, עליכם להקצות למבצעי הקריאה את התפקידים הנדרשים. אפשר להקצות את התפקידים באחת משלוש הגישות הבאות. כדי להקצות את התפקידים הנדרשים, עליכם להיות מוגדרים כבעלים של הפרויקט לשירות מנוהל.
הקצאת תפקיד ברמת פרויקט לשירות מנוהל
אפשר להקצות את התפקידים הנדרשים לפרויקט שאליו שייך שירות מנוהל, בהתאם להוראות בנושא הקצאה, שינוי וביטול של גישה למשאבים, או לחלופין להקצות את התפקידים באמצעות הפקודה add-iam-policy-binding ב-Google Cloud CLI.
לדוגמה, תוכלו להקצות את התפקידים לחשבון שירות כמו foo@developer.gserviceaccount.com:
gcloud projects add-iam-policy-binding PRODUCER_PROJECT_ID --member serviceAccount:SERVICE_ACCOUNT --role roles/servicemanagement.serviceController
באופן דומה, תוכלו להקצות את התפקידים לחשבון משתמש כמו bar@gmail.com:
gcloud projects add-iam-policy-binding PRODUCER_PROJECT_ID --member user:USER_ACCOUNT --role roles/servicemanagement.serviceController
הקצאת תפקיד ברמת השירות
אפשר להקצות את התפקיד roles/servicemanagement.serviceController ברמת השירות באמצעות curl. בדוגמה הבאה משתמשים בכינוי gcurl, שמוגדר על ידי הפעלת הפקודה alias הבאה עם טוקן אימות:
alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
gcurl -d "{
'policy': {
'bindings': [ {
role: 'roles/servicemanagement.serviceController',
members: 'serviceAccount:SERVICE_ACCOUNT'
} ]
}
}" https://servicemanagement.googleapis.com/v1/services/YOUR_SERVICE_NAME:setIamPolicy
הקצאת תפקיד ברמת צרכן השירות
אפשר להקצות את התפקיד roles/servicemanagement.serviceController ברמת צרכן השירות. לפי ההרשאות ברמת צרכן השירות, הבקשה ל-Service Control API חייבת להכיל לפחות מזהה פרויקט אחד או יותר. בדוגמה הבאה משתמשים בכינוי gcurl, שמוגדר על ידי הפעלת הפקודה alias הבאה עם טוקן אימות:
alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
gcurl -d "{
'policy': {
'bindings': [ {
role: 'roles/servicemanagement.serviceController',
members: 'serviceAccount:SERVICE_ACCOUNT'
} ]
}
}" https://servicemanagement.googleapis.com/v1/services/YOUR_SERVICE_NAME/consumers/CONSUMER_PROJECT_NUMBER:setIamPolicy
מידע נוסף זמין במדריך האימות של Cloud.