בדף הזה מוסבר איך לנהל תובנות לגבי מדיניות ברמת מערך הנתונים. התובנות האלה מבוססות על למידת מכונה ומציגות מידע על השימוש בהרשאות במערכי הנתונים של BigQuery. תובנות לגבי מדיניות יכולות לעזור לכם לזהות אילו חשבונות משתמשים קיבלו הרשאות שהם לא צריכים.
בדף הזה מתמקדים בתובנות לגבי מדיניות בנושא מערכי נתונים. בנוסף, הכלי Recommender מציע תובנות לגבי מדיניות עבור סוגי המשאבים הבאים:
לפעמים, תובנות לגבי מדיניות ברמת מערך הנתונים מקושרות להמלצות לגבי תפקידים. ההמלצות לתפקידים מציעות פעולות שאפשר לבצע כדי לפתור את הבעיות שזוהו בתובנות לגבי מדיניות ברמת מערך הנתונים.
לפני שמתחילים
-
מפעילים את Recommender API, אם הוא עדיין לא מופעל.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים - כדאי להכיר את ההמלצות לגבי תפקידים ב-IAM.
- צריך לוודא שיש לכם הפעלה ברמת הארגון או ברמת הפרויקט של רמת Premium או Enterprise ב-Security Command Center. מידע נוסף זמין במאמר שאלות בנושא חיוב.
- אופציונלי: אפשר לקרוא על תובנות בשירות ההמלצות.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לניהול תובנות לגבי מדיניות ברמת מערך הנתונים, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
- בעלים של נתונים ב-BigQuery (
roles/bigquery.dataOwner) - אדמין של שירות ההמלצות של IAM (
roles/recommender.iamAdmin) -
ניהול תובנות לגבי מדיניות ברמת מערך הנתונים באמצעות ה-CLI של gcloud או API בארכיטקטורת REST:
Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקידים המוגדרים מראש האלה כוללים את ההרשאות שנדרשות לניהול תובנות לגבי מדיניות ברמת מערך הנתונים. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי לנהל תובנות לגבי מדיניות ברמת מערך הנתונים, נדרשות ההרשאות הבאות:
-
צפייה בתובנות לגבי מדיניות ברמת מערך הנתונים:
-
recommender.iamPolicyInsights.get -
recommender.iamPolicyInsights.list
-
-
שינוי תובנות לגבי מדיניות ברמת מערך הנתונים:
recommender.iamPolicyInsights.update -
אפשר לנהל תובנות לגבי מדיניות ברמת מערך הנתונים באמצעות ה-CLI של gcloud או API בארכיטקטורת REST:
serviceusage.services.use
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
הצגת תובנות לגבי מדיניות ברמת מערך הנתונים
כדי להציג רשימה של כל התובנות לגבי מדיניות ברמת מערך הנתונים בפרויקט, משתמשים באחת מהשיטות הבאות:gcloud
משתמשים בפקודה gcloud recommender
insights list כדי להציג את כל התובנות לגבי מדיניות ברמת מערך הנתונים בפרויקט.
לפני שמריצים את הפקודה, מחליפים את הערכים הבאים:
-
PROJECT_ID: המזהה של הפרויקט שרוצים לראות את התובנות לגביו. -
LOCATION: המיקום של מערכי הנתונים שרוצים להציג את התובנות לגביהם.
gcloud recommender insights list --insight-type=google.iam.policy.Insight \ --project=PROJECT_ID \ --location=LOCATION\ --filter="insightSubtype:PERMISSIONS_USAGE_BIGQUERY_DATASET"
בפלט מפורטות כל התובנות לגבי המדיניות ברמת מערך הנתונים בפרויקט במיקום שצוין. לדוגמה:
INSIGHT_ID CATEGORY INSIGHT_STATE LAST_REFRESH_TIME SEVERITY INSIGHT_SUBTYPE DESCRIPTION 101d03ad-6148-4628-943e-fcf1a3af6b57 SECURITY ACTIVE 2024-02-02T08:00:00Z LOW PERMISSIONS_USAGE_BIGQUERY_DATASET 0 of the permissions in this role binding were used in the past 90 days. 15133dd9-4cbc-41e9-8990-b189241676d8 SECURITY ACTIVE 2024-02-02T08:00:00Z LOW PERMISSIONS_USAGE_BIGQUERY_DATASET 0 of the permissions in this role binding were used in the past 90 days. 1590aeae-d5bf-4e3d-b7d5-e230212f5faf SECURITY ACTIVE 2024-02-02T08:00:00Z LOW PERMISSIONS_USAGE_BIGQUERY_DATASET 4 of the permissions in this role binding were used in the past 90 days. 280e5a14-4d09-4ac6-8e14-be7407611ad7 SECURITY ACTIVE 2024-02-02T08:00:00Z LOW PERMISSIONS_USAGE_BIGQUERY_DATASET 0 of the permissions in this role binding were used in the past 90 days. 34102078-085f-45d3-ae72-81da16c75781 SECURITY ACTIVE 2024-02-02T08:00:00Z LOW PERMISSIONS_USAGE_BIGQUERY_DATASET 10 of the permissions in this role binding were used in the past 90 days.
REST
ה-method insights.list של Recommender API מציגה את כל התובנות לגבי מדיניות ברמת מערך הנתונים בפרויקט.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: המזהה של הפרויקט שרוצים לראות את התובנות לגביו. -
LOCATION: המיקום של מערכי הנתונים שרוצים להציג את התובנות לגביהם.
ה-method של ה-HTTP וכתובת ה-URL:
GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/insightTypes/google.iam.policy.Insight/insights?filter=insightSubtype%20%3D%20PERMISSIONS_USAGE_BIGQUERY_DATASET
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
בתגובה מופיעים כל התובנות לגבי מדיניות ברמת מערך הנתונים בפרויקט במיקום שצוין. לדוגמה:
{
"insights": [
{
"name": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57",
"description": "0 of the permissions in this role binding were used in the past 90 days.",
"content": {
"role": "roles/bigquery.dataEditor",
"member": "projectEditor:my-project",
"condition": {
"expression": "",
"title": "",
"description": "",
"location": ""
},
"exercisedPermissions": [],
"inferredPermissions": [],
"currentTotalPermissionsCount": "37"
},
"lastRefreshTime": "2024-02-02T08:00:00Z",
"observationPeriod": "7779600s",
"stateInfo": {
"state": "ACTIVE"
},
"category": "SECURITY",
"associatedRecommendations": [
{
"recommendation": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f952-1ceb-488e-9e49-f17eb21f6e5e"
}
],
"targetResources": [
"//bigquery.googleapis.com/projects/my-project/datasets/dataset-1"
],
"insightSubtype": "PERMISSIONS_USAGE_BIGQUERY_DATASET",
"etag": "\"35d4af47524d3f0c\"",
"severity": "LOW"
},
{
"name": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/15133dd9-4cbc-41e9-8990-b189241676d8",
"description": "0 of the permissions in this role binding were used in the past 90 days.",
"content": {
"role": "roles/bigquery.dataViewer",
"member": "projectViewer:my-project",
"condition": {
"expression": "",
"title": "",
"description": "",
"location": ""
},
"exercisedPermissions": [],
"inferredPermissions": [],
"currentTotalPermissionsCount": "17"
},
"lastRefreshTime": "2024-02-02T08:00:00Z",
"observationPeriod": "7779600s",
"stateInfo": {
"state": "ACTIVE"
},
"category": "SECURITY",
"associatedRecommendations": [
{
"recommendation": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/bc9b4c28-cc93-4a91-97ea-ff67e3cef1b4"
}
],
"targetResources": [
"//bigquery.googleapis.com/projects/my-project/datasets/dataset-2"
],
"insightSubtype": "PERMISSIONS_USAGE_BIGQUERY_DATASET",
"etag": "\"eafa79df1b329063\"",
"severity": "LOW"
}
]
}מידע נוסף על הרכיבים של תובנה זמין בקטע בדיקת תובנות לגבי מדיניות ברמת מערך הנתונים בדף הזה.
קבלת תובנה לגבי מדיניות ברמת מערך נתונים יחיד
כדי לקבל מידע נוסף על תובנה מסוימת, כולל התיאור, הסטטוס וההמלצות שמשויכות אליה, אפשר להשתמש באחת מהשיטות הבאות:
gcloud
משתמשים בפקודה gcloud recommender
insights describe עם מזהה התובנה כדי להציג מידע על תובנה אחת.
-
INSIGHT_ID: המזהה של התובנה שרוצים להציג. כדי למצוא את המזהה, מציגים את התובנות של הפרויקט. -
PROJECT_ID: המזהה של הפרויקט שרוצים לנהל את התובנות לגביו. -
LOCATION: המיקום של מערך הנתונים שרוצים לקבל לגביו תובנה.
gcloud recommender insights describe INSIGHT_ID \ --insight-type=google.iam.policy.Insight \ --project=PROJECT_ID \ --location=LOCATION
הפלט מציג את התובנה בפירוט. לדוגמה, התובנה הבאה מצביעה על כך שלכל המשתמשים עם תפקיד העריכה בפרויקט my-project (projectEditor:my-project) יש את התפקיד BigQuery Data Editor (roles/bigquery.dataEditor) במערך הנתונים dataset-1, אבל אף אחת מההרשאות בתפקיד הזה לא הייתה בשימוש ב-90 הימים האחרונים:
associatedRecommendations: - recommendation: projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f951-1ceb-488e-9e49-f17eb21f6e5e category: SECURITY content: condition: description: '' expression: '' location: '' title: '' currentTotalPermissionsCount: '37' exercisedPermissions: [] inferredPermissions: [] member: projectEditor:my-project role: roles/bigquery.dataEditor description: 0 of the permissions in this role binding were used in the past 90 days. etag: '"5f2f352a738f7a24"' insightSubtype: PERMISSIONS_USAGE_BIGQUERY_DATASET lastRefreshTime: '2024-02-04T08:00:00Z' name: projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57 observationPeriod: 7776000s severity: LOW stateInfo: state: ACTIVE targetResources: - //bigquery.googleapis.com/projects/my-project/datasets/dataset-1
מידע נוסף על הרכיבים של תובנה זמין בקטע בדיקת תובנות לגבי מדיניות ברמת מערך הנתונים בדף הזה.
REST
ה-method insights.get של Recommender API מחזירה תובנה אחת.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: המזהה של הפרויקט שרוצים לנהל את התובנות לגביו. -
LOCATION: המיקום של מערך הנתונים שרוצים לקבל לגביו תובנה. -
INSIGHT_ID: המזהה של התובנה שרוצים להציג. אם אתם לא יודעים מה מזהה התובנה, תוכלו לראות את רשימת התובנות בפרויקט. המזהה של תובנה הוא כל מה שמופיע אחריinsights/בשדהnameשל התובנה.
ה-method של ה-HTTP וכתובת ה-URL:
GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
התשובה מכילה את התובנה. לדוגמה, התובנה הבאה מצביעה על כך שלכל המשתמשים עם תפקיד העריכה בפרויקט my-project (projectEditor:my-project) יש את התפקיד BigQuery Data Editor (roles/bigquery.dataEditor) במערך הנתונים dataset-1, אבל אף אחת מההרשאות בתפקיד הזה לא הייתה בשימוש ב-90 הימים האחרונים:
{
"name": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57",
"description": "0 of the permissions in this role binding were used in the past 90 days.",
"content": {
"role": "roles/bigquery.dataEditor",
"member": "projectEditor:my-project",
"condition": {
"expression": "",
"title": "",
"description": "",
"location": ""
},
"exercisedPermissions": [],
"inferredPermissions": [],
"currentTotalPermissionsCount": "37"
},
"lastRefreshTime": "2024-02-02T08:00:00Z",
"observationPeriod": "7779600s",
"stateInfo": {
"state": "ACTIVE"
},
"category": "SECURITY",
"associatedRecommendations": [
{
"recommendation": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f952-1ceb-488e-9e49-f17eb21f6e5e"
}
],
"targetResources": [
"//bigquery.googleapis.com/projects/my-project/datasets/dataset-1"
],
"insightSubtype": "PERMISSIONS_USAGE_BIGQUERY_DATASET",
"etag": "\"35d4af47524d3f0c\"",
"severity": "LOW"
}מידע נוסף על הרכיבים של תובנה זמין בקטע בדיקת תובנות לגבי מדיניות ברמת מערך הנתונים בדף הזה.
בדיקת תובנות לגבי מדיניות ברמת מערך הנתונים
אחרי שמקבלים תובנה אחת, אפשר לעיין בתוכן שלה כדי להבין את דפוס השימוש במשאבים שהיא מדגישה.
התוכן של תובנה נקבע לפי סוגי המשנה שלה.
תובנות לגבי מדיניות ברמת מערך הנתונים (google.iam.policy.Insight) כוללות את תת-הסוג PERMISSIONS_USAGE_BIGQUERY_DATASET.
התובנות של PERMISSIONS_USAGE_BIGQUERY_DATASET כוללות את הרכיבים הבאים, לא בהכרח בסדר הזה:
-
associatedRecommendations: המזהים של כל ההמלצות שמשויכות לתובנה. אם אין המלצות שמשויכות לתובנה, השדה הזה ריק. -
category: הקטגוריה של תובנות IAM היא תמידSECURITY. -
content: מדווח על השימוש בהרשאות של חשבון משתמש בתפקיד ספציפי. השדה הזה מכיל את הרכיבים הבאים:-
condition: תנאים כלשהם שמצורפים לקישור שמעניק לחשבון המשתמש את התפקיד. אם אין תנאים, השדה הזה מכיל תנאי ריק. -
exercisedPermissions: ההרשאות בתפקיד שחשבון המשתמש השתמש בהן במהלך תקופת התצפית. -
inferredPermissions: ההרשאות בתפקיד ששירות Recommender קבע באמצעות ML, שסביר להניח שחשבון המשתמש יזדקק להן על סמך ההרשאות שהוא מימש. -
member: חשבון המשתמש שהשימוש שלו בהרשאות נותח. -
role: התפקיד שעבורו נותח השימוש בהרשאה.
-
-
description: סיכום של התובנה שקריא לאנשים. -
etag: מזהה ייחודי של המצב הנוכחי של התובנה. בכל פעם שהתובנה משתנה, מוקצה ערך חדש ל-etag.כדי לשנות את המצב של תובנה, צריך לספק את
etagשל התובנה הקיימת. השימוש ב-etagעוזר לוודא שכל הפעולות יתבצעו רק אם התובנה לא השתנתה מאז הפעם האחרונה שאחזרתם אותה. -
insightSubtype: תת-הסוג של התובנה. -
lastRefreshTime: התאריך שבו התובנה עודכנה לאחרונה, שמציין את עדכניות הנתונים ששימשו ליצירת התובנה. -
name: השם של התובנה, בפורמט הבא:projects/PROJECT_ID/locations/LOCATION/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID
מחליפים את ה-placeholders בערכים הבאים:
-
PROJECT_ID: המזהה של הפרויקט שבו נוצר התובנה. LOCATION: המיקום של מערך הנתונים שאליו מתייחס התובנה.-
INSIGHT_ID: מזהה ייחודי של התובנה.
-
-
observationPeriod: תקופת הזמן שקדמה לתובנה. הנתונים מהמקור ששימשו ליצירת התובנה הזו מסתיימים ב-lastRefreshTimeומתחילים ב-lastRefreshTimeפחותobservationPeriod. -
stateInfo: תובנות עוברות כמה שינויי סטטוס אחרי שהן מוצעות:-
ACTIVE: התובנה נוצרה, אבל לא בוצעה פעולה או שבוצעה פעולה בלי לעדכן את מצב התובנה. התובנות הפעילות מתעדכנות כשיש שינויים בנתוני הבסיס. -
ACCEPTED: בוצעה פעולה מסוימת על סמך התובנה. התובנות מתקבלות כשסימנתם המלצה משויכת בסימוןCLAIMED, SUCCEEDEDאוFAILED, או כשאישרתם את התובנה ישירות. כשמצב התובנה הואACCEPTED, אי אפשר לשנות את התוכן שלה. תובנות שאושרו נשמרות למשך 90 יום אחרי האישור.
-
-
targetResources: שם המשאב המלא של מערך הנתונים שאליו מתייחס התובנה. לדוגמה,//bigquery.googleapis.com/projects/my-project/datasets/my-dataset.
סימון תובנה לגבי מדיניות ברמת מערך הנתונים כ-ACCEPTED
אם אתם מבצעים פעולה על סמך תובנה פעילה, אתם יכולים לסמן את התובנה הזו כACCEPTED. הסטטוס ACCEPTED מציין ל-Recommender API שפעלתם על סמך התובנה הזו, וכך משפר את ההמלצות.
תובנות שאושרו נשמרות למשך 90 ימים אחרי שהן מסומנות כACCEPTED.
gcloud
משתמשים בפקודה
gcloud recommender insights mark-accepted עם מזהה התובנה כדי לסמן תובנה כACCEPTED.
-
INSIGHT_ID: המזהה של התובנה שרוצים להציג. כדי למצוא את המזהה, מציגים את התובנות של הפרויקט. -
PROJECT_ID: המזהה של הפרויקט שרוצים לנהל את התובנות לגביו. -
LOCATION: המיקום של מערך הנתונים שרוצים לסמן את התובנה שלו כACCEPTED. -
ETAG: מזהה של גרסת התובנה. כדי לקבל אתetag, מבצעים את הפעולות הבאות:-
מקבלים את התובנה באמצעות הפקודה
gcloud recommender insights describe. -
מוצאים ומעתיקים את הערך
etagמהפלט, כולל המירכאות המקיפות. לדוגמה,"d3cdec23cc712bd0".
-
מקבלים את התובנה באמצעות הפקודה
gcloud recommender insights mark-accepted INSIGHT_ID \ --insight-type=google.iam.policy.Insight \ --project=PROJECT_ID \ --location=LOCATION \ --etag=ETAG
הפלט מציג את התובנה, ועכשיו הסטטוס הוא ACCEPTED:
associatedRecommendations: - recommendation: projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f951-1ceb-488e-9e49-f17eb21f6e5e category: SECURITY content: condition: description: '' expression: '' location: '' title: '' currentTotalPermissionsCount: '37' exercisedPermissions: [] inferredPermissions: [] member: projectEditor:my-project role: roles/bigquery.dataEditor description: 0 of the permissions in this role binding were used in the past 90 days. etag: '"5f2f352a738f7a24"' insightSubtype: PERMISSIONS_USAGE_BIGQUERY_DATASET lastRefreshTime: '2024-02-04T08:00:00Z' name: projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57 observationPeriod: 7776000s severity: LOW stateInfo: state: ACCEPTED targetResources: - //bigquery.googleapis.com/projects/my-project/datasets/dataset-1
מידע נוסף על פרטי הסטטוס של תובנה זמין בקטע בדיקת תובנות לגבי מדיניות ברמת מערך הנתונים בדף הזה.
REST
ה-method insights.markAccepted של Recommender API מסמנת תובנה כ-ACCEPTED.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: המזהה של הפרויקט שרוצים לנהל את התובנות לגביו. -
LOCATION: המיקום של מערך הנתונים שרוצים לסמן את התובנה שלו כACCEPTED. -
INSIGHT_ID: המזהה של התובנה שרוצים להציג. אם אתם לא יודעים מה מזהה התובנה, תוכלו לראות את רשימת התובנות בפרויקט. המזהה של תובנה הוא כל מה שמופיע אחריinsights/בשדהnameשל התובנה. -
ETAG: מזהה של גרסת התובנה. כדי לקבל אתetag, מבצעים את הפעולות הבאות:- מקבלים את התובנה באמצעות ה-method
insights.get. - מאתרים את הערך
etagבתשובה ומעתיקים אותו.
- מקבלים את התובנה באמצעות ה-method
ה-method של ה-HTTP וכתובת ה-URL:
POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID:markAccepted
תוכן בקשת JSON:
{
"etag": "ETAG"
}כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
התשובה מכילה את התובנה, ועכשיו הסטטוס שלה הוא ACCEPTED:
{
"name": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57",
"description": "0 of the permissions in this role binding were used in the past 90 days.",
"content": {
"role": "roles/bigquery.dataEditor",
"member": "projectEditor:my-project",
"condition": {
"expression": "",
"title": "",
"description": "",
"location": ""
},
"exercisedPermissions": [],
"inferredPermissions": [],
"currentTotalPermissionsCount": "37"
},
"lastRefreshTime": "2024-02-02T08:00:00Z",
"observationPeriod": "7779600s",
"stateInfo": {
"state": "ACCEPTED"
},
"category": "SECURITY",
"associatedRecommendations": [
{
"recommendation": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f952-1ceb-488e-9e49-f17eb21f6e5e"
}
],
"targetResources": [
"//bigquery.googleapis.com/projects/my-project/datasets/dataset-1"
],
"insightSubtype": "PERMISSIONS_USAGE_BIGQUERY_DATASET",
"etag": "\"35d4af47524d3f0c\"",
"severity": "LOW"
}מידע נוסף על פרטי הסטטוס של תובנה זמין בקטע בדיקת תובנות לגבי מדיניות ברמת מערך הנתונים בדף הזה.
המאמרים הבאים
- איך רואים ומיישמים המלצות למדיניות לגבי מערכי נתונים ב-BigQuery
- אתם יכולים להשתמש ב-Active Assist כדי לראות את כל ההמלצות לפרויקט שלכם ולנהל אותן, כולל המלצות ל-IAM.