בדיקה והחלה של המלצות לתפקידים במערכי נתונים של BigQuery

בדף הזה מוסבר איך לצפות בהמלצות לתפקידי IAM במערכי נתונים של BigQuery, להבין אותן וליישם אותן. ההמלצות לתפקידים עוזרות לכם לאכוף את העיקרון של הרשאות מינימליות, כי הן מבטיחות שלחשבונות משתמשים יהיו רק את ההרשאות שהם צריכים בפועל.

לפני שמתחילים

  • מפעילים את ממשקי ה-API של IAM ו-Recommender.

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, נדרשת ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק 'שימוש בשירות'' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    הפעלת ממשקי ה-API

  • מוודאים שהפעלתם את רמת Premium או Enterprise של Security Command Center ברמת הארגון או ברמת הפרויקט. מידע נוסף זמין במאמר שאלות בנושא חיוב.

  • הסבר על המלצות לגבי תפקידים

  • מגדירים אימות.

    צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:

    gcloud

    במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

    REST

    כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.

      התקינו את ה-CLI של Google Cloud.

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

    מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .

התפקידים שצריך ב-IAM

כדי לקבל את ההרשאות שדרושות לניהול המלצות לתפקידים ברמת מערך הנתונים, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

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

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

ההרשאות הנדרשות

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

  • כדי לראות את ההמלצות:
    • iam.roles.get בפרויקט
    • iam.roles.list בפרויקט
    • recommender.iamPolicyRecommendations.get בפרויקט
    • recommender.iamPolicyRecommendations.list בפרויקט
    • recommender.iamPolicyInsights.get בפרויקט
    • recommender.iamPolicyInsights.list בפרויקט
    • bigquery.datasets.getIamPolicy במערך הנתונים
  • כדי ליישם ולסגור המלצות:
    • recommender.iamPolicyRecommendations.update בפרויקט
    • bigquery.datasets.setIamPolicy במערך הנתונים

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

בדיקה ויישום של המלצות

אתם יכולים לבדוק ולהחיל המלצות לתפקידים ברמת מערך הנתונים באמצעות Google Cloud CLI ו-Recommender API.

gcloud

בדיקת ההמלצות:

כדי לראות את ההמלצות ברמת מערך הנתונים, מריצים את הפקודה gcloud recommender recommendations list ומסננים רק את ההמלצות למערך נתונים ב-BigQuery:

gcloud recommender recommendations list \
    --location=LOCATION \
    --recommender=google.iam.policy.Recommender \
    --project=PROJECT_ID \
    --format=json \
    --filter="recommenderSubtype:REMOVE_ROLE_BIGQUERY_DATASET OR recommenderSubtype:REPLACE_ROLE_BIGQUERY_DATASET"

מחליפים את הערכים הבאים:

  • LOCATION: האזור שבו נמצאים מערכי הנתונים של Cloud Storage – לדוגמה, us או us-central1.
  • PROJECT_ID: המזהה של Google Cloud הפרויקט שמכיל את מערכי הנתונים שלכם ב-BigQuery. מזהי פרויקטים הם מחרוזות אלפאנומריות, כמו my-project.

התגובה אמורה להיראות כך: בדוגמה הזו, לכל המשתמשים עם תפקיד העריכה בפרויקט my-project (projectEditor:my-project) יש את התפקיד BigQuery Data Editor (roles/bigquery.dataEditor) במערך הנתונים dataset-1. עם זאת, התפקיד הזה לא היה בשימוש ב-90 הימים האחרונים. כתוצאה מכך, ההמלצה לגבי התפקיד היא לבטל את התפקיד:

