בדף הזה מוסבר איך להקצות תפקידים של ניהול זהויות והרשאות גישה (IAM) לחשבונות משתמשים במשאבים של Secure Source Manager. במאמר ניהול הגישה לפרויקטים, לתיקיות ולארגונים מוסבר איך מקצים תפקידים במשאבים אחרים של Google Cloud .
למכונות ולמאגרים של Secure Source Manager יש תפקידים משלהם. בפעם הראשונה שאתם מקצים תפקידים למכונה בפרויקט, אתם צריכים להשתמש בכלי ה-CLI של gcloud או ב-API בארכיטקטורת REST. אתם יכולים להקצות תפקידים במאגר באמצעות הכלי של ה-CLI של gcloud, ה-API בארכיטקטורת REST או ממשק האינטרנט של Secure Source Manager.
אחרי שנותנים תפקיד ב-Secure Source Manager לפחות פעם אחת באמצעות הכלי של ה-CLI של gcloud, ממשק האינטרנט או ה-API בארכיטקטורת REST, אפשר לבחור את התפקיד במסוף Google Cloud כשנותנים גישה ברמת הפרויקט. עם זאת, הקצאות התפקידים הספציפיות ברמת המכונה וברמת המאגר (קישורים) לא מופיעות ברשימת החשבונות הראשיים בדף IAM במסוף Google Cloud ברמת הפרויקט.
התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות לעדכון מדיניות ה-IAM במכונה או במאגר, בקשו מהאדמין להקצות לכם את התפקידים הבאים ב-IAM:
-
מקצים תפקידי IAM למכונה:
בעלים של מכונה ב-Secure Source Manager (
roles/securesourcemanager.instanceOwner) במכונה של Secure Source Manager -
הקצאת תפקידי IAM למאגר: אדמין של מאגר Secure Source Manager (
roles/securesourcemanager.repoAdmin) במאגר
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
במאמרים בקרת גישה באמצעות IAM ומתן גישה למשתמשים במכונה מוסבר איך נותנים תפקידים ב-Secure Source Manager.
ציון חשבונות משתמשים
חשבון משתמש מייצג זהות שיכולה לגשת למשאב. לכל חשבון משתמש יש מזהה משלו. מזהי החשבונות הראשיים מופיעים בפורמט הבא:
PRINCIPAL-TYPE:ID
לדוגמה, user:my-user@example.com. למידע נוסף על חשבונות משתמשים, קראו את המאמר איך IAM עובד.
בחשבון משתמש מסוג user, שם הדומיין במזהה צריך להיות דומיין של Google Workspace או דומיין של Cloud Identity, אלא אם אתם משתמשים באיחוד שירותי אימות הזהות של כוח העבודה. במאמר סקירה כללית של Cloud Identity מוסבר איך מגדירים דומיין ב-Cloud Identity.
חשבונות משתמשים באיחוד שירותי אימות הזהות של כוח העבודה
אם אתם משתמשים באיחוד שירותי אימות הזהות של כוח העבודה כדי לגשת ל-Secure Source Manager, חשבונות המשתמשים מיוצגים באופן שונה. למידע נוסף על מתן גישה לחשבונות משתמשים שמייצגים קבוצות של זהויות, קראו את המאמר ייצוג המשתמשים במאגרי כוח עבודה בכללי מדיניות IAM.
לדוגמה, הפקודה הבאה נותנת למשתמש user@example.com את התפקיד "גישה למכונה" (roles/securesourcemanager.instanceAccessor) במאגר כוח העבודה my-pool במכונה my-instance בפרויקט my-project באזור us-central1:
gcloud source-manager instances add-iam-policy-binding my-instance \
--project=my-project \
--region=us-central1 \
--member=principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com \
--role=roles/securesourcemanager.instanceAccessor
אתם יכולים להקצות למשתמשים או לקבוצות במאגר הזהויות של כוח העבודה, על סמך המאפיינים של ספק הזהויות (IdP), או להשתמש ב-Common Expression Language (CEL) כדי למפות את מאפייני ה-OIDC למאפיינים בהתאמה אישית, כדי להגדיר אסטרטגיית הרשאות במדיניות ה-IAM. מידע נוסף על מיפוי מאפיינים זמין במאמר מיפוי מאפיינים.
הקצאה או ביטול של תפקידים במכונה
כדי להקצות או לבטל תפקידים של מכונות לחשבונות משתמשים, משתמשים בכלי ה-CLI של gcloud או ב-Secure Source Manager API.
gcloud
כדי להקצות תפקיד לחשבון משתמש במכונה, מריצים את הפקודה הבאה:
gcloud source-manager instances add-iam-policy-binding INSTANCE_ID \ --project=PROJECT_ID \ --region=REGION \ --member=PRINCIPAL \ --role=ROLE_NAMEמחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_IDבמזהה המכונה. -
PROJECT_IDבמזהה הפרויקט או במספר הפרויקט של המכונה. -
REGIONבאזור שבו נמצא המכונה. במסמכי התיעוד של המיקומים מפורטים האזורים שבהם Secure Source Manager זמין. -
PRINCIPALעם חשבון המשתמש שרוצים לתת לו את התפקיד. לדוגמה,user:my-user@example.com. -
ROLE_NAMEבשם התפקיד שרוצים להקצות. לדוגמה,roles/securesourcemanager.instanceOwner.
-
כדי לבטל תפקיד של חשבון ראשי במכונה, מריצים את הפקודה הבאה:
gcloud source-manager instances remove-iam-policy-binding INSTANCE_ID \ --project=PROJECT_ID \ --region=REGION \ --member=PRINCIPAL \ --role=ROLE_NAMEמחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_IDבמזהה המכונה. -
PROJECT_IDבמזהה הפרויקט או במספר הפרויקט של המכונה. -
REGIONבאזור שבו נמצא המכונה. -
PRINCIPAL: החשבון הראשי שרוצים לבטל את התפקיד שלו. לדוגמה,user:my-user@example.com. -
ROLE_NAMEבשם התפקיד שרוצים לבטל. לדוגמה,roles/securesourcemanager.instanceOwner.
-
API
מריצים את הפקודה הבאה של
instances.getIamPolicyכדי לקרוא את המדיניות הנוכחית:curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_ID:getIamPolicy > /tmp/instance.jsonמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_IDמזהה הפרויקט או מספר הפרויקט של המכונה. -
REGIONהאזור שבו נמצא המכונה. במסמכי התיעוד של המיקומים מפורטים האזורים שבהם Secure Source Manager זמין. -
INSTANCE_IDמזהה המכונה.
הפלט יכלול את כל הקישורים הקיימים, או אם אין כאלה, את הערך
etag, בדומה לדוגמה הבאה:{ "etag": "BwUjHYKJUiQ=" }-
באופן פרוגרמטי או באמצעות כלי לעריכת טקסט, משנים את העותק המקומי של מדיניות ההרשאה של המכונה כך שישקף את התפקידים שרוצים להקצות או לבטל.
כדי לוודא שאתם לא דורסים שינויים אחרים שנעשו, אל תערכו או תסירו את השדה
etagבמדיניות ההרשאות. השדהetagמשמש לזיהוי המצב הנוכחי של מדיניות ההרשאות. כשאתם מגדירים את מדיניות ההרשאות המעודכנת, מתבצעת השוואה של הערך שלetagמהבקשה ב-IAM לערך הקיים שלetag. מדיניות ההרשאות תיכתב רק אם הערכים תואמים.כדי לערוך את התפקידים שהמדיניות מאפשרת, צריך לערוך את קישור התפקידים במדיניות ההרשאה. קישורי התפקידים מופיעים בפורמט הבא:
{ "role": "ROLE_NAME", "members": [ "PRINCIPAL_1", "PRINCIPAL_2", ... "PRINCIPAL_N" ] }מחליפים את ה-placeholders בערכים הבאים:
ROLE_NAME: שם התפקיד שרוצים לתת. צריך להשתמש בפורמט הבא:roles/securesourcemanager.IDENTIFIER
PRINCIPAL_1, PRINCIPAL_2ו-...PRINCIPAL_N: מזהי החשבונות הראשיים שאתם רוצים לתת להם את התפקיד.
לדוגמה, במדיניות הבאה, התפקיד
instanceOwnerמוקצה ל-user1@gmail.com, והתפקידinstanceManagerמוקצה למשתמשיםuser2@gmail.comו-user3@gmail.comולחשבון השירותmy-other-app@.{ "policy": { "etag": "BwUjHYKJUiQ=", "bindings": [ { "role": "roles/securesourcemanager.instanceOwner", "members": [ "user:user1@gmail.com" ] }, { "role": "roles/resourcemanager.instanceManager", "members": [ "user:user2@gmail.com", "user:user3@gmail.com", "serviceAccount:my-other-app@" ] } ] } }אחרי שמשנים את מדיניות ההרשאות ונותנים או מבטלים את התפקידים הרצויים, צריך לבצע קריאה אל
instances.setIamPolicy()כדי שהשינויים יתעדכנו.משתמשים בפקודה
instances.setIamPolicyהבאה כדי להגדיר את המדיניות החדשה במכונה.curl \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_ID:setIamPolicy \ -d @/tmp/instance.jsonמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_IDמזהה הפרויקט או מספר הפרויקט של המכונה. -
REGIONהאזור שבו נמצא המכונה. במסמכי התיעוד של המיקומים מפורטים האזורים שבהם Secure Source Manager זמין. -
INSTANCE_IDמזהה המכונה.
-
הקצאה או ביטול של תפקידים במאגר
כדי להקצות או לבטל תפקידים במאגר למשתמשים ולחשבונות שירות, אתם יכולים להקצות אותם מממשק האינטרנט של Secure Source Manager, או להשתמש ב-Secure Source Manager API כדי לעדכן את מדיניות ההרשאות של המאגר. כדי להקצות לקבוצות תפקידים במאגר, צריך להשתמש ב-Secure Source Manager API.
כדי להקצות למשתמשים תפקידים במאגר, צריך קודם להקצות להם תפקיד במכונה. מידע על הקצאת תפקידים במכונה מופיע במאמר הקצאה או ביטול של תפקידים במכונה.
ממשק אינטרנט
כדי להקצות למשתמשים או לחשבונות שירות תפקידים ברמת המאגר באמצעות ממשק האינטרנט:
- עוברים לכתובת ה-URL של המכונה שקיבלתם מאיש הקשר שלכם ב-Google.
- בדף My repositories, בוחרים את המאגר.
- לוחצים על הכרטיסייה Permissions.
- בקטע משתמשים והרשאות, לוחצים על הוספת משתמשים.
- בשדה Add principal, מזינים את כתובת האימייל של המשתמש או של חשבון השירות שרוצים להקצות לו את התפקיד.
- בתפריט הקצאת תפקיד, בוחרים את התפקיד שרוצים להקצות.
- לוחצים על Save.
כדי להוסיף עוד תפקידים, לוחצים על סמל העריכה Edit ומוסיפים את התפקידים באמצעות התפריט Assign a role.
API
ה-method repositories.getIamPolicy של Secure Source Manager API מחזירה את מדיניות ההרשאות של המאגר.
- מריצים את הפקודה הבאה של
repositories.getIamPolicyכדי לקרוא את המדיניות הנוכחית ולשמור אותה ב-/tmp/repository.json:
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://securesourcemanager.googleapis.com/v1/projects/REPOSITORY_PROJECT/locations/REGION/repositories/REPOSITORY_ID:getIamPolicy > /tmp/repository.json
מחליפים את מה שכתוב בשדות הבאים:
-
REPOSITORY_PROJECTמזהה הפרויקט או מספר הפרויקט של המאגר. -
REGIONהאזור שבו נמצא המאגר. -
REPOSITORY_IDהוא מזהה המאגר.
הפלט יכלול את כל הקישורים הקיימים, או אם אין כאלה, את הערך etag, בדומה לדוגמה הבאה:
{
"etag": "BwUjHYKJUiQ="
}
באופן פרוגרמטי או באמצעות כלי לעריכת טקסט, משנים את העותק המקומי של מדיניות ההרשאות של המאגר שנשמר ב-
/tmp/repository.json, כך שישקף את התפקידים שרוצים להקצות או לבטל.כדי לוודא שאתם לא דורסים שינויים אחרים שנעשו, אל תערכו או תסירו את השדה
etagבמדיניות ההרשאות. השדהetagמשמש לזיהוי המצב הנוכחי של מדיניות ההרשאות. כשאתם מגדירים את מדיניות ההרשאות המעודכנת, מתבצעת השוואה של הערך שלetagמהבקשה ב-IAM לערך הקיים שלetag. מדיניות ההרשאות תיכתב רק אם הערכים תואמים.כדי לערוך את התפקידים שהמדיניות מאפשרת, צריך לערוך את קישור התפקידים במדיניות ההרשאה. קישורי התפקידים מופיעים בפורמט הבא:
{ "role": "ROLE_NAME", "members": [ "PRINCIPAL_1", "PRINCIPAL_2", ... "PRINCIPAL_N" ] }מחליפים את ה-placeholders בערכים הבאים:
ROLE_NAME: שם התפקיד שרוצים לתת. צריך להשתמש בפורמט הבא:roles/securesourcemanager.<var>IDENTIFIER</var>
PRINCIPAL_1, PRINCIPAL_2ו-...PRINCIPAL_N: מזהי החשבונות הראשיים שאתם רוצים לתת להם את התפקיד.
בדוגמה הבאה, התפקיד
repoAdminמוקצה למשתמשemail1@gmail.com, והתפקידrepoWriterמוקצה למשתמשיםemail2@gmail.com,group1@gmail.comולחשבון השירותmy-other-app@.{ "policy": { "etag": "BwUjHYKJUiQ=", "bindings": [ { "role": "roles/securesourcemanager.repoAdmin", "members": [ "user:email1@gmail.com" ] }, { "role": "roles/resourcemanager.repoWriter", "members": [ "user:email2@gmail.com", "group:group1@gmail.com", "serviceAccount:my-other-app@" ] } ] } }שומרים את קובץ ה-
/tmp/repository.jsonשנערך.מגדירים את המדיניות החדשה באמצעות הפקודה
setIamPolicy:curl \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://securesourcemanager.googleapis.com/v1/projects/REPOSITORY_PROJECT/locations/REGION/repositories/REPOSITORY_ID:setIamPolicy \ -d @/tmp/repository.jsonמחליפים את מה שכתוב בשדות הבאים:
-
REPOSITORY_PROJECTמזהה הפרויקט או מספר הפרויקט של המאגר. -
REGIONהאזור שבו נמצא המאגר. במסמכי התיעוד של המיקומים מפורטים האזורים שבהם Secure Source Manager זמין. -
REPOSITORY_IDהוא מזהה המאגר.
-