מדיניות של ניהול זהויות והרשאות גישה (IAM), שמציינת את אמצעי בקרת הגישה למשאבים ב-Google Cloud.
Policy הוא אוסף של bindings. binding מקשרת members אחד או יותר, או חשבונות משתמש, לrole יחיד. חשבונות ראשיים יכולים להיות חשבונות משתמשים, חשבונות שירות, קבוצות Google ודומיינים (כמו G Suite). role היא רשימה של הרשאות עם שם. כל role יכול להיות תפקיד מוגדר מראש ב-IAM או תפקיד בהתאמה אישית שנוצר על ידי משתמש.
בסוגים מסוימים של משאבים ב-Google Cloud, אפשר גם לציין condition ב-binding. condition הוא ביטוי לוגי שמאפשר גישה למשאב רק אם ערך הביטוי הוא true. תנאי יכול להוסיף מגבלות על סמך מאפיינים של הבקשה, של המשאב או של שניהם. במאמרי העזרה של IAM מוסבר אילו משאבים תומכים בתנאים במדיניות ה-IAM שלהם.
דוגמה ל-JSON:
{
"bindings": [
{
"role": "roles/resourcemanager.organizationAdmin",
"members": [
"user:mike@example.com",
"group:admins@example.com",
"domain:google.com",
"serviceAccount:my-project-id@appspot.gserviceaccount.com"
]
},
{
"role": "roles/resourcemanager.organizationViewer",
"members": [
"user:eve@example.com"
],
"condition": {
"title": "expirable access",
"description": "Does not grant access after Sep 2020",
"expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')",
}
}
],
"etag": "BwWWja0YfJA=",
"version": 3
}
דוגמה ל-YAML:
bindings:
- members:
- user:mike@example.com
- group:admins@example.com
- domain:google.com
- serviceAccount:my-project-id@appspot.gserviceaccount.com
role: roles/resourcemanager.organizationAdmin
- members:
- user:eve@example.com
role: roles/resourcemanager.organizationViewer
condition:
title: expirable access
description: Does not grant access after Sep 2020
expression: request.time < timestamp('2020-10-01T00:00:00.000Z')
etag: BwWWja0YfJA=
version: 3
למידע על IAM והמאפיינים שלו, תוכלו לעיין במסמכי העזרה של IAM.
| ייצוג ב-JSON |
|---|
{ "version": integer, "bindings": [ { object ( |
| שדות | |
|---|---|
version |
מציין את הפורמט של המדיניות. הערכים התקפים הם בכל פעולה שמשפיעה על קישורי תפקידים מותנים צריך לציין את הגרסה
חשוב לדעת: אם משתמשים בתנאים של IAM, צריך לכלול את השדה אם מדיניות לא כוללת תנאים, בפעולות שמתבצעות על המדיניות הזו אפשר לציין כל גרסה תקינה או להשאיר את השדה ללא הגדרה. במאמרי העזרה של IAM מוסבר אילו משאבים תומכים בתנאים במדיניות ה-IAM שלהם. |
bindings[] |
משייך רשימה של ה |
auditConfigs[] |
הגדרת רישום ביומני ביקורת בענן עבור המדיניות הזו. |
etag |
חשוב לדעת: אם משתמשים בתנאים של IAM, צריך לכלול את השדה מחרוזת בקידוד Base64. |
קישור
משייך members או מנהלים ל-role.
| ייצוג ב-JSON |
|---|
{
"role": string,
"members": [
string
],
"condition": {
object ( |
| שדות | |
|---|---|
role |
התפקיד שמוקצה לרשימה של במסמכי ה-IAM מופיעה סקירה כללית של התפקידים וההרשאות ב-IAM. רשימת התפקידים המוגדרים מראש זמינה כאן. |
members[] |
מציין את חשבונות המשתמשים שמבקשים גישה למשאב ב-Google Cloud.
|
condition |
התנאי שמשויך לקשירה הזו. אם התנאי מקבל את הערך אם התנאי מקבל את הערך במאמרי העזרה של IAM מוסבר אילו משאבים תומכים בתנאים במדיניות ה-IAM שלהם. |
Expr
מייצג ביטוי טקסטואלי בתחביר של Common Expression Language (CEL). CEL היא שפת ביטויים שדומה ל-C. התחביר והסמנטיקה של CEL מתועדים בכתובת https://github.com/google/cel-spec.
דוגמה (השוואה):
title: "Summary size limit"
description: "Determines if a summary is less than 100 chars"
expression: "document.summary.size() < 100"
דוגמה (שוויון):
title: "Requestor is owner"
description: "Determines if requestor is the document owner"
expression: "document.owner == request.auth.claims.email"
דוגמה (לוגיקה):
title: "Public documents"
description: "Determine whether the document should be publicly visible"
expression: "document.type != 'private' && document.type != 'internal'"
דוגמה (טיפול בנתונים):
title: "Notification string"
description: "Create a notification string with a timestamp."
expression: "'New message received at ' + string(document.create_time)"
המשתנים והפונקציות המדויקים שאפשר להפנות אליהם בתוך ביטוי נקבעים על ידי השירות שמעריך אותו. מידע נוסף מופיע במסמכי התיעוד של השירות.
| ייצוג ב-JSON |
|---|
{ "expression": string, "title": string, "description": string, "location": string } |
| שדות | |
|---|---|
expression |
ייצוג טקסטואלי של ביטוי בתחביר של Common Expression Language. |
title |
זה שינוי אופציונלי. כותרת לביטוי, כלומר מחרוזת קצרה שמתארת את המטרה שלו. אפשר להשתמש בביטוי הזה בממשקי משתמש שמאפשרים להזין את הביטוי. |
description |
זה שינוי אופציונלי. תיאור הביטוי. זהו טקסט ארוך יותר שמתאר את הביטוי, למשל כשמעבירים מעליו את העכבר בממשק משתמש. |
location |
זה שינוי אופציונלי. מחרוזת שמציינת את המיקום של הביטוי בדוח השגיאות, למשל שם קובץ ומיקום בקובץ. |
AuditConfig
מציין את הגדרת הביקורת של שירות. ההגדרה קובעת אילו סוגי הרשאות נרשמים ביומן, ואילו זהויות, אם בכלל, מוחרגות מרישום ביומן. ל-AuditConfig חייב להיות AuditLogConfig אחד או יותר.
אם יש AuditConfigs גם ל-allServices וגם לשירות ספציפי, המערכת משתמשת באיחוד של שני ה-AuditConfigs עבור השירות הזה: log_types שצוינו בכל AuditConfig מופעלים, ו-exemptedMembers בכל AuditLogConfig פטורים.
דוגמה למדיניות עם כמה AuditConfigs:
{
"auditConfigs": [
{
"service": "allServices",
"auditLogConfigs": [
{
"logType": "DATA_READ",
"exemptedMembers": [
"user:jose@example.com"
]
},
{
"logType": "DATA_WRITE"
},
{
"logType": "ADMIN_READ"
}
]
},
{
"service": "sampleservice.googleapis.com",
"auditLogConfigs": [
{
"logType": "DATA_READ"
},
{
"logType": "DATA_WRITE",
"exemptedMembers": [
"user:aliya@example.com"
]
}
]
}
]
}
בשירות sampleservice, המדיניות הזו מאפשרת רישום ביומן של DATA_READ, DATA_WRITE ו-ADMIN_READ. היא גם פוטרת את jose@example.com מרישום ביומן של DATA_READ, ואת aliya@example.com מרישום ביומן של DATA_WRITE.
| ייצוג ב-JSON |
|---|
{
"service": string,
"auditLogConfigs": [
{
object ( |
| שדות | |
|---|---|
service |
מציינים שירות שיופעל עבור רישום ביומן ביקורת. לדוגמה, |
auditLogConfigs[] |
ההגדרה של רישום ביומן לכל סוג הרשאה. |
AuditLogConfig
המדיניות מספקת את ההגדרה לרישום ביומן של סוג הרשאות. דוגמה:
{
"auditLogConfigs": [
{
"logType": "DATA_READ",
"exemptedMembers": [
"user:jose@example.com"
]
},
{
"logType": "DATA_WRITE"
}
]
}
הפעולה הזו מפעילה את הרישום ביומן של DATA_READ ו-DATA_WRITE, ופוטרת את jose@example.com מרישום ביומן של DATA_READ.
| ייצוג ב-JSON |
|---|
{
"logType": enum ( |
| שדות | |
|---|---|
logType |
סוג היומן שההגדרה הזו מפעילה. |
exemptedMembers[] |
מציינת את הזהויות שלא גורמות לרישום ביומן עבור סוג ההרשאה הזה. הפורמט זהה לפורמט של |
LogType
רשימת סוגי ההרשאות התקפים שאפשר להגדיר עבורם רישום ביומן. פעולות כתיבה של אדמינים תמיד מתועדות ביומן, ואי אפשר להגדיר אותן.
| טיפוסים בני מנייה (enum) | |
|---|---|
LOG_TYPE_UNSPECIFIED |
ברירת מחדל. הערך הזה לא יכול להיות כזה. |
ADMIN_READ |
האדמין קורא. דוגמה: CloudIAM getIamPolicy |
DATA_WRITE |
כתיבת נתונים. דוגמה: יצירת משתמשים ב-CloudSQL |
DATA_READ |
קריאות נתונים. דוגמה: רשימת משתמשים ב-CloudSQL |