[
  {
    "associatedInsights": [
      {
        "insight": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/984eccca-0241-472f-baab-2557dd0d7282"
      }
    ],
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilters": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "projectEditor:my-project",
                "/iamPolicy/bindings/*/role": "roles/bigquery.dataEditor"
              },
              "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1",
              "resourceType": "bigquery.googleapis.com/Dataset"
            }
          ]
        }
      ],
      "overview": {
        "addedRoles": [],
        "member": "projectEditor:my-project",
        "minimumObservationPeriodInDays": "0",
        "removedRole": "roles/bigquery.dataEditor",
        "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1"
      }
    },
    "description": "This role has not been used during the observation window.",
    "etag": "\"3b123bc08d028128\"",
    "lastRefreshTime": "2024-02-04T08:00:00Z",
    "name": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/0e9831fe-6810-476b-b14d-2b64bda17288",
    "primaryImpact": {
      "category": "SECURITY",
      "securityProjection": {
        "details": {
          "revokedIamPermissionsCount": 37
        }
      }
    },
    "priority": "P4",
    "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET",
    "stateInfo": {
      "state": "ACTIVE"
    },
    "targetResources": [
      "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1"
    ]
  },
  {
    "associatedInsights": [
      {
        "insight": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/9d11057e-9c71-410f-ad55-fc82d87761d0"
      }
    ],
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilters": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "user:alicexz@google.com",
                "/iamPolicy/bindings/*/role": "roles/bigquery.dataOwner"
              },
              "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1",
              "resourceType": "bigquery.googleapis.com/Dataset"
            }
          ]
        }
      ],
      "overview": {
        "addedRoles": [],
        "member": "user:alicexz@google.com",
        "minimumObservationPeriodInDays": "0",
        "removedRole": "roles/bigquery.dataOwner",
        "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1"
      }
    },
    "description": "This role has not been used during the observation window.",
    "etag": "\"1da285f7aa6438f1\"",
    "lastRefreshTime": "2024-02-04T08:00:00Z",
    "name": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/56013294-cf81-402a-8cde-25489545777c",
    "primaryImpact": {
      "category": "SECURITY",
      "securityProjection": {
        "details": {
          "revokedIamPermissionsCount": 64
        }
      }
    },
    "priority": "P4",
    "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET",
    "stateInfo": {
      "state": "ACTIVE"
    },
    "targetResources": [
      "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1"
    ]
  }
]

חשוב לבדוק היטב כל המלצה ולראות מתי היא עודכנה בפעם האחרונה ואיך היא תשנה את הגישה של חשבון המשתמש למשאבים. Google Cloud במאמר הזה מוסבר איך לבדוק המלצות באמצעות gcloud CLI.

כדי ליישם המלצה:

  1. כדי לשנות את הסטטוס של ההמלצה ל-CLAIMED,, שמונע שינוי של ההמלצה בזמן שאתם מיישמים אותה, משתמשים בפקודה gcloud recommender recommendations mark-claimed:

    gcloud recommender recommendations mark-claimed \
        RECOMMENDATION_ID \
        --location=LOCATION \
        --recommender=google.iam.policy.Recommender \
        --project=PROJECT_ID \
        --format=FORMAT \
        --etag=ETAG \
        --state-metadata=STATE_METADATA
    

    מחליפים את הערכים הבאים:

    • RECOMMENDATION_ID: המזהה הייחודי של ההמלצה. הערך הזה מופיע בסוף השדה name בהמלצה. לדוגמה, אם השדה name הוא projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f, מזהה ההמלצה הוא fb927dc1-9695-4436-0000-f0f285007c0f.
    • LOCATION: האזור שבו נמצא מערך הנתונים ב-BigQuery – למשל, us או us-central1.
    • PROJECT_ID: המזהה של Google Cloud הפרויקט שמכיל את מערכי הנתונים שלכם ב-BigQuery. מזהי פרויקטים הם מחרוזות אלפאנומריות, כמו my-project.
    • FORMAT: הפורמט של התגובה. אפשר להשתמש ב-json או ב-yaml.
    • ETAG: הערך של השדה etag בהמלצה, למשל "dd0686e7136a4cbb". שימו לב שהערך הזה יכול לכלול מירכאות.
    • STATE_METADATA: אופציונלי. צמדי מפתח/ערך מופרדים בפסיקים שמכילים את המטא-נתונים שבחרתם לגבי ההמלצה. לדוגמה, --state-metadata=reviewedBy=alice,priority=high. המטא-נתונים מחליפים את השדה stateInfo.stateMetadata בהמלצה.

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

    ...
    "priority": "P1",
    "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET",
    "stateInfo": {
      "state": "CLAIMED"
    }
    ...
  2. מאחזרים את מדיניות ההרשאות של מערך הנתונים, ואז משנים ומגדירים את מדיניות ההרשאות כך שתשקף את ההמלצה.

  3. עדכון המצב של ההמלצה ל-SUCCEEDED אם הצלחתם ליישם את ההמלצה, או ל-FAILED אם לא הצלחתם ליישם אותה:

    gcloud recommender recommendations COMMAND \
        RECOMMENDATION_ID \
        --location=LOCATION \
        --recommender=google.iam.policy.Recommender \
        --project=PROJECT_ID \
        --format=FORMAT \
        --etag=ETAG \
        --state-metadata=STATE_METADATA
    

    מחליפים את הערכים הבאים:

    • COMMAND: משתמשים בערך mark-succeeded אם הצלחתם ליישם את ההמלצה, או בערך mark-failed אם לא הצלחתם ליישם את ההמלצה.
    • RECOMMENDATION_ID: המזהה הייחודי של ההמלצה. הערך הזה מופיע בסוף השדה name בהמלצה. לדוגמה, אם השדה name הוא projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f, מזהה ההמלצה הוא fb927dc1-9695-4436-0000-f0f285007c0f.
    • LOCATION: האזור שבו נמצא מערך הנתונים ב-BigQuery – למשל, us או us-central1.
    • PROJECT_ID: המזהה של Google Cloud הפרויקט שמכיל את מערכי הנתונים שלכם ב-BigQuery. מזהי פרויקטים הם מחרוזות אלפאנומריות, כמו my-project.
    • FORMAT: הפורמט של התגובה. אפשר להשתמש ב-json או ב-yaml.
    • ETAG: הערך של השדה etag בהמלצה, למשל "dd0686e7136a4cbb". שימו לב שהערך הזה יכול לכלול מירכאות.
    • STATE_METADATA: אופציונלי. צמדי מפתח/ערך מופרדים בפסיקים שמכילים את המטא-נתונים שבחרתם לגבי ההמלצה. לדוגמה, --state-metadata=reviewedBy=alice,priority=high. המטא-נתונים מחליפים את השדה stateInfo.stateMetadata בהמלצה.

    לדוגמה, אם סימנתם שההמלצה יושמה בהצלחה, התגובה תציג את ההמלצה במצב SUCCEEDED. לשם הבהרה, בחרנו להשמיט את רוב השדות בדוגמה הזו:

    ...
    "priority": "P1",
    "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET",
    "stateInfo": {
      "state": "SUCCEEDED"
    }
    ...

