הקצאה וביטול של תפקידי IAM

בדף הזה מוסבר איך להקצות תפקידים של ניהול זהויות והרשאות גישה (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.

ציון חשבונות משתמשים

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

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

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

    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.
  2. כדי לבטל תפקיד של חשבון ראשי במכונה, מריצים את הפקודה הבאה:

    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

  1. מריצים את הפקודה הבאה של 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="
    }
    
  2. באופן פרוגרמטי או באמצעות כלי לעריכת טקסט, משנים את העותק המקומי של מדיניות ההרשאה של המכונה כך שישקף את התפקידים שרוצים להקצות או לבטל.

    כדי לוודא שאתם לא דורסים שינויים אחרים שנעשו, אל תערכו או תסירו את השדה 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@"
            ]
        }
        ]
    }
    }
    
  3. אחרי שמשנים את מדיניות ההרשאות ונותנים או מבטלים את התפקידים הרצויים, צריך לבצע קריאה אל 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.

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

ממשק אינטרנט

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

  1. עוברים לכתובת ה-URL של המכונה שקיבלתם מאיש הקשר שלכם ב-Google.
  2. בדף My repositories, בוחרים את המאגר.
  3. לוחצים על הכרטיסייה Permissions.
  4. בקטע משתמשים והרשאות, לוחצים על הוספת משתמשים.
  5. בשדה Add principal, מזינים את כתובת האימייל של המשתמש או של חשבון השירות שרוצים להקצות לו את התפקיד.
  6. בתפריט הקצאת תפקיד, בוחרים את התפקיד שרוצים להקצות.
  7. לוחצים על Save.

כדי להוסיף עוד תפקידים, לוחצים על סמל העריכה Edit ומוסיפים את התפקידים באמצעות התפריט Assign a role.

API

ה-method‏ repositories.getIamPolicy של Secure Source Manager API מחזירה את מדיניות ההרשאות של המאגר.

  1. מריצים את הפקודה הבאה של 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="
}
  1. באופן פרוגרמטי או באמצעות כלי לעריכת טקסט, משנים את העותק המקומי של מדיניות ההרשאות של המאגר שנשמר ב-/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@"
            ]
        }
        ]
    }
    }
    
  2. שומרים את קובץ ה-/tmp/repository.json שנערך.

  3. מגדירים את המדיניות החדשה באמצעות הפקודה 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 הוא מזהה המאגר.

המאמרים הבאים