מדיניות ניהול הזהויות והרשאות הגישה (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 |