REST

בדיקת ההמלצות:

כדי לראות את כל ההמלצות הזמינות למערכי הנתונים שלכם ב-BigQuery, משתמשים בשיטה recommendations.list של Recommender API.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: המזהה שלGoogle Cloud הפרויקט שמכיל את מערכי הנתונים שלכם ב-BigQuery. מזהי פרויקטים הם מחרוזות אלפאנומריות, כמו my-project.
  • LOCATION: האזור שבו נמצאים מערכי הנתונים ב-BigQuery – למשל, us או us-central1.
  • PAGE_SIZE: אופציונלי. המספר המקסימלי של תוצאות שיוחזרו מהבקשה הזו. אם לא מציינים ערך, השרת יקבע את מספר התוצאות שיוחזרו. אם מספר ההמלצות לא נכנס בדף אחד, התשובה תכיל אסימון עימוד שמשמש לטעינת דף התוצאות הבא.
  • PAGE_TOKEN: אופציונלי. אסימון החלוקה לדפים שהוחזר בתשובה הקודמת בשיטה הזו. אם יש אסימון כזה, רשימת ההמלצות תתחיל מהמקום שבו הסתיימה הבקשה הקודמת.
  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמו my-project.

שיטת ה-HTTP וכתובת ה-URL:

GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations?filter=recommenderSubtype%20%3D%20REMOVE_ROLE_BIGQUERY_DATASET%20OR%20recommenderSubtype%20%3D%20REPLACE_ROLE_BIGQUERY_DATASET&pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

התגובה אמורה להיראות כך: בדוגמה הזו, לכל המשתמשים עם תפקיד העריכה בפרויקט my-project‏ (projectEditor:my-project) יש את התפקיד BigQuery Data Editor‏ (roles/bigquery.dataEditor) במערך הנתונים dataset-1. עם זאת, התפקיד הזה לא היה בשימוש ב-90 הימים האחרונים. לכן, ההמלצה לגבי התפקיד היא לבטל אותו:

