ניהול תיקיות עם גישה מוגבלת וגישה מלאה

תיקייה 'האחסון שלי' נמצאת בבעלות משתמש. התיקייה עשויה להכיל כמה משתמשים עם גישה לקבצים שונים. מודל הגישה המוגבל הזה מאפשר למשתמשים שונים לראות רשימות שונות של פריטים באותה תיקייה. משתמש שיש לו גישה לתיקיית ההורה 'האחסון שלי', אבל לא לאובייקט בתוך התיקייה הזו, מוגדר כ'גישה מוגבלת'. המצב הזה יוצר מצב שבו קשה לדעת למי יש גישה בהיררכיה.

לעומת זאת, הקבצים באחסון השיתופי הם בבעלות האחסון השיתופי. לתיקיות האחסון השיתופי יש מודל רחב, כך שלכל משתמש יש את אותה רשימת פריטים באותה תיקייה.

ההשקה של תיקיות עם גישה מוגבלת מאפשרת לכם להשתמש במודל הגישה המקיף של האחסון השיתופי גם בתיקיית 'האחסון שלי'. בעקבות השינוי הזה, תיקיות עם גישה מוגבלת הן היוצאות מן הכלל, ומאפשרות להגביל את הגישה לתיקיית משנה ספציפית גם בתיקיית 'האחסון שלי' וגם באחסון השיתופי.

במדריך הזה נסביר איך לנהל תיקיות עם גישה מוגבלת וגישה מלאה ב-Google Drive.

מידע על תיקיות עם גישה מוגבלת

להגביל תיקיות למשתמשים ספציפיים.

תיקיות עם גישה מוגבלת מאפשרות להגביל תיקיות למשתמשים ספציפיים. רק משתמשים שתוסיפו ישירות להרשאות של התיקייה יוכלו לפתוח אותה ולגשת לתוכן שלה. משתמשים עם גישה שעוברת בירושה לתיקייה המשותפת ב'האחסון שלי' או לתיקייה המשותפת באחסון השיתופי (דרך גישה מתיקיית הורה) יכולים לראות את התיקייה המוגבלת ב-Drive, אבל לא לפתוח אותה. התכונה הזו מאפשרת להתאים בצורה טובה יותר את אופן השיתוף של פריטים גם בתיקיית 'האחסון שלי' וגם בתיקיות אחסון שיתופי, כך שתוכלו לארגן תיקיות עם תוכן רגיש לצד תוכן ששותף באופן נרחב יותר.

אפשר להשתמש בגישה מוגבלת גם לתיקיות באחסון השיתופי וגם לתיקיית 'האחסון שלי'. תמיד יש גישה לתיקיות עם גישה מוגבלת לאנשים עם התפקיד owner בתיקיית 'האחסון שלי' ולאנשים עם התפקיד organizer בתיקיות האחסון השיתופי. כדי לשנות את רשימת המשתמשים בתיקייה, לא נדרשות הרשאות מיוחדות. משתמשים עם תפקידים שמאפשרים להם לשתף תיקיות יכולים לעדכן את רשימות החברים. מידע נוסף על תפקידים והרשאות זמין במאמרים תפקידים והרשאות וסקירה כללית על אחסון משותף.

חשוב לזכור שתיקיות הן סוג של קובץ, אבל לא ניתן להגדיר גישה מוגבלת לקבצים.

הגדרת גישה מוגבלת לתיקייה

משתמשים עם הרשאות ישירות לתיקייה יכולים לגשת לתיקייה עם גישה מוגבלת, אבל רק משתמשים עם התפקיד owner בתיקיית 'האחסון שלי' ועם התפקיד organizer באחסון השיתופי יכולים להפעיל או להשבית את הגישה המוגבלת.

בנוסף, אם משתמש עם התפקיד writer בתיקיית 'האחסון שלי' מגדיר את השדה הבוליאני writersCanShare במשאב files לערך true, הוא יכול גם להפעיל או להשבית את התכונה.

כדי להגביל את הגישה לתיקייה, מגדירים את השדה הבוליאני inheritedPermissionsDisabled במשאב files לערך true. כשהערך הוא true, רק המשתמשים עם התפקיד owner, התפקיד organizer והמשתמשים עם הרשאות ישירות לתיקייה יכולים לגשת אליה.

כדי להפעיל מחדש את ההרשאות שעברו בירושה, מגדירים את inheritedPermissionsDisabled לערך false.

איך בודקים אם יש הרשאה להגביל את הגישה לתיקייה

