כדי לשלוט בגישה למשאבים ב- Google Cloud, משתמשים בניהול זהויות והרשאות גישה (IAM). באמצעות IAM אתם מגדירים הרשאות שמפרטות למי יש איזה סוג של גישה למשאבים בפרויקט. למבוא ל-IAM, ראו סקירה כללית על IAM.
כשפורסים משאבים, אפשר גם לקבוע למי יש גישה למשאבים האלה על ידי הגדרה מראש של מדיניות IAM בהגדרה. לדוגמה, אם אתם מתכננים ליצור נושאים ב-Pub/Sub שמשתמשים ספציפיים יכולים לנהל, אתם יכולים לציין מדיניות IAM בהגדרה שלכם כדי להעביר את המידע הזה ל-Deployment Manager. כשיוצרים או מעדכנים פריסה, Deployment Manager קורא ל-IAM API כדי להגדיר את ההרשאות המתאימות במשאב.
לפני שמתחילים
- אם רוצים להשתמש בדוגמאות לשורת הפקודה במדריך הזה, צריך להתקין את כלי שורת הפקודה`gcloud`.
- כדי להשתמש בדוגמאות ל-API במדריך הזה, צריך להגדיר גישה ל-API.
שימוש במדיניות IAM ב-Deployment Manager
מדיניות IAM היא אוסף של משתמשים והתפקידים שלהם. מגדירים מדיניות IAM ברמת הפרויקט באמצעות תפקידים בסיסיים או מוגדרים מראש. בחלק מהשירותים, כמו Cloud Pub/Sub, אפשר גם להגדיר מדיניות IAM ברמת המשאב.
אם שירות לא תומך בהגדרת מדיניות IAM ברמת המשאב, Deployment Manager מחזיר שגיאת NO_METHOD_TO_UPDATE_ACCESS_CONTROL.
רשימת התפקידים והמשאבים שאפשר להחיל אותם עליהם מופיעה במאמר הסבר על התפקידים.
הענקת הרשאה ל-Deployment Manager להגדיר מדיניות IAM
Deployment Manager משתמש בחשבון השירות ב-Google APIs כדי לקרוא לממשקי API אחרים של Google ולנהל משאבי Google Cloud בשמכם. אתם צריכים להקצות לחשבון השירות של Google APIs בפרויקט את התפקיד הבסיסי roles/owner כדי שהוא יוכל להחיל את מדיניות ה-IAM שאתם מגדירים בהגדרות.
- עוברים לדף IAM במסוף Google Cloud של הפרויקט.
- אם מתבקשים, בוחרים את הפרויקט מהרשימה.
מחפשים את חשבון השירות של Google APIs, עם כתובת אימייל בפורמט הבא:
[PROJECT_NUMBER]@cloudservices.gserviceaccount.comמקצים לחשבון השירות של ממשקי ה-API את התפקידים
roles/owner:המסוף
- במסוף Google Cloud , מרחיבים את התפריט הנפתח תפקידים של חשבון השירות של Google APIs ובוחרים באפשרות פרויקט > בעלים.
- לוחצים על Save כדי לשמור את השינויים.
gcloud
בעזרת Google Cloud CLI, מוסיפים קשר למדיניות IAM של הפרויקט:
gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member serviceAccount:[SERVICE_ACCOUNT_EMAIL] --role roles/ownerwhere:
-
[PROJECT_ID]הוא מזהה הפרויקט. -
[SERVICE_ACCOUNT_EMAIL]היא כתובת האימייל של חשבון השירות.
לדוגמה:
gcloud projects add-iam-policy-binding database-images \ --member serviceAccount:123456789012@cloudservices.gserviceaccount.com \ --role roles/ownerAPI
ב-API, שולחים בקשת
POSTלכתובת ה-URL הבאה, כאשר[PROJECT_ID]הוא מזהה הפרויקט:POST https://cloudresourcemanager.googleapis.com/v1/projects/$[PROJECT_ID]:setIamPolicyגוף הבקשה צריך להכיל את רשימת ההתאמות שרוצים להחיל על הפרויקט הזה. התפקיד
roles/ownerצריך להיות חלק מהקישור. לדוגמה:{ "policy": { "version": "0", "bindings": [ { "role": "roles/owner", "members": [ "user:example@gmail.com", "serviceAccount:123456789012@cloudservices.gserviceaccount.com" ] } ] } }
הגדרת מדיניות IAM בהגדרות
בשלב הבא, בהגדרה או בתבנית, אפשר להגדיר מדיניות IAM לפי ההוראות הבאות:
מוסיפים את הקטע
accessControlלהגדרות ברמה העליונה של כל משאב שרוצים להחיל עליו מדיניות של בקרת גישה.מציינים את
gcpIamPolicyהרצוי למשאב. כל מדיניות IAM יכולה להכיל רשימה של קישורים. כל קישור מגדיר קשר בין רשימה של חברים לתפקיד.אם אתם משתמשים ב-
accessControlכדי לנהל חשבונות שירות, כאן אפשר לקרוא מידע נוסף על ניהול חשבונות שירות.
לדוגמה, בקטע accessControl הבא נוספים קישורים שמעניקים את התפקידים האלה למשתמשים:
| משתמש | תפקיד |
|---|---|
alice@example.com |
roles/pubsub.editor |
|
roles/pubsub.publisher |
resources:
- name: a-new-pubsub-topic
type: pubsub.v1.topic
properties:
...
accessControl:
gcpIamPolicy:
bindings:
- role: roles/pubsub.editor
members:
- "user:alice@example.com"
- role: roles/pubsub.publisher
members:
- "user:jane@example.com"
- "serviceAccount:my-other-app@appspot.gserviceaccount.com"
למידע נוסף על מדיניות IAM, קראו את המסמכים בנושא IAM.