{
  "recommendations": [
    {
      "name": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/0e9831fe-6810-476b-b14d-2b64bda17288",
      "description": "This role has not been used during the observation window.",
      "lastRefreshTime": "2024-02-02T08:00:00Z",
      "primaryImpact": {
        "category": "SECURITY",
        "securityProjection": {
          "details": {
            "revokedIamPermissionsCount": 37
          }
        }
      },
      "content": {
        "operationGroups": [
          {
            "operations": [
              {
                "action": "remove",
                "resourceType": "bigquery.googleapis.com/Dataset",
                "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1",
                "path": "/iamPolicy/bindings/*/members/*",
                "pathFilters": {
                  "/iamPolicy/bindings/*/condition/expression": "",
                  "/iamPolicy/bindings/*/members/*": "projectEditor:my-project",
                  "/iamPolicy/bindings/*/role": "roles/bigquery.dataEditor"
                }
              }
            ]
          }
        ],
        "overview": {
          "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1",
          "member": "projectEditor:my-project",
          "removedRole": "roles/bigquery.dataEditor",
          "addedRoles": [],
          "minimumObservationPeriodInDays": "0"
        }
      },
      "stateInfo": {
        "state": "ACTIVE"
      },
      "etag": "\"d008ad3780bad5e0\"",
      "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET",
      "associatedInsights": [
        {
          "insight": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/984eccca-0241-472f-baab-2557dd0d7282"
        }
      ],
      "priority": "P4",
      "targetResources": [
        "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1"
      ]
    }
  ]
}

חשוב לבדוק היטב כל המלצה ולראות מתי היא עודכנה בפעם האחרונה ואיך היא תשנה את הגישה של חשבון המשתמש למשאבים. Google Cloud כדי ללמוד איך לבדוק המלצות מ-API בארכיטקטורת REST, ראו בדיקת המלצות בדף הזה.

