לכל קובץ, תיקייה ואחסון שיתופי ב-Google Drive יש משאבים משויכים של permissions
. כל משאב מזהה את ההרשאה ל-type
(user
, group
, domain
, anyone
) ול-role
(owner
, organizer
, fileOrganizer
, writer
, commenter
, reader
) ספציפיים. לדוגמה, יכול להיות שבקובץ מסוים תהיה הרשאה שמעניקה למשתמש ספציפי (type=user
) גישה לקריאה בלבד (role=reader
), בעוד שהרשאה אחרת מעניקה לחברים בקבוצה ספציפית (type=group
) את היכולת להוסיף תגובות לקובץ (role=commenter
).
רשימה מלאה של התפקידים והפעולות שמותר לבצע בכל אחד מהם מופיעה במאמר תפקידים והרשאות.
איך פועלות ההרשאות
רשימות ההרשאות של תיקייה מסוימת מועברות למטה. כל הקבצים והתיקיות הצאצאים יורשים את ההרשאות מהתיקייה ההורה. בכל פעם שמשתנות ההרשאות או ההיררכיה, ההעברה מתבצעת באופן רפלקסיבי דרך כל התיקיות המוטמעות. לדוגמה, אם קובץ קיים בתיקייה והתיקייה הזו מועברת לתיקייה אחרת, ההרשאות בתיקייה החדשה מועברות לקובץ. אם התיקייה החדשה מקצה למשתמש הקובץ תפקיד חדש, כמו 'כותב', הוא יחליף את התפקיד הישן שלו.
לעומת זאת, אם קובץ יורש את התפקיד role=writer
מתיקייה, והוא מועבר לתיקייה אחרת שמספקת את התפקיד 'קורא', הקובץ יורש עכשיו את התפקיד role=reader
.
אי אפשר להסיר הרשאות שעברו בירושה מקובץ או מתיקייה באחסון שיתופי. במקום זאת, צריך לשנות את ההרשאות האלה ברמה של ההורה הישיר או העקיף שממנו הן עוברות בירושה. אפשר להסיר הרשאות שעברו בירושה מפריטים בתיקייה 'האחסון שלי' או בתיקייה 'קבצים ששותפו איתי'.
לעומת זאת, אפשר לשנות את ההרשאות שעברו בירושה בקובץ או בתיקייה בתיקיית 'האחסון שלי'. לכן, אם קובץ יורש את ההרשאה role=writer
מתיקייה 'הקבצים שלי', אפשר להגדיר את ההרשאה role=reader
בקובץ כדי להוריד את רמת ההרשאה שלו.
הסבר על יכולות הקובץ
המשאב permissions
לא קובע בסופו של דבר את היכולת של המשתמש הנוכחי לבצע פעולות בקובץ או בתיקייה.
במקום זאת, המשאב files
מכיל אוסף של שדות capabilities
בוליאניים שמשמשים לציון אם אפשר לבצע פעולה בקובץ או בתיקייה. Google Drive API מגדיר את השדות האלה על סמך משאב ההרשאות של המשתמש הנוכחי שמשויך לקובץ או לתיקייה.
לדוגמה, כשאלכס נכנס לאפליקציה ומנסה לשתף קובץ, המערכת בודקת את ההרשאות של אלכס בקובץ. אם התפקיד מאפשר להם לשתף קובץ, השדות capabilities
שקשורים לקובץ, כמו canShare
, יאוכלסו בהתאם לתפקיד. אם אלכס רוצה לשתף את הקובץ, האפליקציה בודקת את capabilities
כדי לוודא ש-canShare
מוגדר ל-true
.
דוגמה לאחזור של הקובץ capabilities
מופיעה בקטע אחזור יכולות של קבצים.
אחזור יכולות של קבצים
כשהאפליקציה פותחת קובץ, היא צריכה לבדוק את היכולות של הקובץ ולייצר את ממשק המשתמש כך שישקף את ההרשאות של המשתמש הנוכחי. לדוגמה, אם למשתמש אין את היכולת canComment
בקובץ, היכולת להגיב צריכה להיות מושבתת בממשק המשתמש.
כדי לבדוק את היכולות, צריך להפעיל את השיטה get()
במשאב files
עם פרמטר הנתיב fileId
והפרמטר fields
שמוגדר לשדה capabilities
. למידע נוסף על החזרת שדות באמצעות הפרמטר fields
, ראו החזרת שדות ספציפיים.
הצג דוגמה
בדוגמת הקוד הבאה מוסבר איך לאמת את הרשאות המשתמשים. התגובה מחזירה רשימה של היכולות שיש למשתמש בקובץ. כל יכולת תואמת לפעולה מפורטת שמשתמש יכול לבצע. חלק מהשדות מאוכלסים רק בפריטים שנמצאים בתיקיות אחסון שיתופי.
בקשה
GET https://www.googleapis.com/drive/v3/files/FILE_ID
?fields=capabilities
תגובה
{ "capabilities": { "canAcceptOwnership": false, "canAddChildren": false, "canAddMyDriveParent": false, "canChangeCopyRequiresWriterPermission": true, "canChangeSecurityUpdateEnabled": false, "canComment": true, "canCopy": true, "canDelete": true, "canDownload": true, "canEdit": true, "canListChildren": false, "canModifyContent": true, "canModifyContentRestriction": true, "canModifyLabels": true, "canMoveChildrenWithinDrive": false, "canMoveItemOutOfDrive": true, "canMoveItemWithinDrive": true, "canReadLabels": true, "canReadRevisions": true, "canRemoveChildren": false, "canRemoveMyDriveParent": true, "canRename": true, "canShare": true, "canTrash": true, "canUntrash": true } }
תרחישים לשיתוף משאבים ב-Drive
יש חמישה סוגים שונים של תרחישים לשיתוף:
כדי לשתף קובץ בתיקיית 'האחסון שלי', למשתמש צריכה להיות ההרשאה
role=writer
אוrole=owner
.אם הערך הבוליאני
writersCanShare
מוגדר כ-false
בקובץ, למשתמש צריכה להיות ההרשאהrole=owner
.אם למשתמש עם
role=writer
יש גישה זמנית שמבוססת על תאריך תפוגה ושעה, הוא לא יוכל לשתף את הקובץ. למידע נוסף, ראו הגדרת תאריך תפוגה כדי להגביל את הגישה לקובץ.
כדי לשתף תיקייה ב'אחסון שלי', למשתמש צריכה להיות הרשאה
role=writer
אוrole=owner
.אם הערך הבוליאני
writersCanShare
מוגדר ל-false
בקובץ, למשתמש צריכה להיות ההרשאהrole=owner
שמעניקה גישה רחבה יותר.אסור להקצות גישה זמנית (שמוגדרת בתאריך ושעת תפוגה) לתיקיות ב'האחסון שלי' עם
role=writer
. מידע נוסף זמין במאמר הגדרת תאריך תפוגה כדי להגביל את הגישה לקובץ.
כדי לשתף קובץ באחסון שיתופי, למשתמש צריכה להיות הרשאה
role=writer
,role=fileOrganizer
אוrole=organizer
.- ההגדרה
writersCanShare
לא חלה על פריטים בתיקיות אחסון שיתופי. המערכת מתייחסת אליו כאילו הוא תמיד מוגדר ל-true
.
- ההגדרה
כדי לשתף תיקייה באחסון שיתופי, למשתמש צריכה להיות הרשאה
role=organizer
.- אם ההגבלה
sharingFoldersRequiresOrganizerPermission
באחסון השיתופי מוגדרת כ-false
, משתמשים עם ההרשאהrole=fileOrganizer
יכולים לשתף תיקיות באחסון השיתופי הזה.
- אם ההגבלה
כדי לנהל את החברות באחסון השיתופי, למשתמש צריכה להיות הרשאה
role=organizer
. רק משתמשים וקבוצות יכולים להצטרף לתיקיות באחסון שיתופי.
יצירת הרשאה
צריך למלא את שני השדות הבאים כשיוצרים הרשאה:
type
: השדהtype
מזהה את היקף ההרשאה (user
, group
, domain
אוanyone
). הרשאה עםtype=user
חלה על משתמש ספציפי, ואילו הרשאה עםtype=domain
חלה על כל המשתמשים בדומיין ספציפי.role
: השדהrole
מזהה את הפעולות שאפשר לבצע באמצעותtype
. לדוגמה, הרשאה עםtype=user
ו-role=reader
מעניקה למשתמש ספציפי הרשאת קריאה בלבד לקובץ או לתיקייה. לחלופין, הרשאה עםtype=domain
ו-role=commenter
מאפשרת לכל המשתמשים בדומיין להוסיף תגובות לקובץ. רשימה מלאה של התפקידים והפעולות שמותר לבצע בכל אחד מהם מופיעה במאמר תפקידים והרשאות.
כשיוצרים הרשאה עם type=user
או type=group
, צריך גם לציין emailAddress
כדי לקשר את המשתמש או הקבוצה הספציפיים להרשאה.
כשיוצרים הרשאה שבה type=domain
, צריך גם לספק domain
כדי לשייך דומיין ספציפי להרשאה.
כדי ליצור הרשאה:
- משתמשים בשיטה
create()
עם פרמטר הנתיבfileId
של הקובץ או התיקייה המשויכים. - בגוף הבקשה, מציינים את
type
ו-role
. - אם הערך הוא
type=user
אוtype=group
, צריך לספק ערך שלemailAddress
. אם הערך שלו הואtype=domain
, צריך לספקdomain
.
הצג דוגמה
דוגמת הקוד הבאה מראה איך יוצרים הרשאה. התשובה מחזירה מופע של משאב Permission
, כולל permissionId
שהוקצה.
בקשה
POST https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions
{ "requests": [ { "type": "user", "role": "commenter", "emailAddress": "alex@altostrat.com" } ] }
תגובה
{
"kind": "drive#permission",
"id": "PERMISSION_ID
",
"type": "user",
"role": "commenter"
}
שימוש בקהלים שמוגדרים כקהלים יעד
משתמשי יעד הם קבוצות של אנשים – כמו מחלקות או צוותים – שאפשר להמליץ למשתמשים לשתף איתם את הפריטים שלהם. אתם יכולים לעודד משתמשים לשתף פריטים עם קהל ספציפי או מוגבל יותר, במקום עם הארגון כולו. קהלים שמוגדרים לטירגוט יכולים לעזור לכם לשפר את האבטחה והפרטיות של הנתונים, ולאפשר למשתמשים לשתף אותם בצורה הולמת יותר. למידע נוסף, ראו מידע על קהלים ייעודיים.
כדי להשתמש בקהלים שמוגדרים כקהלים יעד:
במסוף Google Admin, נכנסים לתפריט > ספרייה > קהלים יעד.
כדי לבצע את המשימה הזו, עליכם להיות מחוברים באמצעות חשבון עם הרשאות סופר-אדמין.
ברשימת קהלים היעד, לוחצים על שם קהל היעד. במאמר יצירת קהל יעד מוסבר איך יוצרים קהל יעד.
מעתיקים את המזהה הייחודי מכתובת ה-URL של קהל היעד:
https://admin.google.com/ac/targetaudiences/ID
.יוצרים הרשאה באמצעות
type=domain
ומגדירים את השדהdomain
לערךID.audience.googledomains.com
.
במאמר חוויית המשתמש לשיתוף קישורים מוסבר איך המשתמשים מקיימים אינטראקציה עם קהלים שמוגדרים כקהלים היעד.
הצגת רשימה של כל ההרשאות
משתמשים בשיטה list()
במשאב permissions
כדי לאחזר את כל ההרשאות לקובץ, לתיקייה או לאחסון השיתופי.
הצג דוגמה
דוגמת הקוד הבאה מראה איך לקבל את כל ההרשאות. התשובה מחזירה רשימת הרשאות.
בקשה
GET https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions
תגובה
{
"kind": "drive#permissionList",
"permissions": [
{
"id": "PERMISSION_ID
",
"type": "user",
"kind": "drive#permission",
"role": "commenter"
}
]
}
עדכון ההרשאות
כדי לעדכן את ההרשאות בקובץ או בתיקייה, אפשר לשנות את התפקיד שהוקצה. מידע נוסף על איתור מקור התפקיד זמין במאמר זיהוי מקור התפקיד.
קוראים לשיטה
update()
במשאבpermissions
, כאשר פרמטר הנתיבpermissionId
מוגדר להרשאה לשינוי ופרמטר הנתיבfileId
מוגדר לקובץ, לתיקייה או לאחסון השיתופי המשויכים. כדי למצוא אתpermissionId
, משתמשים ב-methodlist()
במשאבpermissions
עם פרמטר הנתיבfileId
.בבקשה, מציינים את
role
החדש.
אתם יכולים להקצות הרשאות לקבצים או לתיקיות ספציפיים באחסון השיתופי, גם אם המשתמש או הקבוצה כבר חברים בו. לדוגמה, לאלכס יש את role=commenter
כחלק מהמינוי שלו לאחסון שיתופי. עם זאת, האפליקציה יכולה להקצות לאלכס את ההרשאה role=writer
עבור קובץ באחסון שיתופי. במקרה כזה, מכיוון שהתפקיד החדש הוא פחות מגביל מהתפקיד שהוקצה דרך החברות בקבוצה, ההרשאה החדשה הופכת לתפקיד בפועל של הקובץ או התיקייה.
הצג דוגמה
בדוגמת הקוד הבאה מוסבר איך לשנות את ההרשאות בקובץ או בתיקייה מ'הוספת תגובה' ל'כתיבה'. בתגובה מוחזרת מופע של משאב permissions
.
בקשה
PATCH https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
{ "requests": [ { "role": "writer" } ] }
תגובה
{
"kind": "drive#permission",
"id": "PERMISSION_ID
",
"type": "user",
"role": "writer"
}
זיהוי מקור התפקיד
כדי לשנות את התפקיד בקובץ או בתיקייה, צריך לדעת מה המקור של התפקיד. באחסון שיתופי, המקור של התפקיד יכול להיות מבוסס על החברות באחסון השיתופי, התפקיד בתיקייה או התפקיד בקובץ.
כדי לקבוע את מקור התפקיד של תיקיית אחסון משותפת או של פריטים בתוך התיקייה הזו, צריך להפעיל את השיטה get()
במשאב permissions
עם פרמטרי הנתיב fileId
ו-permissionId
, והפרמטר fields
מוגדר לשדה permissionDetails
.
כדי למצוא את permissionId
, משתמשים ב-method list()
במשאב permissions
עם פרמטר הנתיב fileId
. כדי לאחזר את השדה permissionDetails
בבקשה list
, מגדירים את הפרמטר fields
לערך permissions/permissionDetails
.
בשדה הזה מפורטות כל הרשאות הקבצים שעברו בירושה והרשאות הקבצים הישירות של המשתמש, הקבוצה או הדומיין.
הצג דוגמה
דוגמת הקוד הבאה מראה איך לקבוע את מקור התפקיד. התשובה מחזירה את permissionDetails
של משאב permissions
. השדה inheritedFrom
מספק את המזהה של הפריט שממנו עוברת בירושה ההרשאה.
בקשה
GET https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
?fields=permissionDetails&supportsAllDrives=true
תגובה
{
"permissionDetails": [
{
"permissionType": "member",
"role": "commenter",
"inheritedFrom": "INHERITED_FROM_ID
",
"inherited": true
},
{
"permissionType": "file",
"role": "writer",
"inherited": false
}
]
}
עדכון של כמה הרשאות באמצעות בקשות באצווה
מומלץ מאוד להשתמש בבקשות באצווה כדי לשנות כמה הרשאות.
בדוגמה הבאה מוצגת שינוי של הרשאות באצווה באמצעות ספריית לקוח.
Java
Python
Node.js
PHP
.NET
מחיקת הרשאה
כדי לבטל את הגישה לקובץ או לתיקייה, צריך להפעיל את ה-method delete()
במשאב permissions
עם הפרמטרים fileId
ו-permissionId
של הנתיב שמוגדרים למחיקה של ההרשאה.
בפריטים בתיקייה 'האחסון שלי', אפשר למחוק הרשאה שעברה בירושה. מחיקת הרשאה שעברה בירושה מבטלת את הגישה לפריט ולפריטי הצאצאים, אם יש כאלה.
לא ניתן לבטל הרשאות שעברו בירושה לפריטים באחסון שיתופי. במקום זאת, מעדכנים או מוחקים את ההרשאה בקובץ או בתיקייה ברמה העליונה.
אפשר להשתמש בשיטה delete()
גם כדי למחוק הרשאות שחלות ישירות על קובץ או תיקייה באחסון השיתופי.
הצג דוגמה
דוגמת הקוד הבאה מראה איך לבטל גישה על ידי מחיקת permissionId
. אם הפעולה בוצעה ללא שגיאות, גוף התגובה יהיה ריק. כדי לוודא שההרשאה הוסרה, משתמשים בשיטה list()
במשאב permissions
עם פרמטר הנתיב fileId
.
בקשה
DELETE https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
הגדרת תאריך תפוגה כדי להגביל את הגישה לקובץ
אם אתם עובדים עם אנשים על פרויקט רגיש, יכול להיות שתרצו להגביל את הגישה שלהם לקבצים מסוימים ב-Drive אחרי פרק זמן מסוים. בקבצים בתיקייה 'האחסון שלי', אפשר להגדיר תאריך תפוגה כדי להגביל או להסיר את הגישה לקובץ.
כדי להגדיר את תאריך התפוגה:
משתמשים בשיטה
create()
במשאבpermissions
ומגדירים את השדהexpirationTime
(יחד עם שדות החובה האחרים). מידע נוסף זמין במאמר יצירת הרשאה.משתמשים בשיטה
update()
במשאבpermissions
ומגדירים את השדהexpirationTime
(יחד עם שדות החובה האחרים). מידע נוסף זמין במאמר עדכון ההרשאות.
השדה expirationTime
מציין מתי יפוג התוקף של ההרשאה, לפי RFC 3339
תאריך-שעה. יש הגבלות על מועדי התפוגה:
- אפשר להגדיר אותם רק בהרשאות של משתמשים וקבוצות.
- השעה חייבת להיות בעתיד.
- המועד לא יכול להיות יותר משנה בעתיד.
מידע נוסף על תאריך התפוגה זמין במאמרים הבאים:
נושאים קשורים
- ניהול הצעות גישה בהמתנה
- העברת בעלות על קובץ
- הגנה על תוכן הקבצים
- גישה לקבצים בתיקיות אחסון שיתופי ששותפו באמצעות קישור באמצעות מפתחות משאבים
- תפקידים והרשאות