כדי לבדוק אם אפשר להגביל את הגישה לתיקייה, בודקים את הערכים הבוליאניים של השדות capabilities.canDisableInheritedPermissions ו-capabilities.canEnableInheritedPermissions במשאב files. ההגדרות האלה מאשרות אם יש לכם הרשאה להגביל את הגישה לתיקייה דרך השדה inheritedPermissionsDisabled.

מידע נוסף על capabilities זמין במאמר הסבר על יכולות הקובץ.

הצגת רשימה של תיקיות צאצא של תיקייה עם גישה מוגבלת

כדי לבדוק אם אפשר לקבל רשימה של הצאצאים של תיקייה, משתמשים בשדה הבוליאני capabilities.canListChildren.

הערך המוחזר הוא תמיד false כשהפריט הוא לא תיקייה, או אם הגישה של מבצע הבקשה לתוכן התיקייה הוסרה על ידי הגדרת inheritedPermissionsDisabled לערך false.

אם הגישה שלכם לתוכן של התיקייה הוסרה, עדיין תוכלו לגשת לmetadata של התיקייה באמצעות השיטות files.get() ו-files.list(). כדי לוודא שהגישה מוגבלת, בודקים את גוף התשובה כדי לראות אם הפריט הוא תיקייה עם סוג MIME application/vnd.google-apps.folder והשדה capabilities.canListChildren מוגדר כ-false. אם מנסים לרשום את הצאצאים של תיקייה כזו, התוצאה תמיד ריקה.

גישה לתיקייה עם מטא-נתונים של גישה מוגבלת

תיקיות עם גישה מוגבלת מאפשרות לכם להציג את metadata של התיקייה, גם אם אין לכם גישה לתוכן שלה.

כשמשתמשים במשאב permissions כדי לקבוע את הגישה של משתמש, גם תיקיות 'האחסון שלי' וגם תיקיות באחסון השיתופי שמעניקות גישה רק למטא-נתונים מכילות את הערכים הבאים בגוף התגובה: inheritedPermissionsDisabled=true ו-view=metadata. התפקיד תמיד מוגדר ל-reader. השדה view מאוכלס רק בהרשאות ששייכות ל-view. מידע נוסף זמין במאמר צפיות.

בכל הרשומות בשדה permissionDetails, השדה inherited מוגדר כ-true כדי לציין שההרשאה עוברת בירושה ושלא ניתנה גישה ישירה לתוכן התיקייה.

כדי להעניק גישה גם לתוכן התיקייה וגם למטא-נתונים, מגדירים את השדה inheritedPermissionsDisabled לערך false או מעדכנים את התפקיד לערך reader ואילך.

לבסוף, אם הרשאה הוגבלה קודם על ידי השבתת הירושה בתיקייה (inheritedPermissionsDisabled=true), ולאחר מכן ההרשאה נוספה חזרה ישירות לתיקייה, הערכים בגוף התגובה יהיו inheritedPermissionsDisabled=true והשדה view לא יוגדר. אם התיקייה נמצאת באחסון שיתופי, ברשימה permissionDetails תופיע רשומה עם השדה inherited שמוגדר כ-false כדי לציין שההרשאה לא עוברת בירושה. ההרשאה הזו מעניקה גישה גם לתוכן התיקייה וגם למטא-נתונים, כמו כל הרשאה אחרת.

מחיקת תיקיות עם גישה מוגבלת

אפשר למחוק תיקיות עם גישה מוגבלת באמצעות השיטה files.delete() במשאב files.

בתיקיית 'האחסון שלי', רק הבעלים של פריט מסוים יכול למחוק היררכיית תיקיות. אם משתמש מוחק היררכיה עם תיקיות שהגישה אליהן מוגבלת ושמישהו אחר הוא הבעלים שלהן, התיקיות האלה עוברות לתיקיית 'האחסון שלי' של הבעלים.

אם למשתמש יש את התפקיד owner, כל ההיררכיה נמחקת.

בתיקיות באחסון השיתופי, משתמשים עם התפקיד organizer יכולים למחוק היררכיות גם אם הן מכילות תיקיות עם גישה מוגבלת. אם התפקיד fileOrganizer מוחק היררכיה שמכילה תיקיות עם גישה מוגבלת, התוצאה תלויה בכך אם הוא נוסף שוב בתור fileOrganizer בתיקיות עם הגישה המוגבלת. אם כן, כל ההיררכיה תימחק. אם לא, התיקיות עם הגישה המוגבלת יועברו לתיקיית השורש של האחסון השיתופי.

מידע על גישה נרחבת

