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

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

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

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

במדריך הזה מוסבר איך לנהל תיקיות עם גישה מוגבלת וגישה רחבה ב-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.

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

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

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

כשמשתמשים במשאב 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 בתיקיות עם הגישה המוגבלת. אם כן, כל ההיררכיה נמחקת. אם לא, התיקיות עם הגישה המוגבלת עוברות לתיקיית הבסיס (root) של האחסון השיתופי.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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