כדי ליישם המלצה:

  1. מסמנים את ההמלצה כCLAIMED:

    כדי לסמן המלצה כCLAIMED, מה שמונע מההמלצה להשתנות בזמן שאתם מיישמים אותה, צריך להשתמש בשיטה recommendations.markClaimed של Recommender API.

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • PROJECT_ID: המזהה שלGoogle Cloud הפרויקט שמכיל את מערכי הנתונים שלכם ב-BigQuery. מזהי פרויקטים הם מחרוזות אלפאנומריות, כמו my-project.
    • LOCATION: האזור שבו נמצא מערך הנתונים ב-BigQuery – למשל, us או us-central1.
    • RECOMMENDATION_ID: המזהה הייחודי של ההמלצה. הערך הזה מופיע בסוף השדה name בהמלצה. לדוגמה, אם השדה name הוא projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f, מזהה ההמלצה הוא fb927dc1-9695-4436-0000-f0f285007c0f.
    • ETAG: הערך של השדה etag בהמלצה, למשל "dd0686e7136a4cbb". משתמשים בלוכסנים הפוכים כדי לסמן בתו בריחה (escape) מרכאות, לדוגמה, "\"df7308cca9719dcc\"".
    • STATE_METADATA: אופציונלי. אובייקט שמכיל צמדי מפתח/ערך עם מטא-נתונים לפי בחירתכם לגבי ההמלצה. לדוגמה, {"reviewedBy": "alice", "priority": "high"}. המטא-נתונים מחליפים את השדה stateInfo.stateMetadata בהמלצה.

    ה-method של ה-HTTP וכתובת ה-URL:

    POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markClaimed

    תוכן בקשת JSON:

    {
      "etag": "ETAG",
      "stateMetadata": {
        "STATE_METADATA"
      }
    }
    

    כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

    התגובה מציגה את ההמלצה במצב CLAIMED, כמו בדוגמה הבאה. לשם הבהרה, בחרנו להשמיט את רוב השדות בדוגמה הזו:

    ...
    "stateInfo": {
      "state": "CLAIMED"
    },
    "etag": "\"7caf4103d7669e12\"",
    "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET",
    ...
    

  2. מאחזרים את מדיניות ההרשאות של הפרויקט, ואז משנים את מדיניות ההרשאות כך שתשקף את ההמלצה.

  3. עדכון המצב של ההמלצה ל-SUCCEEDED אם הצלחתם ליישם את ההמלצה, או ל-FAILED אם לא הצלחתם ליישם אותה:

    SUCCEEDED

    כדי לסמן המלצה כSUCCEEDED, כלומר שהצלחתם ליישם אותה, משתמשים בשיטה recommendations.markSucceeded של Recommender API.

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • PROJECT_ID: המזהה שלGoogle Cloud הפרויקט שמכיל את מערכי הנתונים שלכם ב-BigQuery. מזהי פרויקטים הם מחרוזות אלפאנומריות, כמו my-project.
    • LOCATION: האזור שבו נמצא מערך הנתונים ב-BigQuery – למשל, us או us-central1.
    • RECOMMENDATION_ID: המזהה הייחודי של ההמלצה. הערך הזה מופיע בסוף השדה name בהמלצה. לדוגמה, אם השדה name הוא projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f, מזהה ההמלצה הוא fb927dc1-9695-4436-0000-f0f285007c0f.
    • ETAG: הערך של השדה etag בהמלצה, למשל "dd0686e7136a4cbb". משתמשים בלוכסנים הפוכים כדי לסמן בתו בריחה (escape) מרכאות, לדוגמה, "\"df7308cca9719dcc\"".
    • STATE_METADATA: אופציונלי. אובייקט שמכיל צמדי מפתח/ערך עם מטא-נתונים לפי בחירתכם לגבי ההמלצה. לדוגמה, {"reviewedBy": "alice", "priority": "high"}. המטא-נתונים מחליפים את השדה stateInfo.stateMetadata בהמלצה.

    ה-method של ה-HTTP וכתובת ה-URL:

    POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markSucceeded

    תוכן בקשת JSON:

    {
      "etag": "ETAG",
      "stateMetadata": {
        "STATE_METADATA"
      }
    }
    

    כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

    התגובה מציגה את ההמלצה במצב SUCCEEDED, כמו בדוגמה הבאה. לשם הבהרה, בחרנו להשמיט את רוב השדות בדוגמה הזו:

    ...
    "stateInfo": {
      "state": "SUCCEEDED"
    },
    "etag": "\"7caf4103d7669e12\"",
    "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET",
    ...
    

    FAILED

    כדי לסמן המלצה כFAILED, כלומר שלא הצלחתם ליישם אותה, צריך להשתמש בשיטה recommendations.markFailed של Recommender API.

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • PROJECT_ID: המזהה שלGoogle Cloud הפרויקט שמכיל את מערכי הנתונים שלכם ב-BigQuery. מזהי פרויקטים הם מחרוזות אלפאנומריות, כמו my-project.
    • LOCATION: האזור שבו נמצא מערך הנתונים ב-BigQuery – למשל, us או us-central1.
    • RECOMMENDATION_ID: המזהה הייחודי של ההמלצה. הערך הזה מופיע בסוף השדה name בהמלצה. לדוגמה, אם השדה name הוא projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f, מזהה ההמלצה הוא fb927dc1-9695-4436-0000-f0f285007c0f.
    • ETAG: הערך של השדה etag בהמלצה, למשל "dd0686e7136a4cbb". משתמשים בלוכסנים הפוכים כדי לסמן בתו בריחה (escape) מרכאות, לדוגמה, "\"df7308cca9719dcc\"".
    • STATE_METADATA: אופציונלי. אובייקט שמכיל צמדי מפתח/ערך עם מטא-נתונים לפי בחירתכם לגבי ההמלצה. לדוגמה, {"reviewedBy": "alice", "priority": "high"}. המטא-נתונים מחליפים את השדה stateInfo.stateMetadata בהמלצה.

    ה-method של ה-HTTP וכתובת ה-URL:

    POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markFailed

    תוכן בקשת JSON:

    {
      "etag": "ETAG",
      "stateMetadata": {
        "STATE_METADATA"
      }
    }
    

    כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

    התגובה מציגה את ההמלצה במצב FAILED, כמו בדוגמה הבאה. לשם הבהרה, בחרנו להשמיט את רוב השדות בדוגמה הזו:

    ...
    "stateInfo": {
      "state": "FAILED"
    },
    "etag": "\"7caf4103d7669e12\"",
    "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET",
    ...
    

הסבר על ההמלצות

כל המלצה כוללת מידע שיעזור לכם להבין למה ההמלצה ניתנה.

פרטים על השדות של ההמלצה מופיעים בחומרי העזר של Recommendation.

כדי לראות את השימוש בהרשאות שעליו מבוססת ההמלצה הזו, אפשר לעיין בתובנות לגבי המדיניות שמשויכות להמלצה. התובנות האלה מפורטות בשדה associatedInsights. כדי לראות תובנה לגבי מדיניות שמשויכת להמלצה:

  1. מעתיקים את המזהה של התובנה המשויכת. המזהה כולל את כל מה שמופיע אחרי insights/ בשדה insight. לדוגמה, אם בשדה insight מופיע הערך projects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/7849add9-73c0-419e-b169-42b3671173fb, מזהה התובנה הוא 7849add9-73c0-419e-b169-42b3671173fb.
  2. פועלים לפי ההוראות כדי לקבל תובנה לגבי מדיניות באמצעות מזהה התובנה שהעתקתם.

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