הקצאה וביטול של תפקידי 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 במכונה או במאגר, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-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 את התפקיד Instance Accessor ‏ (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@appspot.gserviceaccount.com.

    {
    "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@appspot.gserviceaccount.com"
            ]
        }
        ]
    }
    }
    
  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, או להשתמש ב-API של Secure Source Manager כדי לעדכן את מדיניות ההרשאות של המאגר. כדי להקצות תפקידים במאגר לקבוצות, צריך להשתמש ב-Secure Source Manager API.

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

ממשק אינטרנט

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

  1. עוברים אל כתובת ה-URL של המכונה שסופקה על ידי איש הקשר שלכם ב-Google.
  2. בדף My repositories (המאגרים שלי), בוחרים את המאגר הרצוי.
  3. לוחצים על הכרטיסייה Permissions.
  4. בקטע People and permissions (אנשים והרשאות), לוחצים על Add users (הוספת משתמשים).
  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@appspot.gserviceaccount.com.

    {
    "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@appspot.gserviceaccount.com"
            ]
        }
        ]
    }
    }
    
  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 מזהה המאגר.

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