בדף הזה מוסבר איך לנהל תובנות לגבי מדיניות ברמת מערך הנתונים. התובנות האלה מבוססות על למידת מכונה ומציגות מידע על השימוש בהרשאות במערכי הנתונים של BigQuery. תובנות לגבי מדיניות יכולות לעזור לכם לזהות אילו חשבונות משתמשים קיבלו הרשאות שהם לא צריכים.
הדף הזה מתמקד בתובנות לגבי מדיניות בנושא מערכי נתונים. בנוסף, הכלי Recommender מציע תובנות לגבי מדיניות לסוגי המשאבים הבאים:
לפעמים, תובנות לגבי מדיניות ברמת מערך הנתונים מקושרות להמלצות לגבי תפקידים. ההמלצות לתפקידים מציעות פעולות שאפשר לבצע כדי לפתור את הבעיות שזוהו בתובנות לגבי מדיניות ברמת מערך הנתונים.
לפני שמתחילים
-
מפעילים את Recommender API.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים - כדאי להכיר את ההמלצות לגבי תפקידים ב-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
הפלט מציג את התובנה בפירוט. לדוגמה, התובנה הבאה מציינת שלכל המשתמשים עם התפקיד Editor בפרויקט 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
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
התשובה מכילה את התובנה. לדוגמה, התובנה הבאה מציינת שלכל המשתמשים עם התפקיד Editor בפרויקט 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, מבצעים את הפעולות הבאות:- קבלת התובנה באמצעות השיטה
insights.get. - מאתרים את הערך
etagבתשובה ומעתיקים אותו.
- קבלת התובנה באמצעות השיטה
ה-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.