מדיניות של ניהול זהויות והרשאות גישה (IAM), שמציינת אמצעי בקרת גישה למשאבי Google Cloud.
Policy
הוא אוסף של bindings
. binding
מקשר members
אחד או יותר, או חשבונות משתמשים, ל-role
יחיד. חשבונות משתמשים, חשבונות שירות, קבוצות Google ודומיינים (כמו G Suite) יכולים לשמש כחשבונות משתמשים. role
היא רשימת הרשאות בעלת שם. כל role
יכול להיות תפקיד מוגדר מראש ב-IAM או תפקיד בהתאמה אישית שנוצר על ידי משתמש.
בחלק מסוגי המשאבים ב-Google Cloud, אפשר לציין ב-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 אחד.
אם יש הגדרות AuditConfig גם ל-allServices
וגם לשירות ספציפי, האיחוד של שתי הגדרות AuditConfig ישמש את השירות הזה: סוגי היומנים (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 Users create |
DATA_READ |
קריאת נתונים. דוגמה: רשימת המשתמשים ב-CloudSQL |