ההשקה של תיקיות עם גישה מוגבלת מרחיבה את מודל הגישה המקיף מאחסון שיתופי לתיקיית 'האחסון שלי'. אחרי ההשקה של מודל הגישה, גישה לתיקייה תכלול לפחות את אותה רמת גישה לכל מה שמופיע בהיררכיית התיקיות הזו. תיקיות עם גישה מוגבלת הן היוצאות מן הכלל, ומאפשרות להגביל את הגישה לתיקיית משנה ספציפית גם בתיקיית 'האחסון שלי' וגם באחסון השיתופי. המשמעות היא גם שאם הגישה לתיקייה מוגבלת, לא תוכלו להסיר את הגישה שעברה בירושה מתיקיית ההורה. הפעולה הזו תגרום ל-Drive API להחזיר תגובת שגיאה. כדי להגדיר בקרת גישה מפורטת יותר בהיררכיה, אפשר להגדיר גישה מוגבלת לתיקייה.

התאמה לגישה נרחבת

כדי להקל על המפתחים להתאים את עצמם לגישה המורחבת, ביצענו כמה שיפורים ב-Google Drive API:

  1. השדה permissionDetails[] במשאב permissions מאוכלס עכשיו בפריטים בתיקייה 'האחסון שלי'. בעבר, השדות לא היו מוגדרים או שהם שוחזרו מהשדה teamDrivePermissionDetails במקרים הרלוונטיים. רק השדות permissionType ו-inherited בתיקייה 'האחסון שלי' מאוכלסים.

    השדה permissionDetails[].inherited מציין אם ההרשאה הועברה בירושה מהפריט ההורה. הוא מאפשר לזהות אם תפקידים מסוימים (כמו reader) עוברים בירושה מההורה, ואם תפקיד ברמה גבוהה יותר (כמו writer) הוענק ישירות לפריט.

    כשמציגים את ההרשאות של פריט, השדה permissionDetails[] יכול להכיל כמה רשומות. אם ההרשאה קיימת, תופיע רשומה אחת של ההרשאה ישירות בפריט ברמת ההיקף הזו, ואז רשומות של ההרשאות שעברו בירושה או של ההרשאות של חברי הקבוצה בפריט.

  2. מפתחים יכולים להביע הסכמה לשימוש נרחב ב-API של גישה ב'הדף שלי ב-Drive' לפני שהאכיפה הזו תהיה חובה. אפשר להגדיר את הפרמטר של הבקשה enforceExpansiveAccess לערך true כדי ששינויים עתידיים בגישה המורחבת לא ישפיעו על האפליקציה.

    אם תבחרו להביע הסכמה עכשיו, ה-API יפעל באותו אופן לגבי פריטים בתיקיית 'האחסון שלי', כפי שהוא פועל כבר לגבי פריטים באחסון השיתופי. לדוגמה, כל ניסיון להגביל את הגישה מתחת לתפקיד שעובר בירושה נכשל בקריאה ל-permissions.update(). באופן דומה, קריאה ל-permissions.delete() תיכשל אם ההרשאה עוברת בירושה.

זיהוי ומניעה של גישה מוגבלת

יכול להיות שהאפליקציה יוצרת גישה מוגבלת (כאשר למשתמש יש גישה לתיקיית ההורה 'האחסון שלי' אבל לא לקובץ בתוך התיקייה הזו) בתיקיות 'האחסון שלי' כשמשתמשים בשיטות permissions.update() או permissions.delete().

כשמשתמשים בשיטות האלה, אפשר לבדוק את השדות במשאב permissions כדי לראות איפה בקשה עשויה ליצור גישה מוגבלת, וכך להימנע משליחת בקשות כאלה. כדי לזהות את המצב הזה, צריך להשתמש בשדה enforceExpansiveAccess בבקשה.

בנוסף, אם האפליקציה כבר יצרה גישה מוגבלת לתיקיות שלכם, תוכלו לבצע את הפעולות הבאות:

  1. עוברים על היררכיית התיקיות כדי להסיר את הגישה המוגבלת. במקום זאת, צריך להגדיר גישה מוגבלת לתיקייה.

  2. אם הפריט שאתם מנסים לבטל את השיתוף שלו הוא קובץ, תוכלו ליצור תיקייה ביניים, להגדיר לה גישה מוגבלת ולהעביר את הקובץ לתיקייה החדשה.

  3. אם אתם לא רוצים להשתמש בתיקיות עם גישה מוגבלת אבל אתם חייבים להסיר גישה מסוימת, תוכלו להעביר את הקובץ לתיקייה פרטית (למשל, התיקייה ברמה הבסיסית (root) 'האחסון שלי'). לאחר מכן תוכלו ליצור קיצור דרך למיקום המקורי של הפריט כדי שהמשתמשים עדיין יוכלו להשתמש בו.