בדף הזה מוסבר איך למנוע מחשבונות משתמשים להשתמש בהרשאות ספציפיות של ניהול זהויות והרשאות גישה (IAM) כדי לדחות גישה שלהם.
ב-IAM, אפשר לדחות את הגישה באמצעות כללי מדיניות הדחייה. כל מדיניות דחייה מצורפת לארגון, לתיקייה או לפרויקט. Google Cloud מדיניות דחייה <x0A>כוללת כללי דחייה, שבהם מזוהים חשבונות המשתמשים ורשומים ההרשאות <x0A>שהם לא יכולים להשתמש בהן.
כללי מדיניות הדחייה אינם קשורים לכללי מדיניות ההרשאה, שנקראים גם כללי מדיניות IAM. מדיניות הרשאה מאפשרת גישה למשאבים באמצעות הקצאת תפקידי IAM לחשבונות המשתמשים.
אפשר לנהל את כללי מדיניות הדחייה באמצעות מסוף Google Cloud , Google Cloud CLI או API בארכיטקטורת REST של IAM v2.
לפני שמתחילים
מפעילים את IAM API.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק 'שימוש בשירות'' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםמגדירים אימות.
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים ולממשקי ה-API, לא צריך להגדיר אימות. Google Cloud
gcloud
במסוף Google Cloud , מפעילים את Cloud Shell.
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
Terraform
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Terraform שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
אם אתם משתמשים במעטפת מקומית, אתם צריכים ליצור פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם אתם משתמשים ב-Cloud Shell, אין צורך לבצע את הפעולה הזו.
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .
המשך
כדי להשתמש בדוגמאות של Go שבדף הזה בסביבת פיתוח מקומית, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
אם אתם משתמשים במעטפת מקומית, אתם צריכים ליצור פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם אתם משתמשים ב-Cloud Shell, אין צורך לבצע את הפעולה הזו.
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .
Java
כדי להשתמש בדוגמאות של Java שבדף הזה בסביבת פיתוח מקומית, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
אם אתם משתמשים במעטפת מקומית, אתם צריכים ליצור פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם אתם משתמשים ב-Cloud Shell, אין צורך לבצע את הפעולה הזו.
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .
Node.js
כדי להשתמש בדוגמאות של Node.js שבדף הזה בסביבת פיתוח מקומית, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
אם אתם משתמשים במעטפת מקומית, אתם צריכים ליצור פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם אתם משתמשים ב-Cloud Shell, אין צורך לבצע את הפעולה הזו.
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .
Python
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Python שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
אם אתם משתמשים במעטפת מקומית, אתם צריכים ליצור פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם אתם משתמשים ב-Cloud Shell, אין צורך לבצע את הפעולה הזו.
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud.
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .
-
כדאי לקרוא את הסקירה הכללית של כללי מדיניות הדחייה.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לניהול כללי מדיניות הדחייה, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בארגון:
-
כדי לצפות בכללי מדיניות הדחייה:
דחיית סוקר (
roles/iam.denyReviewer) -
כדי להציג, ליצור, לעדכן ולמחוק כללי מדיניות דחייה:
דחיית אדמין (
roles/iam.denyAdmin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקידים המוגדרים מראש האלה כוללים את ההרשאות שנדרשות לניהול כללי מדיניות הדחייה. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
הרשאות נדרשות
כדי לנהל את כללי מדיניות הדחייה נדרשות ההרשאות הבאות:
-
כדי להציג את כללי מדיניות הדחייה:
-
iam.denypolicies.get -
iam.denypolicies.list
-
-
כדי ליצור, לעדכן ולמחוק כללי מדיניות דחייה:
-
iam.denypolicies.create -
iam.denypolicies.delete -
iam.denypolicies.get -
iam.denypolicies.update
-
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
זיהוי ההרשאות לדחייה
לפני שיוצרים מדיניות דחייה, צריך להחליט אילו הרשאות רוצים לדחות, ובאילו חשבונות המשתמשים יידחו ההרשאות האלה.
אפשר לדחות רק חלק מההרשאות. רשימת ההרשאות שאפשר לדחות מופיעה במאמר ההרשאות שנתמכות בכללי מדיניות הדחייה.
במקרים מסוימים, אפשר גם להשתמש בקבוצות הרשאות כדי לדחות סטים של הרשאות. מידע נוסף מופיע במאמר בנושא קבוצות הרשאות.
כללי מדיניות הדחייה מנוהלים באמצעות ה-v2 של API בארכיטקטורת REST, שדורש פורמט מיוחד
עבור שמות הרשאות. לדוגמה, ההרשאה ליצירת
תפקיד ב-IAM בהתאמה אישית ל-IAM נקראת כך:
v1API:iam.roles.createv2API:iam.googleapis.com/roles.create
יצירה של מדיניות דחייה
אפשר להוסיף כללי מדיניות דחייה לארגונים, לתיקיות ולפרויקטים. לכל משאב יכולים להיות עד 500 כללי מדיניות דחייה.
כללי מדיניות הדחייה כוללים כללי דחייה שבהם מפורטים:
- ההרשאות לדחייה.
- חשבונות המשתמשים שעבורם נדחו ההרשאות האלה.
אופציונלי: החרגת חשבונות משתמשים מדחיית הרשאות.
לדוגמה, אפשר לדחות הרשאה לקבוצה, אבל להחריג משתמשים מסוימים ששייכים לקבוצה הזו.
אופציונלי: ביטוי תנאי שמציין את הזמן שבו חשבונות המשתמשים לא יכולים להשתמש בהרשאות. בכללי מדיניות דחייה אפשר להשתמש בביטויי תנאי רק בפונקציות של תגי משאבים – אין תמיכה בפונקציות ובאופרטורים אחרים.
לכל משאב יכולים להיות עד 500 כללי דחייה בכל כללי מדיניות הדחייה שמצורפים אליו.
כללי מדיניות הדחייה עוברים בירושה דרך היררכיית המשאבים. לדוגמה, אם דוחים הרשאה ברמת הארגון, ההרשאה הזו תידחה גם בתיקיות ובפרויקטים שבארגון, ובמשאבים הספציפיים לשירות בתוך כל פרויקט.
כללי מדיניות הדחייה מבטלים את כללי מדיניות ההרשאה. אם מקצים לחשבון המשתמש תפקיד שמכיל הרשאה מסוימת, אבל במדיניות הדחייה מצויין שלחשבון המשתמש אין אפשרות להשתמש בהרשאה הזו, הוא לא יכול להשתמש בהרשאה.
המסוף
במסוף Google Cloud , עוברים לכרטיסייה Deny בדף IAM.
בוחרים פרויקט, תיקייה או ארגון.
לוחצים על יצירה של מדיניות דחייה.
בקטע Policy name, מגדירים את מזהה המדיניות באחת מהדרכים הבאות:
- בשדה שם לתצוגה, מזינים שם לתצוגה של המדיניות. מילוי השדה הזה גורם למילוי אוטומטי של השדה מזהה. אם רוצים לשנות את המזהה של המדיניות, מעדכנים את הטקסט בשדה מזהה.
- בשדה ID, מזינים מזהה למדיניות.
בקטע Deny rules (כללי דחייה), מגדירים את כללי הדחייה של המדיניות. כל מדיניות דחייה חייבת לכלול לפחות כלל דחייה אחד. כדי להוסיף עוד כללי דחייה, לוחצים על הוספת כלל דחייה.
לכל כלל דחייה, מבצעים את הפעולות הבאות:
- בשדה Denied principals, מוסיפים חשבון משתמש אחד או יותר שרוצים למנוע ממנו להשתמש בהרשאות שצוינו. החשבון הראשי יכול להיות כל אחד מסוגי החשבונות שמופיעים במזהים של חשבונות משתמשים בכללי מדיניות הדחייה, למעט חשבונות משתמשים שהמזהים שלהם מתחילים ב-
deleted:. אופציונלי: בשדה Exception principals, מוסיפים את חשבונות המשתמשים שרוצים לאפשר להם להשתמש בהרשאות שצוינו, גם אם החשבונות האלה כלולים בקטע Denied principals. לדוגמה, אפשר להשתמש בשדה הזה כדי להחריג משתמשים ספציפיים ששייכים לקבוצה שנדחתה.
בקטעים Denied permissions, מוסיפים את ההרשאות שרוצים לדחות. ההרשאות חייבות להיות נתמכות בכללי מדיניות הדחייה.
במקרים מסוימים, אפשר גם להשתמש בקבוצות הרשאות כדי לדחות סטים של הרשאות. מידע נוסף זמין במאמר בנושא קבוצות הרשאות.
אופציונלי: מוסיפים הרשאות חריגות. הרשאות חריג הן הרשאות שלא רוצים שהכלל הזה של מדיניות הדחייה ידחה, גם אם הן כלולות ברשימת ההרשאות שנדחות. לדוגמה, אפשר להשתמש בשדה הזה כדי להחריג הרשאות ספציפיות בקבוצת הרשאות.
כדי להוסיף הרשאות חריגות, לוחצים על הרשאות חריגות, לוחצים על הוספת הרשאה נוספת ומזינים את ההרשאה בשדה הרשאה 1. ממשיכים להוסיף הרשאות עד שמוסיפים את כל ההרשאות שרוצים להחריג ממדיניות הדחייה.
אופציונלי: מוסיפים תנאי דחייה כדי לציין מתי חשבונות המשתמשים לא יכולים להשתמש בהרשאה. כדי להוסיף תנאי דחייה, לוחצים על הוספת תנאי דחייה ואז מגדירים את השדות הבאים:
- כותרת: אופציונלי. סיכום קצר של מטרת התנאי.
- תיאור: אופציונלי. תיאור ארוך יותר של התנאי.
ביטוי תנאי: אפשר להוסיף ביטוי תנאי באמצעות הכלי להגדרת תנאים או עורך התנאים. הכלי להגדרת תנאים הוא ממשק אינטראקטיבי שבו בוחרים את סוג התנאי, האופרטור ופרטים רלוונטיים אחרים של הביטוי. עורך התנאים הוא ממשק מבוסס-טקסט שבו מזינים ידנית ביטוי בתחביר Common Expression Language (CEL).
תנאי הדחייה חייבים להתבסס על תגי משאבים. אין תמיכה בפונקציות ובאופרטורים אחרים.
- בשדה Denied principals, מוסיפים חשבון משתמש אחד או יותר שרוצים למנוע ממנו להשתמש בהרשאות שצוינו. החשבון הראשי יכול להיות כל אחד מסוגי החשבונות שמופיעים במזהים של חשבונות משתמשים בכללי מדיניות הדחייה, למעט חשבונות משתמשים שהמזהים שלהם מתחילים ב-
לוחצים על יצירה.
gcloud
כדי ליצור מדיניות דחייה למשאב, קודם יוצרים קובץ JSON שמכיל את המדיניות. אפשר להשתמש בפורמט הבא בשביל מדיניות דחייה:
{ "displayName": "POLICY_NAME", "rules": [ { "denyRule": DENY_RULE_1 }, { "denyRule": DENY_RULE_2 }, { "denyRule": DENY_RULE_N } ] }
מציינים את הערכים הבאים:
POLICY_NAME: השם המוצג של מדיניות הדחייה.-
DENY_RULE_1,DENY_RULE_2,...DENY_RULE_N: כללי הדחייה במדיניות. כל כלל דחייה יכול להכיל את השדות הבאים:-
deniedPermissions: רשימה של הרשאות שחשבונות המשתמשים שצוינו לא יכולים להשתמש בהן. ההרשאות חייבות להיות בתמיכה של כללי מדיניות הדחייה.במקרים מסוימים, אפשר גם להשתמש בקבוצות הרשאות כדי לדחות סטים של הרשאות. מידע נוסף מופיע במאמר בנושא קבוצות הרשאות.
-
exceptionPermissions: רשימה של הרשאות שחשבונות המשתמשים שצוינו יכולים להשתמש בהן, גם אם ההרשאות האלה כלולות ב-deniedPermissions. לדוגמה, אפשר להשתמש בשדה הזה כדי להחריג הרשאות ספציפיות בקבוצת הרשאות. -
deniedPrincipals: רשימה של חשבונות משתמשים שלא יכולים להשתמש בהרשאות שצוינו. מידע על הפורמט של מזהי חשבונות משתמשים מופיע במאמר מזהים של חשבונות משתמשים בכללי מדיניות הדחייה. -
exceptionPrincipals: אופציונלי. רשימה של חשבונות משתמשים שיכולים להשתמש בהרשאות שצוינו, גם אם החשבונות האלה כלולים ב-deniedPrincipals. לדוגמה, ניתן להשתמש בשדה הזה כדי להחריג משתמשים ספציפיים ששייכים לקבוצה שנדחתה. מידע על הפורמט של מזהי חשבונות משתמשים מופיע במאמר מזהים של חשבונות משתמשים בכללי מדיניות הדחייה. -
denialCondition: אופציונלי. ביטוי תנאי שמציין את הזמן שבו חשבונות המשתמשים לא יכולים להשתמש בהרשאות. מכיל את השדות הבאים:-
expression: ביטוי תנאי שמשתמש בתחביר של Common Expression Language (CEL). הביטוי צריך לכלול את הפונקציות של CEL כדי להעריך תגי משאבים. אין תמיכה בפונקציות ובאופרטורים אחרים. -
title: אופציונלי. סיכום קצר של מטרת התנאי. -
description: אופציונלי. תיאור ארוך יותר של התנאי.
-
דוגמאות של כללי דחייה מופיעים במאמר תרחישים נפוצים לדוגמה.
-
לדוגמה, מדיניות הדחייה הבאה מכילה כלל דחייה אחד שדוחה הרשאה אחת ללוסיאן:
{
"displayName": "My deny policy.",
"rules": [
{
"denyRule": {
"deniedPrincipals": [
"principal://goog/subject/lucian@example.com"
],
"deniedPermissions": [
"iam.googleapis.com/roles.create"
]
}
}
]
}
לאחר מכן, מריצים את הפקודה gcloud iam policies create:
gcloud iam policies create POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --policy-file=POLICY_FILE
מציינים את הערכים הבאים:
-
POLICY_ID: המזהה של מדיניות הדחייה. -
ATTACHMENT_POINT: מזהה של המשאב שאליו מצורפת מדיניות הדחייה. אפשר לקרוא מידע על הפורמט של הערך הזה בקטע נקודת הצירוף. -
POLICY_FILE: הנתיב של קובץ ה-JSON שמכיל את מדיניות הדחייה.
כברירת מחדל, אם הפקודה הזו מצליחה, היא לא מדפיסה פלט. כדי להדפיס
תגובה מפורטת, מוסיפים את הדגל --format=json לפקודה.
לדוגמה, אפשר להשתמש בפקודה הבאה כדי ליצור מדיניות דחייה בשם my-deny-policy
לפרויקט my-project באמצעות הקובץ policy.json:
gcloud iam policies create my-deny-policy \
--attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \
--kind=denypolicies \
--policy-file=policy.json
Terraform
במאמר פקודות בסיסיות ב-Terraform אפשר לקרוא הסבר על החלה של הגדרות Terraform ועל הסרה שלהן. למידע נוסף, ראו את מאמרי העזרה לספקים של Terraform.
Go
במאמר ספריות הלקוח של IAM מוסבר איך להתקין את ספריית הלקוח ולהשתמש בה ב-IAM. למידע נוסף, קראו את מאמרי העזרה של IAM Go API.
כדי לבצע אימות ב-IAM, צריך להגדיר את Application Default Credentials. מידע נוסף מופיע במאמר לפני שמתחילים.
Java
במאמר ספריות הלקוח של IAM מוסבר איך להתקין את ספריית הלקוח ולהשתמש בה ב-IAM. למידע נוסף, קראו את מאמרי העזרה של IAM Java API.
כדי לבצע אימות ב-IAM, צריך להגדיר את Application Default Credentials. מידע נוסף מופיע במאמר לפני שמתחילים.